所以导致c语言打开文件默认是以gbk的形式打开的,估计你的文件是用utf8保存的,所以导致了乱码,随便用...
你的程序从txt文件中读取了6个字节的数据(0xE4 0xBD 0xA0 0xE5 0xA5 0xBD),直接传给终端(printf/fwrite等形式)后,终端就会按照GBK编码来解释这6个字节并显示,于是就会输出“浣犲ソ”,因为按照GBK编码,0xE4和0xBD对应‘浣’,0xA0和0xE5对应‘犲’,0xA5和0xBD对应‘ソ’,也就产生了“乱码”...
这是因为你的txt文件的编码和编译器选择的编码不一致而导致的。按你使用的操作系统不同,如果是windows,可以直接用记事本打开文件,选择另存为——编码——ANSI,保存后重新打开。如果是linux,用编辑器打开文件后另存为无BOM的UTF-8格式。一般来说可以解决问题。解释一下,在中文的windows系统中,选择...
feof(fp))中的!feof(fp)改成1,然后在fscanf那一句后面加一句if(feof(fp)) break;就可以了。因为feof这个函数要在逻辑上紧跟在“读操作”语句后才能正确生效,而你的写法在第一次进入while时还没有读文件,feof(fp)判断什么?就是这里造成了最后文件越界了还当作正常数据在处理,当然就是乱码了…...
第一个空格的时候执行printf("%s ",a)这条语句,但是,a[20]没有初始化,所以就会出现这问题 在while循环前面,memset()初始化一下a数组应该就可以了