为什么一定要用写字板的方式打开?

通过下面这些,我发现:如果要把信息保存在txt文件中,就必须以写字板的方式打开这
个txt文件,再来写入信息,这样的话就可以正确地读出这个txt文件里的内容。如果以记
事本的方式打开这个txt文件就不可以正确地读出这个txt文件里的内容。不知道我的这个
想法对不对?还有就是同样的一个txt文件,用记事本的方式和用写字板的方式打开,里
面的内容怎么会不一样?
图片说明
图片说明

 #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");
}

图片说明

是不是只是显示的原因?建议你使用 Ultraedit 打开查看 HEX,或者使用 Beyond Compare 二进制对比两个文件。

因为windows xp下的记事本不识别你的vs2010+默认的双字节编码。
如果你用windows 7以上,在记事本中打开对话框,选择正确的编码,也能打开,或你用VC++ 6写你的程序,在记事本也能打开。

字符集设置一下

编码问题,存贮的时候注意

如果是乱码就是字符集的问题!如果是格式的话,可能是换行符与制表符之类的不同!