1、main函数执行时,这里的student1是未赋初值的,所以studentname的值并不是星哥,你以%s输出它,自然会显示为“乱码”。改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。
创新互联建站专注于牙克石网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供牙克石营销型网站建设,牙克石网站制作、牙克石网页设计、牙克石网站官网定制、小程序开发服务,打造牙克石网络公司原创品牌,更为您提供牙克石网站排名全网营销落地服务。
2、由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。
3、);} return 0;} 把这里面的 取地址符 & 去掉 像上面一样 数组名称实质上就是指向数组第一个元素的指针。
4、会不会是因为被读取的文件里有汉字?汉字占的长度和其他字符集的长度是不一样。120位的时候刚好是一个汉字,就会导致这个汉字被切割,所以出现乱码。
这是C语言习惯,务必养成!\x0d\x0a\0是字符串结束符,每当解释器看到这\0才会认为字符串终止,而你的程序明显没有字符串结束符,所以连同垃圾内存一起读出来了。“烫烫。”等就是垃圾内存。
你这个乱码,你的文件里,学号长度为10个字节,所以你定义学号这个变量时,必须定义11个字节的长度,因为字符串的变量,必须要有一个\0作为结束,不然的话,显示的时候,没有结束符就会接着往下显示,就会有乱码出现。
汉字乱码是因为缓冲区有字符,需要用fflush(stdin);来清空键盘缓冲区,使用getch等都是治标不治本的办法,可以多学习一下fflush的使用,对于大批量的手动输入,很用。
全部调用 gets 函数,一次回车输入一行,而不是全部用 scanf来做。至于乱码,是因为最后一个字符串变量没有初始化,于是后面没有\0,程序把内存中的乱码写进文件,直到偶然遇到\0为之。这样的程序是不稳定的。
出现汉子………’\1‘表示ascii为1的字符,这个没问题 问题是ascii(标准的)一共才128个,你后面用219,当然会 乱码 而汉字在计算机中是每两个字节存储一个的,你的两个连起来的219刚好被识别成了 圹 ,所以会这样。
main函数执行时,这里的student1是未赋初值的,所以studentname的值并不是星哥,你以%s输出它,自然会显示为“乱码”。改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。
这是C语言习惯,务必养成!\x0d\x0a\0是字符串结束符,每当解释器看到这\0才会认为字符串终止,而你的程序明显没有字符串结束符,所以连同垃圾内存一起读出来了。“烫烫。”等就是垃圾内存。
汉字乱码是因为缓冲区有字符,需要用fflush(stdin);来清空键盘缓冲区,使用getch等都是治标不治本的办法,可以多学习一下fflush的使用,对于大批量的手动输入,很用。
一般使用直接读到结构的方法,只限于二进制格式的文件,并且最好是读自己创建的文件,别人创建的,格式刚刚好合适创建结构的也很少。
main函数执行时,这里的student1是未赋初值的,所以studentname的值并不是星哥,你以%s输出它,自然会显示为“乱码”。改正方法是,既然你已经定义了全局变量,main函数里就不要再定义了。