gcc 4.4.4 c89
我有一个包含姓名、年龄和性别的文件。我试图读取年龄。
"Bloggs, Joe" 34 M
我可以成功打开文件:
fp = fopen("input.txt", "r");
if(fp == NULL) {
fprintf(stderr, "Failed to open file [ %s ]\n", strerror(errno));
return 1;
}
我尝试在 34 岁的年龄里阅读。
相关的 IT 技术内容:
int age = 0;
int result = 0;
result = fscanf(fp, "%d", &age);
然而,当我尝试打印结果时,年龄和结果总是显示为零。
非常感谢任何建议。
ch
更改为int
而不是char
,并且您需要将while循环更改为类似以下的内容:while (EOF != (ch=fgetc(stream)) && !isdigit((unsigned char)ch))
- Jerry Coffinfgetc
的结果存储在char
中,因为您会失去检测EOF
返回的能力。始终使用int
。请注意,如果代码在没有找到任何数字的情况下遇到EOF
,它将无限循环。 - R.. GitHub STOP HELPING ICE