首页 > 其他分享 >c语言 字符串操作函数

c语言 字符串操作函数

时间:2024-06-21 22:59:47浏览次数:25  
标签:const 函数 int str1 char str 字符串 语言

字符串操作函数

1.strlen()函数

strlen()函数用于计算字符串的长度,返回字符串的字符数。

语法:

size_t strlen(const char *str)

参数:

  • str – 要计算长度的字符串。

返回值:

  • 字符串的字符数。

示例:

#include <stdio.h>
#include <string.h>

int main ()
{
   char str[50]="hello world";
   len = strlen(str);
   printf("|%s| 的长度是 |%d|\n", str, len);
   return 0;
}

让我们编译并运行上面的程序,这将产生以下结果:

|hello world| 的长度是 |11|

长度为11,因为它包含了11个字符。

自实现

int myStrlen(const char * str)
{
    int len = 0;
    while(*str++)
    len++;
    return len;
}

2.strcpy()函数

strcpy()函数用于复制一个字符串到另一个字符串。

语法:

char *strcpy(char *dest, const char *src)

参数:

  • dest – 目标字符串。
  • src – 源字符串。

返回值:

  • 目标字符串。

示例:

#include <stdio.h>
#include <string.h>

int main ()
{  char str1[50];
   char str2[50]="hello";
   strcpy(str1, str2);
   printf("|%s| 复制到 |%s|\n", str1, str2);
   return 0;
}

输出:

|hello| 复制到 |hello|

自实现

char *myStrcpy(char *dst, const char * src)
{
    char *d = dst;
    while(*dst++ = *src++);
    return d;
}

3.strncpy()函数

函数 char *strncpy(char *dest, const char *src, size_t n)
把 src 所指向的字符串复制到 dest,最多复制 n 个字符。
当 src 的长度小于 n 时,dest 的剩余部分将用空字节填充。

语法:

char *strncpy(char *dest, const char *src, size_t n)

参数:

  • dest – 目标字符串。
  • src – 源字符串。
  • n – 要复制的字符数。

返回值:

  • 目标字符串。
  • 如果 n 为 0,则返回 NULL。

示例:

#include <stdio.h>
#include <string.h>

int main ()
{  char str1[50];
   char str2[50]="hello world";
   strncpy(str1, str2, 5);
   printf("|%s| --- |%s|\n", str1, str2);
   return 0;
}

输出:

|hello| --- |hello world|

自实现

char *myStrncpy(char *dst, const char *src, int n)
{
    char *d = dst;
    while(n-- && (*dst++ = *src++));
    while(n-- > 0)
        *dst++ = '\0';
    return d;
}

4.strcat()函数

函数 char *strcat(char *dest, const char *src)
把 src 所指向的字符串追加到 dest 后面。

语法:

char *strcat(char *dest, const char *src)

参数:

  • dest – 目标字符串。
  • src – 源字符串。

返回值:

  • 目标字符串。

示例:

#include <stdio.h>
#include <string.h>

int main ()
{  char str1[50]="hello ";
   char str2[50]="world";
   strcat(str1, str2);
   printf("|%s|\n", str1);
   return 0;
}

输出:

|hello world|

自实现

char *myStrcat(char *dst, const char *src)
{
    char *d = dst;
    while(*d)
        d++;
    while((*d++ = *src++));
    return dst;
}

5.strncat()函数

函数 char *strncat(char *dest, const char *src, size_t n)
把 src 所指向的字符串追加到 dest 后面,最多追加 n 个字符。

语法:

char *strncat(char *dest, const char *src, size_t n)

参数:

  • dest – 目标字符串。
  • src – 源字符串。
  • n – 要追加的字符数。

返回值:

  • 目标字符串。

示例:

#include <stdio.h>
#include <string.h>

int main ()
{  char str1[50]="hello ";
   char str2[50]="world";
   strncat(str1, str2, 5);
   printf("|%s|\n", str1);
   return 0;
}

输出:

|hello world|

自实现

char *myStrcat(char *dst, const char *src)
{
    char * d = dst;
    while(*dst) dst++;
    while(*dst++ = *src++);
    return d;
}

6.strcmp()函数

函数 int strcmp(const char *str1, const char *str2)
比较两个字符串的大小。

语法:

int strcmp(const char *str1, const char *str2)

