當前位置:首頁 » 編程語言 » c語言字元串庫

c語言字元串庫

發布時間: 2023-04-12 16:47:40

A. c語言中對字元串進行操作的標准庫函數有哪些

1)字元串操作
strcpy(p, p1) 復制字元串
strncpy(p, p1, n) 復制指定長度字元串
strcat(p, p1) 附加字元串
strncat(p, p1, n) 附加指定長度字元串
strlen(p) 取字元串長度
strcmp(p, p1) 比較字元串
strcasecmp忽略大小寫比較字元串
strncmp(p, p1, n) 比較指定長度字元串
strchr(p, c) 在字元串中查找指定字元
strrchr(p, c) 在字元串中反向查找
strstr(p, p1) 查找字元串
strpbrk(p, p1) 以目標字元串的所有字元作為集合,在當前字元串查找該集合的任一元素
strspn(p, p1) 以目標字元串的所有字元作為集合,在當前字元串查找不屬於該集合的任一元素的偏移
strcspn(p, p1) 以目標字元串的所有字元作為集合,在當前字元串查找屬於該集合的任一元素的偏移
* 具有指定長度的字元串處理函數在已處理的字元串之後填補零結尾符

2)字元串到數值類型的轉換
strtod(p, ppend) 從字元串 p 中轉換 double 類型數值,並將後續的字元串指針存儲到 ppend 指向的 char* 類型存儲。
strtol(p, ppend, base) 從字元串 p 中轉換 long 類型整型數值,base 顯式設置轉換的整型進制,設置為 0 以根據特定格式判斷所用進制,0x, 0X 前綴以解釋為十六進制格式整型,0 前綴以解釋為八進制格式整型
atoi(p) 字元串轉換到 int 整型
atof(p) 字元串轉換到 double 符點數
atol(p) 字元串轉換到 long 整型

3)字元檢查
isalpha() 檢查是否為字母字元
isupper() 檢查是否為大寫字母字元
islower() 檢查是否為小寫字母字元
isdigit() 檢查是否為數字
isxdigit() 檢查是否為十六進制數字表示的有效字元
isspace() 檢查是否為空格類型字元
iscntrl() 檢查是否為控制字元
ispunct() 檢查是否為標點符號
isalnum() 檢查是否為字母和數字
isprint() 檢查是否是可列印字元
isgraph() 檢查是否是圖形字元,等效於 isalnum() | ispunct()

B. 如何用c語言來表達一個字元串

1)在串值後面加一個不計入長度的結束標記字元,比如'\0'來表示串值的終結

初始化一個字元串的方法如下,在最後添加'\0'

char str[] = {'I','a','m','h','a','p','p','y','\0'};
也可以直接使用字元串常量初始化字元數組(系統自動加上'\0'),這種方法符合人們的習慣。

char str[] = "I am happy";
或者
char str[] = {"I am happy"};
注意:不能使用下面的賦值方式:
char str[20];
str = "I am happy";
但可以用字元指針指向這個字元串:
char *str;
str = "I love China";

(2)將實際串長度值保存在數組0的下標下

#define MAXSIZE 20 //數組的長度
typdef char String[MAXSIZE+1];
初始化字元串的方法:

String t;
StrAssign(t,"I am happy");
int StrAssign(String T,char *chars)
{
T[0] = strlen(chars); //下標為0存放數組長度
for(i=1;i<=strlen(chars);i++) //下標位置從1開始存放數據
{
T[i] = *(chars+i-1);
}
return 1;
}
(3)使用結構體類型(自定義類型)

#define MAXSIZE 20
typedef struct{
char ch[MAXSIZE];
int len;
}String;
其中:MAXSIZE表示串的最大長度,ch是存儲字元串的一維數組,len是字元串的長度
初始化函數示例:

String t;
StrAssign(&t,"I am happy");
int StrAssign(String *t,char *chars)
{
int i;
if(strlen(chars)>MAXSIZE+1) //字元串的長度大於數組的長度,操作失敗,返回0
return 0;
for(i=0;i<strlen(chars);i++)
{
t->ch[i] = *(chars+i);
}
t->len = strlen(chars); //數組的長度
return 1; //返回1,操作成功
}
說明:這里的StrAssign函數的參數t使用的是指針,是因為結構體變數做做形參,用法和普通變數一樣屬於值傳遞方式,在子函數中要給t賦值,所以輸入的是t的指針。與之對比的是(2)子函數中T是數組,傳入的是數組的首地址(改變形參也就改變了實參)。

————————————————
版權聲明:本文為CSDN博主「chenkaibsw」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/chenkaibsw/article/details/78957944

C. C語言中清空字元串的庫函數

