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