参数:

  • str1 – 字符串1。
  • str2 – 字符串2。
  • 返回值:
  • 如果 str1 等于 str2,则返回 0。
  • 如果 str1 小于 str2,则返回小于 0 的值。
  • 如果 str1 大于 str2,则返回大于 0 的值。

示例:

#include <stdio.h>
#include <string.h>


int main ()
{  char str1[50]="hello";
   char str2[50]="world";
   int result;
    
   result = strcmp(str1, str2);
   if (result < 0)
      printf("|%s| 小于 |%s|\n", str1, str2);
   else if (result > 0)
      printf("|%s| 大于 |%s|\n", str1, str2);
   else
      printf("|%s| 等于 |%s|\n", str1, str2);


   return 0;


}

输出:

|hello| 小于 |world|

自实现

int myStrcmp(const char * s1, const char * s2)
{
    for(;*s1 && *s2; s1++,s2++) {
        if(*s1 == *s2)
            continue;
        else
        return *s1 -*s2;
    }
    return *s1 -*s2;
}   

7.strncmp()函数

函数 int strncmp(const char *str1, const char *str2, size_t n)
比较两个字符串的前 n 个字符的大小。

语法:

int strncmp(const char *str1, const char *str2, size_t n)

参数:

  • str1 – 字符串1。
  • str2 – 字符串2。
  • n – 要比较的字符数。
  • 返回值:
  • 如果 str1 等于 str2,则返回 0。
  • 如果 str1 小于 str2,则返回小于 0 的值。
  • 如果 str1 大于 str2,则返回大于 0 的值。

示例:

#include <stdio.h>
#include <string.h>


int main ()
{  char str1[50]="hello";
   char str2[50]="world";
   int result;
    
   result = strncmp(str1, str2, 4);
   if (result < 0)
      printf("|%s| 小于 |%s|\n", str1, str2);
   else if (result > 0)
      printf("|%s| 大于 |%s|\n", str1, str2);
   else
      printf("|%s| 等于 |%s|\n", str1, str2);


   return 0;


}

输出:

|hello| 小于 |world|

自实现

int myStrncmp(const char * s1, const char * s2, int n)
{
    for(;*s1 && *s2 && n; s1++,s2++,n--) {
        if(*s1 == *s2)
            continue;
        else
        return *s1 -*s2;
    }
   return 0;
}   

8.sprintf()函数

函数 int sprintf(char *str, const char *format, …)
把格式化的数据写入某个字符串缓冲区

语法:

int sprintf(char *str, const char *format, ...)

参数:

  • str – 字符串缓冲区。
  • format – 格式字符串。
  • … – 可变参数。

返回值:

  • 写入的字符数。

示例:

#include <stdio.h>
#include <string.h>


int main()
{
    int a,b,c,d;
    printf("pls input ip:");
    scanf("%d.%d.%d.%d",&a,&b,&c,&d);
    char buf[16];
    sprintf(buf,"%d.%d.%d.%d",a,b,c,d);
    printf("%s\n",buf);
    return 0;
}

输出:

pls input ip:124.13.3.5
124.13.3.5

自实现

不会

##9.atoi()函数

函数 int atoi(const char *nptr)
将字符串转换成整型数;atoi()会扫描参数 nptr 字符串,跳过前面的空格字
符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符(‘\0’)
时才结束转化,并将结果返回(返回转换后的整型数)。

语法:

int atoi(const char *nptr)

参数:

  • str – 字符串。

返回值:

  • 转换后的整数。

示例:

#include <stdio.h>
#include <string.h> 

       
int main()
{
    char str[100] = "12345";        
    
    int num = atoi(str);
    
    printf("The number is: %d\n", num);
    
    return 0;
}

输出:

The number is: 12345

自实现

不会

10.itoa()函数

函数 itoa
根据指定的进制(base),将整型数据转化为以’\0’结尾的字符串,保
存到 str 指向的字符数组中。

语法:

char * itoa ( int value, char * str, int base );(非标库函数)

参数:

  • value – 待转化的整数。
  • str – 存放字符串的空间。
  • radix – 进制。

返回值:

  • 转化后的字符串首地址。

