c语言读取文件数据乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言读取文件数据乱码相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<stdlib.h>
#define SIZE 10
struct Student_type
int num;
char name[10];
int math;
int english;
int computer;
stud[10];
int main()
int i;
FILE*fp;
if((fp=fopen("C:\\kk\\kk.txt","rb"))==NULL)
printf("cannot open file\n");
exit(0);
for(i=0;i<SIZE;i++)
fread(&stud[i],sizeof(struct Student_type),1,fp);
printf("%d%s%d%d%d\n",stud[i].num,stud[i].name,stud[i].math,stud[i].english,stud[i].computer);
fclose(fp);
return 0;
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
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=fgetc(fp);
printf("%c",&ch); //改成printf("%c",ch),加上取地址符就变成读取ch的内存值了
return 0;
参考技术A 给你一个你参考下就行了
#include<iostream>
using namespace std;
void creat()//创建文件并且输入信息
int tel;
char name[20],add[20];
//char name[10];
FILE *fp;
cout<<"请输入要创建的文件的名称\\n";
cin>>name;
if((fp=fopen(name,"a+"))==NULL)
cout<<"cannot open this file\\n";
exit(0);
fprintf(fp,"%-10s%-20s%-50s\\n","姓名","电话号码","住址");
cout<<"请依次输入姓名、电话号码、住址(以0结束)\\n";
cin>>name;
while(strcmp(name,"0"))
cin>>tel>>add;
fprintf(fp,"%-10s%-20d%-50s\\n",name,tel,add);
cin>>name;
fclose(fp);
void output()//输出文件的内容
FILE *fp;
char tel[20];
char name[20],add[20];
cout<<"请输入要输出的文件的名称\\n";
cin>>name;
if((fp=fopen(name,"r"))==NULL)
cout<<"cannot open this file\\n";
exit(0);
cout<<"\\t通讯录\\n";
while(!feof(fp))
fscanf(fp,"%s%s%s\\n",name,tel,add);////一定要是%s 格式
printf("%-10s%-20s%-50s\\n",name,tel,add);
fclose(fp);
int main()
char a[20]="12";
int b= atoi(a);;//吧字符串变成数字
cout<<b;
creat();
output();
return 0;
/////或者更简单的/////////////////////////////////
///一个程序
#include<iostream>
using namespace std;
void output()//输出文件的内容
FILE *fp;
char buff[50];
char name[20];
cout<<"请输入要输出的文件的名称\\n";
cin>>name;
if((fp=fopen(name,"r"))==NULL)
cout<<"cannot open this file\\n";
exit(0);
while(!feof(fp))
fgets(buff,50,fp);
puts(buff);
fclose(fp);
int main()
output();
return 0;
参考技术B 把打开方式改为 "r"以及把读取信息用fscanf吧,因为如果你是原先先把kk.txt写好,然后再用你的程序打开它的话,由于里面有换行符以及空格等内容,除非开始你是用fwrite函数写入的结构信息,否则fread会把这些都作为信息读取的(也就是说它读到一个struct Student_type大小的数据就结束,而不管这里面到底存放的是什么,这个过程中读到的可能不是一个完整的结构的数据),所以就会出现你所说的乱码。追问
但这样一改后,文件就出现一个错误,怎么办
本回答被提问者采纳Qt读取文本文件乱码怎么办
参考技术A 设置编码读取:QTextStream in(&file);
in.setCodec("UTF-8");
while (!in.atEnd())
QString strRead = in.readLine();
以上是关于c语言读取文件数据乱码的主要内容,如果未能解决你的问题,请参考以下文章
如下:为啥C语言读取文件中的数据并输出时有乱码出现?本来输入的是数字,然后从文件中读取后就变汉字