头文件 string.h 一些函数功能

<string.h>头文件中一些比较实用的函数,把这些函数功能利用好,以后再做字符串处理类型的题会给你多加一个buff,虽然有些不常见,但你要了解到有他的存在,说不定万一哪天就用上了帮了你大忙,下面是我总结的一些功能,欢迎参考。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define N 100
int main (void)
{
 
  //strlen是求字符串长度的函数,以\0结束 
  char a[N]={'z','h','s','a','n','g','s','e','n'};
  printf ("1、%d\n", strlen(a));
  
  //strcpy是拷贝字符串的函数,注意;数组长度需要足够大,
  //拷贝时连同\0一起拷贝
  char b[N];
  //strcpy(b, a);//拷贝时目标数组在前,被拷贝的数组在后
  strncpy(b, a, 5);//也可以拷贝一部分字符串但是函数需变为strncpy,比如说拷前5个字符 
  puts(b);
  
  //strcat是拼接字符串的函数,两串均以\0结束,连接后串1的\0取消,新串后加\0
  char c[N]="张森你是这个世界上";
  char d[N]="最帅的男人!!!"; 
  strcat(c, d);
  puts(c);//依旧是目标字符串在前,接串的在后 
  puts(d);
  
  //stscasecmp是忽略大小写,来比较字符串的函数
  char e[N]={'z','h','a','n','g','k','a','i'};
 // printf ("2、%d\n", strscasecmp(a, e));
  
  //strcmp是比较两个字符串大小的函数
  printf ("3、%d\n", strcmp(a,e));
  //如果a大结果大于零,字符串相同结果为零,a小则结果小于零
  //strncmp函数是比较两个字符串前n位
  printf ("4、%d\n", strncmp(a, e, 5));//相同返回零 
  //比较规则:从左到右逐个字符进行比较,直到出现不同的字符或\0为止
  //如果出现不同的字符,则对第一次出现不同的字符进行比较,比较方法是以a的第一个
  //不同的字符减去e的第一个不同字符以所得差值作为返回值(大于0返回1,小于0返回-1) 
  
  //strchr函数是字符串中查找指定字符,找到的是这个字符在字符串中的地址 
  char ch='n';
  printf ("5、%p %p\n", ch, strchr(a, ch));
  printf ("6、%p %p\n", ch, strrchr(a, ch));//如果字符串中有两个指定字符,strrchr是反向查找 
  //如果想获得该字符的下标,可以用字符串的地址减去字符的地址
  printf ("7、%d\n", strchr(a, ch)-a);
  printf ("8、%d\n", strrchr(a, ch)-a);
  
  //strstr是在字符串中查找字符串的函数,该函数查找到的结果也是一个地址 
  char s[N]="How are you";
  char s1[N]="are";
  printf ("9、%p\n", strstr(s, s1));
  printf ("10、%d\n", strstr(s, s1)-s);
  
 /*isalpha是检查是否为字母字符的函数
   isupper是判断是否为大写字母的函数 
   islower是判断是否为小写字母的函数 
   isdigit是判断是否为数字的函数
   这几个函数需要加上头文件#include<ctype.h> 
 */ 
  char ch1;
  int count1=0, count2=0, count3=0;
  while ((ch1=getchar()) !='\n')
      { 
           if( isalpha(ch1) )
           {
               if( isupper(ch1) )
                  count1++;
               if( islower(ch1) )
                  count2++;
           } 
           if( isdigit(ch1) )
                 count3++;
   }
 printf ("大写字母:%d\n小写字母:%d\n阿拉伯数字:%d\n", count1, count2, count3);
 //还可以利用这几个函数进行大小写转换,谨记转换和判断不同,判断加is,转换加to 
 char ch2;
 while ((ch2=getchar()) !=EOF)
      {
         if( isalpha(ch2) )
              {
                if( isupper(ch2) )
                    ch2=tolower(ch2);
                if( islower(ch2) )
                    ch2=toupper(ch2);
          }
   printf ("%c", ch2);
   } 

}/*以下是各函数应用的输出结果:
1、9
zhsan
张森你是这个世界上最帅的男人!!!
最帅的男人!!!
3、1
4、1
5、000000000000006E 000000000062FB24
6、000000000000006E 000000000062FB28
7、4
8、8
9、000000000062FD54
10、4
*/

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值