c语言-为什么这里打印出来是乱码呢?(C语言指针相关)

问题描述

为什么这里打印出来是乱码呢?(C语言指针相关)

解决方案

soory,扫了一眼,没看清。。你的temp[]数组是在函数中定义的,函数read调用后就其占用的内存(存在堆里)就被释放了,只返回了temp[0]对应的字符(存在栈里),这就导致你输出了一个字符后,后边就是乱码了,建议你可以将数组作为函数的参数,这样就不会有这个问题了。

解决方案二:

不好意思,貌似我把堆和栈弄反了,

解决方案三:

你的程序根本就是错的,不应该返回堆栈上局部变量temp的指针,你应该用new malloc分配内存,再返回。

解决方案四:

变量作用域你没搞清楚

解决方案五:

temp指向temp字符数组的首元素,当你调用read ()函数时给temp数组分配内存,一旦return 后,分配给temp的内存将释放(存储期到了),只有首字符的地址返回了,所以只能输出第一个字符,后面的乱码就……

解决方案六:

一个汉字占两个字符,你一个字符一个字符的输出当然就乱码了,将字符串放进字符数组里(数组最后加''),再输出就好了!

时间: 2024-10-04 08:45:56

c语言-为什么这里打印出来是乱码呢?(C语言指针相关)的相关文章

XP系统下打印机打印文字出现乱码怎么解决

  XP系统下打印机打印文字出现乱码怎么解决 1.在左侧程序里选择"控制面板",打开窗口,双击"字体"图标(在打开的对话框中保证打印机已正常安装).图片显示在最下一排,第二个. 2.假如所打印的字体没有安装,可选择"文件F(在窗口的左上角)",打开下属栏,选择"安装新字体"选项,在打开的"添加字体"对话框中选择字体所在路径,就可以进行字体的安装了. 3.双击选中的字体图标,在打开的对话框中单击"打

打印机打印文件显示乱码该怎么办?

  常用打印机的朋友都知道,最头疼的问题莫过于打印出乱码了.不光是针式打印机,喷墨.激光打印机都会出现乱码现象,面对同样的故障,考虑的方面可能不尽相同.引起乱码故障的因素很多,现在,就让我们一起来看一看,究竟应该从哪些方面着手,快速有效地应对乱码. 1.字体缺失 如果用户不小心将打印机所在的计算机系统字库删除掉,也能影响打印机的正常输出,导致乱码.这种情况下,可打开"控制面板",选项"字体"一项,双击字体图标,在打开的窗口中点击"文件"菜单,从弹

log-LINUX下C语言编程怎么打印日志

问题描述 LINUX下C语言编程怎么打印日志 刚刚工作,以前看过别人写的代码调试完后都可以打印日志来查看日志,自己新参加工作,给服务器发包什么的,开始发总是出问题,带我的人就一直和我说你打印个日志出来,然后看日志.但是我不会,只能printf把变量值输出到屏幕上看,也想写的更专业一点,求大神指点.那个日志是怎么做的,是自己写的函数,还是LINUX自带这种功能或函数,要怎么用.希望可以有一小段代码例子.还有日志的存放位置,写一个项目日志要存在同一个工程里吗 解决方案 用log4c等专业打印log的

c语言-C语言问个打印图形的题目

问题描述 C语言问个打印图形的题目 输入一个数n如n=5 打印出这样12345,怎么做啊 23451 34512 45123 51234 解决方案 #include "stdio.h" int main() { int n = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = i; j < i + n; j++) { printf("%d", j %

c语言读取文件出现一串乱码

问题描述 c语言读取文件出现一串乱码 c语言读取文件数据时最后出现一串乱码怎么办 解决方案 如果楼主文件没错误的话,想必应该是类型不匹配导致,比如占位符是%lf,而结构体中对应存储的成员变量却是int

c语言-C语言怎么让打印在控制台上的东西移动起来

问题描述 C语言怎么让打印在控制台上的东西移动起来 例如:hello world ,从控制台的左边移到右边,完事之后,在循环,就像html让打印的东西移动一样的效果!在linux平台下啊! 解决方案 #include #include #define N 8 void gotoxy(int x, int y); void Print(); int main() { int i=0; int flag=-1; while(1){ if(i==0||i==N){ flag=-flag; } i+=f

c语言-C语言指针相关问题,不能理解输出结果

问题描述 C语言指针相关问题,不能理解输出结果 #include<stdio.h> typedef unsigned char * char_point; char_point int_cp(int i) { printf("i: %dn", i); printf("&i: %pn", &i); printf("(c_p)&i: %pn", (char_point) &i); char_point cp

C语言怎么获得进程的PE文件信息_C 语言

一.打印Sections信息.下面的程序打印出Windows_Graphics_Programming 1.1中第三个程序"Hello World Version 3:Create a Full-Screen Window"生成的可执行文件的Sections结构字节的信息 #include<stdio.h> #include<windows.h> char *strPath="C:/c1_hwv3/Debug/c1_hwv3.exe"; in

一波C语言二元查找树算法题目解答实例汇总_C 语言

按层次遍历二元树问题描述:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印.  例如输入: 8 / / 6 10 / / / / 5 7 9 11 输出 8 6 10 5 7 9 11           定义二元树(其实是二元搜索树,但并不遍历算法)的结点为: struct BSTreeNode { int value; BSTreeNode *left; BSTreeNode *right; };       思路:利用队列的先进先出,很容易实现.每次取出队列的首