0

私はtxtファイルを読んでいて、スペースではないすべての文字を取得し、それらを使用してintに変換していますが(int)c-'0'、それは機能しています。

問題は、文字ごとに読み取っているため、数字が1桁を超える場合です。

文字のシーケンスのように読み取り、この文字のシーケンスを int に変換するにはどうすればよいですか?

文字列を使用してみましたが、この文字列を他の関数に渡そうとすると、各インデックスが数値として扱われますが、必要なのは、文字列全体が 1 つの数値として扱われることです。

何か案は?

4

2 に答える 2

0

変換を行う便利な方法は、整数をバッファー(文字列)に読み込んでからを呼び出すことatoiです。文字列が適切にnullで終了していることをトリプル確認してください。

于 2012-11-17T20:52:26.597 に答える
0

1つの解決策は、コードを提供しないため、あなたのケースで良いか悪いかは言いませんが、次のようなことを行うことができます:(疑似コード)

int i;
int val = 0;
char *string = "5238785";
for (i = 0; i < strlen(string); i++) {
    val = val * 10 + atoi(string[i]);
}

:簡略化したので、範囲外にならないように文字列コントロールを増やす必要があります。文字列がNULLで終了していることを確認してください。\0ただし、概念は、一度に1桁ずつ読み取り、移動するだけです。これまでに読んだ内容は、次の桁に合わせて「残り1ステップ」です。

于 2012-11-17T20:53:10.977 に答える