C語言 - 第十六章 | 字串 - 轉換、測試
轉換
若要將字串轉換為數字,則可以使用atoi()
、atol()
、atof()
函式,可分別將字串轉換為int
、long int
,與double
,這些函式都包括在stdlib.h
中。
1 2 3
| int atoi(const char*); int atol(const char*); double atof(const char*);
|
atoi()
、atol()
或atof()
會搜尋字串中可以轉換的部份,直到遇到無法轉換的字元。
- 字串開頭可以使用正負號。例如
"+100"
或"-100"
。
atof()
可以接受科學記號。例如"12.3e-5"
或"123E+4"
。
- 這幾個函式若沒有可轉換的字元則傳回
0
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <stdio.h> #include <string.h> #include <stdlib.h> #define LENGTH 80
int main() {
char str1[LENGTH]; char str2[LENGTH]; char str3[LENGTH];
printf("輸入字串 for int:"); fgets(str1, LENGTH, stdin);
printf("輸入字串 for long int:"); fgets(str2, LENGTH, stdin);
printf("輸入字串 for double:"); fgets(str3, LENGTH, stdin);
printf("%d\n", atoi(str1)); printf("%ld\n", atol(str2)); printf("%f\n", atof(str3)); return 0; }
|
測試
若要測試字元為數字、字母、大寫、小寫等等,可以使用ctype.h
中的isxxxx()
函式。
1 2 3 4 5 6 7 8 9 10 11
| isalnum(int c):是否為字母或數字 isalpha(int c):是否為字母 iscntrl(int c):是否為控制字元 isdigit(int c):是否為數字 islower(int c):是否為小寫字母 isprint(int c):是否為列印字元 ispunct(int c):是否為標點符號 isspace(int c):是否為空白 isupper(int c):是否為大寫字母 isxdigit(int c):是否為16進位數字 ...
|
詳細可以參考:<ctype.h> - C語言標準庫
註:以上參考了
hackersir gitbooks
字串轉換、字元測試
極客書 - C語言標準庫