首页 理论教育C语言字符数组的输入输出

C语言字符数组的输入输出

【摘要】:前面已经讨论了数组的输入输出,采用循环结构同样可以实现字符数组的输入输出。程序设计中常常希望将字符串作为整体进行输入输出处理,C标准库中提供了专门用于字符串输入输出的函数。字符串输入输出示例。

前面已经讨论了数组的输入输出,采用循环结构同样可以实现字符数组的输入输出。程序设计中常常希望将字符串作为整体进行输入输出处理,C标准库中提供了专门用于字符串输入输出的函数。

1.字符串数据的输入

C程序设计中字符串数据的输入通过调用标准库函数scanf或者gets来实现。在使用标准库函数scanf时,既可以用一般处理数组的方式循环为字符数组的每一个数组元素赋值(此时需要使用格式控制项%c),也可以将字符串数据作为整体一次性地送入字符数组(此时需要格式控制项%s),例如,下面两个程序段都可以实现将字符串数据"123456789"送入字符数组str的目的。

使用标准库函数gets时,将字符串数据作为一个整体来看待,用于输入字符串数据的程序段如下:

C程序中通过调用标准库函数scanf或gets都可以在程序的运行过程中从程序外界获得所需要的字符串数据,两个标准库函数在使用时有以下不同之处:

(1)一次函数调用可以输入的字符串数据个数不同

使用标准库函数scanf一次可以输入两个以上的字符串数据,每两个字符串数据之间用空格分隔;使用标准库函数gets一次只能输入一个字符串数据。试比较下面两个程序段:

(2)字符串输入结束方式不同

使用标准库函数scanf时,用空格字符、制表字符(Tab键)以及换行符(Enter键)都可以表示结束字符串输入,所以在输入的字符串数据中不能含有空格字符或者制表字符,在实际使用中,常常用空格字符作为两个字符串数据的分隔符。例如,对于下面程序段:

char str1[80],str2[80];

scanf("%s%s",str1,str2);

若输入数据是字符串"abcdefg 1234567",则字符数组str1的内容是"abcdefg"、str2的内容是"1234567"。

使用标准库函数gets时,用换行符(Enter键)表示结束字符串输入,系统会自动去掉该换行符'\n'然后加上'\0'构成输入的字符串,所以输入的字符串数据中可以含有空格字符和制表字符。

2.字符串数据的输出(www.chuimin.cn)

C程序中字符串数据的输出通过调用标准库函数printf或puts来完成。在使用标准库函数printf输出字符串数据时,同样既可以使用格式控制项%c将其按逐个的字符对待,也可以使用格式控制项%s将字符串数据作为整体对待,试比较下面两个程序段:

/*使用格式控制项%c*/

在使用标准库函数puts时,将字符串数据作为一个整体来看待,用于输出字符串数据的程序段如下:

C程序中使用标准函数printf或puts都可以在程序的运行过程中输出字符串数据,两个标准库函数在使用时有以下不同之处:

(1)一次调用能够输出的字符串个数不同

使用标准库函数printf一次可以输出两个以上的字符串数据;使用标准库函数puts一次只能输出一个字符串数据。试比较下面两个程序段:

(2)输出数据换行处理方式不同

使用标准库函数puts输出字符串数据时,输出完成后会自动进行换行;而使用标准库函数printf时,一个字符串数据输出完成后不会自动换行,若需实现换行功能,需要在格式控制字符串中的适当位置插入换行字符'\n'。

【例6.5】 字符串输入输出示例。

上面程序展示了字符串数据输入输出的常用方法,程序一次执行的过程如下,请读者对照输入数据和输出结果进行分析理解:

单个字符输入方式1:

123456789

单个字符输入方式2: