#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' 结束符赋值也不会有乱码

这个方法虽然麻烦,但是可以在存储字符串时实现一些功能,比如判断字符是否为小写,如果不是则转换为小写