1

scanf実際には this のようなものを使用して、入力として一連の文字を取得しました"1854?156X"

( を使用するscanf("%c",&input[i])と、入力は 10 文字の配列になります);

(first digit *10)コードのさらなる処理では、 &などを乗算したいと考えて(second digit *9)います。

そのため、乗算中1に実際に(49 *10)は の代わりに である ASCII 値を取得してい(1*10)ます。

input[i]*counter;

どこcounterですか

int counter=10;

その文字のASCII値の代わりに正確な数字を乗算する必要がある整数配列にchar配列を変換するにはどうすればよいですか?

4

4 に答える 4

3

値が ascii であることが事前にわかっている場合は、値から「0」を差し引くだけです。例えば'9' - '0' = 9'

于 2012-08-17T14:51:15.297 に答える
1

必ず atoi() を使用してください。これにより、手動で文字をチェックする手間が省けます。

int input_val = atoi(input);
int temp = input_val;

while(temp)
{
  int digit = temp % 10;
  temp /= 10;
}

これにより、「数字」の右から左への各数字が得られます。足し算と 10 のべき乗を使用して、数値を作成できます。

于 2012-08-17T17:05:42.797 に答える
0

アスキー値を取り、48 を引きます。

あれはinput[i] - '0'

...というか、atoi()を使用します。変換に失敗した場合はゼロを返すので、「?」を気にする必要はありません。トラバース中に配列内のそのような文字。

于 2012-08-17T14:59:11.760 に答える
0

strtolこれらの文字列を整数型に変換するために使用します。

atoi障害モードがあいまいではないため、優れています。

于 2012-08-17T18:13:45.727 に答える