我有下面这段代码:
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语句中遇到了分段错误。argv2是一个文件,其内容为:
5 ABCBB 知道我可能在哪里犯了错吗。
发布于 2012-04-10 08:45:41
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-10 08:45:42
由于您要打印字符,因此您的printf应使用格式说明符%c。不是%s。%s需要一个指针,因此它将字符值视为内存中的一个位置。
https://stackoverflow.com/questions/10081650
复制相似问题