目录

  • 1 计算机概述
    • 1.1 计算机简介
    • 1.2 计算机系统
    • 1.3 数值在计算机中的表示
  • 2 C语言概述
    • 2.1 C语言发展及特点
    • 2.2 C语言程序的运行步骤和开发环境
    • 2.3 简单的C语言程序
  • 3 C语言基础
    • 3.1 变量、常量及数据类型
    • 3.2 运算符和表达式
    • 3.3 输入、输出
  • 4 选择结构
    • 4.1 计算机编程和算法
    • 4.2 if语句
    • 4.3 if嵌套和if多分支
    • 4.4 switch语句
  • 5 循环结构
    • 5.1 while语句和do...while语句
    • 5.2 for语句
    • 5.3 break语句和continue语句
    • 5.4 goto语句构成的循环
    • 5.5 嵌套循环结构
    • 5.6 程序设计举例
  • 6 函数
    • 6.1 函数的定义与调用
    • 6.2 函数的嵌套调用和递归调用
    • 6.3 作用域和生命周期
    • 6.4 章节小结与测试
  • 7 数组
    • 7.1 一维数组及应用
    • 7.2 二维数组及应用
    • 7.3 字符数组
    • 7.4 数组作为函数参数
    • 7.5 章节小结与测试
  • 8 指针
    • 8.1 指针变量
    • 8.2 指针与数组
    • 8.3 指针的多种形态
  • 9 字符串
    • 9.1 字符串概念及输入输出
    • 9.2 字符串函数
    • 9.3 指针与字符串
    • 9.4 章节小结与测试
  • 10 编译预处理
    • 10.1 宏定义
    • 10.2 文件包含
    • 10.3 条件编译
  • 11 结构体、共用体和用户定义类型
    • 11.1 结构体类型变量
    • 11.2 结构体类型数组与指针
    • 11.3 结构体与函数
    • 11.4 用指针处理链表
    • 11.5 共用体
  • 12 位运算
    • 12.1 位运算的概念和运算规则
  • 13 文件
    • 13.1 C文件概述
    • 13.2 文件的打开与关闭
    • 13.3 文件读写
    • 13.4 位置指针的定位
字符串函数

学习目标:

    掌握常用的字符串函数使用方法

重点:

    字符串函数的参数、返回值。

难点:

    字符串比较函数的使用


在C的库函数中提供了一些字符串处理函数,使用它们可以很方便地处理字符串,如字符串输入、字符串输出、字符串复制、字符串连接、字符串比较、求字符串长度等。

使用时字符串函数时要包含头文件“string.h”(scanf()、printf()、puts(),gets()属于标准输入输出库“stdio.h”)。

 

一、字符串处理函数

1.scanf 和printf函数在字符串的使用

 使用scanf和printf函数对字符串的处理时,调用语句中的输入或输出项使用的是字符数组名。(即使用字符数组名的首地址)

例:main ( )                      

   {  char s1[3] , s2[5];

        scanf(“%s%s”,s1 , s2 );

        printf(%s\n%s\n”, s1 , s2 );

    }

输入:

    ABC  DEF  HK  (即:希望s1=“ABC  ”  s2=“DEF  HK”)

输出:

    ABC

    DEF

说明:C语言规定,scanf函数遇空格或回车就结束本次输入。

 

2. 字符串输出函数:puts

格式:puts(字符数组名)

功能:将一个字符串输出到终端,字符串中可以包含转义字符。

例如 :char s[ ]="China\nBeijing";

puts(s)

输出结果是:

China

Beijing

注意:puts函数会将字符串结束标志’\0’转换成’\n’,即在输出完字符串后换行。

 

3. 字符串读入函数:gets

格式:gets(字符数组名)

功能:从终端读入一个字符串到字符数组。该函数可以读入空格,遇回车结束输入。

例如有下面程序段:

chars[20]

gets(s)

puts(s)

运行时输入:

How do you do?

输出结果为:

How do you do?

4. 字符串连接函数:strcat

格式:strcat (字符数组1,字符数组2)

功能:将字符数组2中的字符串连接到字符数组1中的字符串的后面,结果放在字符数组1中。

例如有如下程序段:

chars1[14]= "China  ",s2[ ]="Beijing";

strcat(s1, s2)

printf("%s", s1)

输出结果为:

China Beijing

说明:使用strcat函数时,字符数组1应作够大,以便能容纳连接后的新字符串。

5. 字符串拷贝(复制)函数:strcpy

    格式:strcpy (字符数组1,字符数组2)

功能:将字符数组2中的字符串拷贝到字符数组1中。

例如有下面程序段:

chars1[8], s2[ ]= "China"

strcpy(s1, s2)

puts(s1)

程序段的输出结果是:

China

说明:(1)字符数组1的长度应大于或等于字符数组2的长度,以便容纳被复制的字符串。

(2)字符数组1必须写成数组名的形式(如上例中的s1),字符数组2也可以是一个字符串常量。例如:

char s1[8]

strcpy (s1, "China")

其结果与上例相同。

(3)执行strcpy函数后,字符数组1中原来的内容将被字符数组2的内容(或字符串)所代替。

(4)不能用赋值语句将一个字符串常量或字符数组直接赋给另一个字符数组。下面的用法是错误的:

char s1[8], s2[ ]= "China"

s1=s2;//错误

在进行字符串的整体赋值时,必须使用strcpy函数。

 

6. 字符串比较函数:strcmp

格式:strcmp (字符串1, 字符串2)

功能:比较两个字符串的大小,例如:

strcmp(s1, s2)

strcmp("Beijing", "Shanghai")

strcmp(s1, "China")

比较的结果由函数值带回。

(1)如果字符串1等于字符串2,函数值为0。

(2)如果字符串1大于字符串2,函数值为一个正整数(第一个不相同字符的ASCII码值之差)。

(3)如果字符串1小于字符串2,函数值为一个负整数。

请注意:比较两个字符串是否相等时,不能采用以下形式:

if (s1= =s2)  printf ("yes");//错误

而只能用

if (strcmp (s1, s2)= =0)  printf ("yes")

 

7. 字符串长度函数:strlen

格式:strlen (字符数组名)

功能:求字符数组的长度,函数值为字符数组中第一个´\0´前的字符的个数(不包括´\0´)。

例如:

char s[10]= "China"

printf ("%d", strlen (s))

输出结果为: 5

 

8. 字符串小写函数:strlwr

格式:strlwr (字符串)

功能:将字符串中的大写字母转换成小写字母。

 

9. 字符串大写函数:strupr

格式:strupr (字符串)

功能:将字符串中的小写字母转换成大写字母。