C无法弄清楚if语句

时间:2015-06-19 19:35:41

标签: c

所以我正在努力学习c但是我无法弄清楚为什么这段代码不会正常运行。

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

int main()
{
    char userName[25];
    char myName[25] = "myName";

    printf("Please enter your name: \n");
    scanf("%s", userName);

    if(userName == myName)
    {
        printf("Congratulations your name is myName!!!");
    }
    else
    {
        printf("Your name is %s how disappointing...", userName);
    }


    return 0;
}

问题是if语句似乎永远不会返回true。 任何人都可以帮我这个吗?

5 个答案:

答案 0 :(得分:3)

这一行比较了不同字符串的 locations ,因为你要比较两个不同的字符串。

if(userName == myName)

C中的正确测试是使用库函数。

#include <string.h>
...
if(strcmp(userName,myName) == 0)

答案 1 :(得分:1)

在C中,您应该使用strcmp()来比较两个字符串。

所以改变这个:

jar

到此:

if(userName == myName)

答案 2 :(得分:1)

你无法比较那样的字符串。你正在做的是比较指向各自叮咬的指针(明显不同)。   所以,

 userName == myName

在这里不起作用。您可以使用字符串函数来比较两个字符串。

答案 3 :(得分:0)

声明if(userName == myName)将无法按照您期望的方式运行。使用strcmp()函数比较两个字符串。

答案 4 :(得分:0)

使用strcmp / strncmp中声明的string.h来比较字符串;在程序中,您要比较的值(转换后)是指针值。