欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:c語(yǔ)言 字符函數(shù)和字符串函數(shù)

柚子快報(bào)邀請(qǐng)碼778899分享:c語(yǔ)言 字符函數(shù)和字符串函數(shù)

http://yzkb.51969.com/

字符分類(lèi)函數(shù)

使用字符函數(shù)需要包含頭文件ctype.h

以下都是符合條件返回真

iscntrl

任何控制字符

isspace

空白字符

isdigit

十進(jìn)制數(shù)字

isxdis

十六進(jìn)制數(shù)字

islower

小寫(xiě)字母

isupper

大寫(xiě)字母

isalpha

字母

isalnum

字母或數(shù)字

ispunct

標(biāo)點(diǎn)符號(hào)和任何不屬于字母的圖形字符

isgraph

任何圖形字符

isprint

任何可打印字符

通過(guò)返回值來(lái)說(shuō)明是否符合,如果符合就返回非0的整數(shù),如果不符合,則返回0。

字符轉(zhuǎn)換函數(shù)

int tolower ( int c ); //將參數(shù)傳進(jìn)去的?寫(xiě)字?轉(zhuǎn)?寫(xiě)

int toupper ( int c ); //將參數(shù)傳進(jìn)去的?寫(xiě)字?轉(zhuǎn)?寫(xiě)

?例子

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

int main()

{

int i = 0;

char str[] = "Test String.\n";

char c;

while (str[i])

{

c = str[i];

if (islower(c))

c = toupper(c);

putchar(c);

i++;

}

return 0;

}

strlen的使用和模擬實(shí)現(xiàn)

判斷字符串長(zhǎng)度

原型

size_t strlen ( const char * str );

?字符串以 '\0' 作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中 '\0' 前面出現(xiàn)的字符個(gè)數(shù)(不包含 '\0')參數(shù)指向的字符串必須要以 '\0' 結(jié)束,注意函數(shù)的返回值為size_t,是無(wú)符號(hào)的

例子

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

int main()

{

const char* str1 = "abcdef";

const char* str2 = "bbb";

if (strlen(str2) - strlen(str1) > 0)

{

printf("str2>str1\n");

}

else

{

printf("srt1>str2\n");

}

return 0;

}

?

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

size_t my_strlen(const char* str)

{

size_t count = 0;

while (*str)

{

count++;

str++;

}

return count;

}

int main()

{

char arr1[] = "hello world";

printf("%zd\n", my_strlen(arr1));

return 0;

}

strcpy的使用和模擬實(shí)現(xiàn)

拷貝字符串

原型

char* strcpy(char * destination, const char * source );

源字符串必須以 '\0' 結(jié)束。

會(huì)將源字符串中的 '\0' 拷貝到目標(biāo)空間。

目標(biāo)空間必須足夠大,以確保能存放源字符串。

目標(biāo)空間必須可修改。

函數(shù)返回的是目標(biāo)空間的起始地址

例子

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

int main()

{

char arr1[20] = { 0 };

char arr2[] = "hello world";

strcpy(arr1, arr2);

printf("%s\n", arr1);

return 0;

}

?注意:如果目標(biāo)空間不能修改,那么就會(huì)報(bào)錯(cuò)

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

char* my_strcpy(char* dest, const char* src)

{

char* ret = dest;

while (*dest++ = *src++)

{

;

}

return ret;

}

int main()

{

char arr1[20] = { 0 };

char arr2[] = "hello world";

my_strcpy(arr1, arr2);

printf("%s\n", arr1);

return 0;

}

strcat的使用和模擬實(shí)現(xiàn)

字符串追加

原型

char *strcat( char *strDestination, const char *strSource );

源字符串必須以 '\0' 結(jié)束。

目標(biāo)字符串中也得有 '\0' ,否則沒(méi)辦法知道追加從哪里開(kāi)始。

目標(biāo)空間必須有足夠的大,能容納下源字符串的內(nèi)容。

目標(biāo)空間必須可修改。

函數(shù)返回的是目標(biāo)空間的起始地址

例子

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

char* my_strcat(char* dest, const char* src)

{

char* ret = dest;

while (*dest)

{

dest++;

}

while (*dest++ = *src++)

{

;

}

return ret;

}

int main()

