gpt4 book ai didi

不能比较两个以上的字符串吗?

转载 作者:行者123 更新时间:2023-11-30 21:10:07 24 4
gpt4 key购买 nike

如果我们比较整数,我们会将其中一个指定为最大/最小的整数。但是,当我尝试比较两个以上的字符串时,我无法管理分配。在我的代码中,“for 循环”比较两个字符串。这是一个很好的方法,但我需要将其中一个方法与其他方法进行单独比较。 (我可以预测我需要使用两个for循环,但我也无法实现)你的建议是什么?

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct wordSorting
{
char name[15];
int i = 0;
};

int main()
{
wordSorting *wordElement = (wordSorting *)malloc(sizeof(wordSorting));
wordElement = (wordSorting *)malloc(sizeof(wordSorting));

printf("-- Enter three person name --\n\n");
for (wordElement->i = 0; wordElement->i < 3; wordElement->i++)
{
printf("Enter %d. person name: ", wordElement->i + 1);
scanf("%s", wordElement[wordElement->i].name);
}
printf("\n");

for (wordElement->i = 0; wordElement->i < 3; wordElement->i++)
{
if ((strcmp(wordElement[wordElement->i].name, wordElement[wordElement->i + 1].name))<0)
{
printf("%s", wordElement[wordElement->i].name);
}
}
}

最佳答案

第一

typedef struct wordSorting
{
char name[15];
int i = 0;
};

无法初始化 typedef/struct 的成员。这不是定义 typedef 的方法,请将其更改为:

typedef struct
{
char name[15];
int i;
}wordSorting;

第二:

wordElement = (wordSorting *)malloc(sizeof(wordSorting));  

没有任何意义。 malloc 返回 void 指针,并且您已经在第一行代码的第一个元素处初始化了变量。并且,正如有人编辑的那样:请不要强制执行 malloc 返回。

第三,:

wordSorting *wordElement = (wordSorting *)malloc(sizeof(wordSorting));
wordElement = (wordSorting *)malloc(sizeof(wordSorting));

printf("-- Enter three person name --\n\n");
for (wordElement->i = 0; wordElement->i < 3; wordElement->i++)
{
printf("Enter %d. person name: ", wordElement->i + 1);
scanf("%s", wordElement[wordElement->i].name);
}

您正在为一个元素分配空间,但没有定义数组,则 wordElement[wordElement->i].name 是未定义的行为。

终于

我不知道你用的是什么编译器,但 gcc 无法编译这样充满错误的糟糕代码...

建议。

我认为你需要的是使用数组,但是你必须分配你需要的成员数量,方法是:

wordSorting *wordElement = malloc(sizeof(wordSorting)*num_of_elements);

或者简单地,使用本地数组:

wordSorting wordElement[num_of_elements];

关于不能比较两个以上的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31781723/

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