gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:11 24 4
gpt4 key购买 nike

我正在尝试制作一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com