我正在尝试制作一个 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用于实现。
我是一名优秀的程序员,十分优秀!