C++的字符串问题
char 为字符数组
当存入相应的字符时,会分解成一个个的字符存进数组
char A[5] = {"H","e","l","l","o"};
//当想存Hello的时候在字符数组里会拆成一个个的字符生成,5为数组长度
当如果你想存字符串时,可用char*
char *为字符串数组
char* A[3] = {"Hello","the", "same"};
/*当加上星号后,数组里存的不是Hello,the和same,而是这三个字符串
的第一个字符的地址,而这个字符串又是由字符数组组成的。因为在地址里
是连续的,所以能读取整个Hello,the,same,所以可以变相就变成了字
符串数组
*/
C++输入字符问题
scanf输入字符用的是%c,%s,
当使用%s时
char str[10];
scanf("%s",str);
printf("%s",str);
输入`
QAQ QAQ QAQ
显示
QAQ
识别空格作为字符串的结尾
讨论gets_s和scanf和getchar的区别
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char a[10], b[10];
char c, d;
scanf("%s", a);
printf("a中保存的字符串为:%s\n", a);
c = getchar();
printf("c中保存的字符为:%c ", c);
//此行没有换行符检测是否接受了输入缓冲区的
gets_s(b);
printf("b中保存的字符串为:%s\n", b);
d = getchar();
printf("d中保存的字符为:%c", d);
return 0;
}
输入asdf再输入as df 得到结果
结论:
scanf识别空格或者enter或者tab作为字符串的结尾,并且空格仍然在输入缓冲区里
getchar()可以接受单个字符它收到了scanf的空格\n,所以它换行了
gets_s可以接受空格,tab它识别enter(\n)作为结束标志。
sscanf 和sprintf的作用
scanf(screen,"%d",&n);
print(screen,"%d",n);
scanf本质是从屏幕输入拿到数后将其转变为%d的格式给n
print本质是从从n中拿到数将其转变为%d的格式发送给屏幕
sscanf(str,"%d",&n);
sprint(str,"%d",n);
sprintf可以将屏幕变成字符数组或者字符串数组,相当于把数输进了字符串数组中。
scanf同理将字符串的数组的数给导出。