当前位置:首页 » 编程语言 » c语言两个字符串处理函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言两个字符串处理函数

发布时间: 2022-07-19 01:14:52

1. c语言字符串处理函数strcmp

strcmp是比较古老的函数了,它就是在检查'\0'为结尾的字符串,你的字符数组位置为5时,没有位置来存储'\0',所以函数strcmp检查时候不会停止,会继续向后面检查(后面的地址没有赋值,都是随机的数,直到遇见'0'),所以不会相等。

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

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

void*memcpy(void*dest,constvoid*src,size_tn);//将n字节长的内容从一个内存地址复制到另一个地址;如果两个地址存在重叠,则最终行为未定义
void*memmove(void*dest,constvoid*src,size_tn);//将n字节长的内容从一个内存地址复制到另一个地址;与memcpy不同的是它可以正确作用于两个存在重叠的地址
void*memchr(constvoid*s,charc,size_tn);//在从s开始的n个字节内查找c第一次出现的地址并返回,若未找到则返回NULL
intmemcmp(constvoid*s1,constvoid*s2,size_tn);//对从两个内存地址开始的n个字符进行比较
void*memset(void*,int,size_t);//用某种字节内容覆写一段内存空间
char*strcat(char*dest,constchar*src);//在字符串dest之后连接上src
char*strncat(char*dest,constchar*src,size_tn);//从src截取n个字符连接在字符串dest之后,返回dest字符串
char*strchr(constchar*str,intch);//从字符串str头开始查找字符ch首次出现的位置
char*strrchr(constchar*str,intch);//从字符串str尾开始查找字符ch首次出现的位置
intstrcmp(constchar*,constchar*);//基于字典顺序比较两个字符串
intstrncmp(constchar*,constchar*,size_t);//基于字典顺序比较两个字符串,最多比较n个字节
intstrcoll(constchar*,constchar*);//基于当前区域设置的字符顺序比较两个字符串
char*strcpy(char*str1,constchar*str2);//将str2拷贝给str1
char*strncpy(char*str1,constchar*str2,size_tn);//截取str2的n个字符拷贝给str1
char*strerror(int);//返回错误码对应的解释字符串,参见errno.h(非线程安全函数)
size_tstrlen(constchar*);//返回一个字符串的长度
size_tstrspn(constchar*s,constchar*strCharSet);//从字符串s的起始处开始,寻找第一个不出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由strCharSet中的字符构成的子串的最大长度。strspn为stringspan的缩写。不支持多字节字符集。
size_tstrcspn(constchar*s,constchar*strCharSet);//从字符串s的起始处开始,寻找第一个出现在strCharSet中的字符,返回其位置索引值。换句话说,返回从字符串s的起始位置的完全由不属于strCharSet中的字符构成的子串的最大长度。strcspn为stringcomplementspan的缩写。不支持多字节字符集。
char*strpbrk(constchar*s,constchar*strCharSet);//在字符串s中查找strCharSet中任意字符第一次出现的位置的指针值。strpbrk为stringpointerbreak缩写。不支持多字节字符集。
char*strstr(constchar*haystack,constchar*needle);//在字符串haystack中查找字符串needle第一次出现的位置,heystack的长度必须长于needle
char*strtok(char*strToken,constchar*strDelimit);//将一个字符串strToken依据分界符(delimiter)分隔成一系列字符串。此函数非线程安全,且不可重入;但MSVC实现时使用了thread-localstaticvariable因而是线程安全的单仍然是不可重入,即在单线程中不能对两个源字符串交替调用该函数来分析token,应当对一个字符串分析完成后再处理别的字符串。
size_tstrxfrm(char*dest,constchar*src,size_tn);//根据当前locale转换一个字符串为strcmp使用的内部格式

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

char
*
strcat(char
*s,
const
char
*append)
{
//将s所指向的字符串的首地址保存下来,以便使用
char
*save
=
s;
//将s所指向的字符串的首指针移至串尾处,s指针指向的字符元素为'\0'
for
(;
*s;
++s);
//将append所指的字符串的元素复制到s所指向的字符串尾部,直至遇到'\0'
while
((*s++
=
*append++)
!=
'\0');
//返回追加后的字符串首地址
return(save);
}

4. 用C语言:写一个函数,将两个字符串连接

字符串连接:即将字符串b复制到另一个字符a的末尾,并且字符串a需要有足够的空间容纳字符串a和字符串b。

#include<stdio.h>
voidmystrcat(chara[],charb[]){//把a和b拼接起来
inti=0,j=0;
while(a[i++]!='');
i--;
while(b[j]!=''){
a[i++]=b[j++];
}
a[i]='';
}
intmain()
{
chara[100],b[100];
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
return0;
}
/*
运行结果:
abc
def
abcdef
*/

5. c语言两个字符串比较处理函数是哪一个

extern int strcmp(const char *s1,const char *s2);
比较两个字符串
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1>str2,则返回正数;
若str1<str2,则返回负数。

6. C语言字符串处理函数




其实那些字符串函数并不复杂。任何一个的实现都不出五行代码:

char *strcpy( char *dst, const char *src ) {
char *destination = dst;
while( *dst++ = *src++ )
;
return destination;
}

