當前位置:首頁 » 編程語言 » 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);//釋放內存
}