{

char arr1[20] = "hello";

char arr2[] = " world";

my_strcat(arr1, arr2);

printf("%s\n", arr1);

return 0;

}

strcmp的使用和模擬實(shí)現(xiàn)

字符串比較

原型

int strcmp( const char *string1, const char *string2 );

第一個(gè)字符串大于第二個(gè)字符串,則返回大于0的數(shù)字

第一個(gè)字符串等于第二個(gè)字符串,則返回0

第一個(gè)字符串小于第二個(gè)字符串,則返回小于0的數(shù)字

比較兩個(gè)字符串中對(duì)應(yīng)位置上字符ASCII碼值的大小

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

int my_strcmp(const char* str1, const char* str2)

{

while (*str1 == *str2)

{

str1++;

str2++;

}

return *str1 - *str2;

}

int main()

{

char arr1[] = "abcd";

char arr2[] = "abcf";

int ret = my_strcmp(arr1, arr2);

if (ret > 0)

{

printf("%s大于%s\n", arr1, arr2);

}

else if (ret == 0)

{

printf("%s等于%s\n", arr1, arr2);

}

else

{

printf("%s小于%s\n", arr1, arr2);

}

return 0;

}

strncpy函數(shù)的使用

更安全的字符串拷貝

原型

char * strncpy ( char * destination, const char * source, size_t num );

?拷貝num個(gè)字符從源字符串到目標(biāo)空間

如果源字符串的長(zhǎng)度小于num,則拷貝完源字符串之后,在目標(biāo)的后邊追加'\0',直到num個(gè)。

如果源字符串中有6個(gè)字符,但是只拷貝3個(gè)字符過(guò)去,那么就不會(huì)額外多追加'\0'

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

char* my_strncpy(char* dest, const char* sour, size_t num)

{

int i = 0;

char* ret = dest;

while (num--)

{

*dest++ = *sour++;

if (*sour == '\0')

{

while (num--)

{

*dest++ = *sour;

}

return ret;

}

}

return ret;

}

int main()

{

char arr1[] = "hello worldxxxxxxxx";

char arr2[] = "hello bit";

char* ret = my_strncpy(arr1, arr2, 11);

printf("%s\n", arr1);

return 0;

}

strncat函數(shù)的使用

更安全的字符串追加

原型

char * strncat ( char * destination, const char * source, size_t num );

?將source指向字符串的前num個(gè)字符追加到destination指向的字符串末尾,再追加?個(gè) '\0'?字符如果source指向的字符串的長(zhǎng)度小于num的時(shí)候,只會(huì)將字符串中到'\0'的內(nèi)容追加到destination指向的字符串末尾,'\0'追加后不會(huì)再額外追加其他

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

char* my_strncat(char* dest, const char* sour, size_t num)

{

char* ret = dest;

while (*dest)

{

dest++;

}

while (num--)

{

*dest++ = *sour++;

if (*sour == '\0')

{

*dest = *sour;

return ret;

}

}

*dest = '\0';

return ret;

}

int main()

{

char str1[100] = "To be\0\\123456789xxx";

char str2[20] = "or not to be";

my_strncat(str1, str2, 5);

printf("%s\n", str1);

return 0;

}

strncmp函數(shù)的使用

更安全的字符串比較

原型

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

?較str1和str2的前num個(gè)字符,如果相等就繼續(xù)往后比較,最多比較num個(gè)字母,如果提前發(fā)現(xiàn)不一樣,就提前結(jié)束,大的字符所在的字符串大于另外一個(gè)。如果num個(gè)字符都相等那就返回0

strstr的使用和模擬實(shí)現(xiàn)

查找字符串

原型

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

第一個(gè)字符串大于第二個(gè)字符串,則返回大于0的數(shù)字

第一個(gè)字符串等于第二個(gè)字符串,則返回0

第一個(gè)字符串小于第二個(gè)字符串,則返回小于0的數(shù)字

比較兩個(gè)字符串中對(duì)應(yīng)位置上字符ASCII碼值的大小

模擬實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

char* my_strstr(const char* str1, const char* str2)

{

//如果*str2只有'\0'那就輸出str1指向的字符串

if (*str2 == '\0')

{

return (char*)str1;

}

const char* cur1 = str1;

const char* cur2 = str2;

while (*str1)

{

cur1 = str1;

cur2 = str2;

while (*cur1 == *cur2 && *cur2 != '\0')

{

cur1++;

cur2++;

}

if (*cur2 == '\0')

{

return (char*)str1;

}

str1++;

}

return NULL;

}

