字符数组的初始化
字符数组可以采用和普通数组一样的初始化方式,当然也可以采用直接赋值字符串的形式初始化(这种方式仅限于初始化赋值)
#include<stdio.h>
#include<string.h>
int main() {
char str1[12] = {
'i',' ','l','o','v','e',' ','y','o','u'};
char str2[12] = "i love you";
for(int i = 0; i<12; i++) {
printf("%c",str1[i]);
}
printf("%s\n",str1);
for(int i = 0; i<12; i++) {
printf("%s\n",str2);
}
}
字符数组的输入和输出
1.scanf 和 printf
scanf 和 printf对字符类型有%c和%s两种格式
其中%c 用来接收单个字符
%s 用来接收字符串,并将其存放在字符数组中
%c 可以空格和换行符,并将其作为输入
%s 通过空格或者换行来识别一个字符串的结束
#include<stdio.h>
#include<string.h>
int main() {
char str1[12];
scanf("%s",str1);
printf("%s",str1);
return 0;
}
2.getchar 和 putchar
用于输入输出单个字符
#include<stdio.h>
#include<string.h>
int main() {
char str[5][5];
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++)
str[i][j] = getchar();
getchar();//吸收换行符
}
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++)
putchar(str[i][j]);
putchar('\n');//输出换行符
}
return 0;
}
3.gets 和 puts
gets用来输入一行字符串(注意:gets识别换行符/n作为输入结東,因此 scanf完一个整数后,如果要使用gets,需要先用 getchar接收整数后的换行符),并将其存放于一维数组(或二维数组的一维)中;puts用来输出一行字符串,即将一维数组(或二维数组的一维)在界面上输出,并紧跟一个换行。
#include<stdio.h>
#include<string.h>
int main() {
int n;
char str[5][5];
scanf("%d",&n);
getchar();
for(int i = 0; i < n; i++) {
gets(str[i]);
}
for(int i = 0; i < n; i++) {
puts(str[i]);
}
return 0;
}
如果没有 getchar接收整数后的换行符
字符数组的存放方式
字符数组是由若干个char类型的元素组成,因此字符数组的每一位都是一个char字符。
在字符数组的最后都会有一个空字符\0存放字符串的结尾。因此开字符数组长度要多加一
使用scanf和gets会自动最最后添加,也就是说(getchar不会自动添加)
string.h 头文件函数
#include<stdio.h>
#include<string.h>
int main() {
char str1[12] = {
'i',' ','l','o','v','e',' ','y','o','u'};
char str2[12] = "i love you";
//strlen获取长度
printf("%d\n",strlen(str1));
printf("%d\n",strlen(str2));
//字典序比较 返回正 负 0
printf("%d\n",strcmp(str1,str2));
char str3[12];
//复制拷贝函数
strcpy(str3,str1);
puts(str3);
//连接函数
strcat(str3,str1);
puts(str3);
}
sscanf 和 sprintf
拆分:
-
sscanf表示为:string + scanf:sscanf()函数:从字符串中读取指定格式的数据
-
sprintf表示为:string + printf
表示: -
scanf(screen,"%d",&n)表示将屏幕的内容以%d的形式传输到n中(从左到右)
-
printf(screen,"%d",n)表示将n以%d的形式传输到屏幕中(从左到右)
-
sscanf(str,"%d",&n)表示将屏幕的内容以%d的形式传输到str中(从左到右)
-
sprintf(str,"%d",n)表示将n以%d的形式传输到str中(从左到右)
#include<stdio.h>
#include<string.h>
int main() {
int n;
char str1[4] = "123";
sscanf(str1,"%d",&n);
printf("%d\n",n);
char str2[100] = "16:41,Monday";
int hour,min;
char str_xingqi[100];
sscanf(str2,"%d:%d,%s",&hour,&min,str_xingqi);
printf("时间为%d:%d星期%s\n",hour,min,str_xingqi);
char str3[5];
sprintf(str3,"%d",n);
puts(str3);
char str4[100];
sprintf(str4,"时间为%d:%d星期%s\n",hour,min,str_xingqi);
puts(str4);
}