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++ - _wfreopen 适用于 c :/path/file. txt 但不适用于 c :\path\file. txt?

java - 如何优化Java中计算Pronic数的解决方案

algorithm - 在重叠区间中查找基本区间

c - 我的编译器错误是什么意思?

c - C 的新手,所有的数学计算都略有偏差

c - 为什么这不会打印?

java - 使用字符串并在添加节点时遇到问题的二叉树

C++图形构建问题

algorithm - 在整数的单链表中,查找该列表是否为回文

c - 如何从源代码而不是开发包安装 header