c - 在使用 C 的函数中返回字符串时遇到问题

标签 c arrays return

我有一个函数char enterComponent()我想让它询问用户一个字符串 name ,然后将名称返回到调用它的位置。

这是我的代码

char enterComponent(){
    char name[8];
    printf("    enter next component name:  ");
    sscanf("%s", &name);
    return name;      
}

这就是调试器告诉我的内容

warning: format not a string literal and no format arguments [-Wformat-security]
warning: return makes integer from pointer without a cast [enabled by default]
warning: function returns address of local variable [-Wreturn-local-addr]

我想知道是否有人可以告诉我我在这里做错了什么。

最佳答案

不要返回指向具有自动存储期限的对象的指针,并使用 scanfstdin 读取字符串。

基本上将您的功能更改为:

void enterComponent(char *name)
{
    printf("    enter next component name:  ");
    scanf("%s", name);
}

你可以这样称呼:

 char name[256]; // reserve enough space, use fgets / sscanf for safety

 enterComponent(name);

 printf("%s\n", name);  // prints your string

关于c - 在使用 C 的函数中返回字符串时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26522324/

相关文章:

c - MK时间 : unexpected result

arrays - 如何将简单(平面)数组转换为多维(2D)数组

c# - 创建数组属性是否有意义?

c - 返回逻辑运算符

c - c中exp函数的反函数指针

c - 如果我忘记将 null 分配给文件指针,如何检查文件是否打开

Python 数组,试图将文本文件放入数组中

C++ - 返回不同的变量类型

java - 尝试通过 if/else 返回值

c - 如果定义 float ,是否需要指定 x.yf?