除了字符串的输入、输出以外,C 语言在标准库函数里提供了丰富的字符串处理函数:字符串的长度测试、复制、比较、连接等。
使用这些库函数可大大减轻编程的负担。在使用前必须包含头文件"string.h"。
语法: char *gets(char *string)
功能: 从stdin输入一个字符串(直到回车)到string中
说明: 输入串可包含空格,长度应小于字符数组维数
语法: int puts(char *string)
功能: 输出string到stdout
说明: 字符串结束标志将转换成‘\n’, 即输出完字符串后换行
scanf函数使用空格、TAB或回车作为输入数据的分隔符,无法输入带空格的字符串,此时需要用到gets函数!
例 若准备将字符串“This is a string.”记录下来,
错误的输入语句为:A
(A)scanf(“%20s”,s);
(B)for(k=0;k<17;k++)
s[k]=getchar();
(C)while((c=getchar())!='\n')
s[k++]=c;
s[k]='\0';
(D)gets(s);
对于字符串str,puts(str)与 printf(“%s”, str)功能类似,都能够输出带空格的字符串!
例 #include <stdio.h>
void main( void )
{ char string []={"China\nBeijing"};
puts(string);
printf("%s", string);
printf("Input a string:");
gets(string);
puts(string);
printf("%s", string);
}
语法: unsigned int strlen(char *str)
功能: 计算字符串长度(不包括‘\0’字符)。
例如:char str[80]={"ab\n\\012/\\\""} ;
printf("%d",strlen(str)) ;
输出:10
分析:a b \n \\ 0 1 2 / \\ \
char str[80]={"ab\n\0y\012/\\\""} ;
printf("%d",strlen(str)) ;
输出:3
分析:a b \n printf函数遇到\0结束
语法: int strcmp(char *str1, char *str2);
功能: 对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止
返值:
>0; 串1>串2
=0; 串1=串2
<0; 串1<串2
#include
#include
void main( void )
{
printf("%d\n",strcmp("China","Chinese")) ;
}
语法: char * strcpy(char *str1, char *str2);
功能: 将字符串str2复制到str1中
返值: 返回str1的首地址
说明:
a. 定义str1时,size必须足够大
b. 拷贝时‘\0’一同拷贝
例如:char str1[20], str2[15] ;
strcpy(str1,“hello world”);
strcpy(str2,str1);
puts(str1); puts(str2);
输出:
hello world
hello world
c. 不能使用赋值语句为一个字符数组赋值
str1=“hello” ; (错误)
只能初始化时赋值或复制:
char str1[ ]=“hello”; 或 strcpy(str1,“hello world”); (正确)
语法: char * strcat(char *str1, char *str2);
功能: 将字符串str2连接到str1后
返值: 返回str1的首地址
说明:
a. 定义str1时,size≥strlen(str1)+strlen(str2)
b. 删除str1的字符串结束符NULL,然后将str2指向的字符串连同str2的结束符一起复制到str1的后面,构成新串,连接时只在新串最后保留一个‘\0’。
例如:
char str[25];
strcpy(str, "Microsoft ");
strcat(str, "Visual C++ 6.0");
printf(str)
语法:
char * strlwr(char *str )
#include
#include
void main()
{
char str[25];
strcpy(str, "Turbo C");
printf(strlwr(str));
}
语法:
char *strupr(char *str)
#include
#include
void main()
{
char str[25];
strcpy(str, "Turbo C");
printf(strupr(str));
}