02.C:字符与字符串

一、字符

C语言的字符是用英文单引号括起来的一个字符。例如:

char c = 'A';

字符数据只占用一个字节,C语言将字符数据当做整数来处理,字符类型数据可以与整型数据相互赋值,相互比较。

二、字符串

C语言的字符串是一对英文双引号括起来的字符序列。例如:

char c[20] = {"Hello World!"}; 

C语言编译系统在处理字符串时,会在每一个字符串常量的末尾增加一个字符 '\0' ,作为字符串的结束标志。 '\0' 是一个ASCII码为0的字符(空操作字符),即它不引起任何控制动作,也不是一个可显示的字符。

1.字符串输入和输出

scanf和printf:
当使用scanf输入字符串时,输入的字符串应当短于已定义的字符串数组:

scanf("%s", a_string);

scanf在使用"%s"时,后边对应的数组名不需要加&取地址运算符的。
使用printf输出字符串:

printf("%s", a_string);

getchar和putchar:
getchar和putchar分别用来输入和输出单个字符:

#include<cstdio>
int main(){
	char str[5][5];
	for(int i = 0; i < 3; i++){
		for(int j = 0; j < 3; i++){
			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;
}

gets输入和puts输出:
gets和puts属于C标准库中的函数;gets用来输入一行字符串(gets识别换行符\n作为输入的结束,因此scanf完一个完整的整数后,如果要使用gets,需要现用getchar接收整数后的换行符),并将其存放入一位数组(或二维数组中的一维);puts用来输出一行字符串(即将一维数组或二维数组的一维输出),并紧跟一个换行。 ^8f2b8f

#include<cstdio>
int main(){
	char str1[20];
	char str2[5][10];
	gets(str1);
	for(int i = 0; i < 3; i++){
		gets(str2[i]);
	}
	puts(str1);
	for(int i = 0; i < 3; i++){
		puts(str2[i]);
	}
	return 0;
}

输入样例:

WoAiDeRenBuAiWo
QAQ
T_T
WoAiNi

输出样例:

WoAiDeRenBuAiWo
QAQ
T_T
WoAiNi
2.string.h头文件

string.h头文件包含了许多用于字符数组的函数,使用这些函数时需要在程序开头声明string.h头文件。
strlen()
strlen()函数可以得到字符数组中第一个\0前的字符个数。

strlen(str);  //str为字符数组

strcmp()
strcmp()函数返回两个字符串大小的比较结果,比较原则是字典序,其格式如下:

strcmp(str1, str2);

strcpy()
strcpy()函数可以将一个字符串赋值给另一个字符串。

strcpy(str1, str2);

注意: strcpy函数是将str2的值赋值给str1。
strcat()
strcat()可以将一个字符串接到另一个字符串的后边。

strcat(str1, str2);

注意: strcat是把str2接到str1的后边。

3.sscanf()和sprintf()

sscanf()和sprintf()是处理字符串问题的利器,均在stdio.h头文件下。先来回顾一下scanf()和printf()

scanf("%d", &n);
printf("%d", n);

事实上,上边的写法可以表示成下边的样子:

scanf(screen, "%d", &n);
printf(screen, "%d", n);

scanf()实质上是将screen的内容,以"%d"的格式传输到n中(从左到右);而printf()实质上是将n以"%d"的格式传输到screen上(从右向左)。
sscanf()与sprintf()与上面的格式是相同的,只是将screen换成了字符数组。如下:

sscanf(str, "%d", &n);
sprintf(str, "%d", n);

sscanf()写法的作用是将字符数组str中的内容以"%d"的格式写到n中(从左向右),sprintf()写法的作用是把n以"%d"的格式写到str字符数组中(从右向左)。
注意: sscanf与sprintf的作用只是赋值关系,而不是输入和输出的作用。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