一、c 語言中字符數組和數字的相互轉換函數;
相關函數:atof atoi,atol,
strtod,strtol,strtoul
在頭文件stdlib中 #include<stdlib.h>
(1)atof (將字串轉換成浮點型數) ascii to floating 的縮寫
char *str = "123.456E2";
double f=atof(str);
printf("string = %s double = %lf\n", str, f);
//輸出結果為:string = 123.456e2 double = 12345.600000
(2) atoi (將字串轉換成型數) ascii to integer
char *str = "123456789";
int f=atoi(str);
printf("string = %s integer = %d\n", str, f);
//輸出結果為:string = 123456789 integer = 123456789
(3) atol (將字串轉換成長型數) ascii to long int
和上面的一組功能一樣,頭文件也相同,只是增添了一個遇到不合條件而終止的指針;
就是一遇到不符合條件的字符,就停止轉換,將失敗位置的地址放到 endptr 的地址里
(1)strtod(將字符串轉成double) string to double
char *endptr;
char a[] = "1234.567qwert";
printf( "a=%lf ", strtod(a,&endptr));
printf( "%s\n", endptr );
//輸出結果為:a=1234.567000 qwert
(2)long int strtol(char *nptr,char **endptr,int base); (將字串轉換成32位型數)string to long int
其中base是string中數字串的進制
char *endptr;
char a[] = "123456.123qwert";
long b=strtol(a,&endptr,10);
printf( "a=%ld\n",b );
printf( "fail=%s\n", endptr );
//輸出結果為:a=1234567
// fail=.123qwert
(3) strtoul (將字串轉換成無符號32位型數) string to unsigned long
-------------------------------------------------分割線--------------------------------------------------
既然可以將字符串轉成對應的數字,那么反之也可行。下面介紹一下數字如何轉成字符串數組
(1)_itoa 函數 英文: integer to array
功能: 將Integer類型轉換為base進制,存入字符串數組中
用法:char * _itoa(int value, char *str, int base);
意思,即先將value轉化為base進制的數,之后再保存在str中
int num = 123456;
char str[25];
_itoa(num, str, 10);
printf("integer = %d str = %s\n", num, str);
//輸出結果為:integer = 123456 str = 123456
(2) _itow 函數 Integer to Wide Char
int num=123456;
wchar_t str[25];
_itow(num, str, 10);
printf("%d\n",sizeof(str[0]));
wchar_t 寬字符每個字符占兩個字節