gpt4 book ai didi

c - 使用 c 中函数的输出声明字符串变量

转载 作者:行者123 更新时间:2023-11-30 16:13:34 25 4
gpt4 key购买 nike

我对编程并不陌生,但我对 C 编程很陌生,我一直在这里寻找有关家庭作业问题的帮助,但似乎找不到答案。

上下文:我们被要求从用户那里获取一个月的输入,并确定该月属于哪个季节并将其打印出来。

问题:我正在尝试使用 C 中函数的输出来声明字符数组变量(季节)。

Java 示例:String season = determineSeason(month);

我现在拥有的是(不是整个程序):

char month[10];
printf("Enter a month: ");
scanf("%s", month);

char season[7] = detSeason(month);
printf("season: %s", season);

char* detSeason(char month[10])
{
char season[7];
if ((strcmp(month, "september")) == 0 || (strcmp(month, "october")) == 0 || (strcmp(month, "november")) == 0)
{
return strcpy(season, "Spring");
}

我遇到的问题是 char season[7] = detSeason(month);

我收到的错误是:array initializer must be an initializer list or string literal

我的猜测是,它尝试使用函数调用作为字符串文字,而不是实际调用函数并将输出存储在变量中。

有人可以让我知道我做错了什么吗?

注意:我已经剪掉了其余的 else if 语句,以免这篇文章太长,但它遵循与第一个 if 语句相同的格式。

提前谢谢您:)

附:有谁知道为什么它不允许我在帖子开头添加“你好”,它总是将其切断?

最佳答案

您的错误发生在这里:

char season[7] = detSeason(month);

在 c 中,你不能只定义一个数组并为其分配一个字符串。您需要迭代字符串中的每个元素并单独分配它。类似于(伪代码):

for i in (length of string):
array[i] = string[i]

您需要研究的另一件事是 malloc(),因为您的字符串长度不同,因此您需要创建不同长度的数组,以便在比较字符串时它们相等。

例如,如果我像上面的示例一样定义一个静态长度为 7 的数组,并且月份是可能:该数组将如下所示: [m, a, y, X, X, X, X]其中 X 是一种“剩余空间”,这意味着您的字符串比较不会返回 true。

如果您需要更详细的解释,请告诉我:)

关于c - 使用 c 中函数的输出声明字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58003572/

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