海湾合作委员会 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 岁时阅读。
int age = 0;
int result = 0;
result = fscanf(fp, "%d", &age);
但是,当我尝试打印结果时,年龄和结果总是为零。
非常感谢您的任何建议,
最佳答案
您没有做任何事情来跳过名称,所以它正在查看该文本,试图将其转换为 int 并失败,因此返回值为 0(0 次转换成功)和变量中的值保持不变。您需要添加代码以跳过名称,然后读取年龄:
fscanf(fp, "%*c%*[^\"]\" %d", &age);
初始 "%c"
读取初始引用。 "%[^\"]\"
读取字符直到(并包括)下一个引号。在这两种情况下,“*”表示将读取该值但不会存储在任何地方。之后, 我们可以使用 "%d"读取数字。
关于c - 使用 fscanf 从文件中读取一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3373556/