问题描述
解决方案
soory,扫了一眼,没看清。。你的temp[]数组是在函数中定义的,函数read调用后就其占用的内存(存在堆里)就被释放了,只返回了temp[0]对应的字符(存在栈里),这就导致你输出了一个字符后,后边就是乱码了,建议你可以将数组作为函数的参数,这样就不会有这个问题了。
解决方案二:
不好意思,貌似我把堆和栈弄反了,
解决方案三:
你的程序根本就是错的,不应该返回堆栈上局部变量temp的指针,你应该用new malloc分配内存,再返回。
解决方案四:
变量作用域你没搞清楚
解决方案五:
temp指向temp字符数组的首元素,当你调用read ()函数时给temp数组分配内存,一旦return 后,分配给temp的内存将释放(存储期到了),只有首字符的地址返回了,所以只能输出第一个字符,后面的乱码就……
解决方案六:
一个汉字占两个字符,你一个字符一个字符的输出当然就乱码了,将字符串放进字符数组里(数组最后加''),再输出就好了!
时间: 2024-10-04 08:45:56