gpt4 book ai didi

c - 使用变量将不同的字符串分配给 char 数组

转载 作者:行者123 更新时间:2023-11-30 19:17:08 25 4
gpt4 key购买 nike

输入lakenum是1-5的整数。给定该整数,该函数应该分配一个名称并将字符串数组返回给主函数,但我却收到了指针错误:

error: return makes integer from pointer without a cast
error: function returns address of local variable

我使用 printf ("%s", lakenamer(lakenum)); 调用该函数

int lakenamer(lakenum) {
char lname[20] = "0";

if (lakenum == 1) {
strncpy(lname, "Ontario", 20);
} else if (lakenum == 2) {
strncpy(lname, "Erie", 20);
} else if (lakenum == 3) {
strncpy(lname, "Huron", 20);
} else if (lakenum == 4) {
strncpy(lname, "Muskoka", 20);
} else if (lakenum == 5) {
strncpy(lname, "Simcoe", 20);
}

printf("%s",lname);
return (lname);
}

最佳答案

如果要在函数外使用字符串,则需要在函数内为该字符串动态分配内存。

char* lakenamer( int lakenum )
{
char* lname = ( char* )malloc( 20 );
if ( lakenum == 1 )
{
strncpy( lname, "Ontario", 20 );
}
else if ( lakenum == 2 )
{
strncpy( lname, "Erie", 20 );
}
else if ( lakenum == 3 )
{
strncpy( lname, "Huron", 20 );
}
else if ( lakenum == 4 )
{
strncpy( lname, "Muskoka", 20 );
}
else if ( lakenum == 5 )
{
strncpy( lname, "Simcoe", 20 );
}
printf( "%s", lname );
return ( lname );
}

int main()
{
int lakenum = 1;
char* s = lakenamer( lakenum );
printf( "%s", s );

/*
.
.Do other stuff with s
.
*/

free( s ); // Very important !!
}

关于c - 使用变量将不同的字符串分配给 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650189/

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