Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在fscanf中添加多个参数_C - Fatal编程技术网

在fscanf中添加多个参数

在fscanf中添加多个参数,c,C,我曾尝试通过fscanf存储多个参数,尽管它适用于 while(fscanf(fptr, "%s %*s %*s %*s", mod) == 1){ } 它不适用于以下情况: while(fscanf(fptr, "%s %s %*s %*s", mod, mod2) == 1){ } 有什么我做错了吗?fscanf()返回成功存储的转换数 因此,您应该将第二个fscanf()的结果与2进行比较: while (fscanf(fptr, "%s %s %*s %*s", mod, m

我曾尝试通过fscanf存储多个参数,尽管它适用于

while(fscanf(fptr, "%s %*s %*s %*s", mod) == 1){
}
它不适用于以下情况:

while(fscanf(fptr, "%s %s %*s %*s", mod, mod2) == 1){
}
有什么我做错了吗?

fscanf()
返回成功存储的转换数

因此,您应该将第二个
fscanf()
的结果与
2
进行比较:

    while (fscanf(fptr, "%s %s %*s %*s", mod, mod2) == 2) {
        ...
    }
但是请注意,空格是多余的,由
%*s
转换说明符跳过的单词可能在文件末尾不存在,而不会导致不同的返回值

还要注意的是,您应该告诉
fscanf
存储到目标数组
mod
mod2
中的最大字节数,以避免输入文件中意外的大字出现未定义行为:

    char mod[32], mod2[32];
    while (fscanf(fptr, "%31s %31s %*s %*s", mod, mod2) == 2) {
        ...
    }


@user12908899
scanf
函数系列的返回值是成功扫描和存储的项目数(可能是
0
EOF
)。