1

ユーザーがファイル内の名前を検索できるようにするプログラムを作成しようとしています。プログラムはこれを正常に実行しますが、ファイル内で名前が大文字になっているため、誰もが名前を入力するとは限らないことに気付きました。つまり、誰かが「sarah」を検索しても、名前がファイルに「Sarah」とリストされているため、その名前は見つかりません。これを回避するために、比較時に両方の文字列を大文字に変換しようとしました。私は独学で C を学ぶのはとても初めてなので、正しい方向に進んでいるかどうかさえ確信が持てません。この時点で、「配列初期化子は初期化子リストまたは文字列リテラルでなければならない」という 2 つのエラーが発生しているため、プログラムをコンパイルすることさえできません。私の構文が無効であるだけでなく、完全に間違った方向にあることを意味すると思います。

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

     int main(void)
     {
        FILE *inFile;
        inFile = fopen("workroster.txt", "r");
        char rank[4], gname[20], bname[20], name[20];

        printf("Enter a name: __");
        scanf("%s", name);
        int found = 0;
        while(fscanf(inFile, "%s %s %s", rank, bname, gname)== 3)
        {   char uppername[40] = toupper(name[15]);
            char upperbname[40] = toupper(bname[15]);
            if(strcmp(uppberbname,uppername) == 0)
            {
                printf("%s is number %s on the roster\n", name, rank);
                found = 1;
            }
        }

        if ( !found )
            printf("%s is not on the roster\n", name);

        return 0;

      }
4

4 に答える 4