C语言练习 字符数组处理

在C中没有String类型,对字符串的操作一般在字符数组中进行。下面给大家介绍一下四对字符的输入输出函数,以及使用时的注意点。

(1)scanf输入,printf输出
scanf和printf对字符的输入输出有两种类型,有两种类型,%c和%d。这是大家平常遇见的最常用的字符处理函数,不用多说,相信大家都已经很熟了。


(2)getchar输入,putchar输出
getchar和putchar只能进行单个的字符输入输出。这两个函数大家也已经很熟悉了,但千万不要藐视他们,因为在有些时候他们真的非常有用!例如下面。


(3)gets输入,puts输出
gets用来输入一行字符串。
注意1:gets识别换行符\n作为输入结束,因此scanf完一个整数后,如果要用gets,需要先用getchar接收整数后的换行符。因为程序接收整数的时候,只会拿走数字,而不拿走后面的换行符。例如:你输入“123\n”,变量只拿走了123,却没有把‘\n’也一起拿走。如果这个时候紧接着使用gets,那只会得到‘\n’,而不能得到后面真正字符串的内容。如果连续使用gets获取几个字符串,则可以直接连续使用gets。因为每次gets的时候都会拿走字符串最后面的‘\n’,不影响后面的读入。puts用来输出一个字符串。并在其后紧跟一个换行符。

注意2:如果不是使用scanf的%s格式或者gets()格式输入字符串,例如使用getchar()或者%c,请一定在输入的字符串之后加上'\0'。因为输出字符串时printf和puts函数认为'\0'是字符串的结尾,如果字符串结尾没有'\0',printf和puts会因为无法识别字符串结尾而输出一大段乱码。


示例代码:

#include
#include

int main () {
 	char str1[20];
	char str2[5][20];
	gets(str1);
	for (int i = 0; i < 3; i++) {
		gets(str2[i]);
	}

	puts(str1);
	for (int i = 0; i < 3; i ++) {
		puts(str2[i]);
	}

	system("pause");
	return 0;
}
示例输入:

C语言练习 字符数组处理_第1张图片

示例输出:

C语言练习 字符数组处理_第2张图片

(4)sscanf与sprintf
sscanf与sprintf是字符串处理的利器,大家最好学会他们。
在介绍sscanf和sprintf之前先给大家介绍一下scanf和printf吧。事实上可以写为以下两种形式,其中screen表示屏幕:
scanf(screen, “%d”, &n);
printf(scareen, “%d”, n);
scanf的输入其实就是把screen的内容以“%d”的个格式传输到n中,printf的输出是把n以“%d”的格式传输到screen中。

我们类比scanf和printf来学习sscanf和sprintf。
首先,他们的格式是相同的。只不过是把screen换成了字符数组。如下所示:
sscanf(str, “%d”, &n);是把字符数组str中的内容以“%d”的格式写到n中。
sprintf(str, “%d”, n);是把n以“%d”的形式写到str字符数组中。

示例代码:

#include
#include

int main () {
 	int n;
	double db;
	char str[100] = "2014:3.14,hello", str2[100];
	sscanf(str, "%d:%lf,%s", &n, &db, str2);
	printf("n = %d db = %.2f str2 = %s\n", n, db, str2);

	system("pause");
	return 0;
}

示例输出:

C语言练习 字符数组处理_第3张图片



你可能感兴趣的:(C语言练习,c语言,字符处理,字符串处理,字符数组)