字符数组的输入输出及常用字符串处理函数(C语言)

ANSI C标准要求在使用字符串处理函数时,要包含头文件string.h ;在使用字符函数时要包含头文件ctype.h

字符数组的长度

  • 字符数组中'\0'代表ASCII码为0的字符,ASCII码表中0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做。
  • 字符数组以检测'\0'来判断字符串是否结束,而不是根据数组的长度来决定字符串长度。

char arr1[ ]={"I am happy"};

char arr2[ ]={'I',' ','a','m',' ','h','a','p','p','y'};

其中:arr1[ ]等价于{'I',' ','a','m',' ','h','a','p','p','y','\0'}

           arr1与arr2不等价

           arr1 长度为11,arr2长度为10

字符数组的输入输出

(都用%s格式字符)

  • 输出时遇结束符'\0'停止输出,且输出的字符中不包括'\0'
  • 输出项是字符数组名(如arr1),不能是数组元素名(如arr1[5])
  • scanf函数输入项如果是字符数组名,就不要再加地址符&,
  • C语言中数组名代表该数组第一个元素的地址(起始地址)

puts函数--输出字符串

一般形式:puts(字符数组)

功能:将一个字符串(以'\0'结束的字符数列)输出到终端

例:char arr1[ ]={"I am happy"};

        puts(arr1);

输出为“I am happy”

  • puts函数输出的字符串可以包含转义字符

如    char str[ ]={"China\nBeijing"};

        puts(str);

输出:

China

Beijing

注:1、puts输出时结束符'\0'自动换为'\n',即输出完字符串后换行

        2、puts函数只能输出一个字符串

gets函数--输入字符串

一般形式:gets(字符数组)

功能:从终端输入一个字符串到字符数组,并得到一个函数值,函数值是字符数组的起始地址

例:gets(str);                         //str是已定义的字符数组

从键盘输入:Computer

则送给字符数组str,返回的函数值是字符数组的起始地址

注:1、送给字符数组的是9个字符,而不是8个

        2、gets函数只能输入一个字符串

stract函数--字符串连接函数

一般形式:stract(字符数组1,字符数组2)

功能:将字符串2接到字符串1后面,结果放在字符数组1中,函数调用后得到一个函数值---字符数组1的地址

注:1、字符数组1要足够大

        2、连接时字符串1后面的'\0'取消,只在新串最后保留'\0'

strcpy和strncpy函数--字符串复制函数

一般形式:strcpy(字符数组1,字符数组2)

功能:将字符串2中复制到字符数组1中去

注:1、字符数组1要足够大,不应小于字符串2的长度

        2、字符数组1必须写成数组名形式(如str1),字符串2可以是数组名也可以是一个字符串常

             量

        3、复制时字符串2中的'\0'也一起复制

        4、不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组,因为字符数组名是一

             个地址常量,不可更改

可以用strncpy函数将字符串2中前n个字符复制到字符数组1中

如strncpy(str1,str2,2)

功能:将str2最前面两个字符复制到str1中,取代str1原本最前面两个字符

strlen函数--测字符串长度

一般形式:strlen(字符数组)

功能:函数的值为字符串的实际长度(不包括'\0'在内)

如 char str[10]="China";

printf("%d",strlen(str));

输出结果为5,不是10,也不是6

你可能感兴趣的:(C语言,c语言,windows,开发语言)