在fscanf中添加多个参数
我曾尝试通过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
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
)。