C语言编程,为什么输入名字和学号以后,输出的数据会乱码?

源代码如下:#include<stdio.h>#define MAXSIZE 6typedef struct{ int size; char name[MAXSIZE][20]; char score[MAXSIZE][20];}sequence_list;void init(sequence_list slt){ slt.size=0;}void getname(sequence_list slt){ int i; for(i=0;i<MAXSIZE;i++) { slt.size=i; printf("%d,name=",i+1); scanf("%s",&slt.name[slt.size]); } slt.size=0;}void getscore(sequence_list slt){ int i; for(i=0;i<MAXSIZE;i++) { slt.size=i; printf("%d,score=",i+1); scanf("%s",&slt.score[slt.size]); } slt.size=0;}void print(sequence_list slt){ int i; for(i=0;i<MAXSIZE;i++) { slt.size=i; printf("%d,name=%s %d,score=%s",i+1,slt.name[slt.size],i+1,slt.score[slt.size]); printf("\n"); }}void initdata(sequence_list slt){ int i; for(i=0;i<MAXSIZE;i++) { slt.size=i; slt.name[slt.size][MAXSIZE]=0; slt.score[slt.size][MAXSIZE]=0; }}int main(){ sequence_list data; init(data); initdata(data); printf("Please click into the 6 students' name=\n"); getname(data); printf("Please click into the 6 students' score=\n"); getscore(data); printf("Now print the datas=\n"); print(data); return 0;}

好乱,但看到几句疑似不对的地方
scanf("%s",&slt.name[slt.size]); scanf("%s",&slt.score[slt.size]); 这两句。
slt.name[slt.size]和slt.score[slt.size]已经是指针,你再加个取地址,这好像不对,试着把&去掉看看。
另外
slt.name[slt.size][MAXSIZE]=0; slt.score[slt.size][MAXSIZE]=0; 这两句也不对,这个地址已经不是这个变量的地址,已经冲堆栈了,初始化不是这么玩的。可以这样:
memset( &slt, 0 , sizeof( slt ) ) ;
温馨提示:内容为网友见解,仅供参考
无其他回答

为什么C语言输出文件内容乱码
你这个乱码,你的文件里,学号长度为10个字节,所以你定义学号这个变量时,必须定义11个字节的长度,因为字符串的变量,必须要有一个'\\0'作为结束,不然的话,显示的时候,没有结束符就会接着往下显示,就会有乱码出现。如果仅仅是这三行的话,倒也能使用结构来读,比如结构里定义num[11],读完后执行...

C语言编程出现汉字输出乱码现象
而C语言编程主要是以字节为单位来显示 所以你的C语言输出中,如果汉字显示只显示了一个字节,就会有乱码出现了 正常的做法是,你的printf输出时,符号的长度要为偶数字节。

c语言输出乱码,求解决方法
第一个标红处的for循环语句后面多了分号; 导致下面{}中的语句与for无关 而printf()语句中的i此时等于N,又stu[N]上没有数据,所以会输出乱码;同理后面输出最高成绩学生时,i的值也为N,因此最后打印stu[i]时也会输出乱码;我觉得你的本意应该是输出stu[no],所以要将最后printf中的stu[i]都...

C语言 字符串输出时最后出现乱码
输出出现乱码就是因为字符串结尾并没有结尾符'\\0'。gets函数读入一行字符串时,会在最末尾自动加上'\\0'结尾。但是你在for循环内将s2的字符一个个拷贝到s中的时候,循环限定条件只到了s2字符串的'\\0'结尾符之前,所以输出乱码了。将循环条件k<a+b改为k<a+b+1或者k<=a+b就可以将s2字符串最...

C语言问题,怎么执行出来的是乱码
你做什么操作的时候出现乱码了?我找到你的程序的一个错误:void fun4(){ int k;char newname[20],t[1];printf("请输入该学生的名字!\\n");这个地方需要加上一个gets(),为了接收你的回车赋,否则这个功能是实现不了的。再有即使加上这句话,你的程序还是有问题的,并不能删除!gets(t)...

C语言,字符串输出是乱码
"请输入学生%d的%d科成绩:", i + 1, subiects);\/\/i+1为学生序号for (j = 0; j < subiects; j++){scanf("%d", &a[i][j]);}}\/\/输出成绩printf("\\t\\tC语言\\t大英\\t高数\\t总分\\t平均分\\n");for (i = 0; i < students; i++){ sum=0;printf("\\t同学%d",...

C语言文件输出时,输入数据后为什么会出现乱码
struct studentType),1,fp)!=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。考虑一下怎么把struct序列化,再看看struct的中的字节是怎么对齐的,建议而已 ...

C语言输入身份证姓名,怎么输出是乱码
建议你如果变量不涉及计算还是用字符串处理

为什么在c语言程序设计中在屏幕上输入姓名信息后屏幕上显示不出来,而且...
乱码一般出现在字符串中,亲,字符串加'\\0'没?

C语言编译器 输入中文在终端输出的时候会乱码
你有没有建立好工程?还有就是,程序要包括头文件 stdio.h 不知道对你有没有帮助。

相似回答