要实现的目标
接收终端输入的字符串
在main函数中输出
使用的技术
函数方法的声明实现和调用
字符数组的使用
1、字符数组
字符数组与字符指针的区别
字符数组:char name[100] = {};
有内存,可以直接接收字符串
字符指针:char *name;
不能直接接收字符串,原因:字符指针只为某个变量分配8个自己的内存空间,这个空间只能来存地址,不能存具体的数据
代码的实现
#include <stdio.h>
void test3(char *p){
scanf("%s", p);
}
int main(){
//字符串"abc" == 字符数组
char name[100] = {};//字符数组 ->有内存,可以存数据
test3(name);
//字符和字符串 使用%s
printf("%s",name);
return 0;
}
由于
scanf("%s", p)
中%s
的限制,当遇到空格或者回车时就结束,无法完整输出字符串,解决方法如下代码:
#include <stdio.h>
void test3(char *p){
//scanf("%s", p);
int i = 0;
while(1){
//从终端接受一个字符
char c = getchar();
//判断是否结束 \n
if(c == '\n'){
//需要在数组里面添加一个\0
p[i] = '\0';
break;
}
//保存数据
p[i] = c;
//索引值++
i++;
}
}
int main(){
//字符串"abc" == 字符数组
char name[100] = {};//字符数组 ->有内存,可以存数据
test3(name);
//字符和字符串 使用%s
printf("%s", name);
return 0;
}