2017-10-24 14 views
1

を推奨されていません、私はこれを行うことにより、stringintを変換しようとしている:は 'itoaは':このアイテムのPOSIX名は

int id = 12689; 
char snum[MAX]; 
itoa(id, snum, 10); 

私は次のエラーを取得する:

'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _itoa.

+0

あなたはVisual Studioを使用していますか? –

+3

[Cでintを文字列に変換する方法](https://stackoverflow.com/questions/8257714/how-to-convert-an-int-to-string-in-c) –

+4

の可能な複製コンパイラがあなたに伝えるもの。 –

答えて

2

それはMSVCがあなたにしていることです。あなたが前に、任意のライブラリを次の行を追加する場合#include

#define _CRT_NONSTDC_NO_DEPRECATE 

警告があまりにも多くの他の機能についても同様、抑制されています。

さらに、これらの2行を追加すると、標準機能scanf(およびその他)の代わりにscanf_sを使用するようにMSVCが指示しなくなります。

#define _CRT_SECURE_NO_WARNINGS 
#define _CRT_SECURE_NO_DEPRECATE 
1

snprintfを使用してください、それはitoaよりも移植性があります。

char buffer[10]; 
int value = 234452; 
snprintf(buffer, 10, "%d", value); 

itoa is not part of standard C, nor is it part of standard C++;しかし、多くのコンパイラと関連するライブラリがそれをサポートしています。

+0

名前を変更するコメントは、 'itoa'より優先するアンダースコア' _itoa'を進めることに関して、C/C++の命名規則に沿って関数名を持たせることです。どちらの場合でも、どちらの場合でも 'itoa'関数の存在は、共通であっても標準Cではありません。これはコンパイラに依存し、アプリケーションの移植を容易にするために書き直す必要があるコードの種類です。 –

1

標準のitoa関数は、C標準ライブラリにはありませんでした。だから、それを使ってみるのは良い考えではない。 C言語では、sprintfファミリーの機能があり、幸せにあなたのためにその変換を実行します。

関連する問題