图4.9字符数组初始化状态③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。图4.11程序运行结果4.字符串字符串:是用双引号括起来的字符序列,也称为字符串常量。图4.13存储状态用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。......
2023-10-21
前面已经讨论了数组的输入输出,采用循环结构同样可以实现字符数组的输入输出。程序设计中常常希望将字符串作为整体进行输入输出处理,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:
有关C语言程序设计基础(第3版)的文章
图4.9字符数组初始化状态③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。图4.11程序运行结果4.字符串字符串:是用双引号括起来的字符序列,也称为字符串常量。图4.13存储状态用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。......
2023-10-21
字符数组的初始化与一般数组的初始化类似,可以有完整赋值、部分赋值等情况。②使用字符串常量初始化字符数组。使用字符串常量对字符数组进行初始化时,系统会自动在末尾加上字符串结尾符号'\0',但定义的字符数组必须提供足够的长度。·如果没有指定字符数组的长度,系统自动指定为字符串常量中有效字符的个数+1。......
2023-11-20
例4.7输出一个形如“丰”字的图形。图4.4例4.7输出结果从例4.7可知,逐个字符的输出,使用的格式符是“%c”;以字符串整体一次输出,使用的格式符是“%s”。例如下面的写法就是错误的:printf;如果数组长度大于字符串的实际长度,也只输出’\0’前的字符。其余的空格和回车符都被作为字符串的分隔符。......
2023-11-18
例4.16从键盘上输入一行英文字符串,判断该字符串的每一单词的第一个字母是否是大写,若不是,则改为大写字母。利用大小写对应ASCII码值之间的差值,可以很方便地完成大小写间的转换操作,如“ch[i]=ch[i]-32;”语句便实现了将小写字母转换成对应的大写字母。例4.17编写一个简单的密码程序。7438jkd你不是合法用户,不能进入本系统!例4.18从键盘上输入4个字符串,比较它们之间的大小关系,然后按从小到大的顺序存放到二维数组中并输出。......
2023-11-18
对一维数组的引用,既可以用传统的数组元素的下标法,也可使用指针的表示方法。例7.11输入10个数,采用指针变量表示的地址法输入输出数组各元素。由于数组元素在内存是连续存放的,若给指向整型变量的指针传递数组的首地址,则该指针指向二维数组。#include<stdio.h>例7.16用指针法输入输出二维数组各元素。......
2023-11-18
在C程序中,可以通过标准库函数fgetc和fputc实现在文件中单个字符(字节)数据的读写。函数fputc的功能是将用变量c表示的字符数据写到与文件指针stream相关联的文件中去,写入数据的位置由文件的读写位置指针指定,fputc函数执行成功时返回被输出的字符值,当函数执行发生错误时则返回EOF(-1)。编写程序实现功能:将从键盘上输入的若干字符数据写入文本文件mydata.txt。编写程序实现功能:统计一篇英文文章中单词的个数。......
2023-11-20
图6.3二维数组a[3][4]示意图多维数组定义的一般形式为:数据类型符数组名[常量表达式][常量表达式]…图6.4二维数组存储示意图图6.5三维数组存储示意图根据多维数组在存储器中按行存储的规则和多维数组的行列顺序可以计算出多维数组元素存储时在线性连续存储单元中的排列序号。......
2023-11-20
在C程序中,可以通过标准库函数fgets和fputs对文件中的字符串数据进行读写。函数fgets的返回值为s对象的首地址,若直接读到文件结尾标志或操作出错时则返回NULL。为了将输入的字符串分隔开,结合fgets函数在读到'\n'时会结束一次函数调用的特点,在每个字符串写入文件后再用fputc函数在字符串后写入一个换行符'\n',用以分隔写入的字符串数据。编写程序实现功能:打开例5.5创建的数据文件,将文件中的字符串数据读出并显示在屏幕上。......
2023-11-20
相关推荐