0

ここにあるものに固有のように見えるので、実際のコードは次のとおりです。

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

誰かが何か間違っていると思いますか?

4

3 に答える 3

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++ のどちらでコードを記述したいかを決定します。混合しないでください

于 2013-09-28T22:25:50.227 に答える
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、 or hello\r\n、またはおそらく ( unicode )など)以外のものであると思われhellostrcmp失敗します。

しかし、私の推測ではなく、printf上記の簡単な方法を使用して自分で確認できます。

入力の正確な 16 進ダンプを返して、strcmp それでも期待どおりに動作しない場合は、調査する価値があります。

于 2013-09-28T22:33:50.783 に答える