无法返回正确的if语句

时间:2015-03-23 15:17:58

标签: c++ char return const

#include <stdio.h>

#define _CRT_SECURE_NO_WARNINGS

int main(){

    const char* a = 0;
    const char* b = "Georgi";
    printf("Hello, write your name!\n");
    scanf_s("%s", &a);
    if (a = b){
        printf("\nHi,",b ,", its nice to see you my friend.");
    }
    else{
        printf("\nHello, its nice to meet you. My name is Supa-Dupa Computer!");
    }
    getchar();
    return 0;
}

所以我试图让插入特定名称后返回感觉的程序。 第一次它工作,但当我输入&#34; Georgi&#34;它打印了我&#34;否则&#34;感。现在当我甚至只输入一个标志时,程序就退出了。我出错的任何建议?

2 个答案:

答案 0 :(得分:1)

首先,a = b不会将ab进行比较。你想要==

其次,==仍然不正确,因为您正在比较char* s,它们只是指针。你想要strcmp(a,b)

最后,当a进入scanf_s时,std::string未初始化。首先分配内存,或者只使用cin

请注意,如果您的标记中实际上是C ++,那么您应该使用coutprintf代替scanf和{{1}}

答案 1 :(得分:0)

a = b表示&#34;将b的值分配给&#34;你想要的是a == b,这意味着&#34;检查a和b是否具有相同的值&#34;,但是为了比较C中的字符串,你应该使用juanchopanza指出的strcmp,也是未初始化,您需要通过使用malloc或将其更改为数组来为其分配内存。