在scanf上输入名称

时间:2016-12-06 01:04:26

标签: 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");
    }
}

(我恳求你忽略异常)当我运行它时,无论我插入什么名字,它都会给我别的回应。我真的很感激帮助:)

2 个答案:

答案 0 :(得分:1)

KopKoder编写的代码完美无缺。只是添加解释为什么必须使用strcmp或strncmp而不是&#39; ==&#39;运营商。 C字符串实际上是char数组或指向char的指针,这意味着将指针与const数组进行比较将始终产生意外结果。以下链接可以更好地解释您的问题。

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

答案 1 :(得分:0)

您只需要使用strcmp来比较C char数组。这是您的代码修改。 希望这有帮助!

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

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