c - 错误 : A function Can't return char type in C

标签 c data-structures

我正在尝试制作一个 ADT,但是当我创建一个返回 char 类型的函数时,该程序无法运行。这是 ADT:

typedef struct{
int ID;
char Writer[100];
char Title[100];
long Year;
}Book;

函数是:

char GetTitle(Book B){
return B.Title;
}

我用它来获取函数的返回值:

printf("%s",GetTitle(B));

如何返回 Char 类型?

最佳答案

你返回一个 char* 而不是

char* GetTitle(Book *B){
    return B->Title;
}

请注意,这只是返回一个指向书名的指针。所以当书被销毁时,指针就失效了。你不能返回整个标题,因为你不能返回一个数组。如果你想在得到指针后复制字符串(这样它在销毁书后仍然有效),使用 strdup:

Book* B = malloc(sizeof(Book));
// [...] initialize the book...
char *title = strdup(GetTitle(B));
free(B);
printf("%s",title);
free(title);

编辑:如果 strdup 不可用,检查 this answer用于实现。

关于c - 错误 : A function Can't return char type in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52660847/

相关文章:

字符与数字的比较

algorithm - 预序和与中序遍历的关系

c++ - 将数据结构 c++ 保存到磁盘

python - 您将什么称为允许持久操作的非持久数据结构?

python - 如何为 SafeConfigParser 设置默认值?

c - 像 C 中的一维数组一样对二维数组进行排序?

c - 基数排序循环错误

c - 尝试在 C 中打印 double 时没有得到正确的输出

c - select() 在长时间运行后立即超时 (C++)

arrays - 在小于线性时间内,在排序数组中找到重复项