假設這個一維字元岩如串數組是str[80]----不一定是一維字元串數組,多維數組,結構都可以慎局。
方法1:使用運行庫函數memset():
memset(str,
0,
sizeof(str));
方法2:使用Windows
API函數ZeroMemory():
ZeroMemory(str,
sizeof(str));
但不能用於指針。指針的情況寬棗讓下,必須這樣:
struct
mystr
{.......}
*p;
...
memset(p,
0,
sizeof(struct
mystr));
或:
ZeroMemory(p,
sizeof(struct
mystr));

D. 簡述C語言標准庫函數strcpy功能和格式

C語言標准液廳庫函數strcpy功能和格式:

  • 功能:strcpy是一種C語言的標准庫鬧宴隱函數,用於把一個字元串復制到另一個字元串。

  • 格式:char *strcpy(char *dest, const char *src)

  • 參數:dest是目標字元串的指針,src是源字元串的指針。

  • 返回值:返回dest的指針。

  • 注意事項:必須保證祥咐dest有足夠的空間存放src的內容,否則可能會造成緩沖區溢出的錯誤

E. C語言里的一個字元串庫函數忘了

是strstr(char*s,char*t)

F. C語言字元串處理的庫函數有哪些

函數名: strrchr
功 能: 在串中查找指定字元的最後一個出現
用 法: char *strrchr(char *str, char c);
舉例:
[cpp] view plain
char fullname="./lib/lib1.so";
char *ptr;
ptr = strrchr(fullname,'/');
printf("filename is %s",++ptr);
//運行結果:filename is lib1.so

函數名: strchr
功 能: 在串中查找指定字元的第一個出現
用 法: char *strchr(char *str, char c);
舉例:
[cpp] view plain
char fullname="./lib/lib1.so";
char *ptr;
ptr = strrchr(fullname,'.');
printf("after strchr() is %s",++ptr);
//運行結果:after strchr() is /lib/lib1.so

函數名: strtok
功 能: 在串中查找指定字元的第一個出現
用 法: char *strtok(char *s, char *delim);
說明:
1.strtok函數的實質上的處理是,strtok在s中查找包含在delim中的字元並用NULL(』/0′)來替換,直到找遍整個字元串。這句話有兩層含義:(1)每次調用strtok函數只能獲得一個分割單位。(2)要獲得所有的分割單元必須反復調用strtok函數。
2.strtok函數以後的調用時的需用NULL來替換s.
3.形參s(要分割的字元串)對應的變數應用char s[]=」….」形式,而不能用char *s=」….」形式。
舉例:
[cpp] view plain
void main()
{
char buf[]=」Golden Global View」;
char* token = strtok( buf, 」 「);
while( token != NULL )
{
printf( 」%s 「, token );
token = strtok( NULL, 」 「);
}
return 0;
}
/*其結果為:

Golden
Global
View
*/

函數名:strncpy
功能:把src所指由NULL結束的字元串的前n個位元組復制到dest所指的數組中
用法:char *strncpy(char *dest, char *src, int n);
說明:
如果src的前n個位元組不含NULL字元,則結果不會以NULL字元結束。
如果src的長度小於n個位元組,則以NULL填充dest直到復制完n個位元組。
src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字元串。
返回指向dest的指針。
舉例:
[c-sharp] view plain
#include <syslib.h>
#include <string.h>

main()
{
char buf[4];
char *s="abcdefg";

strncpy(buf,s,4);
printf("%s/n",buf);
return 0;
}
/*運行結果:
abcd
*/

函數名: stpcpy
功 能: 拷貝一個字元串到另一個
用 法: char *stpcpy(char *destin, char *source);
舉例:
[cpp] view plain
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[10];
char *str1 = "abcdefghi";
stpcpy(string, str1);
printf("%s/n", string);
return 0;
}
/*運行結果
abcdefghi
*/

函數名: strcat
功 能: 字元串拼接函數
用 法: char *strcat(char *destin, char *source);
舉例:
[cpp] view plain
#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;
}
/*運行結果:
Borland C++
*/

函數名: strcmp
功 能: 串比較
用 法: int strcmp(char *str1, char *str2);
看Asic碼,str1>str2,返回值 > 0;兩串相等,返回0
舉例:
[cpp] view plain
#include <string.h>
#include <stdio.h>
int main(void)
{
char *buf1 = "aaa", *buf2 = "bbb";
int ptr;
ptr = strcmp(buf2, buf1);
if (ptr > 0)
printf("buffer 2 is greater than buffer 1/n");
else if(ptr < 0)
printf("buffer 2 is less than buffer 1/n");
else
printf("buffer 2 is equal with buffer 1/n");
return 0;
}
/*運行結果:
buffer 2 is greater than buffer 1
*/

函數名: strncmpi
功 能: 將一個串中的一部分與另一個串比較, 不管大小寫
用 法: int strncmpi(char *str1, char *str2, unsigned maxlen);
舉例:
[cpp] view plain
#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;
}

