fgets传输汉字再打印时出现错误

img


文本为汉字是出现生僻字,文本为英文或者数字时可以正常打印


int main()
{
    FILE* fp = fopen("C:/Users/菠萝吹牛/Desktop/实验.txt.txt","r");
    if (!fp)
    {
        return -1;
    }
    char* p = (char*)malloc(sizeof(char) * 100);
        memset(p,0,100);
        fgets(p, 100, fp);
        printf("%s", p);
        free(p);
        fclose(fp);
        return EXIT_SUCCESS;
}
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7641143
  • 你也可以参考下这篇文章:fgets的认识
  • 你还可以看下c语言参考手册中的 c语言-fgets()
  • 除此之外, 这篇博客: C语言fgets按行读取文件,末尾的换行符问题中的 1.每行末尾换行符的处理 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先,问题的导入在于我写的一个小程序。
    1.我在一个文本文件中打字,然后想用fgets读取第一行的内容2.我想再读取之后对数组进行打印来体现出换行符的存在3.发现问题。
    下面是文本文件的内容:
    infooftxt
    下面是控制台打印读取的内容。(我把数组初始化为’9’,为了视觉方便,每个字符两侧放上:)
    p2
    可以看到读取结果显示每行末尾存在着两个换行符。并且,那个空格字符是哪来的??

应该是你文本和 代码的编码不一致,

用高级保存选项保存编码字符集 也可以 用VS打开文本修改

你看看这个
http://t.csdn.cn/c8I8Y