拜托
有没有大佬知道C语言写入文件时乱码怎么解决 比如呢,你用什么语句创建文件,用什么语句向文件写入了什么内容,然后就变乱码了?最好能把相关源代码片段贴出来看看。 jackz007 发表于 2020-6-17 14:52
比如呢,你用什么语句创建文件,用什么语句向文件写入了什么内容,然后就变乱码了?
最好 ...
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define LIST_INIT_SIZE 4 //线性表存储空间的初始分配量
#defineMAXSIZE100
//学生的定义
typedef struct
{
charnum;
char name;
char sex;
int english;
int math;
int database;
char sum;
char ZY;
char BJ;
}Student;
//顺序表的定义
typedef struct
{
Student *elem;
int length;
}SqList;
int InitList(SqList &A)//构造一个空的顺序表A
{
A.elem=new Student ; //为顺序表分配空间
if(!A.elem) exit(-1); //存储分配失败
A.length=0; //空表长度为0
return 0;
}
//刷新
void update(SqList &L)
{
int j=0;
FILE*fp;
fp=fopen("d://学生信息.txt","r");
if(fp==NULL)
printf("输出错误");
while(fscanf(fp,"%s %s%s%s%s%d%d %d \n",L.elem.name,L.elem.sex ,L.elem.num ,L.elem.ZY,L.elem.BJ,L.elem.english,L.elem.math,L.elem.database)==8)
{
j++;
}
L.length=j;
printf("******************刷新成功************************************\n");
fclose(fp);
}
//保存信息
void fileWrite(SqList &L)
{
FILE*fp;
int j;
fp=fopen("d://学生信息.txt","w");
if(fp==NULL)
printf("文件打开错误\n");
for(j=0;j<L.length;j++)
{
fprintf(fp,"%s %s%s%s%s%d%d %d \n",L.elem.name,L.elem.sex ,L.elem.num ,L.elem.ZY,L.elem.BJ,L.elem.english,L.elem.math,L.elem.database );
}
fclose(fp);
printf("***********************保存成功******************************\n");
}
//显示所有员工信息
void display(SqList & L)
{
FILE*fp;
int j=0,i;
fp=fopen("d://学生信息.txt","r");
if(fp==NULL)
printf("文件打开错误\n");
while(fscanf(fp,"%s %s%s%s%s%d%d %d \n",L.elem.name,L.elem.sex ,L.elem.num ,L.elem.ZY,L.elem.BJ,L.elem.english,L.elem.math,L.elem.database)==8)
{
j++;
}
L.length=j;
for(i=0;i<L.length;i++)
{
printf("%s %s%s%s%s%d%d %d \n",L.elem.name,L.elem.sex ,L.elem.num ,L.elem.ZY,L.elem.BJ,L.elem.english,L.elem.math,L.elem.database );
}
fclose(fp);
printf(" nnbnvn\n");
}
//添加学生信息
void insert(SqList &L)
{
int j,n;
L.elem=new Student ;
printf("您要添加几条学生信息?");
scanf("%d",&n);
for(j = L.length;j < L.length + n;j++)
{
printf("请输入第%d学生的信息\n", j + 1);
printf("请输入该学生的姓名\n");
scanf("%s", L.elem.name);
printf("请输入该学生的性别:");
scanf("%s",L.elem.sex);
printf("请输入该学生的学号:");
scanf("%s",L.elem.num);
printf("请输入该学生的专业:");
scanf("%s",L.elem.ZY);
printf("请输入该学生的班级:");
scanf("%s",L.elem.BJ);
printf("请输入该学生的英语成绩:");
scanf("%d",L.elem.english);
printf("请输入该学生的高数成绩:");
scanf("%d",L.elem.math);
printf("请输入该学生的数据结构成绩:");
scanf("%d",L.elem.database);
printf("\n");
}
L.length = L.length + n;
}
void menu(SqList &L)
{
int num;
int k = 1;
while(k)
{
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * *|*\n");
printf(" *| 企业信息信息管理系统 |*\n");
printf(" *| |*\n");
printf(" *| * * * * * * *系统功能菜单* * * * * * * |*\n");
printf(" *| -------------------------------------------- |*\n");
printf(" *| |*\n");
printf(" *| 0.系统帮助及说明| 1.添加员工信息 |*\n");
printf(" *| |*\n");
printf(" *| 2.查看员工信息 | 3.修改员工信息 |*\n");
printf(" *| |*\n");
printf(" *| 4.删除员工信息 | 5.统计员工信息 |*\n");
printf(" *| |*\n");
printf(" *| 6.所有员工信息 | 7.保存员工信息 |*\n");
printf(" *| |*\n");
printf(" *| 8.退出系统 |*\n");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("------------------------------------------------------------\n");
printf("请选择菜单编号:");
scanf("%d",&num);
switch(num) {
case 0:
break;
case 1:
insert(L);
break;
case 2:
display(L);
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
fileWrite(L);
break;
case 8:
k=0;
break;
default:
printf("请在0-9之间选择\n");
}
}
}
int main()
{
SqList L;
InitList(L);
menu(L);
return 0;} jackz007 发表于 2020-6-17 14:52
比如呢,你用什么语句创建文件,用什么语句向文件写入了什么内容,然后就变乱码了?
最好 ...
这只是部分,还没弄完
页:
[1]