我在这里看了fgets的其他类似问题,它们似乎都是由(f)scanf引起的。我遇到的问题不涉及(f)scanf。
这是我用来逐行读取stdin的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()
错了?
谢谢