scanf("%s",)输入参数为什么不能是字符串常量
时间: 2023-12-15 07:33:26 浏览: 60
用格式符“%s”输入输出字符串时-c语言编程学习
scanf("%s",)输入参数不能是字符串常量,因为字符串常量是只读的,而scanf()函数需要在内存中修改字符串的值。如果将字符串常量作为参数传递给scanf()函数,会导致程序崩溃或未定义的行为。下面是一个例子,演示了为什么不能将字符串常量作为参数传递给scanf()函数:
```c
#include <stdio.h>
int main() {
char *str = "hello";
scanf("%s", str); // 将字符串常量作为参数传递给scanf()函数
printf("%s\n", str);
return 0;
}
```
运行上面的代码会导致程序崩溃,因为scanf()函数试图修改只读内存中的字符串常量。为了避免这种情况,应该使用字符数组来存储字符串,并将字符数组作为参数传递给scanf()函数。
阅读全文