3

atoi()このコードで関数が正しく動作しないのはなぜですか、コンパイラーがこのエラーを出すのはなぜですか:

「int atoi(const char*)」の引数 1 を初期化しています

私のコードは次のとおりです。

#include <iostream.h>
#include <stdlib.h>
int main()
{
    int a;
    char b;
    cin >> b;
    a = atoi(b);
    cout << "\na";  
    return 0;
}
4

2 に答える 2

3

bcharただし、atoi()渡す必要があるchar *const char *、c++ は厳密な型チェック言語であるため、これを取得しています

後者は a の値を出力しないため、これでcout<<"\n"<<a;はなく、このようにする必要があります。cout<<"\na"

于 2012-11-10T19:29:41.153 に答える
3

ここでわかるように、 atoi

Atoi は、あなたのように char ではなく、char へのポインターを受け取ります。この方法では、atoi("100"); のように、1 桁を超える "数値" (文字列で表される) に atoi を適用できるため、理にかなっています。

int atoi ( const char * str );

それ以外の場合、文字の場合は、'0'、'1'、'2'.. '9' しか変換できません。

編集:この例を試してください:

#include <iostream>
#include <stdlib.h>
int main()
{
    int a;
    char b[10];


    cin >> b;
    a = atoi(b);

    cout<<"\n"<<a; 
    return 0;
}
于 2012-11-10T19:32:23.283 に答える