讨论/题目交流/c语言/
c语言

为什么这个比较会是否????

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

int main()
{
    //创一个结构体类型,Student。
    typedef struct
    {
        char* name;
        int score;
    }Student;
    
    //声明一个类型为Student的数组,数组名为students。
    Student students[4] =
    {
        {"jack",100},
        {"rose",99},
        {"peter",90}
    };
    
    printf ("请输入名字:");
    char name [10];
    rewind (stdin);
    
    fgets (name,10,stdin);
    size_t lenth = strlen (name);
    
    if(name[lenth - 1] == '\n')
    {
        name[lenth - 1] = '\0';
    }
    //我怕类型不同。特地声明一个Student变量
    Student studentName;
    //并给stdentNamne变量的name成员赋值
    studentName.name = name;
    //循环次数就是数组的长度
    for (int i = 0; i < sizeof (students) / sizeof (students[0]); i++)
    {
        if (students[i].name == studentName.name)
        {
            printf ("wc!!!");
        }
            
    }
    
    
    return 0;
}

输入jack。然后去判断。没有输出wc!!!。而是直接结束程序。说明判断为否。。我萌新很懵逼。

按照我自己的想法运行的话,应该第一次循环就会判断为1。然后执行输出。

我应该可以想到,两个对比的可能是地址,两个地址不同。。不过我也不知道解决方案。。

展开讨论

字符串比较要用strcmp

3