#include<stdio.h>
#include<string.h>
// 输入三个字符:每输入一个字符就要用空格或回车间隔,结束时输入回车
int main(){
char b[4];
for(int i = 0;i < 3;i++)
{
scanf("%c",&b[i]);
getchar(); //吸收缓存区中的空格或回车
if(i+1 == 3)
b[i+1] = '\0'; // 字符数组的结束符号
}
printf("%s\n",b);
}
这种方法是 一个字符一个字符地输入:
字符与字符之间用空格或回车间隔,全部输入完毕后用回车结束
getchar()方法是用来读取字符与字符之间的空格或者回车的,
b[ i+1 ] = '\0' ; 用'\0'来结束字符串:如果去掉此块代码,b[2]之后会出现乱码
解决办法:用 “” 空串来初始化数组 char s[50] = "";
#include <stdio.h>
int main()
{
char s[50];
scanf("%s",s);
printf("%s\n",s);
return 0;
}
直接输入一个字符串并存储。用“%s”读入,程序会自动在结束时加 结束符 '\0'
推荐使用此方法,但是应该明白结束符 '\0' 的存在!!!
#include<stdio.h>
// 输入一串字符,再从缓冲区挨个读取
int main(){
int i = 0;
char c;
char s[50] = ""; // 如果不初始化s[],系统会自动赋值
scanf("%c",&c);
while(c != '\n'){
s[i] = c;
i++;
// printf("%c\n",s[i]);
scanf("%c",&c);
}
printf("%s\n",s);
return 0;
}
直接输入一个字符串,程序在缓冲区中读取一个字符,
如果次字符不是回车'\n',则存入字符数组,如果是回车则结束循环
这里已经初始化了数组,所以不进行 '\0' 结束符赋值也不会有乱码
这个方法虽然麻烦,但是可以在存储字符串时实现一些功能,比如判断字符是否为小写,如果不是则转换为小写