函數名: strcspn
功 能: 在串中查找第一個給定字元集內容的段
用 法: int strcspn(char *str1, char *str2);
舉例:
[cpp] view plain
#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;
}

函數名: strp
功 能: 將串拷貝到新建的位置處
用 法: char *strp(char *str);
舉例:
[cpp] view plain
#include <stdio.h>
#include <string.h>
#include <alloc.h>
int main(void)
{
char *p_str, *string = "abcde";
p_str = strp(string);
printf("%s/n", p_str);
free(p_str);
return 0;
}

函數名: stricmp
功 能: 以大小寫不敏感方式比較兩個串
用 法: int stricmp(char *str1, char *str2);
舉例:
[cpp] view plain
#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);
舉例:
[cpp] view plain
#include <stdio.h>
#include <errno.h>
int main(void)
{
char *buffer;
buffer = strerror(errno);
printf("Error: %s/n", buffer);
return 0;
}

函數名: strncmp
功 能: 串比較
用 法: int strncmp(char *str1, char *str2, int maxlen);
舉例:
[cpp] view plain
#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, int len);
舉例:
[cpp] view plain
#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;
}

函數名: strnset
功 能: 將一個串中的所有字元都設為指定字元
用 法: char *strnset(char *str, char ch, unsigned n);
舉例:
[cpp] view plain
#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);
舉例:
[cpp] view plain
#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;
}

函數名: strrev
功 能: 串倒轉
用 法: char *strrev(char *str);
舉例:
[cpp] view plain
#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;
}
/*運行結果:
Before strrev(): string
After strrev(): gnirts
*/

函數名: strstr
功 能: 在串中查找指定字元串的第一次出現
用 法: char *strstr(char *str1, char *str2);
舉例:
[cpp] view plain
#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);
舉例:
[cpp] view plain
#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;
}

函數名: strtol
功 能: 將串轉換為長整數
用 法: long strtol(char *str, char **endptr, int base);
舉例:
[cpp] view plain
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
char *string = "87654321", *endptr;
long lnumber;
/* strtol converts string to long integer */
lnumber = strtol(string, &endptr, 10);
printf("string = %s long = %ld/n", string, lnumber);
return 0;
}

函數名: strupr
功 能: 將串中的小寫字母轉換為大寫字母
用 法: char *strupr(char *str);
舉例:
[cpp] view plain
#include <stdio.h>
#include <string.h>
int main(void)
{
char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;
/* converts string to upper case characters */
ptr = strupr(string);
printf("%s/n", ptr);
return 0;
}

G. C語言字元串處理函數庫問:

char *strchr( const char *str, int ch );

#include <stdio.h>
#include <string.h>
這樣用
int main()
{
char s[20] = "asdfasdfa";
char *s2 = strchr(s, 'd');//這個函數返回或悉鉛的是『d』第一次出現衫好的位置的指針
printf("陸消%s", s2);
return 0;
}

H. 求C語言一個有關字元串的庫函數,功能是從字元串s1中刪除字元串s2中的所有字元,s1包含s2

這是運用指針寫的.可能你看不懂,但你可以把它收到你的函數悄茄庫中,隨時調用.

int delchar(char *s1,char *s2){
int i=0,len,flag=0;

char *p,*p1,*p2;

len=strlen(s2);
if(strlen(s1)<隱運春len)
return 0;

p=s1;
p1=s2;
while(*p){
i=0;
if(*p!=*p1){
p++;
flag=0;
continue;
}

if(*p==*p1){
p2=p;
while(*p1){
if(*p==*p1)
i++;
else
break;
p++;
p1++;
}
}

if(i==len){
*p2='\0';
break;
}
}

strcat(s1,p);
return 1;

}

main(){

char s[]="灶耐abcdefghijklm";
char s2[]="ghij";

puts(s);

delchar(s,s2);
puts(s);
getch();
}

I. C語言中清空字元串的庫函數

字元串函數<string.h>

在頭文件<string.h>中定義了兩組字元串函數。第一組函數的名字以str開頭;第二組函數的名襪敗晌字以mem開頭。只有函數memmove對重疊對象間的拷貝進行了定義,而其他函數都未定義。比較類函數將其變數視為unsigned char類型的數組。

1.strcpy

#include <string.h>

char *strcpy(char *str1, const char *str2);

把字元串str2(包括'')拷貝到字元串str1當中,並返回str1。

2. strncpy

#include <string.h>

char *strncpy(char *str1, const char *str2, size_t count);

把字元串str2中最多count個字元拷貝到字元串str1中,並返回str1。如果str2中少於count個字元,那麼就用''來填充,直到滿足count個字元為止。

3.strcat

#include <string.h>

