检查分隔 fscanf 时出错
Error checking delimited fscanf
我正在尝试使用 fscanf 读取以冒号分隔的文件并取出某些信息。我正在使用一个函数来执行此操作,并且在某些错误检查方面遇到问题。函数是
int
print_name_number(FILE *input, FILE *output)
{
char name[24];
char address[50];
char phone[50];
char other[50];
char age[50];
while (fscanf(input, "%24[^:]:%50[^:]:%50[^:]:%50[^:]:%50s[^:]"
, name, address, phone, other, age) != EOF)
fprintf(output, "%s %-24s\n", name, phone);
return EXIT_SUCCESS;
}
但是现在可以使用,我正在寻找一种方法来检查读取的行是否实际上是 "name second:address:phone:other:age" 格式。我已经尝试检查 fscanf 是否等于 5,但是如果在 fscanf 中读取的内容少于 5,则只是继续尝试读取内容。如果仅输入 "name:" 或类似内容,是否有办法使 scanf 停止那?
提前感谢所有help.c
fscanf
不会停止,直到 (a) 输入格式被完全读取,(b) 输入与预期格式不匹配(例如 scanf("%d")
缓冲区中有字母字符) 或 (c) 到达文件末尾。因此,如果您的 input
文件连接到终端,并且您键入 name:
期望 fscanf
退出,您会发现它只是挂起等待您完成。
也许您想使用 fgets
来读取单行输入 - 这样,一旦遇到换行符,输入读取就会停止。
我正在尝试使用 fscanf 读取以冒号分隔的文件并取出某些信息。我正在使用一个函数来执行此操作,并且在某些错误检查方面遇到问题。函数是
int
print_name_number(FILE *input, FILE *output)
{
char name[24];
char address[50];
char phone[50];
char other[50];
char age[50];
while (fscanf(input, "%24[^:]:%50[^:]:%50[^:]:%50[^:]:%50s[^:]"
, name, address, phone, other, age) != EOF)
fprintf(output, "%s %-24s\n", name, phone);
return EXIT_SUCCESS;
}
但是现在可以使用,我正在寻找一种方法来检查读取的行是否实际上是 "name second:address:phone:other:age" 格式。我已经尝试检查 fscanf 是否等于 5,但是如果在 fscanf 中读取的内容少于 5,则只是继续尝试读取内容。如果仅输入 "name:" 或类似内容,是否有办法使 scanf 停止那?
提前感谢所有help.c
fscanf
不会停止,直到 (a) 输入格式被完全读取,(b) 输入与预期格式不匹配(例如 scanf("%d")
缓冲区中有字母字符) 或 (c) 到达文件末尾。因此,如果您的 input
文件连接到终端,并且您键入 name:
期望 fscanf
退出,您会发现它只是挂起等待您完成。
也许您想使用 fgets
来读取单行输入 - 这样,一旦遇到换行符,输入读取就会停止。