使用fscanf读取文件中的整数

ant*_*009 3 c

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"读取数字.