题目
C语言在读取txt类型文件中的汉字字符串出现乱码的解决办法以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、前言
当我们在练习文件这一章节时,因为需要从文件中读取数据,有很多数据是中文形式的,当我们在读取的时候,发现这些中文从文件里读出来然后输出就变成了乱码,如下所示,是我今天练习一道编程题时输出的乱码,我花了一个小时找错误后发现代码和格式并没有任何的错误,那么究竟是哪里出问题了呢?
二、解决办法
1.问题的主要原因是我们每个人的电脑编码方式不同,大家按win+r件输入cmd后右击窗口然后选择属性即可查看自己电脑的编码方式,我的电脑编码方式是GBR
2.接下来我们需要把之前乱码的那个txt文件改一下其编码方式,我们就能使用C语言正常输出汉字了
1.首先打开这个文本文件,选择文件-另存为
2. 选择编码方式为ANSI,保存后即大功告成
三、执行结果
测试代码块:
#define _CRT_SECURE_NO_WARNINGS//防止scanf函数报错#include<stdio.h>struct x{char n[32];int b;};int main(){struct x a[10];FILE* fp = fopen("emp_salary.txt", "r");if (fp == NULL){printf("open emp_salary errl!\n");return -1;}int i = 0;while (!feof(fp)){int count = fscanf(fp, "%s %d", a[i].n, &a[i].b);if (count == -1)break;//如果fscanf返回的值为-1说明读取失败。printf("%s %d\n", a[i].n, a[i].b);i++;}fclose(fp);}
输出:
张三 6000李四 6000王五 6000麻子 6000大白 6000C:\Users\Mr.Lee\source\repos\1\Debug\1.exe (进程 1260)已退出,代码为 0。要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。按任意键关闭此窗口. . .