在我的.txt文件中,我有以下数据。

名称:姓名
得分:0.00%
名称:姓名
得分:0.00%
名称:姓名
得分:6.67%

我尝试使用此代码

    if (userAnswer1 == 3){
        printf("Test History\n\n");
        FILE * fPointer;
        fPointer = fopen("history.txt", "r");
        char singleLine[50];
        while(!feof(fPointer)) {
            fgets(singleLine, 50, fPointer);
            puts(singleLine);
            int i;
            for(i=0; i>=0; i++){
                if(i%2==0){
                    printf("\n");
                }
                break;
            }
        }
        fclose(fPointer);
    }


获得此输出:

名称:姓名
得分:0.00%

名称:姓名
得分:0.00%

名称:姓名
得分:6.67%

相反,我得到的输出低于。

测试历史

名称:姓名

得分:0.00%

名称:姓名

得分:0.00%

名称:姓名

得分:6.67%

得分:6.67%

最佳答案

两件事:puts函数编写换行符;并且fgets函数可能在缓冲区中包含换行符。

这意味着当您首先打印singleLine时,会有一个换行符(因为fgets放在那里),然后puts编写自己的换行符。

删除fgets写入缓冲区的换行符,或者不使用puts

10-06 08:00