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/

相关文章:

c - 如何将键盘输入输入内核?

c - malloc 在循环中崩溃,但在循环外正常

algorithm - 相互递归的实际例子?

类型列表和类型集合的Java数据结构

c++ - 构建 JSON 对象的算法

algorithm - Dijkstra算法中的三角不等式和路径松弛有什么区别?

CVE-2017-5753 边界检查绕过,又名每个人都在谈论的巨大错误

c - 递归,算法可能出错

c - 使用逻辑或运算符时出现代码错误

mongodb - 所有产品的单一大集合与每个产品类别的单独集合