快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

c语言字符串用函数实现,c语言字符串函数用法

C语言中怎样设计一个函数实现两个字符串的连接

1)简单来,直接用 strcat 函数,需要包含头文件 string.h

站在用户的角度思考问题,与客户深入沟通,找到泗阳网站设计与泗阳网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、网站制作、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟空间、企业邮箱。业务覆盖泗阳地区。

2)自己实现的话也不麻烦,但是要考虑一些细节:

假设两个字符串指针为 str1,str2 ,现在要讲 str1 和 str2 连接成一个新的字符串。

a.考虑指针 str1,str2 是否非空

b.如果将str2的内容直接连接到str1的末尾,要考虑str1是否有足够的剩余空间来放置连接上的str2的内容。

如果用一个新的内存空间来保存str1和str2的连接结果,需要动态分配内存空间。

C语言实现字符串拷贝函数的几种方法

首先是使用库函数

比如下面代码

void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //该函数还有另一个版本可以按长度截取 }

还有一个函数是memcpy,这个是内存拷贝,原型是

void memcpy(void *dest, const void *src, size_t n); 需要注意的是这个函数第一个和第二个指针都是void型且第二个指针不能被修改,第三个参数是需要拷贝的内存长度按字节记。

然后是用指针引用,注意这个并非赋值,而是引用,这种操作需要注意内存。

char s1[] = "abcdefg";//定义一组字符串char *s2 = s1;//按照指针拷贝字符串

第三种方法就是直接赋值了

void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//获取第一个字符串的长度 int len2 = strlen(s2);//获取第二个字符串的长度 int len = 0; //字符串总长度 if(len1 = len2){ len = len2; //选择COPY的长度 }else{ len = len1; } for(int i = 0 ; i len ; i++){ s1[i] = s2[i]; //实现数据拷贝 }}

c语言字符串的查找用什么函数

用strstr这个函数

包含文件:string.h

函数名: strstr

函数原型:extern char *strstr(char *str1, char *str2);

功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。

返回值:返回该位置的指针,如找不到,返回空指针。

C语言关于字符串的操作函数有哪些

string.h头文件中包含的字符串函数

void *memcpy(void *dest, const void *src, size_t n);//将n字节长的内容从一个内存地址复制到另一个地址;如果两个地址存在重叠,则最终行为未定义

void *memmove(void *dest, const void *src, size_t n);//将n字节长的内容从一个内存地址复制到另一个地址;与memcpy不同的是它可以正确作用于两个存在重叠的地址

void *memchr(const void *s, char c, size_t n);//在从s开始的n个字节内查找c第一次出现的地址并返回,若未找到则返回NULL

int memcmp(const void *s1, const void *s2, size_t n);//对从两个内存地址开始的n个字符进行比较

void *memset(void *, int, size_t);//用某种字节内容覆写一段内存空间

char *strcat(char *dest, const char *src);//在字符串dest之后连接上src

char *strncat(char *dest, const char *src, size_t n);//从src截取n个字符连接在字符串dest之后,返回dest字符串

char *strchr(const char* str, int ch);//从字符串str头开始查找字符ch首次出现的位置

char *strrchr(const char* str,int ch);//从字符串str尾开始查找字符ch首次出现的位置

int strcmp(const char *, const char *);//基于字典顺序比较两个字符串

int strncmp(const char *, const char *, size_t);//基于字典顺序比较两个字符串,最多比较n个字节

int strcoll(const char *, const char *);//基于当前区域设置的字符顺序比较两个字符串

char *strcpy(char* str1, const char* str2);//将str2拷贝给str1

char *strncpy(char* str1, const char* str2, size_t n);//截取str2的n个字符拷贝给str1

char *strerror(int);//返回错误码对应的解释字符串,参见errno.h(非线程安全函数)

size_t strlen(const char *);//返回一个字符串的长度

size_t strspn(const char *s, const char *strCharSet);//从字符串s的起始处开始,寻找第一个不出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由strCharSet中的字符构成的子串的最大长度。strspn为string span的缩写。不支持多字节字符集。

