2017-02-27 22 views
-1

私は現在、配列の単語をユーザーから取り出し、配列内の単語を検索するように要求するプロジェクトに取り組んでいます。プログラムは、配列内の単語の位置を示す必要があります。ここで私は何をしたのですか:char 2D配列の単語を検索する方法は?

#include <iostream.h> 
#include <conio.h> 

main() 
{ 
char studentsList[30][20]; 
int size, flag = 0, pos; 
cout << "Enter the size of the array: "; 
cin >> size; 
cout << "Enter yhe names of the students: \n"; 
for(int i = 0; i < size; i++) 
{ 
    cout << "Student no. " << i + 1 << ": "; 
    cin >> studentsList[i]; 
} 
for(int m = 0; m < size; m++) 
{ 
    cout << studentsList[m] << "\t"; 
} 
char searchName[20]; 
cout << "type the name you need to search: "; 
cin >> searchName; 
for(i = 0; i < size; i++) 
{ 
    if(studentsList[i] == searchName) 
    { 
    flag = 1; 
    pos = i + 1; 
    } 
} 
if(flag == 0) 
    cout << "Term not found."; 
else 
    cout << "Term found at position " << pos; 
getch(); 
} 

私はコードの何が間違っているかを捕まえることができません。常に 'Term not found'と出力されます。ヘルプは高く評価されます!

+1

これは、C++ではありません。それはいくつかの理由でコンパイルされません。あなたの問題は、コードを修正してコンパイルできるようになると、デバッガの助けを借りて簡単に解決できます。 – mpiatek

+4

Cの文字列を比較する方法については、[このポスト](http://stackoverflow.com/questions/8004237/how-do-i-properly-compare-strings-in-c)を参照してください。 'std :: string'を使った方があなたの人生が楽になることに注意してください。 – Rakete1111

+0

使用するヘッダーファイルのいずれもStandard C++の一部ではありません。どこからでもこのことを学び、どこからでも学ぶことができます。 –

答えて

-2

私はこの問題は、あなたが平等のチェックを使用している道を進んでいると思います。

それはif(studentsList[i] == searchName)

に==は、メモリアドレスを比較していますさ。 代わりに、char []を使用しているので、charによって等価charをチェックするユーティリティ関数を作成する方が良いです。

bool arrcmp(unsigned char arr1[], unsigned char arr2[]) { 
    int i = 0; 
    int match = 0; 

    if(strlen(arr1) != strlen(arr2)) { 
     return false; 
    } 
    for(i=0; i < strlen(arr1); ++i) { 
     if(arr1[i] != arr2[i]){ 
      match = 1; 
      break; 
     } 
    } 
    return match==0; 
} 
+0

これはコンパイルされません。あなたはたぶん 'bool arrcmp'を意味します。しかし、車輪を再発明していない - 彼は 'のstd :: strncmp'または'のstd :: STRING'& 'のstd ::を使用することができますfind' – mpiatek

+0

また、あなたの実装が純粋に間違っている - 文字列が8よりも短いときに何が起こりますか?もしそれらが長くなっても差異は9文字目から始まるとどうなりますか? – mpiatek

+0

あなたのコメントをありがとう、ちょうどそれを修正、申し訳ありません私は速く書いていた:) –

関連する問題