2016-11-10 9 views
1

このコードが動作しない理由はわかりません。誰かが私を助けてくれますか? (それが可能だ場合、私は唯一の数週間前、C勉強を始めましたので、私は、シンプルなバージョンの修正を求めています。)Cの単語を比較する方法

#include <stdio.h> 
#include <string.h> 


int main() 
{ 
    char *name="alina"; 
    char *input; 
    printf ("what's your name? \n"); 
    scanf ("%s",&input); 
    if (input=="alina") 
     printf("your name is %s good job!\n ",&name); 
    if (input!="alina") 
     printf("are you sure? open the program again and insert the correct name"); 
    while (1); 
} 
+0

あなたは入力のためにメモリを割り当てる必要があります - mallocを見てください。文字列を比較するには、strcmpのようにsomethinkを使うことができます –

+0

また、 'input'と' name'の前に '&'を取り除きます。彼らはすでに指摘している。 – itsme86

+0

あなたが私にコードを正しく書く方法の例を教えてもらえますか? –

答えて

0

いくつかのエラーがありました。まず、文字列を挿入する場合は、%sを使用できますが、その文字列を格納できるcharの配列を使用する必要があります。つまり、あなたはこのようなものを書く必要があります。

char input[100]; 
scanf("%s", input); 

です。このコードスニペットは、文字列を挿入(格納)する必要があることを意味します。最初に私はそれを格納できる場所を作成します(文字列は最大99文字でなければなりません;配列のサイズは100ですが、最後の文字は文字列の最後を表すために使用されます)。私が欲しいものを書くにはscanfです。

2つ目のエラーは、2つの文字列を比較する場合、数字を使用するときと同じように、単に==または!=を使用できないということです。

#include <stdio.h> 
#include <string.h> 

int main() { 

    char* name = "Alina"; 
    char input[100]; 
    printf("What's your name?\n"); 
    scanf("%s", input); 
    if (strcmp(name, input) == 0) 
     printf("Your name is %s good job!\n", name); 
    else 
     printf("Are you sure? Open the program again and insert the correct name\n"); 

    return 0; 
} 

char* name = "Alina"; 
char input[100]; 

は最終的に、ここにあなたのコードの検査バージョンだということを思い出して

if (strcmp(name, input) == 0) // this means the strings are equal 
    ... 
else 
    ... 

string.hライブラリには、このように、strcmp機能を使用することができますコードの末尾にあるwhile(1)は絶対に危険です。なぜなら、決して終わらない無限ループを開始し、プログラムがクラッシュするからです。あなたは間違いなくそれを削除したい!

+0

ありがとうございます!それは最終的に働いている!私はそれをしないで、すぐにプログラムを閉じますが、私はそれを書いてもプログラムは開いたままですので、これが私がやった理由ですが、もう一度、ありがとう! –

+0

答えをマークして、他の人にそれを知らせる –

+1

無限ループはプログラムをクラッシュさせません。それはちょうどそれが終了するのを防ぎ、CPUをフラットにしたままにしておきます。プログラムがターミナルウィンドウで実行され、プログラムが終了するときにウィンドウが消えるIDEでプログラミングする多くの人々は、Windows上で 'getch()'の変種 - 多くの場合getch()を使用します - ユーザーからの入力を待つ終了する前に。 –

1

次の変更適用する必要があります。

char input[256]; 
scanf("%s", input); 
printf("your name is %s good job!\n ", name); 

にします文字列を比較するにはstrcmpを使用してください - この関数のドキュメントを見てください。

scanfに注意してください - あなたがそこに保管できる長さと間違っていることを考えてください。あなたは見てくださいscanf_s

関連する問題