我有以下代码:
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
知道我可能会犯错误。
答案 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
需要一个指针,因此它将字符值视为内存中的位置。