2011-06-24 108 views
19

Tôi có một tập tin mẫu c gọi itoa.cpp như sau:lỗi: `itoa` không được khai báo trong phạm vi này

#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; 
} 

Khi tôi biên dịch mã trên với lệnh dưới đây:

 
gcc itoa.cpp -o itoa 

Tôi gặp phải lỗi này:

 
[[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 

Điều gì sai trong mã này? Làm thế nào để thoát khỏi điều này?

+1

Bạn đang sử dụng gcc để biên dịch tệp có tên .cpp, điều này sẽ biên dịch nó dưới dạng C, không chỉ vậy nhưng tất cả các tiêu đề bạn đang bao gồm là thư viện C chuẩn. –

Trả lời

22

itoa không phải là tiêu chuẩn ansi C và có lẽ bạn nên tránh nó. Dưới đây là một số hiện thực roll-bạn-của riêng nếu bạn thực sự muốn sử dụng nó anyway:

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

Nếu bạn cần trong định dạng chuỗi ký ức, một lựa chọn tốt hơn là sử dụng snprintf. Làm việc kể từ ví dụ của bạn:

#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

Nếu bạn chỉ quan tâm đến cơ sở 10, 8 hoặc 16. bạn có thể sử dụng sprintf

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

Nếu tôi sử dụng snprintf như đã đề cập Mikola, và biên dịch chương trình như: gcc itoa.cpp -o itoa, tôi nhận được lỗi này: [root @ inhyuvelite1 u02] # gcc itoa.cpp -o itoa /tmp/ccUB2wBP .o: (. eh_frame + 0x12): undefined tham chiếu đến '__gxx_personality_v0 ' collect2: ld trả về 1 trạng thái thoát – vchitta

+5

Bạn có lẽ nên giới thiệu snprintf trên sprintf. –

+1

@ user771245: Bạn đang biên dịch mã C++ bằng trình biên dịch C. Sử dụng g ++. Hoặc đổi tên tệp của bạn thành itoa.c –

4

Nhìn vào stdlib.h. Có lẽ _itoa thay vào đó itoa được định nghĩa ở đó.

+0

Đó là trường hợp của tôi. #include Combine

Các vấn đề liên quan