C语言学习——字符串处理函数(puts()、gets()、strlen( )、strcmp( )、strcpy()、strcat()、strlwr()和strupr函数)

C语言学习——字符串处理函数

除了字符串的输入、输出以外,C 语言在标准库函数里提供了丰富的字符串处理函数:字符串的长度测试、复制、比较、连接等。

使用这些库函数可大大减轻编程的负担。在使用前必须包含头文件"string.h"。

(1)、字符串输入输出函数gets和puts

语法: 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);
       }

(2)、字符串长度strlen( )函数

语法: 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结束

(3)、字符串比较strcmp( )函数

语法: 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")) ;
}


C语言学习——字符串处理函数(puts()、gets()、strlen( )、strcmp( )、strcpy()、strcat()、strlwr()和strupr函数)_第1张图片
!!字符串比较不能用“==”,必须用strcmp函数

(4)、字符串复制strcpy()函数

语法: 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”); (正确)

(5)、字符串连接strcat()函数

语法: 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)

(6)、将字符串中大写字母换成小写字母strlwr()函数

语法:
char * strlwr(char *str )

#include 
#include 
void main()
{
    char str[25];
    strcpy(str, "Turbo C");
    printf(strlwr(str));
}

(7)、将字符串中小写字母换成大写字母strupr函数

语法:
char *strupr(char *str)

#include 
#include 
void main()
{
    char str[25];
    strcpy(str, "Turbo C");
    printf(strupr(str));
}

你可能感兴趣的:(C语言基础知识)