0

char 配列の内容を int 変数または配列にコピーしたいと考えています。たとえば、最初の 5 つの値は int 配列 (int x) に移動する必要があります。

char a[] = "123456";

char を int に変更するには、次のようにする必要があることを他のスレッドで見ました。

int x = a[0] - '0';

それを行う他の方法はありますか?

12、34、56 など、2 つ以上のグループの値が必要な場合はどうすればよいでしょうか?

そして、それらをintとして保存するのではなく、代わりにfloatまたは他のタイプとして保存するとどうなりますか?

4

4 に答える 4

2

文字列の適切なサイズの部分を別のバッファにコピーし、strtol()またはを使用しますstrtod()

于 2013-06-04T20:56:54.890 に答える
1

あなたがしなければならない理由int x = a[0] - '0';は、Cの文字エンコーディングのためです。何が起こっているのかは、文字からエンコーディングオフセットを差し引いていることです。すべてのエンコーディング値を含む表を次に示します: UTF-8 encodings。したがって、あなたが探していた正しい値を持つint x = a[0] - '0';あなたの場合と同等です。代わりにをint x = 49 - 48;使用すると、0 の char 値が使用されます。'0'0

他にも方法はありますが、この方法がうまくいきます。他の型を使用するには、int.

2 桁の数字を取得するジョンの方法はうまく機能します。ここに転載、でしたnumber = 10 * digit1 + digit2

于 2013-06-04T21:08:23.570 に答える
0

質問に答えるには:

  • もちろん、他の方法もあります。あなたが示した方法は、ASCII値をそれが表す数字に変換しますが、他の方法があります。
  • 必要な文字数を読み取り、各文字を数字に変換し、それらの数字から のような整数を構築しnumber = 10 * digit1 + digit2ます。
  • 整数を構築した後、型キャストを行います。
于 2013-06-04T20:57:44.490 に答える