2011-06-24 17 views
19

で宣言されていなかった私は以下のようにitoa.cppというサンプルCファイルがあります。エラー: `itoa`がこの範囲

 
gcc itoa.cpp -o itoa 
:私は、以下のコマンドを使用して、上記のコードをコンパイルすると

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i; 
    char buffer [33]; 
    printf ("Enter a number: "); 
    scanf ("%d",&i); 
    itoa (i,buffer,10); 
    printf ("decimal: %s\n",buffer); 
    return 0; 
} 

私はこのエラーを取得しています:

 
[[email protected] u02]# gcc itoa.cpp -o itoa 
itoa.cpp: In function "int main()": 
itoa.cpp:10: error: "itoa" was not declared in this scope 

このコードで間違っていますか?これを取り除く方法は?

+1

gccを使用して.cppという名前のファイルをコンパイルしています。このファイルはC言語でコンパイルされますが、これだけでなく、すべてのヘッダーが標準のCライブラリです。 –

答えて

22

itoaはansi C標準ではありませんので、避けてください。あなたが本当にとにかくそれを使用したい場合はここではいくつかのロール自分で自分の実装である:

http://www.strudel.org.uk/itoa/

あなたはメモリストリングのフォーマットに必要な場合は、より良いオプションはsnprintfのを使用することです。あなたの例から作業:

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int i; 
    char buffer [33]; 
    printf ("Enter a number: "); 
    scanf ("%d",&i); 
    snprintf(buffer, sizeof(buffer), "%d", i); 
    printf ("decimal: %s\n",buffer); 
    return 0; 
} 
5

あなたはベース10、8または16にのみ関心がある場合は、STDLIB.Hに見てsprintf

sprintf(buf,"%d",i); 
+0

私がsnippedfをMikolaのように使用し、gcc itoa.cpp -o itoaとしてプログラムをコンパイルすると、このエラーが発生します:[root @ inhyuvelite1 u02]#gcc itoa.cpp -o itoa /tmp/ccUB2wBP .o :(.eh_frame + 0x12): '__gxx_personality_v0 'への未定義参照 collect2:ldは1の終了ステータスを返しました。 – vchitta

+5

sprintfにはsnprintfをお勧めします。 –

+1

@ user771245:CコンパイラでC++コードをコンパイルしています。 g ++を使用します。または、ファイル名をitoa.cに変更してください。 –

4

を使用することができます。たぶん_itoa itoa代わりに定義されていた。

+0

それは私の場合でした。 #include Combine

関連する問題