尝试打印char *的内容时出现分段错误

时间:2012-04-10 00:40:50

标签: c

我有以下代码:

    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

知道我可能会犯错误。

2 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

由于您要打印字符,因此printf应使用格式说明符%c ..而不是%s%s需要一个指针,因此它将字符值视为内存中的位置。