gpt4 book ai didi

c - 传递一个结构进行比较

转载 作者:行者123 更新时间:2023-11-30 20:12:13 26 4
gpt4 key购买 nike

struct sign_in
{
char password[MAX_NAME_LEN+1];//The password for each player
char name[MAX_NAME_LEN+1];//Name of the people who can sign in
}



//prototype
int compare_names(char*, char*, struct sign_in*);


int compare_names(char*pName,char*pPassCode,struct sign_in *var)
{
int iComparison = 1;
int flag = 1;
int iComparison2 = 1;
int i = 0;

for (i=0;i<6;i++)
{
printf("%s \t %s ", var[0].name,pName );
if(iComparison != 0)
{
iComparison = strcmp(pName,var[i].name);
i++;
}
if(iComparison2 != 0)
{
iComparison2 = strcmp(pPassCode,var[i].password);
i++;
}

printf("%d", iComparison);
printf("%d", iComparison2);
}
}

我已经更新了我的代码,并尝试考虑你们推荐的许多方面,好消息是它现在可以运行。坏消息是它仍然尝试打印一些我不理解的随机术语,它通常只是符号的集合。该函数比较的结构有六个成员,因此这就是第一个 for 循环上参数的原因。

最佳答案

您提供的代码是一个草率的聚宝盆。编程时,这不太好。

  • 您忘记了 structsign_in 定义和 compare_names() 函数定义的右大括号
  • 您没有将 iComparisson 初始化为任何值。 flag 已初始化,但 iComparisson 未初始化。而且,拼写错误!
  • 请勿将 printf() 与用户输入的格式字符串一起使用,其中可能存在 %。至少要执行printf("%s", pname)。您可能还需要一个 \n
  • strcmp() 可能会返回 -1 表示 pName 排序在 var[i].name 之前(当然与它不同),所以 while(iComparisson == 1) 不会做你想要的事情
  • 您需要知道 var 数组的长度并在运行结束之前停止该循环
  • strcmp() 接受字符串,即指针。当您调用 strcmp(*pName, ...) 时,您将 pName“指向 char 的指针”取消引用为“char”。这就像从 pName 字符串中获取第一个字符,然后将该字符值放在需要指向字符值的指针的位置。不好。 var[i].name 的情况有点复杂,因为 name 是一个数组,但是去掉星号,也不需要它。
  • 如果 iPassCode 不匹配,第二个 while () 循环将永远循环,您可能需要 if ()
  • 在您的问题描述中,您省略了 *var[i].password 之后的结束反引号和“invalid type argument of unaray”之后的结束双引号,并且您显然破坏了编译器错误消息以及。这会让你更难理解你写的内容以及出了什么问题。
  • iPassCode == var[i].password 实际上看起来不错。由于示例中的所有其他荒谬问题,这似乎不是您遇到问题的代码......

关于c - 传递一个结构进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36782247/

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