0

プログラムは文字列を文字列配列として格納します。文字列は、名前、アドレスなどです。 • プログラムは、ユーザーが文字列を入力できるようにする選択画面を表示します (最大 16 文字、文字列は最大 128 文字です)、データベースから文字列を削除する、データベース内の文字列を表示する、検索するプログラムを終了します。

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void clearscreen()
{
    system("cls");
}

int main()
{
    int b1,b,c;
    char data[20]; 
    int number,a;

    do{
        clearscreen();
        printf("How many data do you want to store  ");
        scanf("%d",&number);

        for(a=1;a<=number;a++)
        {
            printf("Input your data %d_No:       ",a);
            scanf("%s",&data[a]);
        }

        printf("What action do you want to do\n [1]Remove data\n [2]View data\n [3]Search data\n[4] Quit");
        scanf("%d",&b1);

        switch(b1)
        {
            case 1:

                clearscreen();
                break;
            case 2:
                for(c=1;c=number;c++)
                {
                    printf("%d:%s",a,data[a]);
                }
                break;
            case 3:
                break;
            case 4:
                return 0;
                break;
        }

        printf("\nDO you want to continue\n[1] YES\n [2] No   ");
        scanf("%d",&b);
        if (b==2)
        {
            return 0;
        }
    } while(b !=2);
}

プログラムは実行されていますが、2 に切り替えると、int 番号と char データを読み取ることができません。なぜですか? そして、私は何をすべきですか?

4

2 に答える 2

2
for(c=1;c=number;c++)
    printf("%d:%s",a,data[a]);

ここには 3 つの問題があります。c <= number1 つ目は、データ入力ループに基づいて、おそらく を意味していたということです。

a2 つ目は、使用する必要があるのではなく、配列インデックスとして使用していることですc

最後は、配列がゼロベースであるため、包括的であるというint a[20]ことです。つまり、ループはtoではなくfromに移動する必要があります。a[0]a[19]0number - 11number

于 2012-10-14T10:51:53.863 に答える
0

ケース2の場合、代わりにc変数を使用して使用しますc<=numberc=number

for(c=1;c<=number;c++)
                {
                    printf("%d:%s",c,data[c]);
                }
于 2012-10-14T10:51:05.753 に答える