#include<stdio.h>
#include<stdlib.h>
struct st
{
char name[4];
char age[3];
char tel[9];
}s[3];
void main()
{
int i,n;
FILE *fpe; FILE *fpo;
for(i=0;i<3;i++)
{
scanf_s("%s",s[i].name,4);getchar();
scanf_s("%s",s[i].age,3);getchar();
scanf_s("%s",s[i].tel,9);getchar();
}
fopen_s(&fpo,"e:\\students.txt","w");
if(fpo==NULL)
{
printf("打不開\n");
exit(0);
}
for(i=0;i<3;i++)
{
n=fwrite(&s[i],sizeof(struct st),1,fpo);
if(n!=1)
printf("file write error");
}
fclose(fpo);
fopen_s(&fpe,"e:\\students.txt","r");
if(fpe==NULL)
{
printf("打不開\n");
exit(0);
}
for(i=0;i<3;i++)
{
n=fread(&s[i],sizeof(struct st),1,fpe);
if(n!=1)
printf("file read error");
printf("%-4s%3s%9s\n",s[i].name,s[i].age,s[i].tel);
}
fclose(fpe);
system("pause");
}
確實是一個奇怪的問題,只增加一個變量就一切 OK 的話,這明顯與我們猜的字符串編碼無關!
建議你將輸入在寫入文件前,先輸出確認一下:主要的目的是看看有沒有什麼越界、或者其它可能的情況出現。