0

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

谢谢

4

0 回答 0