我正在尝试接受来自文件的输入。此文件的格式为整数,后跟一个选项卡,后跟一个字符串(可能有也可能没有空格)。
例如:
1\tls -l
2\tls
我尝试使用:
int cmd_num;
char command[80];
while (fscanf(ifp, "%d\t%s", &cmd_num, command) != EOF) {
...
}
然而,当它看到一个空间时失败了。有什么帮助吗?
由于
答案 0 :(得分:1)
您可能需要使用扫描集来读取字符串:
if (fscanf(fp, "%d\t%79[^\n]\n", &cmd_num, command) != 2)
...error handling...
else
...use cmd_num and command...
请注意格式字符串中的大小约束以防止缓冲区溢出。
另请注意,您不知道换行符是否匹配。您可能最好使用fgets()
阅读整行(或getline()
),然后使用sscanf()
代替fscanf()
;至少你会知道是否收集了换行符(并且必要时可以吞并到换行符。)
答案 1 :(得分:0)
在你的fscanf函数中试试这个:
fscanf(fp,"%d\t%[^\n]s",&cmd_num,command);
这肯定有用......