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