0

宿題をしようとしています

この行を問題なくセグメンテーション違反なしで使用できるようになる前に、コードをコンパイルした後、なぜ今は機能しないのかわかりません。

これはそれがから呼び出す方法main()です:

rb = ascii(back_data[i], phr);

main()これは、データが:で定義する方法です。

char phr[41];

int ascii(const char back[ ], char data[ ]){
  int l = 0, n = 0, i = 0, co = 0;
  char binary_holder[8], char_set;

  binary_holder[0] = '\0';

  l = strlen(back);

  for (i = 0; i <= l; i++){

    if (back[i] == '0' || back[i] == '1' && co < 8){

        binary_holder[co] = back[i];
        co++;
    }
    if(co == 8){

      binary_holder[8] = '\0';
      co = 0;
    }

    char_set = strtol(binary_holder, NULL, 2);

    if (char_set > 31 && char_set != 127){
        data[n++] = char_set;   
    }


  }

問題がここにあることを言及するのを忘れました、そして私はまだ理由を理解することができません

data[n++] = char_set;

4

1 に答える 1

3

ascii(back_data[i], phr);最初の引数では、charへのポインタではなくcharであるように見えます。この非ポインタはstrlen()—ブームに渡されます。

于 2012-05-16T21:52:02.223 に答える