C言語は文字列を数字に変換する
9474 ワード
Cには文字列形式を数値形式に変換するための関数がある.
printf()関数とsprintf()関数-->説明を変換しましょう数字から文字列形式に変換します.
scanf()関数は入力文字列を数値形式に変換する.
適用シーン:
プログラミングでは数値コマンドパラメータを使用する必要がありますが、コマンドパラメータは文字列として読み込まれます.数値を使用するには、文字列を数値に変換する必要があります.
atoi()関数:
int atoi(char *str);
プログラムの実行例:
$ 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);
プログラムの実行:
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
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