#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;感。现在当我甚至只输入一个标志时,程序就退出了。我出错的任何建议?
答案 0 :(得分:1)
首先,a = b
不会将a
与b
进行比较。你想要==
。
其次,==
仍然不正确,因为您正在比较char*
s,它们只是指针。你想要strcmp(a,b)
。
最后,当a
进入scanf_s
时,std::string
未初始化。首先分配内存,或者只使用cin
。
请注意,如果您的标记中实际上是C ++,那么您应该使用cout
和printf
代替scanf
和{{1}}
答案 1 :(得分:0)
a = b
表示&#34;将b的值分配给&#34;你想要的是a == b
,这意味着&#34;检查a和b是否具有相同的值&#34;,但是为了比较C中的字符串,你应该使用juanchopanza指出的strcmp
,也是未初始化,您需要通过使用malloc
或将其更改为数组来为其分配内存。