我在这里查看了 fgets 的其他类似问题,它们似乎都是由 (f)scanf 引起的。我遇到的问题不涉及(f)scanf。
这是我用来逐行读取标准输入的 while 循环。
while(fgets(line,sizeof(line),stdin)!=NULL){
char* newLine[6]; //the array of characters
int i = 0; //counter
char *next=strtok(line," ");
while (i<6){
newLine[i]=next;
next=strtok(NULL," ");
++i;
}
线绝对足够大以容纳输入。我确切地知道会有多少单词,这就是我使用 6 的原因。第二个 while 循环删除空格并将结果放入 newLine 进行评估。这适用于除第一行之外的所有行。这是输出。
A 344532111 S SPY 300 117.880000 //ignore input
A 344532111 S SPY 300 117.880000 //line 2
R 344532111 SPY 300 117.840000 //line 3
T 344532111 SPY 100 //line 4
C 344532111 SPY 100 //line 5
A 344533172 B SPY 200 117.110000 //line 6
A 344533348 B SPY 280 118.050000 //line 7
X 344533348 SPY //line 8
344532111 S 100 117.840000 //results
344533172 B 200 117.110000 //results
以 A 开头的每一行都应该有一个结果。我知道第一行没有被读取,因为如果我让它输出它在每一行中找到的第一个字符,它只显示一个“A”此外,这些行将抛出一个错误,就好像它不存在一样。(每一行就像一个命令,它根据前一行启动不同的功能。如果它读取第一行就不会抛出错误。这就是前两行重复的原因。)
问题是它跳过了输入到终端的第一行,但按预期读取了之后的所有内容。
有谁知道我可能做错了什么?也许使用fgets()
错误?
谢谢