C 谁能告诉我为什么不是';我的if/else状态不工作吗?

C 谁能告诉我为什么不是';我的if/else状态不工作吗?,c,if-statement,C,If Statement,我试着玩弄一些小细节,但似乎效果不太好。我不知道为什么 #include <stdio.h> #include <stdlib.h> int main() { char adminName[20]; char userName[20]; adminName[20]= "Admin"; printf("Please, enter your name:"); scanf("%s", userName); if(userNa

我试着玩弄一些小细节,但似乎效果不太好。我不知道为什么

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

int main()
{
    char adminName[20];
    char userName[20];
    adminName[20]= "Admin";

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

    if(userName == adminName) {
        printf("Welcome, Admin! \n");
    }

    printf("Wrong log-in details, %s. \n", userName);
    return 0;
}
#包括
#包括
int main()
{
char-adminName[20];
字符用户名[20];
adminName[20]=“管理员”;
printf(“请输入您的姓名:”);
scanf(“%s”,用户名);
如果(用户名==adminName){
printf(“欢迎,管理员!\n”);
}
printf(“错误的登录详细信息,%s.\n”,用户名);
返回0;
}

在你的问题中有很多错误。 首先

adminName[20] ="admin";
将抛出一个警告,并且您的admin数组未设为“admin”,而第20个元素甚至不存在,因为您的adminName最大值为[19]

您不能直接将字符串复制到另一个数组,请将其用于字符串复制

strcpy();
作为比较,使用

strcmp();

更好地学习string.h头文件。这两个都存在于string.h头文件中

请尝试这个,它可以根据您的需要工作,阅读代码中的注释,在学习过程中犯一些错误是正常的

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

int main(  )
{
  char adminName[20];
  char userName[20];

  strcpy( adminName, "Admin" ); // use strcpy

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

  if ( !strcmp( userName, adminName ) ) // use strcmp
  {
    printf( "Welcome, Admin! \n" );
  }
  else              // use else
    printf( "Wrong log-in details, %s. \n", userName );

  return 0;
}
#包括
#包括
int main()
{
char-adminName[20];
字符用户名[20];
strcpy(adminName,“Admin”);//使用strcpy
printf(“请输入您的姓名:”);
scanf(“%s”,用户名);
如果(!strcmp(userName,adminName))//使用strcmp
{
printf(“欢迎,管理员!\n”);
}
else//使用else
printf(“错误的登录详细信息,%s.\n”,用户名);
返回0;
}

更改此
if(userName==adminName)
->
if(strcmp(userName,adminName)==0)
。因为您正在比较字符串。这不是比较字符串的工作方式。这不是它的工作原理!谢谢,我想知道如何使用strcpy():)还有20个字符的名称似乎有点短,您可以决定扩展到30个。