size_t strcspn(const char *s, const char *strCharSet);//从字符串s的起始处开始,寻找第一个出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由不属于strCharSet中的字符构成的子串的最大长度。strcspn为string complement span的缩写。不支持多字节字符集。

char *strpbrk(const char *s, const char *strCharSet);//在字符串s中查找strCharSet中任意字符第一次出现的位置的指针值。strpbrk为string pointer break缩写。不支持多字节字符集。

char *strstr(const char *haystack, const char *needle);//在字符串haystack中查找字符串needle第一次出现的位置,heystack的长度必须长于needle

char *strtok(char *strToken, const char *strDelimit );//将一个字符串strToken依据分界符(delimiter)分隔成一系列字符串。此函数非线程安全,且不可重入;但MSVC实现时使用了thread-local static variable因而是线程安全的单仍然是不可重入,即在单线程中不能对两个源字符串交替调用该函数来分析token,应当对一个字符串分析完成后再处理别的字符串。

size_t strxfrm(char *dest, const char *src, size_t n);//根据当前locale转换一个字符串为strcmp使用的内部格式

c语言自定义函数实现字符串的拼接、拷贝、比较大小、求字符串长度等四个功能

#includestdio.h

void s_trcat(char *s1,char *s2);//连接两个字符串

void s_trcpy(char *s1,char *s2);//字符串s2复制给字符串s1

int s_trcmp(char *s1,char *s2);//两个字符串比较大小

int s_trlen(char *s);//计算一个字符串的长度

int main()

{

char s1[11]="12345", s2[11]="ABCDE";

char x1[11]="12345",x2[11]="SSSKK";

char str1[11]="ABCD",str2[11]="ACB";

char s[11]="ABCDEF";

int n,len;

s_trcat(s1,s2);//拼接s1,s2

printf("拼接s1,s2,输出s1\n");

puts(s1);

s_trcpy(x1,x2);//将x2的内容复制给x1

printf("将x2的内容复制给x1,输出x1\n");

puts(x1);

n=s_trcmp(str1,str2);//比较str1与str2大小,返回一个整数,代表比较的结果

if(n==0)

printf("str1与str2相同\n");

if(n==1)

printf("str1大于str2\n");

if(n==-1)

printf("str1小于str2\n");

len=s_trlen(s);//计算字符串s的长度,并返回一个整数(字符串长度),

printf("字符串s的长度:%d\n",len);

}

void s_trcat(char *s1,char *s2)//连接两个字符串

{

char *p=s1;

char *q=s2;

while(*p)

p++;

while(*q)

{

*p=*q;

p++;

q++;

}

*p='\0';//给新字符串尾部加个结束符

}

void s_trcpy(char *s1,char *s2)//字符串s2复制给字符串s1

{

char *p=s1;

char *q=s2;

while(*p++=*q++);

*p='\0';//给新字符串尾部加个结束符

}

int s_trcmp(char *s1,char *s2)//两个字符串比较大小

{

char *p=s1;

char *q=s2;

int len1=0,len2=0;

while(*p++)

len1++;

while(*q++)

len2++;

p=s1,q=s2;

while(*p!='\0'*q!='\0')

{

if(*p*q)

return 1;

if(*p*q)

return -1;

p++;

q++;

}

if(len1==len2)

return 0;//返回0,两个字符串相同

if(len1len2)

return 1;//返回1,前大于后

if(len1len2)

return -1;//返回-1,前小于后

}

int s_trlen(char *s)//计算一个字符串的长度

{

char *p=s;

int len=0;

while(*p++)

len++;

return len;//返回字符串长度

}

C语言,使用函数实现字符串复制

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include stdio.h

#include time.h

/*把从src地址开始的字符串复制到以dest开始的字符串中*/

char* strcopy (char* dest, char *src) {

char* r = dest;

while((*r++ = *src++)!='\0');

return dest;

}

int main () {

char *str1="abcde";

char *str2;

str2 = strcopy (str2, str1); /*把str1复制到str2*/

puts (str2);

return 0;

}


网站标题:c语言字符串用函数实现,c语言字符串函数用法
链接分享:http://6mz.cn/article/dsehphc.html

其他资讯