C语言字符串和数字转换函数大全
文章目錄
- 一、前言
- 二、函數詳解
- 1. C語言atof()函數:將字符串轉換為double(雙精度浮點數)
- 2. C語言atoi()函數:將字符串轉換成int(整數)
- 3. C語言atol()函數:將字符串轉換成long(長整型)
- 4. C語言strtol()函數:將字符串轉換成long(長整型數)
- 5. C語言strtoul()函數:將字符串轉換成unsigned long(無符號長整型數)
- 6. C語言strtod()函數:將字符串轉換為double(雙精度浮點數)
- 三、模擬實現這些函數
- 1.函數atoi
- 2、模擬實現此函數
- 3、函數atof
- 4、模擬實現此函數
- 5、函數itoa
- 6、模擬實現此函數
一、前言
C語言標準庫函數中提供了一下字符串和數字之間的轉換函數,下面就一一來了解一下吧。
二、函數詳解
1. C語言atof()函數:將字符串轉換為double(雙精度浮點數)
頭文件:#include <stdlib.h>
函數 atof() 用于將字符串轉換為雙精度浮點數(double),其原型為:
double atof (const char* str);
atof() 的名字來源于 ascii to floating point numbers 的縮寫,它會掃描參數str字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字符串結束時(’\0’)才結束轉換,并將結果返回。參數str 字符串可包含正負號、小數點或E(e)來表示指數部分,如123. 456 或123e-2。
【返回值】返回轉換后的浮點數;如果字符串 str 不能被轉換為 double,那么返回 0.0。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習;使用 atof() 與使用 strtod(str, NULL) 結果相同。另外在 C99 / C++11 規(guī)范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
范例:
#include <stdio.h> #include <stdlib.h> int main(){char *a = "-100.23",*b = "200e-2",*c = "341",*d = "100.34cyuyan",*e = "cyuyan";printf("a = %.2f\n", atof(a));printf("b = %.2f\n", atof(b));printf("c = %.2f\n", atof(c));printf("d = %.2f\n", atof(d));printf("e = %.2f\n", atof(e));system("pause");return 0; }執(zhí)行結果:
a = -100.23
b = 2.00
c = 341.00
d = 100.34
e = 0.00
2. C語言atoi()函數:將字符串轉換成int(整數)
頭文件:#include <stdlib.h>
atoi() 函數用來將字符串轉換成整數(int),其原型為:
int atoi (const char * str);
【函數說明】atoi() 函數會掃描參數 str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字符串結束時(’\0’)才結束轉換,并將結果返回。
【返回值】返回轉換后的整型數;如果 str 不能轉換成 int 或者 str 為空字符串,那么將返回 0。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習。另外在 C99 / C++11 規(guī)范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
范例:將字符串a 與字符串b 轉換成數字后相加。
#include <stdio.h> #include <stdlib.h> int main () {int i;char buffer[256];printf ("Enter a number: ");fgets (buffer, 256, stdin);i = atoi (buffer);printf ("The value entered is %d.", i);system("pause");return 0; }執(zhí)行結果:
Enter a number: 233cyuyan
The value entered is 233.
3. C語言atol()函數:將字符串轉換成long(長整型)
頭文件:#include <stdlib.h>
atol() 函數的名字源于“ascii to long”,用來將字符串轉換成長整型數(long),其原型為:
long atol(const char * str);
【函數說明】atol() 會掃描參數 str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字符串結束時(’\0’)才結束轉換,并將結果返回。
【返回值】返回轉換后的長整型數(long);如果 str 不能轉換成 long 或者 str 為空字符串,那么將返回 0。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習;使用 atol() 與使用strtol(nptr, NULL, 10) 結果相同。另外在 C99 / C++11 規(guī)范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
示例:將輸入的字符串轉換成long。
#include <stdio.h> #include <stdlib.h> int main () {long int li;char buffer[256];printf ("Enter a long number: ");fgets(buffer, 256, stdin);li = atol(buffer);printf ("The value entered is %ld.\n", li);system("pause");return 0; }執(zhí)行結果:
Enter a long number: 1200cyuyan
The value entered is 1200.
4. C語言strtol()函數:將字符串轉換成long(長整型數)
頭文件:#include <stdlib.h>
strtol() 函數用來將字符串轉換為長整型數(long),其原型為:
long int strtol (const char* str, char** endptr, int base);
【參數說明】str 為要轉換的字符串,endstr 為第一個不能轉換的字符的指針,base 為字符串 str 所采用的進制。
【函數說明】strtol() 會將參數 str 字符串根據參數 base 來轉換成長整型數(long)。參數 base 范圍從2 至36,或0。參數base 代表 str 采用的進制方式,如base 值為10 則采用10 進制,若base 值為16 則采用16 進制等。
strtol() 會掃描參數 str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,再遇到非數字或字符串結束時(’\0’)結束轉換,并將結果返回。
兩點注意:
- 當 base 的值為 0 時,默認采用 10 進制轉換,但如果遇到 ‘0x’ / ‘0X’ 前置字符則會使用 16 進制轉換,遇到 ‘0’ 前置字符則會使用 8 進制轉換。
- 若endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數無效,或不使用該參數。
【返回值】返回轉換后的長整型數;如果不能轉換或者 str 為空字符串,那么返回 0(0L);如果轉換得到的值超出 long int 所能表示的范圍,函數將返回 LONG_MAX 或 LONG_MIN(在 limits.h 頭文件中定義),并將 errno 的值設置為 ERANGE。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習。另外在 C99 / C++11 規(guī)范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
【示例】將字符串轉換成10進制。
#include <stdio.h> #include <stdlib.h> int main () {char szNumbers[] = "2001 60c0c0 -1101110100110100100000 0x6fffff";char * pEnd;long int li1, li2, li3, li4;li1 = strtol (szNumbers,&pEnd,10);li2 = strtol (pEnd,&pEnd,16);li3 = strtol (pEnd,&pEnd,2);li4 = strtol (pEnd,NULL,0);printf ("轉換成10進制: %ld、%ld、%ld、%ld\n", li1, li2, li3, li4);system("pause");return 0; }執(zhí)行結果:
轉換成10進制: 2001、6340800、-3624224、7340031
5. C語言strtoul()函數:將字符串轉換成unsigned long(無符號長整型數)
頭文件:#include <stdlib.h>
strtoul() 函數源自于“string to unsigned long”,用來將字符串轉換成無符號長整型數(unsigned long),其原型為:
unsigned long strtoul (const char* str, char** endptr, int base);
【參數說明】str 為要轉換的字符串,endstr 為第一個不能轉換的字符的指針,base 為字符串 str 所采用的進制。
【函數說明】strtoul() 會將參數 str 字符串根據參數 base 來轉換成無符號的長整型數(unsigned long)。參數 base 范圍從2 至36,或0。參數 base 代表 str 采用的進制方式,如 base 值為10 則采用10 進制,若 base 值為16 則采用16 進制數等。
strtoul() 會掃描參數 str 字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,再遇到非數字或字符串結束時(’\0’)結束轉換,并將結果返回。
兩點注意:
- 當 base 的值為 0 時,默認采用 10 進制轉換,但如果遇到 ‘0x’ / ‘0X’ 前置字符則會使用 16 進制轉換,遇到 ‘0’ 前置字符則會使用 8 進制轉換。
- 若 endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數無效,或不使用該參數。本文最后的范例沒有展示 endptr 參數的使用,你可以參考 strtol() 函數的范例來更加直觀地了解 endptr 參數。
【返回值】返回轉換后的無符號長整型數;如果不能轉換或者 str 為空字符串,那么返回 0;如果轉換得到的值超出unsigned long int 所能表示的范圍,函數將返回 ULONG_MAX(在 limits.h 頭文件中定義),并將 errno 的值設置為 ERANGE。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習。另外在 C99 / C++11 規(guī)范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
范例:將輸入的字符串轉換為無符號長整型。
#include <stdio.h> #include <stdlib.h> int main () {char buffer [256];unsigned long ul;printf ("Enter an unsigned number: ");fgets (buffer, 256, stdin);ul = strtoul (buffer, NULL, 0);printf ("Value entered: %lu.\n", ul);system("pause");return 0; }運行結果:
Enter an unsigned number: 017cyuyan
Value entered: 15.
由于 base 參數被設置為 0 并且字符串“017cyuyan”以“0”開頭,所以采用 8 進制轉換。
6. C語言strtod()函數:將字符串轉換為double(雙精度浮點數)
頭文件:#include <stdlib.h>
函數 strtod() 用來將字符串轉換成雙精度浮點數(double),其原型為:
double strtod (const char* str, char** endptr);
【參數說明】str 為要轉換的字符串,endstr 為第一個不能轉換的字符的指針。
【函數說明】strtod() 函數會掃描參數str字符串,跳過前面的空白字符(例如空格,tab縮進等,可以通過 isspace() 函數來檢測),直到遇上數字或正負符號才開始做轉換,到出現非數字或字符串結束時(’\0’)才結束轉換,并將結果返回。參數 str 字符串可包含正負號、小數點或E(e)來表示指數部分。如123. 456 或123e-2。
若endptr 不為NULL,則會將遇到的不符合條件而終止的字符指針由 endptr 傳回;若 endptr 為 NULL,則表示該參數無效,或不使用該參數。
【返回值】返回轉換后的浮點型數;若不能轉換或字符串為空,則返回 0.0。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個可以將字符串轉換為數字的函數,大家可以對比學習;使用 strtod(str, NULL) 與使用 atof() 結果相同。另外在 C99 / C++11 規(guī)范中又新增了5個函數,分別是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介紹,請大家自行學習。
【示例】計算月球每年繞地球運行多少圈。
#include <stdio.h> #include <stdlib.h> int main() {char szOrbits[] = "365.24 29.53";char* pEnd;double d1, d2;d1 = strtod (szOrbits, &pEnd);d2 = strtod (pEnd, NULL);printf ("月球每年繞地球運行 %.2f 周。\n", d1/d2);system("pause");return 0; }執(zhí)行結果:
月球每年繞地球運行 12.37 周。
三、模擬實現這些函數
1.函數atoi
atoi (表示 alphanumeric to integer)是把字符串轉換成整型數的一個函數。廣泛的應用在計算機程序和辦公軟件中。atoi( ) 函數會掃描參數 nptr字符串,跳過前面的空白字符(例如空格,tab縮進等)。
原型:int atoi(const char *nptr),nptr:要進行轉換的字符串;
功能:把字符串轉換成整型數;
返回值:函數返回一個 int 值,此值由將輸入字符作為數字解析而生成。 如果該輸入無法轉換為該類型的值,則atoi的返回值為 0。
說明:如果字符存在(如果是空格,會跳過,全是空格的話返回0),是數字或者正負號則開始做類型轉換,當出現一個字符不能識別為數字時,函數將停止讀入輸入字符串,(包括結束符 \0) 字符時停止轉換,返回整型數。否則,返回零。
使用示例:
1 int main(void)2 {3 int s1, s2, s3, s4, s5, s6, s7;4 char *str1 = "12345.67";5 char *str2 = " 12345.67";6 char *str3 = "\012345.67";7 char *str4 = "\0 12345.67";8 char *str5 = "-12345";9 char *str6 = "abc-123"; 10 char *str7 = "-8362865623872387698"; 11 s1 = atoi(str1); 12 s2 = atoi(str2); 13 s3 = atoi(str3); 14 s4 = atoi(str4); 15 s5 = atoi(str5); 16 s6 = atoi(str6); 17 s7 = atoi(str7); 18 printf("s1=%d\n", s1); 19 printf("s2=%d\n", s2); 20 printf("s3=%d\n", s3); 21 printf("s4=%d\n", s4); 22 printf("s5=%d\n", s5); 23 printf("s6=%d\n", s6); 24 printf("s7=%d\n", s7); 25 getchar(); 26 return 0; 27 }輸出結果:
2、模擬實現此函數
1 int my_atoi(const char* nptr)2 {3 int num = 0;4 bool flag = false;5 while (*nptr == ' ')6 {7 nptr++;8 }9 if (*nptr == '-' || *nptr == ' ') 10 { 11 if (*nptr++ == '-') 12 flag = true; 13 } 14 while (*nptr >= '0' && *nptr <= '9') 15 { 16 num = num * 10 + *nptr++ - '0'; 17 if (num < 0) 18 { 19 num = 2147483647; 20 break; 21 } 22 } 23 return num*(flag ? -1 : 1); 24 }測試代碼:
1 int main(void)2 {3 int mys1, mys2, mys3, mys4, mys5, mys6, mys7;4 char *str1 = "12345.67";5 char *str2 = " 12345.67";6 char *str3 = "\012345.67";7 char *str4 = "\0 12345.67";8 char *str5 = "-12345";9 char *str6 = "abc-123"; 10 char *str7 = "-8362865623872387698"; 11 mys1 = my_atoi(str1); 12 mys2 = my_atoi(str2); 13 mys3 = my_atoi(str3); 14 mys4 = my_atoi(str4); 15 mys5 = my_atoi(str5); 16 mys6 = my_atoi(str6); 17 mys7 = my_atoi(str7); 18 printf("s1=%d\n", mys1); 19 printf("s2=%d\n", mys2); 20 printf("s3=%d\n", mys3); 21 printf("s4=%d\n", mys4); 22 printf("s5=%d\n", mys5); 23 printf("s6=%d\n", mys6); 24 printf("s7=%d\n", mys7); 25 getchar(); 26 return 0; 27 }輸出結果
3、函數atof
atof(),是C 語言標準庫中的一個字符串處理函數,功能是把字符串轉換成浮點數,所使用的頭文件為<stdlib.h>。該函數名是 “ascii to floating point numbers” 的縮寫。
函數原型:double atof(const char *nptr ),nptr:要轉換的字符串;
功 能: 把字符串轉換成浮點數;
返回值:每個函數返回 double 值,此值由將輸入字符作為數字解析而生成。 如果該輸入無法轉換為該類型的值,則返回值為 0.0。
函數說明 :atof()會掃描參數nptr字符串,跳過前面的空格字符,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字符串結束時(’\0’)才結束轉換,并將結果返回,nptr字符串可包含正負號、小數點或E(e)來表示指數部分。
使用示例:
1 #include<stdlib.h>2 #include<stdio.h>3 int main()4 {5 double c;6 double d;7 char*a = "-100.23";8 char*b = "200e-2";9 char str[] = "123.456"; 10 d = atof(str); 11 printf("str = %s\ndouble = %lf\n", str, d); 12 c = atof(a) + atof(b); 13 printf("a = %.2lf\nb = %.2lf\na + b = %.2lf\n", atof(a), atof(b), c); 14 getchar(); 15 return 0; 16 }輸出結果為:
4、模擬實現此函數
1 double my_atof(const char* nptr)2 {3 double sum = 0.0;4 double d = 10.0;5 int num = 0;6 bool flag = false;7 while (*nptr == ' ')//當開始遇到空格時8 {9 nptr++; 10 } 11 if (*nptr == '-' || *nptr == '+') //記錄數字正負 12 { 13 if (*nptr == '-') 14 flag = true; 15 nptr++; 16 } 17 if (!(*nptr >= '0' && *nptr <= '9'))//如果一開始就為非數字則退出,返回0.0 18 { 19 return sum; 20 } 21 while (*nptr >= '0' && *nptr <= '9' && *nptr != '.') //計算小數點前整數部分 22 { 23 sum = sum*10.0 + *nptr - '0'; 24 nptr++; 25 } 26 if (*nptr == '.') 27 { 28 nptr++; 29 } 30 while (*nptr >= '0' && *nptr <= '9')//計算小數部分 31 { 32 sum = sum + (*nptr - '0') / d; 33 d *= 10.0; 34 nptr++; 35 } 36 if (*nptr == 'e' || *nptr == 'E')//考慮科學計數法 37 { 38 nptr++; 39 char tmp = *nptr; 40 if (tmp == '-' || tmp == '+') 41 { 42 nptr++; 43 while (*nptr >= '0' && *nptr <= '9') 44 { 45 num = num * 10 + *nptr - '0'; 46 nptr++; 47 } 48 while (num > 0) 49 { 50 if (tmp == '-') 51 { 52 sum /= 10; 53 } 54 else if(tmp == '+') { 55 sum *= 10; 56 } 57 num--; 58 } 59 } 60 } 61 return sum*(flag ? -1.0 : 1.0); 62 }測試代碼:
1 int main()2 {3 char *s1 = " 123.456567567e+10";4 char *a1 = " 123.456567567e+10";5 char *s2 = "1234567.235e-10";6 char *a2 = "1234567.235e-10";7 char *s3 = " 123.45656\07567e-10";8 char *a3 = " 123.45656\07567e-10";9 10 double sum_1 = my_atof(s1); 11 double sum1 = atof(a1); 12 double sum_2 = my_atof(s2); 13 double sum2 = atof(a2); 14 double sum_3 = my_atof(s3);//遇到'\0'結束 15 double sum3 = atof(a3); 16 17 printf("my_atof:%lf\n", sum_1); 18 printf("atof :%lf\n", sum1 ); 19 printf("my_atof:%lf\n", sum_2); 20 printf("atof :%lf\n", sum2 ); 21 printf("my_atof:%lf\n", sum_3); 22 printf("atof :%lf\n", sum3 ); 23 getchar(); 24 return 0; 25 }測試結果:
5、函數itoa
itoa(Integer to ASCII)是廣泛應用的非標準C語言和C++語言擴展函數。由于它不是標準C/C++語言函數,所以不一定能在所有的編譯器中使用。但是,大多數的編譯器(如Windows上的)通常在<stdlib.h>/頭文件中包含這個函數。
原型:char *_itoa( int value, char *str, int radix );
原型說明:value:欲轉換的數據,string:目標字符串的地址,radix:轉換后的進制數,可以是10進制、16進制等,范圍必須在 2-36。
功能:將整數value 轉換成字符串存入string 指向的內存空間 ,radix 為轉換時所用基數(保存到字符串中的數據的進制基數)。
返回值:函數返回一個指向 str,無錯誤返回。
注意:itoa并不是一個標準的C函數,它是Windows特有的,如果要寫跨平臺的程序,請用sprintf。
使用示例:
1 int main(void)2 {3 int number = 12345;4 char string[25];5 _itoa(number, string, 10);//按十進制轉換6 printf("integer=%d string=%s\n", number, string);7 _itoa(number, string, 16);//按16進制轉換8 printf("integer=%d string=%s\n", number, string);9 getchar(); 10 return 0; 11 }輸出結果:
MSDN的例子:
1 /*ITOA.C:Thisprogramconvertsintegersofvarious2 *sizestostringsinvariousradixes.3 */4 #include<stdlib.h>5 #include<stdio.h>6 int main(void)7 {8 char buffer[20];9 int i = 3445; 10 long l = -344115L; 11 unsigned long ul = 1234567890UL; 12 _itoa(i, buffer, 10); 13 printf("String of integer%d(radix10):%s\n", i, buffer); 14 _itoa(i, buffer, 16); 15 printf("String of integer%d(radix16):0x%s\n", i, buffer); 16 _itoa(i, buffer, 2); 17 printf("String of integer%d(radix2):%s\n", i, buffer); 18 _ltoa(l, buffer, 16); 19 printf("String of long int%ld(radix16):0x%s\n", l, buffer); 20 _ultoa(ul, buffer, 16); 21 printf("String of unsigned long%lu(radix16):0x%s\n", ul, buffer); 22 getchar(); 23 return 0; 24 }輸出結果:
6、模擬實現此函數
1 char *my_itoa(int value, char *str, int radix)2 {3 int a[100] = { 0 };4 int sum = value;5 char* cp = str;6 int i = 0;7 char zm[37] = "0123456789abcdefghijklmnopqrstuvwxyz";8 if (radix < 2 || radix > 36)//增加了對錯誤的檢測9 { 10 printf("error!"); 11 return str; 12 } 13 if (sum < 0) //如果是負數,先轉為正數 14 { 15 sum = -sum; 16 } 17 while (sum > 0)//從個位開始變?yōu)樽址?#xff0c;直到最高位 18 { 19 a[i++] = zm[sum % radix]; 20 sum /= radix; 21 } 22 if (value < 0)//如果是負數,補上負號 23 { 24 *cp++ = '-'; 25 } 26 for (int j = i - 1; j >= 0; j--) 27 { 28 *cp++ = a[j]; //從高位到低位轉換 29 } 30 *cp = '\0';//最后加上字符串結束符 31 return str; 32 }測試代碼:
1 int main(void)2 {3 char buffer[20];4 int i = 3445;5 long l = 344115L;6 unsigned long ul = 1234567890UL;7 my_itoa(i, buffer, 10);8 printf("String of integer%d(radix10):%s\n", i, buffer);9 my_itoa(i, buffer, 16); 10 printf("String of integer%d(radix16):0x%s\n", i, buffer); 11 my_itoa(i, buffer, 2); 12 printf("String of integer%d(radix2):%s\n", i, buffer); 13 my_itoa(l, buffer, 16); 14 printf("String of long int%ld(radix16):0x%s\n", l, buffer); 15 my_itoa(ul, buffer, 16); 16 printf("String of unsigned long%lu(radix16):0x%s\n", ul, buffer); 17 getchar(); 18 return 0; 19 }輸出結果:
附:常用十進制的轉換模擬函數
1 #include <stdio.h> 2 //反轉字符串 3 char *reverse(char *s) 4 { 5 char temp; 6 char *p = s; //p指向s的頭部 7 char *q = s; //q指向s的尾部 8 while(*q) 9 ++q; 10 q--; 12 //交換移動指針,直到p和q交叉 13 while(q > p) 14 { 15 temp = *p; 16 *p++ = *q; 17 *q-- = temp; 18 } 19 return s; 20 } 22 /* 23 * 功能:整數轉換為字符串 24 * char s[] 的作用是存儲整數的每一位 25 */ 26 char *my_itoa(int n) 27 { 28 int i = 0,isNegative = 0; 29 static char s[100]; //必須為static變量,或者是全局變量 30 if((isNegative = n) < 0) //如果是負數,先轉為正數 31 { 32 n = -n; 33 } 34 do //從各位開始變?yōu)樽址?#xff0c;直到最高位,最后應該反轉 35 { 36 s[i++] = n%10 + '0'; 37 n = n/10; 38 }while(n > 0); 39 40 if(isNegative < 0) //如果是負數,補上負號 41 { 42 s[i++] = '-'; 43 } 44 s[i] = '\0'; //最后加上字符串結束符 45 return reverse(s); 46 } 48 int main(void) 49 { 50 int m; 51 printf("請輸入int型整數m:"); 52 scanf("%d",&m); 53 printf("整數=%d,字符串=%s\n",m,my_itoa(m)); 54 return 0; 55 }輸出結果:
總結
以上是生活随笔為你收集整理的C语言字符串和数字转换函数大全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最新JMeter面试题,紧扣面试实际要求
- 下一篇: 运筹学 美国人在计算机上实现的四,运筹学