gpt4 book ai didi

c - 函数无法返回字符串

转载 作者:行者123 更新时间:2023-11-30 19:15:04 26 4
gpt4 key购买 nike

我在 C 语言中从该函数返回字符串时遇到问题:

char setup(){

puts("Please select a size for the string");
scanf("%d", &size);
getchar();

char sequence[size];

printf("Please write any sequence of %d numbers\n", size);
fgets(sequence, size+1, stdin);

return *sequence;
}

大小设置为全局变量。主要是:

int main(){

int program=0;
char sequence_alt[size];

puts("Please select the number of the program to test:");
scanf("%d", &program);
getchar();

switch(program){
case 1:
sequence_alt[size]=setup();
break;

开关打开,但在这种情况下没有添加任何其他内容。如果我选择大小 5,我不会得到完整的字符串,例如 12345,而是只得到第一个字符。我已经搜索了很多指南,但我仍然无法理解问题是否实际上出在我的函数中,或者当我打印序列的值时我的 main 函数。任何提示和帮助都会很棒,我将永远感激不已。抱歉,如果代码太初级,但我仍在学习 C 语言中迈出第一步。

谢谢!

最佳答案

您的函数必须返回一个char *(而不是单个char)

char setup(){
...
return *sequence;
}

应该是

char *setup(void){
...
return sequence;
}
<小时/>
char sequence[size];

sequence是一个本地数组,他的生命周期在函数结束时结束,使用动态内存:

char *sequence = malloc(size);
<小时/>

fgets中使用size+1你可以在数组的边界之外写入,改变

fgets(sequence, size+1, stdin);

fgets(sequence, size, stdin);

关于c - 函数无法返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33159728/

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