0

私は次のコードを持っています:

    FILE *fpa;
    fpa = fopen(argv[2], "r");
    if (fpa == NULL) {
     printf("Error: could not open seqA file!\n");
     exit(0);
    }

    unsigned int N_a;
    fscanf(fpa, "%d\n", &N_a);
    char *seq_a = malloc((N_a+1) * sizeof(char *));
    strcpy(seq_a,"");
    fscanf(fpa, "%s\n", seq_a);
    fclose(fpa);

    for(i=0;i<N_a;i++)
      printf("%s", seq_a[i]); ---> SEG FAULT
    printf("\n");

printfステートメントでセグメンテーション違反が発生しています。argv [2]は、内容が次のファイルです:
5
ABCBB

私が間違いを犯しているかもしれない場所のアイデア。

4

2 に答える 2

1

char * seq_a = malloc((N_a + 1)* sizeof(char *));

する必要があります: char *seq_a = malloc((N_a+1) * sizeof(char));

各文字を印刷する場合は、次を使用します%c

  printf("%c", seq_a[i]);
于 2012-04-10T00:45:40.923 に答える
0

文字を印刷しているので、printfフォーマット指定子を使用する必要があり%cます%s%sポインタが必要なため、文字値をメモリ内の場所として扱います。

于 2012-04-10T00:45:42.063 に答える