2016-05-28 20 views
-2

私はこのコードを書いています。テキストを入力する場所は、"helloWorld"とし、入力したテキストと一致する場合はテキストを101回印刷するように比較します。しかし、それはif (string == "helloWorld")の文字列を比較していないように見え、それは直接else部分にスキップします。それを行う方法について必要な情報を提供してください。Cの文字列を比較

はここに私のコードです:

#include<stdio.h> 
#include<conio.h> 

void main() 

{ 
    int i; 
    char string[30]; 
    clrscr(); 
    printf("Enter the string 'helloWorld' if you wanna see magic\n"); 
    scanf ("%s", string); 
    printf("Your enterred Input is %s\n", string); 
    if (string == "helloWorld") 
    { 
     for (i=0;i<=100;i++) 
     { 
      printf("%s\n",string); 
     } 
    } 
    else 
    { 
     printf("Invalid Input\n"); 
    } 
    getch(); 
} 

はまた、私はCで、私たちはCでchar variable[sting_length]を使用して文字列を入力するとことを知って、私たちはあらゆるスペースせずに文字列を入力する必要があります。しかし、 "Hello World"のような文字列を入力する方法はありますか?

+4

C文字列と '=='演算子を比較することはできません。それは彼らの内容ではなく、彼らの住所を比較するでしょう。標準の 'strcmp'関数を探します。 –

+0

"スペースを入れずに文字列を入力する必要があります" - そうですか? 「われわれ」とは、あなたのクラスの人々を意味する場合、これはあなたの先生による制限かもしれません。しかし、残りの部分については、これはナンセンスであり、C標準によって義務づけられるものではありません。 – Olaf

答えて

-2

スペースで文字列を読み取るには、文字が新しい行に到達するまで文字を読み取るループを作成します。

int i = 0; 
char inputChar = ' '; 
char* string = new char[STRING_SIZE]; 
do 
{ 
    getch(inputChar); 
    string[i] = inputChar; 
    i++; 
} while (inputChar != '\n' && i < STRING_SIZE); 

このコードでは、STRING_SIZEは選択した配列のサイズです。

文字列を比較するには、各要素が同じであることを確認するために各要素をチェックする必要があります。コードのこれら二つのセクションを使用して

char compare[] = "Hello, world!"; 
int i = 0; 
bool areEqual = true; 
while (areEqual && compare[i] != '\n') 
{ 
    if(compare[i] != string[i]) 
    { 
     areEqual = false; 
    } 
} 

、あなたは、あなたの選択した任意の文字列と比較し、スペースを含む文字列を読み取ることができるはずです。文字列の長さも異なる場合があります。

+0

'getch'は標準関数ではありません。そして、より簡単でより良い方法があります。スターターの場合:標準機能を使用し、ホイールを改造しないでください! – Olaf