首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

高手帮小弟我看看,为什么执行显示的时候会出现乱码

2013-07-16 
高手帮我看看,为什么执行显示的时候会出现乱码?#includestdio.h#includestdlib.h#includestring.h#d

高手帮我看看,为什么执行显示的时候会出现乱码?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 70
FILE *fp;
struct Student//定义一个通讯录结构体
{
char name[30];//学生姓名
char sex[10];//学生性别
char phone[20];//学生联系电话
char age[5];//学生年龄
char add[30];//学生地址
}stu;//定义学生的结构体变量为stu

//***********************************************
//录入信息
//***********************************************
void luru()
{
int i;
if((fp=fopen("通讯录.txt","ab"))==NULL)
{
printf("文件打开失败!");
exit(1);
}
else

//输入学生的数据,存放在数组stu中
for(i=0;i<N;i++)
{
printf("请输入学生姓名:");
scanf("%s",stu[i].name);
printf("请输入学生性别:");
scanf("%s",stu[i].sex);
    printf("请输入学生电话:");
scanf("%s",stu[i].phone);
printf("请输入学生年龄:");
scanf("%s",stu[i].age);
printf("请输入学生地址:");
scanf("%s",stu[i].add);
}

//把数据转存到磁盘文件中
for(i=0;i<N;i++)
{
 fprintf(fp,"学生姓名:%s\n\n学生性别:%s\n\n学生电话:%s\n\n学生年龄:%s\n\n学生地址:%s\n\n",stu[i].name,stu[i].sex,stu[i].phone,stu[i].age,stu[i].add);
}
   
fclose(fp);

    
//system("pause"); //网上搜的让程序暂停一段时间
    //system("cls");  //清屏
//return(main());
}


//*********************************************************
//显示所有信息
//*********************************************************

void xianshi()
{
int i;
if((fp=fopen("通讯录.txt","rb"))==NULL)
{
printf("打开文件错误!");
exit(0);
}

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

fread(&stu[i],sizeof(struct Student),N,fp);
printf("%-10s %-10s %-10s %-10s %-10s",stu[i].name,stu[i].sex,stu[i].phone,stu[i].age,stu[i].add);
}


fclose(fp);

//system("pause"); //网上搜的让程序暂停一段时间
   // system("cls");  //清屏
//return(main());
}


int main()

 int a,i;
 
 for(i=0;i<=39;i++)//循环输出五角星
 printf("#");
 printf("\n");
 printf("                 欢迎进入学生通讯录管理系统\n");
 printf("\n");
 for(i=0;i<=39;i++)
 printf("#");
 printf("\n");
 printf("\n");

 printf("0.录入信息              |\n");
 printf("1.显示所有信息          |\n");
 printf("2.查询信息              |\n");


 printf("3.修改                  |\n");       
 printf("4.删除信息              |\n");
 printf("5. 退出程序             |\n");     

 printf("\n");
 printf("\n");
  for(i=0;i<=39;i++)
   printf("#");
  

 printf("请选择你想要功能的序号,按回车确认:");  
  scanf("%d",&a);
  switch(a)
  {
  case 0:;luru();break;
  case 1:;xianshi();break;
  case 2:;
  case 3:;
  case 4:;
  case 5:;
  }

} 乱码
[解决办法]
把你的写入和读出改了下,能正常运行


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 2
FILE *fp;
struct Student//定义一个通讯录结构体
{
    char name[30];//学生姓名
    char sex[10];//学生性别
    char phone[20];//学生联系电话
    char age[5];//学生年龄
    char add[30];//学生地址
}stu[N];//定义学生的结构体变量为stu
void luru()
{
    int i;
    if((fp=fopen("通讯录.txt","ab"))==NULL)
    {
        printf("文件打开失败!");
        exit(1);
    }
    else
        for(i=0;i<N;i++)
        {
            printf("请输入学生姓名:");
            scanf("%s",stu[i].name);
            printf("请输入学生性别:");
            scanf("%s",stu[i].sex);
            printf("请输入学生电话:");


            scanf("%s",stu[i].phone);
            printf("请输入学生年龄:");
            scanf("%s",stu[i].age);
            printf("请输入学生地址:");
            scanf("%s",stu[i].add);
        }
   /* for(i=0;i<N;i++)
    {
        fprintf(fp,"学生姓名:%s\n\n学生性别:%s\n\n学生电话:%s\n\n学生年龄:%s\n\n学生地址:%s\n\n",stu[i].name,stu[i].sex,stu[i].phone,stu[i].age,stu[i].add);
    }*/
    fwrite(&stu,sizeof(struct Student),N,fp);

    fclose(fp);
}
void xianshi()
{
    int i;
    if((fp=fopen("通讯录.txt","rb"))==NULL)
    {
        printf("打开文件错误!");
        exit(0);
    }


        fread(&stu,sizeof(struct Student),N,fp);
    for(i=0;i<N;i++)
    {
        printf("%-10s %-10s %-10s %-10s %-10s\n",stu[i].name,stu[i].sex,stu[i].phone,stu[i].age,stu[i].add);
    }
    fclose(fp);
}

