ntjm.net
当前位置:首页 >> C 读取文本文件 乱码 >>

C 读取文本文件 乱码

StreamReader sr = File.OpenText(filename); 改为 StreamReader sr = new StreamReader(filename,Encoding.Default); StreamReader sr = new StreamReader(filename, Encoding.UTF8); 主要UTF8

这是因为你的txt文件的编码和编译器选择的编码不一致而导致的。 按你使用的操作系统不同,如果是windows,可以直接用记事本打开文件,选择另存为——编码——ANSI,保存后重新打开。 如果是linux,用编辑器打开文件后另存为无BOM的UTF-8格式。一般来...

原因很简单:把while(!feof(fp))中的!feof(fp)改成1,然后在fscanf那一句后面加一句if(feof(fp)) break;就可以了。因为feof这个函数要在逻辑上紧跟在“读操作”语句后才能正确生效,而你的写法在第一次进入while时还没有读文件,feof(fp)判断什么...

你的代码想实现什么功能呢? 从写法上,看不出来想做什么。 先写了一个字符,然后读下一个字符,一直读到文件尾,这样自然是文件里面有什么 就会显示什么了。 除了第一个字符是a外,后面的 都是文件里面本来的内容。

1、检查你打开的方式;2、看一下你的字符是否正确结尾了,也就是说字符串末尾是否是\0,如果不是可以手动添加。我以前做C语言课程设计时经常遇到这个问题,而且是第二个地原因大一点,因为如果是二进制文件有时候也是可以正常用记事本读出来的。

fwrite用于二进制写入,怎样写对于数据来说都是乱码,而对于字符则能正常输出,而对于结构体,最好使用格式输出函数fprintf()与fscanf(),这样可以保证输出的正确性,而fwrite函数时将内存中的二进制数据直接写入文本文件,像11001010这样的...

参考代码如下: #include #include #include int main() { FILE *fp; char ch; if ((fp=fopen("o.txt","wr+"))==0) //据所知=没有"wr+"的表达,如果是读取数据的话改成if((fp = ("o.txt","r"))==NULL)就可以了 exit(0); while(!feof(fp)) { ch=f...

#include#includetypedef struct node{ char name[20]; int score; int num; struct node *next;}node;void main(){ node * creat(node *head, FILE *fp, int n); void print(node *head); FILE *fp; fp = fopen("1.txt", "r+"); node *head = N...

1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入...

这个函数以二进制形式对文件进行操作 按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为 乱码。例如float a=12345.67,写入文件后为4个字节,打开后不是文本表示的8个字节。

网站首页 | 网站地图
All rights reserved Powered by www.ntjm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com