0

私はcでコードを書きました:

const char *str[125000]; 
float k[125000];
long n;
char string[20];
int i;
scanf("%d",&n);
    for (i=0;i<n;i++)
    {
    scanf("%s%f",&string,&k[i]);
    p=p/k[i];
    str[i]=_strdup(string);
    }

この時点で、すべてが完璧です。n=100000 の場合でも、配列はいっぱいになります。しかし、私が変わると

for (i=0;i<n;i++)

for (i=n;i>0;i--)

「アクセス違反」エラーが発生します。どうしてこうなったのかわからないので、どなたか助けてください。前もって感謝します。

4

2 に答える 2

2

を使用して文字列を読み取るときは、文字列%sのアドレスを渡すのではなく、単に文字列: を渡しますscanf("%s%f",string,&k[i]);

于 2013-09-09T20:15:47.080 に答える