c中的文件i / o和缓冲区操作

时间:2018-05-08 19:14:50

标签: c

我是C的初学者。我正在用c做一个简单的游戏。 我有一个.txt文件存储玩家的分数,如

gse
12
CKY 
8
asf
8
FWD
7
BCS
6
BBC
5
PYS
4
NSE
3
Jaeh
2
PJH
1

我的c代码中的一个函数如下:

void ViewScoreBoard() { 
int n = 0;
int c;
char buffer[NAME_LENGTH] = { 0 };
FILE *fp = fopen("scoreBoard.txt", "r");

if (fp == NULL) {
    printf("no score\n");
    fflush(stdin);
    getchar();
    return;
}

system("cls");//clears the screen

printf("=======SCORE=======\n");
if (fp){
   while(fgets(buffer, sizeof buffer, fp)!=NULL){
        if(n%2==0){
            printf("%2d. ",n/2+1); //index
            buffer[strcspn(buffer, "\n")] = 0; //stripes the newline chr
            printf("%5s",buffer);            
        }
        if(n%2==1){
            printf("%5s",buffer);
        }
        n++;
    }

    fclose(fp);
}

printf("Enter AnyKeys");
Sleep(100);
getchar();
getchar();}

问题是这个。 在控制台上,分数打印精确到3(在Jaeh之前)

=======SCORE=======
 1.   gse  12
 2.   CKY   8
 3.   asf   8
 4.   FWD   7
 5.   BCS   6
 6.   BBC   5
 7.   PYS   4
 8.   NSE   3
 9.  Jaeh
10.     2 PJH
11.     1Enter AnyKeys

我需要2与Jaeh内联,但不知道出了什么问题...... 提前谢谢!

*** EDIT

将代码更改为char buffer[NAME_LENGTH+2] = { 0 };,一切正常。

谢谢大家!

0 个答案:

没有答案