C代码int到字符串不起作用

时间:2014-04-02 20:20:54

标签: c string int

这是我使用itoa()函数的代码,似乎无效。让我说清楚,我正在研究C.

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

void main()
{       
    int i,j;
    for(i = 0;i<= 4; i++)
    {
        for (j = 0; j <= 9; j++)
        {
            //printf("Hi\n");
            char fileName[10]="A";
            char append[2];

            itoa(i,append,10);
            strcat(fileName,append);    

            itoa(j,append,10);
            strcat(fileName,append);

            printf("i=%d j=%d\n", i,j);
            printf("%s\n", fileName);
            //FMS()             
        }
        //printf("Anuj=%d\n",i );
    }
}

输出

RC4Attack.c :(。text + 0x5e):对itoa' RC4Attack.c:(.text+0x8e): undefined reference to itoa&#39;的未定义引用 collect2:错误:ld返回1退出状态

3 个答案:

答案 0 :(得分:1)

标准C库中没有itoa。相反,请使用sprintf。

sprintf(string_value, "%d", integer_value);

修改 使用snprintf来防止缓冲区溢出。

snprintf(string_value, max_size, "%d", integer_value);

答案 1 :(得分:0)

两周前我遇到过类似问题 我用sprtinf而不是itoa解决了它。

http://www.cplusplus.com/reference/cstdio/sprintf/


看起来像这样吗?

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

void main()
{  
int i,j;
for(i = 0;i<= 4; i++)
{
    for (j = 0; j <= 9; j++)
    {
        //printf("Hi\n");
        char fileName[10]="A";
        char append[2];

        sprintf(filename,"%s%d",fileName,i);    
        sprintf(filename,"%s%d",fileName,j);    

        printf("i=%d j=%d\n", i,j);
        printf("%s\n", fileName);
    }
}
}

答案 2 :(得分:0)

我可以为您提供2种解决方案:

1。)您可以尝试使用不同的c编译器,其中一些可能有效

2。)您可以自己轻松编写此功能。它只是一小段代码(见以下链接) http://en.wikibooks.org/wiki/C_Programming/C_Reference/stdlib.h/itoa

此外,您可以使用有关此主题的前一个主题,这可能对您的情况有所帮助: Where is the itoa function in Linux?

问候 的Marius