c - 在 scanf 上输入名称

标签 c printf

我一直在尝试为即将过生日的人制作一个小程序,好吧,遗憾的是我被困在第一部分,我插入

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

int main(){
    char name[10];
    printf("Please enter your name. \n");
    scanf("%s", &name);
    if(name=='Mariana'){
        printf("Hello Onee-sama");
    }
    else if(name=='David'){
        printf("Im sure you're not my master");
    }
    else{
        printf("Sorry, you are not authorized");
    }
}

(我恳求您忽略这些异常情况)并且当我运行它时,无论我插入什么名称,它都会给我 else 响应。我真的很感激帮助:)

最佳答案

KopKoder 编写的代码完美无缺。只是添加关于为什么必须使用 strcmp 或 strncmp 而不是 '==' 运算符的解释。 C 字符串实际上是 char 数组或指向 char 的指针,这意味着将指针与 const 数组进行比较总是会得到意想不到的结果。下面的链接可以更好地解释您的问题。

C String -- Using Equality Operator == for comparing two strings for equality

关于c - 在 scanf 上输入名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986125/

相关文章:

c - 如何在 Windows 上用 c 中的 ctrl+c 结束 while 循环?

c++ - 错误 LNK2005 : xxx already defined in MSVCRT. lib(MSVCR100.dll) C :\something\LIBCMT. lib(setlocal.obj)

html - ESP8266 html页面代码集成到.ino文件中

c - 在 C 中打印字符及其 ASCII 码

c - 重新声明全局变量与局部变量

c - 12 :4: error: variable-sized object may not be initialized

c++ - printf %g 和 %f 之间的零填充差异

c - 如何在不刷新缓冲区的情况下用换行符打印字符串?

c - 在固定数量的字符中漂亮地打印一个双数

c++ - 如何在 printf 上创建包装器?