char *strcat(char *str1, const char *str2);

把str2(包括'')拷貝到str1的尾部(連接),並返回str1。其中終止原str1的''被str2的第一個字元覆蓋。

4.strncat

#include <string.h>

char *strncat(char *str1, const char *str2, size_t count);

把str2中最多count個字元連接到str1的尾部,並以''終止str1,返回str1。其中終止原str1的''被str2的第一個字元覆蓋。

注意,最大拷貝字元數是count+1。

5.strcmp

#include <string.h>

int strcmp(const char *str1, const char *str2);

按字典順序比較兩個字元串,返回整數值的意義如下:

小於0,str1小於str2;

等於0,str1等於str2;

大於0,str1大於告鋒str2;

6 strncmp

#include <string.h>

int strncmp(const char *str1, const char *str2, size_t count);

同strcmp,除了最多比較count個字元。根據比較結果返回的整數值如下:

小於0,str1小於str2;

等於0,str1等於str2;

大於0,str1大於str2;

7 strchr

#include <string.h>

char *strchr(const char *str, int ch);

返回指向字元串str中字元ch第一次出現的位置的指針,如果str中不包含ch,則返枯碼回NULL。

8 strrchr

#include <string.h>

char *strrchr(const char *str, int ch);

返回指向字元串str中字元ch最後一次出現的位置的指針,如果str中不包含ch,則返回NULL。

9 strspn

#include <string.h>

size_t strspn(const char *str1, const char *str2);

返回字元串str1中由字元串str2中字元構成的第一個子串的長度。

10 strcspn

#include <string.h>

size_t strcspn(const char *str1, const char *str2);

返回字元串str1中由不在字元串str2中字元構成的第一個子串的長度。

11 strpbrk

#include <string.h>

char *strpbrk(const char *str1, const char *str2);

返回指向字元串str2中的任意字元第一次出現在字元串str1中的位置的指針;如果str1中沒有與str2相同的字元,那麼返回NULL。

12 strstr

#include <string.h>

char *strstr(const char *str1, const char *str2);

返回指向字元串str2第一次出現在字元串str1中的位置的指針;如果str1中不包含str2,則返回NULL。

13 strlen

#include <string.h>

size_t strlen(const char *str);

返回字元串str的長度,''不算在內。

14 strerror

#include <string.h>

char *strerror(int errnum);

返回指向與錯誤序號errnum對應的錯誤信息字元串的指針(錯誤信息的具體內容依賴於實現)。

15 strtok

#include <string.h>

char *strtok(char *str1, const char *str2);

在str1中搜索由str2中的分界符界定的單詞。

對strtok()的一系列調用將把字元串str1分成許多單詞,這些單詞以str2中的字元為分界符。第一次調用時str1非空,它搜索str1,找出由非str2中的字元組成的第一個單詞,將str1中的下一個字元替換為'',並返回指向單詞的指針。

隨後的每次strtok()調用(參數str1用NULL代替),均從前一次結束的位置之後開始,返回下一個由非str2中的字元組成的單詞。當str1中沒有這樣的單詞時返回NULL。每次調用時字元串str2可以不同。

如:

char *p;

p = strtok("The summer soldier,the sunshine patriot", " ");

printf("%s", p);

do {

p = strtok("", ", "); /* 此處str2是逗號和空格 */

if (p)

printf("|%s", p)

} while (p);

顯示結果是:The | summer | soldier | the | sunshine | patriot

J. 整型轉換字元串的庫函數 C語言

最通用的方法是使用sscanf函數和sprintf。可以尺敏散進行任何轉換,不必記住各具體轉拿橘換函陵氏數

char str="hello a 10 3.14159";
char a[6];
char b;
int c;
double d;
sscanf(str, "%s %c %d %lf", &a, &b, &c &d);

char temp[80];
sprintf(temp, "%6s %c %d %lf", a, b, c, d);

熱點內容
紅米4a高配版什麼配置 發布:2024-11-02 06:37:51 瀏覽:162
如何給word文件加密碼 發布:2024-11-02 06:21:10 瀏覽:717
台達模擬量編程 發布:2024-11-02 06:19:41 瀏覽:411
23456解壓 發布:2024-11-02 06:19:40 瀏覽:183
我的世界伺服器個人創造在哪裡 發布:2024-11-02 06:10:36 瀏覽:638
增霸卡的密碼是多少 發布:2024-11-02 06:06:18 瀏覽:813
傳奇天下第一完整腳本 發布:2024-11-02 06:04:03 瀏覽:587
javago性能 發布:2024-11-02 05:51:47 瀏覽:863
國內ip代理伺服器設置方式 發布:2024-11-02 05:42:42 瀏覽:842
線刷包文件夾 發布:2024-11-02 05:35:35 瀏覽:626