[英]C - fscanf Mixed Numbers and Static Text
我试图读取以这种一般方式格式化的文件:
Text Description: 12
Description2: 1
More descriptive things: 6
我想把数字12,1和6读成变量。
我试过这样的代码:
fscanf(fptr, "Text Description:%d",&desc1);
fscanf(fptr, "Description2:%d",&desc2);
fscanf(fptr, "More descriptive things:%d",&desc3);
但由于某种原因,只有第一个变量被填充。 有谁知道为什么会这样?
在字符串格式的开头添加空格以避免新行问题
fscanf(fptr, " Text Description:%d",&desc1);
fscanf(fptr, " Description2:%d",&desc2);
fscanf(fptr, " More descriptive things:%d",&desc3);
处理完12后,您不会读取换行符,因此其他两个调用是查找而不是字符串或整数,因此失败。 您可以在下一个fscanf
调用中使用空格(它会消耗您要匹配的字符串前面的所有空白字符)。 或者,您可以通过调用fgetc
来使用它,只要每行直接以换行符结束,例如
fscanf(fptr, "Text Description:%d",&desc1);
fgetc(fptr); // drop the next character
fscanf(fptr, "Description2:%d",&desc2);
在整数之后删除所有流输入,直到下一个'\\ n',可以使用循环来完成:
while (fgetc(fptr) != '\n')
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.