为什么浏览时总有乱码?

#include <stdio.h>

#include <windows.h>

#include <stdlib.h>

#include <string.h>

#define N 20

struct xk//定义选课信息

{

int num;//课程编号

char name[20];//课程名称

char xz[10];//课程性质

int zks;//总课时

int ks;//授课课时

int syks;//实验或上机课时

int xf;//学分

int kk;//开课学期

}kc[N];//总共20门课程

struct xsxx//学生信息

{

int xsnum[N];//选的课程编号

int xuefen; //学分

}xs;

struct xkjl//记录信息

{

char name[20];//记录名称

int jlxf;//记录学分

}jl[N];

void lr()//录入模块

{

FILE *fp;

int i,n;

struct xk kc[N];

fp=fopen("d:\\kcxx.txt","ab+");

if(fp==NULL){

printf("Can not open file\n");

exit(1);

}

printf("输入几门课程信息\n");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("第%d门课程编号\t第%d门课程名称\t第%d门课程性质\t第%d门总课时\t第%d门授课学时\t第%d门实验或上机学时\t第%d门学分\t第%d门开课学期\n",i+1,i+1,i+1,i+1,i+1,i+1,i+1,i+1);

scanf("%d%s%s%d%d%d%d%d",&kc[i].num,kc[i].name,kc[i].xz,&kc[i].zks,&kc[i].ks,&kc[i].syks,&kc[i].xf,&kc[i].kk);//输出课程信息

}

fwrite(kc,sizeof(struct xk),n,fp);//将键盘上的信息录入文件

fclose(fp);

}

void ll()//浏览模块

{

FILE *fp;

int i;

struct xk kc[N];

fp=fopen("d:\\kcxx.txt","rb");

if(fp==NULL){

printf("Can not open file\n");

exit(1);

}

printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n");

for(i=0;(!feof(fp));i++){

fread(&kc[i],sizeof(struct xk),1,fp);

printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[i].num,kc[i].name,kc[i].xz,kc[i].zks,kc[i].ks,kc[i].syks,kc[i].xf,kc[i].kk);//输出课程信息

}

fclose(fp);

}

void xfcx()//学分查询模块

{

FILE *fp;

struct xk kc[N];

int i,n;

fp=fopen("d://kcxx.txt","rb");

if(fp==NULL){

printf("Can not open file\n");

exit(1);

}

printf("输入学分\n");

scanf("%d",&i);

for(n=0;!feof(fp);n++){

fread(&kc[n],sizeof(struct xk),1,fp);

if(i==(kc[n].xf))

{

printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n");

printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[n].num,kc[n].name,kc[n].xz,kc[n].zks,kc[n].ks,kc[n].syks,kc[n].xf,kc[n].kk);//输出课程信息

}

}

fclose(fp);

}

void xzcx()//性质查询模块

{

FILE *fp;

struct xk kc[N];

int n=0;

char i[20];

fp=fopen("d://kcxx.txt","rb");

if(fp==NULL){

printf("Can not open file\n");

exit(1);

}

printf("输入课程性质\n");

scanf("%s",i);

while(!feof(fp)){//for(n=0;!feof(fp);n++){

fread(&kc[n],sizeof(struct xk),1,fp);

if(!(strcmp(i,kc[n].xz)))

{

printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n");

printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[n].num,kc[n].name,kc[n].xz,kc[n].zks,kc[n].ks,kc[n].syks,kc[n].xf,kc[n].kk);//输出课程信息

n++;

}

}

fclose(fp);

}

void cx()//查询模块

{

int i;

printf("1、学分查询,2、课程性质查询\n");

scanf("%d",&i);

switch(i)

{

case 1:xfcx();//进入学分查询

break;

case 2:xzcx();//进入性质查询

break;

default:printf("输入有误,重新输入。\n");

}

}

void xsxk()//学生选课

{

FILE *fp;

struct xk kc[N];

struct xsxx xs;

struct xkjl jl[N];

fp=fopen("d:\\kcxx.txt","rb");

int n=0,i,j;

if(fp==NULL){

printf("Can not open file\n");

exit(1);

}

while(!feof(fp)){//for(n=0;!feof(fp);n++){

fread(&kc[n],sizeof(struct xk),1,fp);

n++;

}

xs.xuefen=0;

for(n=0;n<N;n++){

jl[n].jlxf=0;

printf("请输入课程名称\n");

loop:scanf("%s",jl[n].name);

for(i=0;!feof(fp);i++){

if(!(strcmp(jl[n].name,kc[i].name))){

jl[n].jlxf=kc[i].xf;

xs.xsnum[n]=kc[i].num;

break;

}

}

if(!feof(fp)){

printf("课程不存在,请重新输入!\n");

goto loop;

}

for(i=0;i<n;i++){

if(xs.xsnum[n]==xs.xsnum[i]){

printf("输入有重复,请重新输入。\n");

goto loop;

}

}

xs.xuefen+=jl[n].jlxf;

if(xs.xuefen>60){

printf("选课成功!\n");

break;

}

}

printf("课程编号\t课程名称\t课程性质\t总课时\t授课学时\t实验或上机学时\t学分\t开课学期\n");

for(j=0;j<=n;j++){

for(i=0;i<N;i++){

if(xs.xsnum[j]==kc[i].num){

printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",kc[i].num,kc[i].name,kc[i].xz,kc[i].zks,kc[i].ks,kc[i].syks,kc[i].xf,kc[i].kk);//输出课程信息

}

}

}

fclose(fp);

}

void main()//主菜单

{

int i;

while(1){

printf("                                 学生选课系统                                     \n");

  printf(" 1、课程信息的录入       2、课程信息的浏览        3、查询课程       4、学生选课   \n");

scanf("%d",&i);

switch(i)

{

case 1:lr();

break;

case 2:ll();system("pause");

break;

case 3:cx();system("pause");

break;

case 4:xsxk();system("pause");

break;

default:printf("输入有误!\n");

}

system("cls");

}

}


九天安属
浏览 1554回答 3
3回答

艾晓健

你代码问题不清楚,但是后面内存问题应该事你电脑哪里不兼容或者其他问题了、

箭与玫瑰

是指运行汉字乱码吧,因为使用编码类型的原因,一般使用国际编码UTF-8;或者调整浏览器的编码类型
打开App,查看更多内容
随时随地看视频慕课网APP