请问为什么字符串输出是乱码呢?
我添加了一条信息后,再选择“查看驾考信息”,
请问为什么字符串输出是乱码呢?
请高手指教,我是新手,非常感谢!!
#include
#include
#include
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
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");
}
C
乱码
测试
分享到:
------解决方案--------------------
请等待zhao老师的到来
这一块知识,他已经哲学化了。
------解决方案--------------------
scanf("%s",&str);
应改为
scanf("%s",str);
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
------解决方案--------------------
最好将所有
scanf("%s",&str);
改为
rewind(stdin);scanf("%49s",str);
------解决方案--------------------