为什么输出乱码

dxxw 2016-06-24 11:24:17
最近在学习C语言,想知道下面代码为什么会输出乱码。


#include "stdafx.h"

char* getLine() {
int c;
char a[20];
int index=0;
while ((c = getchar())!='\n') {
a[index++] = c;
}

a[index] = '\0';

return a;
}
int main()
{
printf("%s", getLine());
while (true) {}
return 0;
}
...全文
92 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2016-06-24
  • 打赏
  • 举报
回复
你返回的是一个在栈上分配的数组首地址(getLine调用结束该数组生命周期就结束了)
改成用malloc出来的堆空间才行


#include<stdio.h>
#include<stdlib.h>
char* getLine() {
int c;
char *a = (char *)malloc(20);
int index = 0;
while ((c = getchar()) != '\n') {
a[index++] = c;
}

a[index] = '\0';

return a;
}
int main()
{
printf("%s", getLine());
while (true) {}
return 0;
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