示例:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int main()
{
    int num = 12345;
    char str[100];

    itoa(num, str, 10);
    printf("The string is: %s\n", str);
    itoa(num, str, 8);
    printf("The string is: %s\n", str);
    itoa(num, str, 5);
    printf("The string is: %s\n", str);
    itoa(num, str, 3);
    printf("The string is: %s\n", str);
    itoa(num, str, 2);
    printf("The string is: %s\n", str);
    itoa(num, str, 36);
    printf("The string is: %s\n", str);
    return 0;
}



输出:

The string is: 12345
The string is: 30071
The string is: 343340
The string is: 121221020
The string is: 11000000111001
The string is: 9ix

自实现

标签:const,函数,int,str1,char,str,字符串,语言
From: https://blog.csdn.net/gopher9511/article/details/139710889

相关文章

  • C语言 内存操作函数
    内存管理进程空间程序,是经源码编译后的可执行文件,可执行文件可以多次被执行,比如我们可以多次打开office。而进程,是程序加载到内存后开始执行,至执行结束,这样一段时间概念,多次打开的wps,每打开一次都是一个进程,当我们每关闭一个office,则表示该进程结束。程序是静态概......
  • 自然语言处理(NLP):开启人机智能对话的钥匙
    自然语言处理(NaturalLanguageProcessing,NLP)是人工智能(AI)和计算语言学的一个分支,它专注于使计算机能够理解和生成人类语言。NLP涵盖了广泛的研究领域,包括文本分析、信息抽取、文本生成、机器翻译等。随着技术的不断发展,NLP已经成为许多应用的核心组成部分,从搜索引擎到智......
  • 【C语言】16.动态内存管理
    文章目录1.为什么要有动态内存分配2.malloc和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常见的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问4.3对⾮动态开辟内存使⽤free释放4.4使⽤free释放⼀块动态开辟内存的⼀部......
  • day10 - 字符串
    目录1.API1.1API概述1.2如何使用API帮助文档2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1==号的作用2.5.2equals方法的作用2.6用户登录案例2.6.1案例需求2.6.2代码实现2.7遍......
  • 用C语言实现扫雷
    开发工具:VS2022;创建三个文件第一个头文件:game.h游戏的数据类型和函数声明的位置//游戏的数据类型和函数声明#define_CRT_SECURE_NO_WARNINGS#pragma#include<stdio.h>#include<stdlib.h>#include<time.h>#defineEASY_COUNT10#defineROW9#defineCOL9#de......
  • c语言程序实验————实验报告十三
    c语言程序实验————实验报告十三实验项目名称:实验报告十三结构体运用程序设计实验项目类型:验证性实验日期:2024年5月30日一、实验目的1.掌握结构体类型变量的定义和使用2.掌握结构体类型数组的概念和应用3.掌握结构体类型指针的概念和应用4.掌握共用体的概念和......
  • 2022年大作业参考报告-使用C++语言开发小学生成绩管理系统、中学生成绩管理系统、大学
    背景:目录第一章需求分析   21.1   问题描述   26.1   功能需求   26.2   开发环境   26.3   开发过程   2第二章概要设计   32.1   总体设计   32.2   类的定义   32.3   接口设计   52.4  ......
  • word中如何插入“映射函数Ψ“及其它数学符号
    目录 操作步骤1.符号2.字体3.其它符号 操作步骤1.符号(1).插入-符号-其他符号(M)。如图1图1 2.字体(1).将字体更改为:CambriaMath(2).将滚动条拖拽到最底,然后点动向上调整10次,即可看到这个符号。如图2(3). 版本:office163.其它符号(1).其它符号都在Camb......
  • c语言程序实验————实验报告十二
    c语言程序实验————实验报告十二实验项目名称:实验报告十二用指针处理函数与数组实验项目类型:验证性实验日期:2024年5月30日一、实验目的1.掌握指针变量的定义格式,会定义和使用指针变量2.能正确建立指针变量与数组(包括一维、两维和字符串数组)的联系,并正确使用指......
  • C语言--指针详解(二)
    C语言--指针详解(二)一.前言二.指针运算(1)指针+-整数(2)指针-指针(3)指针的关系运算三.指针类型分类及详解(1)整型指针(2)浮点型指针(3)字符指针(4)特殊指针类型void*(5)函数指针(6)数组指针(7)结构体指针五.指针与数组5.1数组名的理解5.2数组指针5.3指......