1.常用字符串

本文展示了如何在C语言中实现基本的字符串处理函数,包括strlen用于计算字符串长度,strcpy用于复制字符串,strcmp用于比较字符串,以及strcat用于拼接字符串。这些函数是C语言编程中的基础工具,对于理解和操作字符串数据至关重要。
摘要由CSDN通过智能技术生成

1.写一个函数,实现 strlen() 的功能

NAME

strlen - calculate the length of a string

SYNOPSIS

#include <string.h>

size_t strlen(const char *s);

功能:计算字符串的长度,遇到\0才结束,且不计算\0

参数:

s:指定要计算长度的字符串

返回值:

返回字符串的长度

#include <stdio.h>

#include <string.h>

int my_strlen( char *s )

{

int num = 0;

while( *s != '\0' ) //遇到\0才结束,且不计算\0

{

num++;

s++;

}

return num;

}

int main()

{

char *p = "abcdefgh";

int n = my_strlen( p );

printf("my_strlen = %d\n", n );

printf("strlen = %d\n", strlen(p) );

}

2.写一个函数,实现 strcpy() 的功能

NAME

strcpy, strncpy - copy a string

SYNOPSIS

#include <string.h>

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

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

功能:把src字符串 复制到 dest指向的位置中 (\0也会复制)

参数:

dest:目标字符串

src :源字符串

n:指定要复制的字符个数

返回值:

将dest字符串返回

#include <stdio.h>

#include <string.h>

char * my_strcpy( char *dest, char *src )

{

/*

//指针方法

char * p = dest;

while( *src != '\0' )

{

*p = *src;

src++;

p++;

}

*p = '\0';

return dest;

*/

//数组方法

int i=0;

/*

while( src[i] != '\0' )

{

dest[i] = src[i];

i++;

}

dest[i] = '\0';

*/

while( (dest[i] = src[i]) != '\0' )

{

i++;

}

return dest;

}

int main()

{

char a[128] = {0};

char b[128] = {0};

scanf("%s",a);

char * c = my_strcpy(b,a);

strcpy(b,a);

printf("strcpy = %s\n",b);

printf("my_strcpy = %s\n",c);

}

=======================

可查看man手册

char * my_strncpy( char *dest, char *src , int n )

{

int i;

for(i = 0; i < n && src[i] != '\0'; i++)

{

dest[i] = src[i];

}

for ( ; i < n; i++) //n大于src的长度,剩下的全部复制为\0

{

dest[i] = '\0';

}

return dest;

}

结果如下图所示:

3. 写一个函数,实现strcmp() 的功能

NAME

strcmp, strncmp - compare two strings

SYNOPSIS

#include <string.h>

int strcmp(const char *s1, const char *s2);

int strncmp(const char *s1, const char *s2, size_t n);

功能:比较两个字符串的大小,按照字典顺序来比较

参数:

s1,s2:两个字符串

n:指定要比较的字符个数

返回值:

0 相等

>0 s1大于s2

<0 s1小于s2

#include <stdio.h>

#include <string.h>

/*

功能:比较两个字符串的大小,按照字典顺序来比较

参数:

s1,s2:两个字符串

n:指定要比较的字符个数

返回值:

0 相等

>0 s1大于s2

<0 s1小于s2

*/

int my_strcmp( char *s1, char *s2)

{

//数组

int i;

for( i=0; s1[i] == s2[i] ; i++ )

{

if( s1[i] == '\0' )

{

return 0;

}

}

return s1[i]-s2[i];

/*//指针

for( ; *s1 == *s2 ; s1++, s2++ )

{

if( *s1 == '\0' )

{

return 0;

}

}

return *s1 - *s2;

*/

}

int main()

{

char a[128] = "123456789";

char b[128] = "123456";

scanf("%s%s",a,b);

int num = my_strcmp(a,b);

printf("my_strcmp = %d\n",num);

}

结果如下图:

4.写一个函数,实现 strcat() 的功能

NAME

strcat, strncat - concatenate two strings

SYNOPSIS

#include <string.h>

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

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

功能:将src 拼接到 dest字符串的后面

参数:

src、dest:两个字符串

n:指定要拼接的字符个数

返回值:

返回dest

例子:

char a[] = "123";

char b[32] = {"abc"};

strcat( b, a ); // b --> abc123

strncat( b, a , 2); // b --> abc12

c#include <stdio.h>

#include <string.h>

/*

功能:将src 拼接到 dest字符串的后面

参数:

src、dest:两个字符串

n:指定要拼接的字符个数

返回值:

返回dest

例子:

char a[] = "123";

char b[32] = {"abc"};

strcat( b, a ); // b --> abc123

strncat( b, a , 2); // b --> abc12

*/

char *my_strcat(char *dest, char *src)

{

char *p = dest; //保存字符串的首地址

while( *dest )

{

dest++;

}

while( *dest = *src )

{

dest++;

src++;

}

return p;

}

int main()

{

char a[128] = {0};

char b[128] = {0};

scanf("%s%s",a,b);

char * str = my_strcat(a, b);

printf("str = %s\n",str);

}

结果如下图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值