int main()

    int a,i;

    for(i=0;i<=39;i++)//循环输出五角星
        printf("#");
    printf("\n");
    printf("                 欢迎进入学生通讯录管理系统\n");
    printf("\n");
    for(i=0;i<=39;i++)
        printf("#");
    printf("\n");
    printf("\n");

    printf("0.录入信息              
[解决办法]
\n");
    printf("1.显示所有信息          
[解决办法]
\n");
    printf("2.查询信息              
------解决方案--------------------


\n");
    printf("3.修改                  
[解决办法]
\n");       
    printf("4.删除信息              
[解决办法]
\n");
    printf("5. 退出程序             
[解决办法]
\n");     

    printf("\n");
    printf("\n");
    for(i=0;i<=39;i++)
        printf("#");


    printf("请选择你想要功能的序号,按回车确认:");  
    scanf("%d",&a);
    switch(a)
    {
        case 0:;luru();break;
        case 1:;xianshi();break;
        case 2:;
        case 3:;
        case 4:;
        case 5:;
    }




[解决办法]
改了一下你的录入和显示函数,可以正常显示。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 70
FILE *fp;
struct Student//定义一个通讯录结构体
{
char name[30];//学生姓名
char sex[10];//学生性别
char phone[20];//学生联系电话
char age[5];//学生年龄
char add[30];//学生地址
}stu[N];//定义学生的结构体变量为stu

void luru()
{
        int i;
        if((fp=fopen("tongxinlu.txt","ab"))==NULL)
        {
                printf("文件打开失败!");
                exit(1);
        }
        else
        {
                for(i=0;i<N;i++)
                {


                        printf("请输入学生姓名:");
                        scanf("%s",stu[i].name);
                        printf("请输入学生性别:");
                        scanf("%s",stu[i].sex);
                        printf("请输入学生电话:");
                        scanf("%s",stu[i].phone);
                        printf("请输入学生年龄:");
                        scanf("%s",stu[i].age);
                        printf("请输入学生地址:");
                        scanf("%s",stu[i].add);
                }
        }
        for(i=0;i<N;i++)
        {
                fprintf(fp,"学生姓名:%s 学生性别:%s 学生电话:%s 学生年龄:%s 学生地址:%s\n",
                        stu[i].name,stu[i].sex,stu[i].phone,stu[i].age,stu[i].add);
        }

        fclose(fp);
}
void xianshi()
{
        int i;
        char buf[200];
        if((fp=fopen("tongxinlu.txt","rb"))==NULL)
        {
                printf("打开文件错误!");
                exit(0);


        }
        while(fgets(buf,sizeof(buf),fp))
                printf("%s",buf);

        fclose(fp);
}
int main()
{
        int a,i;

        for(i=0;i<=39;i++)//循环输出五角星
                printf("#");
        printf("\n");
        printf("                 欢迎进入学生通讯录管理系统\n");
        printf("\n");
        for(i=0;i<=39;i++)
                printf("#");
        printf("\n");
        printf("\n");

        printf("0.录入信息              
[解决办法]
\n");
        printf("1.显示所有信息          
[解决办法]
\n");
        printf("2.查询信息              
[解决办法]
\n");
        printf("3.修改                  
[解决办法]
\n");
        printf("4.删除信息              
[解决办法]
\n");
        printf("5. 退出程序             
[解决办法]
\n");

        printf("\n");
        printf("\n");
        for(i=0;i<=39;i++)


                printf("#");

        printf("\n请选择你想要功能的序号,按回车确认:");
        scanf("%d",&a);
        switch(a)
        {
                case 0:
                        luru();break;
                case 1:
                        xianshi();break;
                case 2:;
                case 3:;
                case 4:;
                case 5:;
        }
}

热点排行