来自fgets()no(f)scanf的意外结果

时间:2013-03-19 03:26:58

标签: c fgets

我在这里看了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()错了?

谢谢

0 个答案:

没有答案