c - 返回的字符串值变成垃圾

标签 c string char return

我正在尝试将字符数组 值传递给字符指针。然后这个值被返回给调用它的方法,但是在它被返回之后,这个值就变成了垃圾。谁能帮帮我?

#include <stdio.h>

const char * getname(){
     char nam[10];
     char * name;
     gets(nam);
     name = nam;
     return name;
}
main(){
       printf("%s",getname());
       getch();
}

一切正常,直到字符串返回

最佳答案

nam 变量具有函数作用域。这意味着一旦函数结束,该变量的内存就会被释放。因此,指向您返回的那段内存的指针将不再有效。

您可以传入指针:(在这种情况下有点毫无意义,如您所见)

void getname(char *name)
{
  gets(name);
}

你可以malloc(不好,因为你需要在某个时候再次free):

const char * getname(){
     char * name = malloc(10);
     gets(name);
     return name;
}

关于c - 返回的字符串值变成垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15020105/

相关文章:

c - 在C中反转字符串不起作用

python - 如何打印字符串中的单词?

C# 从数组中删除重复的字符

C - 将字符显示为十六进制

c - 如何在 scanf 字符串中包含空格?

c - 将项目插入链表 - 是否需要迭代(C)?

C:将字符串中的每个字母加倍

c - 读取链表节点内的字符数组?

c# - 按 2 个小数点对字符串列表进行排序

java - 如何找到字符串中最常见的字符