当我将字符串声明为charstring[]时,Scanf()有效,但当我将其声明为char*时无效

#include <stdio.h>
#include <string.h>

int  main()

{
char t1string[20];
scanf("%s", t1string);
printf("%sn", t1string);
printf("%cn", t1string[4]);

char * t2string;
scanf("%s", t2string);
printf("%sn", t2string);
printf("%c", t2string[4]);
}

为什么 scanf() 在第二种情况下不起作用(字符串被声明为 char *)?

回答

因为在调用scanf函数之前,没有给't2string'分配相应的空间,即't2string'的指针没有指向某个地址

 t2string = (char*)malloc(20 * sizeof(char));
 // or
 char t1string[20];
 t2string = t1string;


以上是当我将字符串声明为charstring[]时,Scanf()有效,但当我将其声明为char*时无效的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>