9

chara[0]をintb[0]に変換するにはどうすればよいですか。ここで、bは動的に割り当てられた空のint配列です。

私が試してみました

char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0]; 
int temp2 = temp - 0;
b[0] = temp2;

4が欲しいのですが、ASCII値52が表示されます

またやって

a[0] = atoi(temp);

エラーが発生します:'char'から'constchar*'への無効な変換'intatoi(con​​st char *)'の引数1を初期化しています</p>

4

3 に答える 3

25

あなたがする必要があります:

int temp2 = temp - '0';

代わりは。

于 2009-11-26T00:20:16.023 に答える
1

atoi()は個々の文字ではなく文字列を操作するため、atoi()バージョンは機能しません。したがって、これは機能します:

char a[] = "4";
b[0] = atoi(a);

atoi(&temp)を実行したくなるかもしれませんが、&tempはnullで終了する文字列を指していないため、これは機能しません。

于 2009-11-26T00:32:02.443 に答える
0

シーケンス全体を置き換えることができます。

char a[] = "4x^0";
int *b;
b = new int[10];
char temp = a[0]; 
int temp2 = temp - 0;
b[0] = temp2;

より単純なもので:

char a[] = "4x^0";
int b = new int[10];
b[0] = a[0] - '0';

一時変数をいじる必要はまったくありません。'0'代わりに使用する必要が0ある理由は、前者が0ではなく値48を持つ文字「0」であるためです。

于 2009-11-26T01:22:58.240 に答える