【发布时间】:2021-06-05 09:58:03
【问题描述】:
我需要从 main 调用一个函数来确定一个字符串值。但是,据我所知,字符串不能采用string_name = call_function() 的形式。字符串的分配必须采用strcpy(str1, str2) 的形式,对吗?所以我想知道这个strcpy 和str1 作为变量名,而str2 是另一个函数的返回字符串值,我做错了什么。
到目前为止,这就是我所拥有的。
#include <stdio.h>
#include <string.h>
char *get_name(int num);
char *get_name(int num) {
char real_name[30];
if (num == 1)
strcpy(real_name, "Jake Peralta");
return real_name;
}
void main() {
char name[30];
int num;
num = 1;
strcpy(name, *get_name(num));
printf("%s", name);
}
它没有在我的输出屏幕上打印任何东西。
我尝试过的:
-
get_name(num)不使用指针(还是不行)
p/s:这不是实际代码。这只是我正在尝试做的一个例子,实际代码更长,我已经确定这部分是错误的来源。
【问题讨论】:
-
返回字符串的常用方法是让调用者分配缓冲区,并将指向它的指针及其大小作为参数传递。所以你会有
void get_name(int num, char *real_name, size_t real_name_size) {...}并像char name[30]; get_name(num, name, sizeof(name));一样称呼它。 -
您传递的是
char而不是char*。您的编译器应该显示一些警告。如果没有,您应该调高警告级别。对于 GCC,您可以使用-Wall -Wextra