<C程序设计> (夏宝岚)
包含于 <string.h> 头文件中
<1> strlen 函数
形式: strlen (str);
功能: 计算并返回字符串str的长度(字符串结束标志'\0'不计入内)
例6.16 显示由键盘输入的字符串的长度。
#include <stdio.h>
#include <string.h>
int main()
{
char str[80];
printf("Input a string: ");
gets(str);
printf("%d\n", strlen(str));
return 0;
}
运行结果:
===================================
Input a string: I love this game!↙
Lenth is 17
===================================
★ 关于gets()函数,MSDN中如下描述:
The gets function reads a line from the standard input stream stdin and stores it in buffer. The line consists of all characters up to and including the first newline character ('\n'). gets then replaces the newline character with a null character ('\0') before returning the line. In contrast, the fgets function retains the newline character.
第一次见到stdin这个流,查了一下,原来stdin是系统默认的输入流,是一个FILE结构,两者都是在stdio.h里面定义。
<2> strcmp 函数
形式: strcmp(str1, str2);
功能: 比较str1和str2两个字符串的大小.比较方法:对两个字符串的对应字符逐一比较,只有当两个字符串中的所有对应字符都相等(包括结束标记'\0')时,才认定两者相等.否则当第一次出现不相同的字符时,就停止往下比较,依据这两个字符的 ASCII码值大小决定所在字符串的大小.最终函数返回大于0(前者大于后者),小于0(前者小于后者)和0(两者相等)函数值。
例6.17 编写简单的击键程序,用于练习英文打字,当键入“quit”单词时,程序终止执行。
#include <stdio.h>
#include <string.h>
int main()
{
char str[80];
for(;;)
{
printf("Input a string: ");
gets(str);
if (!strcmp("quit", str))
break;
}
return 0;
}
运行结果:
===========================================
Input a string: How are you?↙
Input a string: How do you!↙
Input a string: Thank you!↙
Input a string: quit↙
===========================================
<3> strcpy 函数
形式: strcpyt (str1, str2);
功能: 将字符串str2的内容连同结束符'\0'一起复制到str1中,并返回字符串str1的首地址.注意,str1必须有足够的长度以容纳str2的内容,否则因越界而产生错误。
char str1[20], str2[]="China";
strcpy(str1, str2);
结果是str2中的内容"China"连同字符串结束符'\0'一起复制绐了str1。也可以将字符串常量复制到字符数组中。如:strcpy(str1, "China");
C语言中不允许用赋值语句直接给字符数组赋值,必须用strcpy()函数完成。如str1=str2的写法是错误的。
<4> strcat 函数
形式: strcat(str1, str2);
功能: 将字符串str1与字符串str2尾首相接, 拼接后,原str1串尾的结束符'\0'被自动覆盖,新串的末尾自动加上结束符'\0',生成的新串存于str1中,函数返回str1的首址。
#include <stdio.h>
#include <string.h>
int main()
{
char str1[80], str2[20];
strcpy(str1, "Hello");
strcpy(str2, " Tom");
strcat(str1, str2);
printf("%s", str1);
return 0;
}
运行结果:
===================
Hello Tom
===================
######################################补充########################################
[2006.11.10]
今天又翻了一下谭老的书, 补充几个字符串处理函数。
<5> puts 函数
形式: puts(str);
功能: 将一个字符串str(以'\0'结束的字符序列)输出到终端。由于可以用printf函数输出字符串,因此puts函数用的不多。用puts函数输出的字符串中可以包含转义字符。puts只能输出一个字符串,不能写成puts(str1, str2)。
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = {"China\nBeijing"};
puts(str);
return 0;
}
运行结果:
===================
China
Beijing
===================
★ 在输出时将字符串结束标志'\0'转换成'\n',即输出完字符串后换行。这个要稍注意下才能发现,在VC里输出上述结果时那个"Press any key to continue",是另起一行,在第三行显示的。如果将puts(str)换成printf("%s", str)后输出结果,这个"Press any key to continue"是接在"Beijing"后面的。在TC里也一样,只不过不是"Press any key to continue",而是一个光标。
<6> gets 函数
形式: gets(str);
功能: 从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。一般利用gets函数的目的是向字符数组输入一个字符串,而不大关心其函数值。gets函数只能输出一个字符串,不能写成gets(str1, str2)。
#include <stdio.h>
#include <string.h>
int main()
{
char str[10];
gets(str);
puts(str);
return 0;
}
运行结果:
===================
abcdefg↙
abcdefg
===================
<7> strlwr 函数
形式: strlwr(str);
功能: strlwr是STRing LoWeRcase(字符串小写)的缩写。函数的作用是将字符串中大写字母换成小写字母。
#include <stdio.h>
#include <string.h>
int main()
{
char str[10];
gets(str);
strlwr(str);
puts(str);
return 0;
}
运行结果:
===================
ABCdeFg↙
abcdefg
===================
<8> strupr 函数
形式: strupr(str);
功能: strupr是STRing UPpeRcase(字符串大写)的缩写。函数的作用是将字符串中小写字母换成大写字母。
#include <stdio.h>
#include <string.h>
int main()
{
char str[10];
gets(str);
strupr(str);
puts(str);
return 0;
}
运行结果:
===================
ABCdeFg↙
ABCDEFG
===================
★ 在库函数并非C语言本身的组成部分,而是人们为使用方便而编写、提供大家使用的公共函数。每个系统提供的函数数量和函数名、函数功能都不尽相同,使用时要小心,必要时查一下库函数手册。当然,有一些基本的函数(包括函数名和函数功能),不同的系统所提供的是相同的,这就为程序的通用性提供了基础。
评论