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 回答