-3

確かに単純ですが、私はCの初心者であり、次のコードがバグを起こしている理由がわかりません。コードは、文字列の単純な文字位置の反転です。

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

int main()
{   int i,length;
    char *word;
    scanf("%s",word);
    length = strlen(word);
    char res[length];

    for(i=0;i<length;i++){
        res[i]=word[length-1-i];
        printf("%d",res[i]);}
}

文字列を入力すると、コンソールに(lldb)というメッセージが表示され、デバッガーに次のメッセージが表示されます:movb%al、(%rcx)、EXC_BAD_ACCESS(code = 1、address = 0x0)

4

2 に答える 2

5
char *word;
scanf("%s",word);

存在しないメモリ位置への書き込みが無効です。

次のような配列を作成します。または、またはをchar word[MAXSIZE]使用してメモリを動的に割り当てます。そして使用しないmalloccallocfgetsscanf

あなたを陽気な道に導くためのいくつかのリンク: malloccallocfgets

于 2012-10-17T16:54:32.250 に答える
1
printf("%d",res[i]);

%cバイト値の代わりに文字を出力する場合は、の代わりに使用%dします。

于 2012-10-17T16:58:49.540 に答える