使用指针和数组两种方式存储从键盘输入的字符串
C语言中保存字符串常使用两种方式,一种是通过字符数组保存字符串,另一种是通过字符指针的方式保存常量字符串的地址。
首先说明通过字符数组的方式保存字符串,如
int main() {
char arr[20];
scanf("%s", &arr);
printf("%s", arr);
return 0;
}
使用该方式可以实现从键盘获取输入然后保存到指定的数组中,数组中每个单元保存的是一个个的字符。
另外一种方式,即使用字符指针保存字符串的地址,如:
int main() {
char *str = (char *)malloc(20 * sizeof(char));
scanf("%s", str);
printf("%s", str);
free(str);
str = NULL;
return 0;
}
使用字符指针保存常量字符串的地址是没问题的,可是为什么要动态开辟内存空间呢?这是因为,通过标准输入获取字符串时,该字符串并不是保存在常量区的,因此没有给输入的字符串真实可用的地址,要想保存则需事先开辟空间。