我正在尝试解决一本书中关于 C 中的问题解决和程序设计的指针的问题。我们正式介绍了函数
fscanf()
和 fprintf()
,它们分别接受输入文件指针和输出文件指针作为第一个参数功能。我们的任务是从输入文件中读取,为输入文件中存在的以浮点数编码的数字提取count,并将每个由换行符分隔的数字写入输出文件,并将计数的数字写在最后的下面已写入输出文件的编号。该算法的伪代码为:
main { double num = 0; count = 0; while (input status != -1){ fprintf(outp, "%.2f\n", item); count++ input status = fscanf(inp, "%lf", &num); } // write to the output file the count fprintf(outp, "%d\n", count) close(inp & outp); return (0); }
在这个特定算法的上下文中,后续问题问:“为什么我们不能在这种情况下将计数写为输出文件的第一项”。
好吧,我回答:循环基本上检查我们是否已经到达文件末尾 - 一旦到达文件末尾,指针变量基本上指向文件末尾。现在,除非我们明确定义了两个 for 循环——一个用于计算输入文件中存在的元素数量(我们的计数变量),另一个用于将输入文件中存在的所有数字写入输出文件,我们不能这样做,而不是输出元素后跟文件末尾的元素数。
我想知道我的回答是否有效