-1

ユーザーに名前とID番号を尋ねるプログラムを実行しています...次に、検索機能を追加しました。たとえば、「ボブ」という名前を検索すると、「ボブは配列位置xでID:xxxxxで見つかりました」と表示されます

私の問題は、コードの「ID:xxxx」部分が乱数を与えていることです...たとえば1234のはずですが、4210832のようなものを与えています

ここにコードがあります

void search_surname()
{
    int index, found=0;
    char surname_to_find[10];

    printf("Please enter the student surname to search for\n\n");
    gets(surname_to_find);
    fflush(stdin);
    system("cls");
    for(index=0;index<height_of_array;index++)
    {

        if(strcmpi(surname_to_find, surname[index]) == 0)
        {
            found=1;

            system("cls");                                                      
            printf("%s found in array position %i, with the ID: %i \n\n", surname_to_find,     
            index+1, id[array_index] );
            getch();

なぜそれが乱数を与えているのか100%確信が持てない

ありがとう。

4

2 に答える 2

1

id[array_index]に変更id[index]

于 2012-05-22T16:34:25.340 に答える
1

正確な答えを指摘することができないほど不完全なコードを投稿しました。代わりに、問題にアプローチする方法:

  • まず、 for ループの変数のように、id[array_index]の代わりに使用しているのは奇妙です。(あなたの関数では定義されていません。それはグローバルですか? グローバルは避けてください!)。id[index]indexarray_index
  • サンプルコードのどこにidも入力されていないか、宣言されていません。正しく入力されていることを確認してください。最初に値を入力せずに使用idすると、奇妙なものが出力されます (初期化されていません)。デバッガーは、正しく入力されていることを簡単に確認できるようにする必要があります。それ以外の場合は、ループして印刷します。
  • デバッガーを使用して、プログラムの実行を監視します。

最後にもう 1 つ: C には構造体があります。そのように複数の配列を使用する理由はありません。

struct surname_info {
    unsigned int id;
    const char *surname;
};
⋮
struct surname_info surnames[10];
surnames[0].id = 1234;
surnames[0].surname = "Bob";
/* etc */
于 2012-05-22T16:47:18.543 に答える