请问为什么字符串输出是乱码呢?

Quester-King 2013-05-22 03:27:35
我添加了一条信息后,再选择“查看驾考信息”,
请问为什么字符串输出是乱码呢?
请高手指教,我是新手,非常感谢!!

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

int system(const char *string);
void start();
void chakan(char info[999][3][50],int size);
void zengjia(char info[999][3][50],int *size);
void shanchu(char info[999][3][50],int *size);
int main()
{ char input;
char info[999][3][50];
int size=0;
start();
while(1){
input =getchar();
switch(input){
case '#':
start();
break;
case '0':
exit(0);
break;
case '1':
start();
chakan(info,size);
break;
case '2':
start();
zengjia(info,&size);
break;
case '3':
start();
shanchu(info,&size);
break;
}
}

return 0;
}

void chakan(char info[999][3][50],int size){
int i,j;
printf("-----------------------------驾考信息------------------------\n");
printf("\t姓名\t考号\t待考科目\n");
for(i=0;i<size;i++){
for(j=0;j<3;j++){
printf("\t%s\t%s\t%s\n",info[i][j]);
}
}
printf("----------------------------请按#返回------------------------\n");


}

void zengjia(char info[999][3][50],int *size){
char str[50]="";
char b='Y';
printf("-----------------------------增加信息------------------------\n");

printf("请输入姓名:\n");
scanf("%s",&str);
strcpy(info[*size][0], str);
printf("为了测试:%s\n",info[*size][0]);
printf("请输入考号:\n");
scanf("%s",&str);
strcpy(info[*size][1], str);
printf("为了测试:%s\n",info[*size][1]);
printf("请输入待考科目:\n");
scanf("%s",&str);
strcpy(info[*size][2], str);
printf("为了测试:%s\n",info[*size][2]);
(*size)++;
printf("添加完成!\n");
printf("----------------------------请按#返回------------------------\n");
}

void shanchu(char info[999][3][50],int *size){
printf("-----------------------------删除信息------------------------\n");
}

void start(){

system("cls");
printf("-------------------------------驾考信息管理系统-----------------------\n");
printf("1.查看所有驾考信息\n");
printf("2.增加驾考信息\n");
printf("3.删除驾考信息\n");
printf("4.修改驾考信息\n");
printf("0.退出\n");
}
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-05-23
  • 打赏
  • 举报
回复
引用 6 楼 AnYidan 的回复:
zhao老师不会仍你失望
为人民服务!
AnYidan 2013-05-22
  • 打赏
  • 举报
回复
zhao老师不会仍你失望
赵4老师 2013-05-22
  • 打赏
  • 举报
回复
你输入超过50个字节的字符串试试就知道为什么改了。
赵4老师 2013-05-22
  • 打赏
  • 举报
回复
最好将所有 scanf("%s",&str); 改为 rewind(stdin);scanf("%49s",str);
赵4老师 2013-05-22
  • 打赏
  • 举报
回复
scanf("%s",&str); 应改为 scanf("%s",str); printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
Quester-King 2013-05-22
  • 打赏
  • 举报
回复
引用 1 楼 mougaidong 的回复:
请等待zhao老师的到来 这一块知识,他已经哲学化了。
高手,望解答。我们的期末项目,快交了。非常感谢!!
turing-complete 2013-05-22
  • 打赏
  • 举报
回复
请等待zhao老师的到来 这一块知识,他已经哲学化了。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