这是实际的代码,因为它似乎特定于此处。
#include <iostream>
#include <string.h>
using namespace std;
int main()
cout << " Just say \"Ready\" when you want to start.";
char tempReady[20];
cin >> tempReady;
length = strlen(tempReady);
char* ready = new char[length+1];
strcpy(ready, tempReady);
while((strcmp(ready, "Ready")||strcmp(ready, "ready"))!=0)
{
cout << "Try again.";
cin >> tempReady;
length = strlen(tempReady);
delete[] ready;
ready = new char[length+1];
strcpy(ready, tempReady);
}
cout << "Success";
有人看错了吗?
答案 0 :(得分:3)
C风格的方法:
char str[256];
if (scanf("%255s", str) == 1 && strcmp(str, "hello") == 0) {
printf("success");
}
C ++方法:
std::string str;
if (std::cin >> str && str == "hello") {
std::cout << "success";
}
现在决定是否要用C或C ++编写代码,只需 不要混合 。
答案 1 :(得分:2)
while((strcmp(ready, "Ready")||strcmp(ready, "ready"))!=0)
应该是
while(strcmp(ready, "Ready") != 0 && strcmp(ready, "ready") != 0)
你写的版本永远都是真的。
答案 2 :(得分:1)
以下是如何进行一些基本调试,例如准确检查输入内容。
using namespace std;
char* string = new char[6];
cin >> string;
for(int i=0; i<6; ++i)
{
printf("[%d]: Hex: 0x%x; Char: %c\n", i, string[i], string[i]);
}
while(strcmp(string, "hello")==0)
{
cout << "success!";
}
我怀疑您的输入不是hello
,(例如hello\n
或hello\r\n
,或者甚至是( unicode ){{1 }},这使hello
失败。
但不是我猜测,你可以使用上面的简单strcmp
检查自己。
如果您可以使用输入的确切十六进制转储返回,并说明printf
仍然 无法按预期工作,那么我们'我有值得研究的东西。