我有一个函数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]
我想知道是否有人可以告诉我我在这里做错了什么。
最佳答案
不要返回指向具有自动存储期限的对象的指针,并使用 scanf
从 stdin
读取字符串。
基本上将您的功能更改为:
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/