日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用字符串处理函数汇总

發布時間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用字符串处理函数汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

***************************************************

更多精彩,歡迎進入:http://shop115376623.taobao.com

***************************************************


(一)strcmp函數??

???????? strcmp函數是比較兩個字符串的大小,返回比較的結果。一般形式是:??

???????????????? i=strcmp(字符串1,字符串2); ??

???????? 其中,字符串1、字符串2均可為字符串常量或變量;i?? 是用于存放比較結果的整型變量。比較結果是這樣規定的(可理解為:串1-串2):??

①字符串1小于字符串2,strcmp函數返回一個負值;

②字符串1等于字符串2,strcmp函數返回零;

③字符串1大于字符串2,strcmp函數返回一個正值;

那么,字符中的大小是如何比較的呢?來看一個例子。

???????? 實際上,字符串的比較是比較字符串中各對字符的ASCII碼。首先比較兩個串的第一個字符,若不相等,則停止比較并得出大于或小于的結果;如果相等就接著 比較第二個字符然后第三個字符等等。如果兩上字符串前面的字符一直相等,像"disk"和"disks"?? 那樣,?? 前四個字符都一樣,?? 然后比較第 五個字符,?? 前一個字符串"disk"只剩下結束符'/0',后一個字符串"disks"剩下's','/0'的ASCII碼小于's'的ASCII 碼,所以得出了結果。因此無論兩個字符串是什么樣,strcmp函數最多比較到其中一個字符串遇到結束符'/0'為止,就能得出結果。

注意:字符串是數組類型而非簡單類型,不能用關系運算進行大小比較。??

???????? if("ABC">"DEF")?? /*錯誤的字符串比較*/

???????? if(strcmp("ABC","DEF")?? /*正確的字符串比較*/

(二)strcpy函數??

???????? strcpy函數用于實現兩個字符串的拷貝。一般形式是:??

???????????????? strcpy(字符:串1,字符串2)

???????? 其中,字符串1必須是字符串變量,而不能是字符串常量。strcpy函數把字符串2的內容完全復制到字符串1中,而不管字符串1中原先存放的是什么。復制后,字符串2保持不變。??

例:????

???????? 注意,由于字符串是數組類型,所以兩個字符串復制不通過賦值運算進行。??

???????? t=s;?? /*錯誤的字符串復制*/

???????? strcpy(t,s);?? /*正確的字符串復制*/

函數名: stpcpy
功 能: 拷貝一個字符串到另一個
用 法: char *stpcpy(char *destin, char *source);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char string[10];
???char *str1 = "abcdefghi";
???stpcpy(string, str1);
???printf("%s\n", string);
???return 0;
}

?

函數名: strcat
功 能: 字符串拼接函數
用 法: char *strcat(char *destin, char *source);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char destination[25];
???char *blank = " ", *c = "C++", *Borland = "Borland";
???strcpy(destination, Borland);
???strcat(destination, blank);
???strcat(destination, c);
???printf("%s\n", destination);
???return 0;
}

?

函數名: strchr
功 能: 在一個串中查找給定字符的第一個匹配之處\
用 法: char *strchr(char *str, char c);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
????char string[15];
????char *ptr, c = 'r';
????strcpy(string, "This is a string");
????ptr = strchr(string, c);
????if (ptr)
???????printf("The character %c is at position: %d\n", c, ptr-string);
????else
???????printf("The character was not found\n");
????return 0;
}

?

函數名: strcmp
功 能: 串比較
用 法: int strcmp(char *str1, char *str2);
看Asic碼,str1>str2,返回值 > 0;兩串相等,返回0
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
????char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
????int ptr;
????ptr = strcmp(buf2, buf1);
????if (ptr > 0)
???????printf("buffer 2 is greater than buffer 1\n");
????else
???????printf("buffer 2 is less than buffer 1\n");
????ptr = strcmp(buf2, buf3);
????if (ptr > 0)
???????printf("buffer 2 is greater than buffer 3\n");
????else
???????printf("buffer 2 is less than buffer 3\n");
????return 0;
}

?

