char *a; scanf("%s",a); printf("%s",a); 这样行么?


char *a;
scanf("%s",a);
printf("%s",a); 这样行么?

不行,a没有初始化,也没有分配足够的空间,scanf会把a指针所指内存开始的一段空间旦棚判都修改,可和猜能那段内存是不允许读写的,造成程模改序错误或崩溃。改成:

char a[100];
scanf("%s",a);

或者

char *a;
a = (char*)malloc(100);
scanf("%s",a);

就可以往a中写入不超过100个字符了。


不行明氏,激槐老指针a没有初始化

改成明升

char *a;
a = malloc(sizeof(char));
scanf("%c",a);
printf("%c",a);