c++ - 无法返回正确的 if 语句

标签 c++ char return constants

#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;
}

所以我试图让程序在插入特定名称后返回意义。 第一次它起作用了,但是当我输入“Georgi”时,它给我打印了“else”的感觉。现在,当我只输入一个符号时,程序就会退出。我哪里出错了有什么建议吗?

最佳答案

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

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

最后,当您scanf_s 进入它时,a 没有被初始化。先分配内存,或者直接使用std::string

请注意,如果这实际上是您标签中的 C++,您应该使用 cincout 而不是 printf扫描

关于c++ - 无法返回正确的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29213889/

相关文章:

c - C中的初始化字符串

Python 返回另一个函数

c++ - 如果全局定义,为什么 std::ifstream 不更新

c++ - 完美转发类模板参数推导

c++ - 为什么析构函数不释放数组内存?

c++ - 将 unsigned short/int 转换为 char *

c++ - CRTP 的模糊过载

c++ - 检查空字符 C++

javascript - Javascript 中返回多个参数

c - 返回结构和 Int 的结构