函數名: strncmpi
功 能: 將一個串中的一部分與另一個串比較, 不管大小寫
用 法: int strncmpi(char *str1, char *str2, unsigned maxlen);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *buf1 = "BBB", *buf2 = "bbb";
???int ptr;
???ptr = strcmpi(buf2, buf1);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 1\n");
???if (ptr < 0)
??????printf("buffer 2 is less than buffer 1\n");
???if (ptr == 0)
??????printf("buffer 2 equals buffer 1\n");
???return 0;
}

?

函數名: strcpy
功 能: 串拷貝
用 法: char *strcpy(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
????char string[10];
????char *str1 = "abcdefghi";
????strcpy(string, str1);
????printf("%s\n", string);
????return 0;
}

?

函數名: strcspn
功 能: 在串中查找第一個給定字符集內容的段
用 法: int strcspn(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
????char *string1 = "1234567890";
????char *string2 = "747DC8";
????int length;
????length = strcspn(string1, string2);
????printf("Character where strings intersect is at position %d\n", length);
????return 0;
}

?

函數名: strdup
功 能: 將串拷貝到新建的位置處
用 法: char *strdup(char *str);
程序例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
????char *dup_str, *string = "abcde";
????dup_str = strdup(string);
????printf("%s\n", dup_str);
????free(dup_str);
????return 0;
}

?

函數名: stricmp
功 能: 以大小寫不敏感方式比較兩個串
用 法: int stricmp(char *str1, char *str2);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *buf1 = "BBB", *buf2 = "bbb";
???int ptr;
???ptr = stricmp(buf2, buf1);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 1\n");
???if (ptr < 0)
??????printf("buffer 2 is less than buffer 1\n");
???if (ptr == 0)
??????printf("buffer 2 equals buffer 1\n");
???return 0;
}

?

函數名: strerror
功 能: 返回指向錯誤信息字符串的指針
用 法: char *strerror(int errnum);
程序例:
#include <stdio.h>
#include <errno.h>
int main(void)
{
???char *buffer;
???buffer = strerror(errno);
???printf("Error: %s\n", buffer);
???return 0;
}

?

函數名: strcmpi
功 能: 將一個串與另一個比較, 不管大小寫
用 法: int strcmpi(char *str1, char *str2);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *buf1 = "BBB", *buf2 = "bbb";
???int ptr;
???ptr = strcmpi(buf2, buf1);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 1\n");
???if (ptr < 0)
??????printf("buffer 2 is less than buffer 1\n");
???if (ptr == 0)
??????printf("buffer 2 equals buffer 1\n");
???return 0;
}

?

函數名: strncmp
功 能: 串比較
用 法: int strncmp(char *str1, char *str2, int maxlen);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";
???int ptr;
???ptr = strncmp(buf2,buf1,3);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 1\n");
???else
??????printf("buffer 2 is less than buffer 1\n");
???ptr = strncmp(buf2,buf3,3);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 3\n");
???else
??????printf("buffer 2 is less than buffer 3\n");
???return(0);
}

?

函數名: strncmpi
功 能: 把串中的一部分與另一串中的一部分比較, 不管大小寫
用 法: int strncmpi(char *str1, char *str2);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *buf1 = "BBBccc", *buf2 = "bbbccc";
???int ptr;
???ptr = strncmpi(buf2,buf1,3);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 1\n");
???if (ptr < 0)
??????printf("buffer 2 is less than buffer 1\n");
???if (ptr == 0)
??????printf("buffer 2 equals buffer 1\n");
???return 0;
}

?

函數名: strncpy
功 能: 串拷貝
用 法: char *strncpy(char *destin, char *source, int maxlen);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char string[10];
???char *str1 = "abcdefghi";
???strncpy(string, str1, 3);
???string[3] = '\0';
???printf("%s\n", string);
???return 0;
}

?

函數名: strnicmp
功 能: 不注重大小寫地比較兩個串
用 法: int strnicmp(char *str1, char *str2, unsigned maxlen);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *buf1 = "BBBccc", *buf2 = "bbbccc";
???int ptr;
???ptr = strnicmp(buf2, buf1, 3);
???if (ptr > 0)
??????printf("buffer 2 is greater than buffer 1\n");
???if (ptr < 0)
??????printf("buffer 2 is less than buffer 1\n");
???if (ptr == 0)
??????printf("buffer 2 equals buffer 1\n");
???return 0;
}

