fgets() reading numbers to space
我有一个小问题:
我希望fgets()的行为像scanf("%d",...)-将输入读取到空格,而不是整行。有什么办法可以使它像这样工作吗?
预先感谢
使用
或者,您可以首先使用
我想出了以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <stdio.h> #define VALUE_NOT_PRESENT -1 /* A value you won't expect in your file */ int main() { FILE *f; char s[256]; int n; f = fopen ("test.txt","r"); fscanf (f,"%s", s); while (!feof(f)) { n = VALUE_NOT_PRESENT; sscanf (s,"%d", &n); /* if s cannot be converted to a number, n won't be updated, so we can use that to check if the number in s is actually a valid number */ if (n == VALUE_NOT_PRESENT) printf ("Discarded"); else printf ("%d", n); fscanf (f,"%s", s); } fclose (f); printf ("\ "); return 0; } |
如果读取的字符不能形成有效数字,则使用
使用具有以下内容的文件执行:
1 2 3 | 1 2 -3 -4 abc 5 6 a12 6c7 |
它能够将