在记事本中打开由 C 程序创建的文本文件的错误显示

Sta*_*ack 4 c notepad file character-encoding

#include<stdio.h>
#include<stdlib.h>
void init(char*filename)
{
    FILE* f = fopen(filename,"w");
    fprintf(f,"%d ",8);
    fprintf(f,"%d ",6);
    int i, j;
    for(i = 0; i < 8; i ++)
    {
        for(j = 0; j < 8; j ++)
        {
            fprintf(f,"%d ", rand()%6);
        }
    }    
    fclose(f);
}
int main()
{
    init("input.txt");
}
Run Code Online (Sandbox Code Playgroud)

当我打开文件时,我看到:

*????????‰‰???????????‰?‰?????????‰?‰?????‰???????????????????????‰*
Run Code Online (Sandbox Code Playgroud)

为什么我看不到rand()%6打印到此文件的值?

我使用 Dev-C++ 5.6.3 运行程序并以 .cpp 格式保存,用记事本打开

Kon*_*lph 6

问题不在于您的代码。问题是Notepad.exe 1认为您的文件是 UTF-16 编码的,而实际上它是 ASCII 编码的。文件没问题。


1或您打开文件的任何编辑器