?

函數名: strnset
功 能: 將一個串中的所有字符都設為指定字符
用 法: char *strnset(char *str, char ch, unsigned n);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char *string = "abcdefghijklmnopqrstuvwxyz";
???char letter = 'x';
???printf("string before strnset: %s\n", string);
???strnset(string, letter, 13);
???printf("string after strnset: %s\n", string);
???return 0;
}

?

函數名: strpbrk
功 能: 在串中查找給定字符集中的字符
用 法: char *strpbrk(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char *string1 = "abcdefghijklmnopqrstuvwxyz";
???char *string2 = "onm";
???char *ptr;
???ptr = strpbrk(string1, string2);
???if (ptr)
??????printf("strpbrk found first character: %c\n", *ptr);
???else
??????printf("strpbrk didn't find character in set\n");
???return 0;
}

?

函數名: strrchr
功 能: 在串中查找指定字符的最后一個出現
用 法: char *strrchr(char *str, char c);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char string[15];
???char *ptr, c = 'r';
???strcpy(string, "This is a string");
???ptr = strrchr(string, c);
???if (ptr)
??????printf("The character %c is at position: %d\n", c, ptr-string);
???else
??????printf("The character was not found\n");
???return 0;
}

?

函數名: strrev
功 能: 串倒轉
用 法: char *strrev(char *str);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char *forward = "string";
???printf("Before strrev(): %s\n", forward);
???strrev(forward);
???printf("After strrev(): %s\n", forward);
???return 0;
}

?

函數名: strset
功 能: 將一個串中的所有字符都設為指定字符
用 法: char *strset(char *str, char c);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char string[10] = "123456789";
???char symbol = 'c';
???printf("Before strset(): %s\n", string);
???strset(string, symbol);
???printf("After strset(): %s\n", string);
???return 0;
}

?

函數名: strspn
功 能: 在串中查找指定字符集的子集的第一次出現
用 法: int strspn(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
???char *string1 = "1234567890";
???char *string2 = "123DC8";
???int length;
???length = strspn(string1, string2);
???printf("Character where strings differ is at position %d\n", length);
???return 0;
}

?

函數名: strstr
功 能: 在串中查找指定字符串的第一次出現
用 法: char *strstr(char *str1, char *str2);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char *str1 = "Borland International", *str2 = "nation", *ptr;
???ptr = strstr(str1, str2);
???printf("The substring is: %s\n", ptr);
???return 0;
}

?

函數名: strtod
功 能: 將字符串轉換為double型值
用 法: double strtod(char *str, char **endptr);
程序例:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
???char input[80], *endptr;
???double value;
???printf("Enter a floating point number:");
???gets(input);
???value = strtod(input, &endptr);
???printf("The string is %s the number is %lf\n", input, value);
???return 0;
}

?

函數名: strtok
功 能: 查找由在第二個串中指定的分界符分隔開的單詞
用 法: char *strtok(char *str1, char *str2);
程序例:
#include <string.h>
#include <stdio.h>
int main(void)
{
???char input[16] = "abc,d";
???char *p;
??
???p = strtok(input, ",");
???if (p)???printf("%s\n", p);
??
???p = strtok(NULL, ",");
???if (p)???printf("%s\n", p);
???return 0;
}

?

函數名: strtol
功 能: 將串轉換為長整數
用 法: long strtol(char *str, char **endptr, int base);
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
???char *string = "87654321", *endptr;
???long lnumber;
??
???lnumber = strtol(string, &endptr, 10);
???printf("string = %s long = %ld\n", string, lnumber);
???return 0;
}

?

函數名: strupr
功 能: 將串中的小寫字母轉換為大寫字母
用 法: char *strupr(char *str);
程序例:
#include <stdio.h>
#include <string.h>
int main(void)
{
???char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;
??
???ptr = strupr(string);
???printf("%s\n", ptr);
???return 0;
}

?

函數名: swab
功 能: 交換字節
用 法: void swab (char *from, char *to, int nbytes);
程序例:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char source[15] = "rFna koBlrna d";
char target[15];
int main(void)
{
???swab(source, target, strlen(source));
???printf("This is target: %s\n", target);
???return 0;
}


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的常用字符串处理函数汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。