C言語は文字列を数字に変換する

9474 ワード

Cには文字列形式を数値形式に変換するための関数がある.
printf()関数とsprintf()関数-->説明を変換しましょう数字から文字列形式に変換します.
scanf()関数は入力文字列を数値形式に変換する.
適用シーン:
プログラミングでは数値コマンドパラメータを使用する必要がありますが、コマンドパラメータは文字列として読み込まれます.数値を使用するには、文字列を数値に変換する必要があります.
atoi()関数:
int atoi(char *str);
 1 #include 
 2 #include 
 3 
 4 int main(void)
 5 {
 6     int i,times;
 7     
 8     if(argc < 2 || times = atoi(argv[1])<1)
 9         printf("Usage:%s positive-number
",argv[0]); 10 else 11 for(i=0;i) 12 puts("Hello,good looking!"); 13 14 return 0; 15 }

プログラムの実行例:
$ hello 3
Hello, good looking!
Hello, good looking!
Hello, good looking!
パラメータに基づいて、何回印刷するかを選択し、good looking!
パラメータの先頭が非数値文字の場合、atoi関数の戻り値は0です.この行為は定義されていないからです.そのため、エラー検出機能が必要なstrtol()関数はより安全です.
 
stdlib.hヘッダファイル:atoi()関数だけでなく、atof()関数、atol()関数も含まれます.
atof()関数は文字列をdoubleタイプの値に変換します.
atol()関数は文字列をlongタイプの値に変換する.
++++++++++++++++++++++++++++++++++++++++++++++++++++++
strtol関数のプロトタイプ:long strtol(const char*restrict nptr,char**restrict endptr,int base);
 1 #include 
 2 #include 
 3 #define LIM 30
 4 char * s_gets(char * st, int n);
 5 
 6 
 7 int main(void)
 8 {
 9     char number[LIM];
10     char * end;
11     long value;
12 
13     puts("Enter a number (empty line to quit);");
14     while(s_gets(number,LIM)&& number[0] !='\0')
15     {
16         value =strtol(number,&end,10);
17         printf("base 10 input,base 10 output:%ld,stopped at %s (%d)
",value,end, *end); 18 value = strtol(number, &end, 16); 19 printf("base 16 input,base 10 output:%ld,stopped at %s (%d)
",value,end, *end); 20 puts("Next number:"); 21 } 22 puts("Bye!
"); 23 return 0; 24 } 25 26 char * s_gets(char * st, int n) 27 { 28 char * ret_val; 29 int i=0; 30 31 ret_val = fgets(st, n, stdin); // , , ; 32 if(ret_val) 33 { 34 while(st[i]!='
' && st[i]!='\0') 35 i++; 36 if(st[i] =='
') //fgets ,fgets \0; 37 st[i]='\0'; 38 else // '\0' 39 while(getchar() != '
') // 40 continue; 41 } 42 return ret_val; 43 }

プログラムの実行:
Enter a number (empty line to quit);10base 10 input,base 10 output:10,stopped at (0)base 16 input,base 10 output:16,stopped at (0)Next number:10atombase 10 input,base 10 output:10,stopped at atom (97)base 16 input,base 10 output:266,stopped at tom (116)Next number:
転載先:https://www.cnblogs.com/grooovvve/p/9938986.html