gcc 4.4.4 c89
我有以下文件,其中包含姓名,年龄和性别.我想读一下这个时代.
"Bloggs, Joe" 34 M
Run Code Online (Sandbox Code Playgroud)
我可以成功打开文件:
fp = fopen("input.txt", "r");
if(fp == NULL) {
fprintf(stderr, "Failed to open file [ %s ]\n", strerror(errno));
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我试着阅读这个时代(34).
int age = 0;
int result = 0;
result = fscanf(fp, "%d", &age);
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试打印结果时,我总是得到零年龄和结果.
非常感谢任何建议,
Jer*_*fin 11
你没有做任何事情来跳过这个名字,因此它正在查看该文本,尝试将其转换为int并失败,因此返回值为0(0次转换成功)并且变量中的值保持不变.您需要添加代码以跳过名称,然后阅读年龄:
fscanf(fp, "%*c%*[^\"]\" %d", &age);
Run Code Online (Sandbox Code Playgroud)
初始"%c"读取初始报价.在"%[^\"]\"高达(包括)下一个报价读取字符.在这两种情况下,"*"表示将读取值但不存储在任何位置.之后,我们可以使用"%d"读取数字.