我想从控制台应用程序中读取一个字符串并进行比较:
#include "string.h" #include "stdio.h" #include "stdafx.h" char* answer; int _tmain(int argc, _TCHAR* argv[]) { printf("(yes/no):"); scanf("%s", &answer); if (answer=="yes") { printf("Yes"); } else { printf("Exiting..."); } return 0; }
Exiting...
我放的时候总是收到消息yes
.我怎么可能读到正确的值,yes
但比较没有检测到 - answer=="yes"
- ?
还试过这个:
#include "string.h" #include "stdio.h" #include "stdafx.h" char answer[100]; int _tmain(int argc, _TCHAR* argv[]) { printf("(yes/no):"); scanf("%s", answer); if (!strcmp(answer,"yes")) { printf("Yes"); } else { printf("Exiting..."); } return 0; }
这使我成为第二个选择"Exiting..."
.这里有什么错误?
你的代码中有很多问题
1)你没有分配内存answer
.做
answer = malloc(100);
不要忘了free(answer)
以后再说.
要么
您也可以直接使用数组,因为您不需要动态内存
char answer[100];
char *
到printf()
没有char **
.做
scanf("%s", answer);
strcmp
用于比较字符串,而不是==
.
if (!strcmp(answer, "yes") { printf("Yes"); }
!
是因为,当s匹配时strcmp
返回.0
string
scanf()
.
if (scanf("%s", answer) != 1) { printf("scanf failed"); exit(0); }
char
要读取的s 数scanf()
以避免缓冲区溢出.
scanf("%99s", answer)
对于一个char array[100]
大小100
,应该给出99
空字符的位置\0
.