有人可以解释为什么以下相同的代码段产生不同的结果只是因为在一个,2个scanf语句被组合在一起:
代码段1(这很好用):
int s_i;
double s_d;
char *s_s;
scanf("%d %lf",&s_i,&s_d);
scanf("%*[\n] %m[^\n]", &s_s);
printf("%d\n%.1lf\n%s",s_i,s_d,s_s);
free(s_s);
代码段2(由于free()失败,这令人惊讶地不起作用加上一个段错误):
int s_i;
double s_d;
char *s_s;
scanf("%d %lf %*[\n] %m[^\n]", &s_i, &s_d, &s_s);
printf("%d\n%.1lf\n%s",s_i,s_d,s_s);
free(s_s);