我有一个小程序用于测试,我只需用一些短裤填充数组。然后我在File中写这个数组。然后我打印文件。
代码是这样的:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFFERLENGTH 10
short bufo[BUFFERLENGTH];
int main(int argc, char **argv){
FILE * ff;
bufo [0]= 1;
bufo [1]= 2;
bufo [2]= 3;
bufo [3]= 4;
bufo [4]= 5;
bufo [5]= 6;
bufo [6]= 7;
bufo [7]= 8;
bufo [8]= 9;
bufo [9]= 10;
short s;
printf("Ho \n");
if ((ff = fopen("prueba1", "ab+")) == NULL){
perror("Abriendo mal");
}
fwrite(bufo, sizeof(short) , 10, ff);
fclose(ff);
printf("FRONTERA \n");
if ((ff = fopen("prueba1", "ab+")) == NULL){
perror("Abriendo mal");
}
while(!feof(ff)){
fread(&s,sizeof(short), 1, ff);
printf("%u \n",s);
}
}
在此之后我想看到这个输出:
1
2
3
4
5
6
7
8
9
10
但相反,我明白了:
1
2
3
4
5
6
7
8
9
10
10
为什么我两次获得最后一个元素?