编程实现用scanf读取一个字符串,然后打印出来。
char department[256];
scanf("%s",department);
printf("%s\n",department);
这个方法就能实现,而使用下面的指针方法就会出现报错(段错误 (核心已转储)
)。
char *department=Null;
scanf("%s",department);
printf("%s\n",department);
想问问为什么。
我的理解是前一种方法是事先申请了256的空间,而后者没有申请空间会导致溢出。
那么如果我不确定输入字符串长度的时候,该怎么处理呢?
给字符串指针赋值 你要事先给指针分配空间才行。指针只是个地址,你要往指针所指的地址里存放内容,就必须先给指针分配空间
如果是VS的话可以试试用scanf_s
char *department = new char[1000];你那么写,department只有地址空间,也就是四字节的指针空间,没有存储数据的空间