Like Share Discussion Bookmark Smile

J.J. Huang   2019-10-20   C C 語言技術 <201910>   瀏覽次數:次   DMCA.com Protection Status

C語言 - 第十六章 | 字串 - 轉換、測試

轉換

若要將字串轉換為數字,則可以使用atoi()atol()atof()函式,可分別將字串轉換為intlong 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語言標準庫