1 ctype.h
1.1 isalnum()
isalnum()函數(shù)用于測(cè)試字符,如果字符是字母或數(shù)字,則返回非零值(即真),否則返回零(即假)。isalnum()函數(shù)在許多場(chǎng)景中非常有用,特別是在字符串處理中。以下是一個(gè)示例代碼:
#include
#include
int main() {
char str[] = "YouBot is awesome! 123";
int i = 0;
while(str[i]) {
if (isalnum(str[i])) {
printf("'%c' is an alphanumeric charactern", str[i]);
} else {
printf("'%c' is not an alphanumeric charactern", str[i]);
}
i++;
}
return 0;
}
在這個(gè)示例中,我們通過(guò)循環(huán)遍歷給定的字符串,并使用isalnum()函數(shù)測(cè)試每個(gè)字符。如果字符是字母或數(shù)字,我們打印一條消息表示它是一個(gè)字母數(shù)字字符,否則我們打印一條消息表示它不是字母數(shù)字字符。這是一個(gè)常見的用例場(chǎng)景,可用于驗(yàn)證用戶輸入的密碼是否只包含字母和數(shù)字。
1.2 isapha()
isalpha()函數(shù)用于測(cè)試字符,如果字符是字母(A-Z或a-z),則返回非零值(即真),否則返回零(即假)。以下是一個(gè)示例代碼:
#include
#include
int main() {
char ch;
printf("Enter any character: ");
scanf("%c", &ch);
if(isalpha(ch)) {
printf("%c is an alphabet.", ch);
} else {
printf("%c is not an alphabet.", ch);
}
return 0;
}
在這個(gè)示例中,我們從用戶讀取一個(gè)字符并使用isalpha()函數(shù)測(cè)試它是否為字母字符。如果字符是字母字符,我們打印一條消息表示它是字母字符,否則我們打印一條消息表示它不是字母字符。這是一個(gè)常見的用例場(chǎng)景,可用于驗(yàn)證用戶輸入是否是字母字符。
isalpha()函數(shù)是C語(yǔ)言中對(duì)字符分類和操作功能的一個(gè)基本函數(shù)之一,通常與其他函數(shù),例如isdigit()和isalnum()等一起使用,以執(zhí)行更復(fù)雜的操作。
1.3 isblank()
isblank()函數(shù)是ctype.h頭文件中定義的函數(shù)之一,用于測(cè)試一個(gè)字符是否為空格字符。
具體來(lái)說(shuō),isblank()函數(shù)用于測(cè)試字符,如果字符為空格字符(空格或制表符),則返回非零值(即真),否則返回零(即假)。以下是一個(gè)示例代碼:
#include
#include
int main() {
char ch1 = ' ';
char ch2 = 'A';
if(isblank(ch1)) {
printf("%c is a blank character.", ch1);
} else {
printf("%c is not a blank character.", ch1);
}
printf("n");
if(isblank(ch2)) {
printf("%c is a blank character.", ch2);
} else {
printf("%c is not a blank character.", ch2);
}
return 0;
}
在這個(gè)示例中,我們測(cè)試了兩個(gè)不同的字符,一個(gè)是空格字符,另一個(gè)是字母字符。如果字符是空格字符,我們打印一條消息表示它是空格字符,否則我們打印一條消息表示它不是空格字符。
isblank()函數(shù)是一個(gè)典型的C語(yǔ)言函數(shù),用于執(zhí)行字符分類和操作任務(wù)。它可與其他函數(shù),例如isalpha()、isdigit()和isalnum()等一起使用,以執(zhí)行更復(fù)雜的字符操作。
1.4 iscntrl()
iscntrl()函數(shù)是ctype.h頭文件中定義的函數(shù)之一,用于測(cè)試一個(gè)字符是否為控制字符。
控制字符是一些不能顯示在屏幕上的字符,常見的控制字符包括制表符、換行符、回車符等等。iscntrl()函數(shù)用于測(cè)試一個(gè)字符是否為控制字符,如果字符是控制字符,則返回非零值(即真),否則返回零(即假)。
以下是一個(gè)示例代碼:
#include
#include
int main() {
char ch1 = 'n';
char ch2 = 'A';
if(iscntrl(ch1)) {
printf("%c is a control character.", ch1);
} else {
printf("%c is not a control character.", ch1);
}
printf("n");
if(iscntrl(ch2)) {
printf("%c is a control character.", ch2);
} else {
printf("%c is not a control character.", ch2);
}
return 0;
}
在這個(gè)示例中,我們測(cè)試了兩個(gè)不同的字符,一個(gè)是換行符,另一個(gè)是字母字符。如果字符是控制字符,我們打印一條消息表示它是控制字符,否則我們打印一條消息表示它不是控制字符。
iscntrl()函數(shù)是C語(yǔ)言中對(duì)字符分類和操作功能的一個(gè)基本函數(shù)之一,通常與其他函數(shù),例如isalpha()、isdigit()和isalnum()等一起使用,以執(zhí)行更復(fù)雜的操作。
1.5 isdigit()
在 POSIX 標(biāo)準(zhǔn)中,isdigit()函數(shù)是C語(yǔ)言ctype.h頭文件中一個(gè)用于判斷字符是否為數(shù)字字符(字符0-9)的函數(shù)。如果字符是一個(gè)數(shù)字,則返回一個(gè)非零值(即真),否則返回零(即假)。
示例代碼:
#include
#include
int main() {
char ch1 = '1';
char ch2 = 'A';
if(isdigit(ch1)) {
printf("%c is a digit character.", ch1);
} else {
printf("%c is not a digit character.", ch1);
}
printf("n");
if(isdigit(ch2)) {
printf("%c is a digit character.", ch2);
} else {
printf("%c is not a digit character.", ch2);
}
return 0;
}
在這個(gè)示例中,我們測(cè)試了兩個(gè)不同的字符,一個(gè)是數(shù)字字符,另一個(gè)是字母字符。如果字符是數(shù)字字符,我們打印一條消息表示它是數(shù)字字符,否則我們打印一條消息表示它不是數(shù)字字符。
總之,isdigit()函數(shù)是C語(yǔ)言中用于操作字符的最基本和常用的函數(shù)之一,在處理字符和字符串時(shí)非常有用。
1.6 isgraph()
在 POSIX 標(biāo)準(zhǔn)中,isgraph()函數(shù)是C語(yǔ)言ctype.h頭文件中的一個(gè)函數(shù),用于檢查一個(gè)字符是否是可打印的圖形字符。
具有圖形表示的字符是指可以顯示在屏幕上的字符,除了空格和控制字符外,所有的字符都屬于這個(gè)范疇。isgraph()函數(shù)會(huì)判斷一個(gè)字符是否是可打印圖形字符,如果是,則返回一個(gè)非零值(即真),否則返回零(即假)。
下面是一個(gè)示例代碼:
#include
#include
int main() {
char ch1 = 'n';
char ch2 = 'A';
if(isgraph(ch1)) {
printf("%c is a graph character.", ch1);
} else {
printf("%c is not a graph character.", ch1);
}
printf("n");
if(isgraph(ch2)) {
printf("%c is a graph character.", ch2);
} else {
printf("%c is not a graph character.", ch2);
}
return 0;
}
在這個(gè)示例中,我們測(cè)試了兩個(gè)不同的字符,一個(gè)是換行符,另一個(gè)是字母字符。如果字符是可打印的圖形字符,我們打印一條消息表示它是圖形字符,否則我們打印一條消息表示它不是圖形字符。
總之,isgraph()函數(shù)是C語(yǔ)言中用于操作字符的另一個(gè)基本函數(shù),在處理字符和字符串時(shí)非常有用。和其他ctype.h頭文件中的函數(shù),例如isdigit()、isalpha()和isalnum()等一起使用,以執(zhí)行更復(fù)雜的操作。
1.7 islower()
islower()函數(shù)是C語(yǔ)言ctype.h頭文件中的一個(gè)函數(shù),用于檢查傳入的字符是否是小寫字母。
如果字符是小寫字母,則該函數(shù)返回一個(gè)非零值(即真),否則返回零(即假)。該函數(shù)只檢查字符的 ASCII 值,如果字符不是小寫字母,則返回假。以下是一個(gè)示例代碼:
#include
#include
int main() {
char ch1 = 'a';
char ch2 = 'A';
if(islower(ch1)) {
printf("%c is a lowercase letter.", ch1);
} else {
printf("%c is not a lowercase letter.", ch1);
}
printf("n");
if(islower(ch2)) {
printf("%c is a lowercase letter.", ch2);
} else {
printf("%c is not a lowercase letter.", ch2);
}
return 0;
}
在這個(gè)示例中,我們測(cè)試了兩個(gè)不同的字符,一個(gè)是小寫字母,另一個(gè)是大寫字母。如果字符是小寫字母,我們打印一條消息表示它是小寫字母,否則我們打印一條消息表示它不是小寫字母。
值得注意的是,另外還有一個(gè) isupper() 函數(shù),它是用來(lái)檢查一個(gè)字符是否是大寫字母的,該函數(shù)的使用方法和 islower() 函數(shù)一樣。
在 Python 中,也有一個(gè)字符串方法 islower(),用于檢查字符串中的所有字母是否都是小寫字母。該方法返回一個(gè)布爾值,True 表示所有字母都是小寫字母,F(xiàn)alse 則表示至少有一個(gè)不是小寫字母。
1.8 isprint()
略
1.9 ispunct()
在 POSIX 標(biāo)準(zhǔn)中,ispunct()是C語(yǔ)言 ctype.h頭文件中的一個(gè)函數(shù),用于檢查傳入的字符是否是一個(gè)標(biāo)點(diǎn)符號(hào)。 如果字符是標(biāo)點(diǎn)符號(hào),則該函數(shù)返回一個(gè)非零值(即真),否則返回零(即假)。
以下是一個(gè)示例代碼:
#include
#include
int main()
{
char c1 = '.';
char c2 = 'a';
if (ispunct(c1)) {
printf("%c is a punctuation mark.n", c1);
} else {
printf("%c is not a punctuation mark.n", c1);
}
if (ispunct(c2)) {
printf("%c is a punctuation mark.n", c2);
} else {
printf("%c is not a punctuation mark.n", c2);
}
return 0;
}
在此示例中,我們使用ispunct()函數(shù)測(cè)試兩個(gè)不同的字符,字符’.’是標(biāo)點(diǎn)符號(hào),而字符’a’不是標(biāo)點(diǎn)符號(hào)。如果字符是標(biāo)點(diǎn)符號(hào),則打印一條消息表示它是標(biāo)點(diǎn)符號(hào),否則打印一條消息表示它不是。
總之,ispunct()函數(shù)是C語(yǔ)言中用于操作字符的另一個(gè)基本函數(shù),在字符串和文本處理中使用非常廣泛。和其他ctype.h頭文件中的函數(shù),例如isdigit()、isalpha()和isalnum()等一起使用,以執(zhí)行更復(fù)雜的操作。
1.10 isspace()
POSIX標(biāo)準(zhǔn)中的 isspace() 函數(shù)是一個(gè)用于檢查一個(gè)字符是否為空格字符的函數(shù),它定義在 cctype.h 頭文件中。如果字符是空格字符,則該函數(shù)返回一個(gè)非零值(即真),否則返回零(即假)。
以下是一個(gè)在 C++ 中使用 isspace() 函數(shù)的示例代碼:
#include
#include
using namespace std;
int main() {
char ch = ' ';
if (isspace(ch)) {
cout << "該字符是空格n";
} else {
cout << "該字符不是空格n";
}
return 0;
}
在這個(gè)示例中,我們定義了一個(gè)字符變量 ch,然后使用 isspace() 函數(shù)檢查該字符是否為空格字符。如果檢測(cè)到該字符是空格字符,則輸出一條消息表示該字符是空格字符,否則輸出一條消息表示該字符不是空格字符。
在 POSIX 標(biāo)準(zhǔn)中,還包括了用于檢查空格字符的 isspace_l() 函數(shù),該函數(shù)與 isspace() 函數(shù)的功能相同,但可以指定地域設(shè)置來(lái)檢查字符是否為空格字符。
總之,isspace() 函數(shù)是 C++ 中用于操作字符的一種基本函數(shù),它可以用來(lái)檢查一個(gè)字符是否為空格字符。
ps: isspace()相比isblank判斷的范圍更加廣一些
1.11 issupper()
在 POSIX C 標(biāo)準(zhǔn)中, issupper() 函數(shù)是用于檢查一個(gè)字符是否為大寫字母的函數(shù)。該函數(shù)定義在 ctype.h 頭文件中,并返回一個(gè)非零值(即真)或零(即假),表示字符是否是大寫字母。此函數(shù)僅檢查字母字符,而不檢查空格、數(shù)字或符號(hào)。
以下是一個(gè)使用 issupper() 函數(shù)的示例代碼:
#include
#include
int main() {
char ch = 'A';
if (issupper(ch)) {
printf("該字符是大寫字母n");
} else {
printf("該字符不是大寫字母n");
}
return 0;
}
這個(gè)示例中,我們定義了一個(gè)字符變量 ch,然后使用 issupper() 函數(shù)檢查該字符是否是大寫字母。如果該字符是大寫字母,則輸出一條消息表示該字符是大寫字母,否則輸出一條消息表示該字符不是大寫字母。
總之, issupper() 函數(shù)是 POSIX C 標(biāo)準(zhǔn)中用于檢查一個(gè)字符是否為大寫字母的函數(shù),常用于處理字符和文本數(shù)據(jù)。
1.12 isxdigit()
在 POSIX C 標(biāo)準(zhǔn)中,isxdigit() 函數(shù)用于檢查一個(gè)字符是否為十六進(jìn)制數(shù)字字符。該函數(shù)定義在 ctype.h 頭文件中,并返回一個(gè)非零值(即真)或零(即假),表示字符是否為十六進(jìn)制數(shù)字字符。注意,該函數(shù)只檢查字母字符,不檢查空格、數(shù)字或符號(hào)。
以下是一個(gè)使用 isxdigit() 函數(shù)的示例代碼:
#include
#include
int main() {
char ch = 'A';
if (isxdigit(ch)) {
printf("該字符是十六進(jìn)制數(shù)字字符n");
} else {
printf("該字符不是十六進(jìn)制數(shù)字字符n");
}
return 0;
}
在這個(gè)示例中,我們定義了一個(gè)字符變量 ch,然后使用 isxdigit() 函數(shù)檢查該字符是否為十六進(jìn)制數(shù)字字符。如果該字符是十六進(jìn)制數(shù)字字符,則輸出一條消息表示該字符是十六進(jìn)制數(shù)字字符,否則輸出一條消息表示該字符不是十六進(jìn)制數(shù)字字符。
總之,在 POSIX C 標(biāo)準(zhǔn)中,isxdigit() 函數(shù)是用于檢查一個(gè)字符是否為十六進(jìn)制數(shù)字字符的函數(shù),常用于處理字符和文本數(shù)據(jù)。
1.13 tolower()
在 POSIX C 標(biāo)準(zhǔn)中,tolower() 函數(shù)用于將大寫字母轉(zhuǎn)換為相應(yīng)的小寫字母。該函數(shù)在 ctype.h 頭文件中定義,它接受一個(gè)整型參數(shù),表示要轉(zhuǎn)換為小寫字母的字符。 返回值是對(duì)應(yīng)的小寫字母。如果傳遞給 tolower() 函數(shù)的參數(shù)不是大寫字母,則函數(shù)返回原始字符。
下面是在 POSIX C 中使用 tolower() 函數(shù)的示例代碼:
#include
#include
int main() {
char ch = 'A';
char lowercase_ch = tolower((int) ch);
printf("%c 轉(zhuǎn)換為小寫字母是 %cn", ch, lowercase_ch);
return 0;
}
這段代碼將輸出 “A 轉(zhuǎn)換為小寫字母是 a”, 它就展示了如何將大寫字母轉(zhuǎn)換為小寫字母。
在問題描述中提到可能會(huì)遇到程序崩潰的情況,請(qǐng)注意確保您傳遞給 tolower() 函數(shù)的是正確的參數(shù)類型。參數(shù)類型必須是整型,而不是字符型。如果傳遞給該函數(shù)的參數(shù)是字符型,則必須通過(guò)強(qiáng)制轉(zhuǎn)換將其轉(zhuǎn)換為整型,如上面的代碼所示。
總之,在 POSIX C 中,tolower() 函數(shù)是將大寫字母字符轉(zhuǎn)換為小寫字母字符的函數(shù),常用于處理文本數(shù)據(jù)。但在使用該函數(shù)時(shí)需要注意參數(shù)類型的正確性,以避免程序崩潰。
1.14 toupper()
在 POSIX C 標(biāo)準(zhǔn)中,toupper() 函數(shù)也定義在 ctype.h 頭文件中,它接受一個(gè)整型參數(shù),表示要轉(zhuǎn)換為大寫字母的字符,并返回相應(yīng)的大寫字母。如果傳遞給 toupper() 函數(shù)的參數(shù)不是小寫字母,則函數(shù)返回原始字符。
下面是在 POSIX C 中使用 toupper() 函數(shù)的示例代碼:
#include
#include
int main() {
char ch = 'a';
char uppercase_ch = toupper((int) ch);
printf("%c 轉(zhuǎn)換為大寫字母是 %cn", ch, uppercase_ch);
return 0;
}
這段代碼將輸出 “a 轉(zhuǎn)換為大寫字母是 A”, 它就展示了如何將小寫字母轉(zhuǎn)換為大寫字母。
與 tolower() 函數(shù)類似,當(dāng)使用 toupper() 函數(shù)時(shí),需要確保傳遞給該函數(shù)的參數(shù)類型是整型,而不是字符型。如果傳遞給該函數(shù)的參數(shù)是字符型,則必須通過(guò)強(qiáng)制轉(zhuǎn)換將其轉(zhuǎn)換為整型。
總之,在 POSIX C 中,toupper() 函數(shù)是將小寫字母字符轉(zhuǎn)換為大寫字母字符的函數(shù),常用于處理文本數(shù)據(jù)。
2 errno.h
2.1 errno()
在 C 語(yǔ)言中,errno 是一個(gè)由標(biāo)準(zhǔn) C 庫(kù)中的頭文件 errno.h 定義的全局變量。errno 變量存儲(chǔ)著最后一次的錯(cuò)誤代碼。當(dāng)通過(guò)系統(tǒng)調(diào)用或庫(kù)函數(shù)執(zhí)行操作失敗時(shí),errno 變量會(huì)被設(shè)置為一個(gè)非零值,反映導(dǎo)致失敗的原因。在這種情況下,程序員可以通過(guò)檢查 errno 變量的值來(lái)了解錯(cuò)誤的原因,并采取必要的措施。
在使用 errno 變量時(shí),程序員通常需要獲得與 errno 變量對(duì)應(yīng)的錯(cuò)誤消息。這可以通過(guò)使用 strerror() 函數(shù)來(lái)實(shí)現(xiàn)。strerror() 函數(shù)可以將 errno 變量的值作為輸入,然后返回一個(gè)指向?qū)?yīng)錯(cuò)誤消息的字符串指針。
以下是一個(gè)演示如何使用 errno 變量和 strerror() 函數(shù)的示例代碼:
#include
#include
#include
int main() {
FILE *fp = fopen("non-existent-file.txt", "r");
if(fp == NULL) {
printf("打開文件失敗: %sn", strerror(errno));
return 1;
}
//...
fclose(fp);
return 0;
}
在這個(gè)示例中,當(dāng) fopen() 函數(shù)未能打開名為 “non-existent-file.txt” 的文件時(shí),它將返回 NULL 并設(shè)置 errno 為 ENOENT。程序員可以使用 strerror() 函數(shù)檢索該錯(cuò)誤,并相應(yīng)地處理錯(cuò)誤情況。在這個(gè)示例中,程序員可以從 stderr 輸出中讀取以下錯(cuò)誤消息:
打開文件失敗: No such file or directory
因此,將 strerror() 與 errno 結(jié)合使用將使應(yīng)用程序?qū)崿F(xiàn)更好的錯(cuò)誤報(bào)告和處理機(jī)制。
In conclusion,在 C 語(yǔ)言中,errno 變量是一個(gè)重要的變量,提供了一種檢查程序中錯(cuò)誤發(fā)生原因的簡(jiǎn)便方法,程序員可以通過(guò) strerror() 函數(shù)來(lái)檢索與 errno 變量對(duì)應(yīng)的錯(cuò)誤消息。
評(píng)論
查看更多