如何实现scanf同时输入多个字符串,有两种方式,一种是通过二维数组,一种是指针数组
char a[][10] //二维数组
char *a[ ] //多个字符串指针组成的数组
二维数组赋值多个字符串比较好操作,直接for循环遍历scanf输入即可
#include<stdio.h>
int main(){
const int n=3;//输入3个字符为上线
char str[n][10];
for(int i=0;i<n;i++){
scanf("%s",str[i]);
}
//输出显示str[][]
for(int i=0;i<n;i++){
printf("str[%d]=%s\t",i,str[i]);
}
return 0;
}
而指针数组却不能直接通过scanf赋值,原因是什么?
我们先通过一维,明白字符串指针与数组的区别
指针:char *str="Hello World";
- str是一个指针,初始化为指向一个字符串常量
- 而char *str 实际上是const char* str,因此这个常量所在的地方是只读
- 所以不能对str所指的字符串修改
数组:char str[]="Hello World";
- Hello World所在的地方仍是只读,但str[]相当于把Hello World拷贝保存到栈空间数组里
- 想当于,从静