char *strcat( char *dst, const char *src ) {
char *destination = dst;
while( *dst++ )
;
strcpy( --dst, src );
return destination;
}

int strcmp( const char *s1, const char *s2 ) {
for( ; *s1 == *s2; s1++, s2++ )
if( *s1 == '\0' ) return 0;
return *s1 - *s2;
}

unsigned strlen( const char *s ) {
const char *t = s;
while( *t++ )
;
return --t - s;
}


7. C语言中有哪些字符串处理函数

你可以看一下头文件string.h和stdio.h里面的相关函数声明,好多好多。
这里就不一一列出了……比如下面列出的只是其中一部分……
_CRTIMP char * __cdecl strcpy(char *, const char *);
_CRTIMP char * __cdecl strcat(char *, const char *);
_CRTIMP int __cdecl strcmp(const char *, const char *);
_CRTIMP size_t __cdecl strlen(const char *);
_CRTIMP char * __cdecl strchr(const char *, int);
_CRTIMP int __cdecl _strcmpi(const char *, const char *);
_CRTIMP int __cdecl _stricmp(const char *, const char *);
_CRTIMP int __cdecl strcoll(const char *, const char *);
_CRTIMP int __cdecl _stricoll(const char *, const char *);
_CRTIMP int __cdecl _strncoll(const char *, const char *, size_t);
_CRTIMP int __cdecl _strnicoll(const char *, const char *, size_t);
_CRTIMP size_t __cdecl strcspn(const char *, const char *);
_CRTIMP char * __cdecl _strp(const char *);
_CRTIMP char * __cdecl _strerror(const char *);
_CRTIMP char * __cdecl strerror(int);
_CRTIMP char * __cdecl _strlwr(char *);
_CRTIMP char * __cdecl strncat(char *, const char *, size_t);
_CRTIMP int __cdecl strncmp(const char *, const char *, size_t);
_CRTIMP int __cdecl _strnicmp(const char *, const char *, size_t);
_CRTIMP char * __cdecl strncpy(char *, const char *, size_t);
_CRTIMP char * __cdecl _strnset(char *, int, size_t);
_CRTIMP char * __cdecl strpbrk(const char *, const char *);
_CRTIMP char * __cdecl strrchr(const char *, int);
_CRTIMP char * __cdecl _strrev(char *);
_CRTIMP size_t __cdecl strspn(const char *, const char *);
_CRTIMP char * __cdecl strstr(const char *, const char *);
_CRTIMP char * __cdecl strtok(char *, const char *);
_CRTIMP char * __cdecl _strupr(char *);
_CRTIMP size_t __cdecl strxfrm (char *, const char *, size_t);

8. C语言:编写一个函数,将两个字符串合并到另一个字符串中

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

void catstring(char *str0, int len0, char *str1, int len1, char *str2, int len2)
{
if (len2 <= len0 + len1) {
return;
}
memcpy(str2, str0, len0);
memcpy(str2 + len0, str1, len1);

}

int main()
{
char str0[20] = "Golden";
char str1[20] = "View";
char str2[20] = { 0 };

catstring(str0, strlen(str0), str1, strlen(str1), str2, 20);
printf("str2 = %s\n", str2);
return 0;
}

请采纳,谢谢!

9. C语言中怎样交换两个字符串

C语言中交换两个字符串需要借助strcpy函数或者使用自定义交换函数进行交换

如交换a,b数组中的字符串代码:

chara[10]="abed",b[10]="efg",t[10];
strcpy(t,a);//a复制给t
strcpy(a,b);//b复制给a
strcpy(b,t);//t复制给b

附:strcpy函数详情

原型声明:

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

头文件:

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

功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。

10. C语言 作业 编写几个字符串处理函数

void
ltrim(char
str[])
{
int
count=0;//记录字符串左边有多少个空格
char
*p=NULL;
p=str;
while(*p=='
'
&&
*p!='\0')//循环检查左边空格的个数
{
count++;
p++;
}
p=str+count;
while(count>0
&&
*p!='\0')//循环,把后面的字符前移
{
*(p-count)=*p;
p++;
}
*(p-count)='\0';
}
void
rtrim(char
str[])
{
int
count=0;//记录字符串右边有多少个空格
char
*p=NULL;
p=str;
while(*p!='\0')//循环找到字符串结束
{
p++;
}
p--;
while(p>=str
&&
*p=='
')//循环消灭后面的空格
{
*p='\0';
p--;
}
}
void
trim(char
str[])
//直接调用上面两个函数
{
ltrim(str);
rtrim(str);
}
void
delchar(char
str[],char
ch)
{
int
count=0;
char
*p1=NULL,*p2=NULL,*Y=NULL;
p1=str;
while(*p1!='\0')
{
p1++;
count++;
}
Y=(char
*)malloc(count+1);//为了节约运算时间,申请一个缓冲内存
//malloc函数要求引入#include<stdlib.h>函数
p1=str;
p2=Y;
while(*p1!='\0')
{
if(*p1!=ch)
{
*p2=*p1;
p2++;
}
p1++;
}
*p2='\0';
p1=str;
p2=Y;
while(*p2!='\0')
{
*p1=*p2;
p1++;
p2++;
}
*p1='\0';
free(Y);//释放内存
}