int main()

{

char arr1[] = "abaacaaaddf";

char arr2[] = "aaa";

char* ret = my_strstr(arr1, arr2);

if (ret != NULL)

{

printf("%s\n", ret);

}

else

{

printf("找不到");

}

return 0;

}

strtok函數(shù)的使用

分割字符串

原型

char * strtok ( char * str, const char * sep);

sep參數(shù)指向?個(gè)字符串,定義了?作分隔符的字符集合

第?個(gè)參數(shù)指定?個(gè)字符串,它包含了0個(gè)或者多個(gè)由sep字符串中?個(gè)或者多個(gè)分隔符分割的標(biāo) 記。

strtok函數(shù)找到str中的下?個(gè)標(biāo)記,并將其? \0 結(jié)尾,返回?個(gè)指向這個(gè)標(biāo)記的指針。(注:strtok函數(shù)會(huì)改變被操作的字符串,所以在使?strtok函數(shù)切分的字符串?般都是臨時(shí)拷貝的內(nèi)容 并且可修改。)

strtok函數(shù)的第?個(gè)參數(shù)不為NULL ,函數(shù)將找到str中第?個(gè)標(biāo)記,strtok函數(shù)將保存它在字符串中的位置。

strtok函數(shù)的第?個(gè)參數(shù)為 NULL ,函數(shù)將在同?個(gè)字符串中被保存的位置開(kāi)始,查找下?個(gè)標(biāo) 記。

如果字符串中不存在更多的標(biāo)記,則返回 NULL 指針。

?例子

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

int main()

{

char arr1[] = "zhangsan@qq.com";

const char* p = "@.";

char arr2[30] = { 0 };

strcpy(arr2, arr1);

char* ptr = NULL;

for (ptr = strtok(arr2, p); ptr != NULL; ptr = strtok(NULL, p))

{

printf("%s\n", ptr);

}

return 0;

}

strerror函數(shù)的使用

返回錯(cuò)誤碼對(duì)應(yīng)信息

原型

char * strerror ( int errnum );

?在不同的系統(tǒng)和C語(yǔ)?標(biāo)準(zhǔn)庫(kù)的實(shí)現(xiàn)中都規(guī)定了?些錯(cuò)誤碼,?般是放在errno.h這個(gè)頭文件中說(shuō)明的,C語(yǔ)?程序啟動(dòng)的時(shí)候就會(huì)使用一個(gè)全面的變量errno來(lái)記錄程序的當(dāng)前錯(cuò)誤碼,只不過(guò)程序啟動(dòng)的時(shí)候errno是0,表示沒(méi)有錯(cuò)誤,當(dāng)我們?cè)谑褂脴?biāo)準(zhǔn)庫(kù)中的函數(shù)的時(shí)候發(fā)生了某種錯(cuò)誤,就會(huì)講對(duì)應(yīng)的錯(cuò)誤碼,存放在errno中,而一個(gè)錯(cuò)誤碼的數(shù)字是整數(shù)很難理解是什么意思,所以每?個(gè)錯(cuò)誤碼都是有對(duì)應(yīng)的錯(cuò)誤信息的。strerror函數(shù)就可以將錯(cuò)誤對(duì)應(yīng)的錯(cuò)誤信息字符串的地址返回。

#include

#include

#include

int main()

{

FILE* pFile;

//在這個(gè)程序的文件夾中打開(kāi)unexit.txt的文件,用讀的形式

pFile = fopen("unexit.txt", "r");

//如果pFile是NULL就說(shuō)明打開(kāi)失敗

//使用庫(kù)函數(shù)發(fā)生的錯(cuò)誤,就會(huì)把對(duì)應(yīng)的錯(cuò)誤碼會(huì)放在全局變量errno

if (pFile == NULL)

{

printf("Error oprning file unexit.txt:%s\n", strerror(errno));

}

else

{

printf("打開(kāi)文件成功\n");

}

return 0;

}

柚子快報(bào)邀請(qǐng)碼778899分享:c語(yǔ)言 字符函數(shù)和字符串函數(shù)

http://yzkb.51969.com/

精彩內(nèi)容

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19396392.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