【问题标题】:Casting int to char* [closed]将 int 转换为 char* [关闭]
【发布时间】:2013-11-26 13:51:59
【问题描述】:

我在将 int 转换为 char*(字符串)时遇到了一点问题……在 C 语言中甚至可能吗? 我会尝试解释为什么我需要这个。

我可以将 int 转换为 char,但我需要将 int 转换为 char*。

我有一个 int 变量 (int number_of_revisions) 我需要将此修订数转换为 char * 因为我需要创建一个文件名,而修订数是名称的一部分......所以有一部分代码可以更好地想象这个问题。

int number_of_revision = 970; // 970 just for example
char * version;
char * new_name;
char ch_number_of_rev[4];

version = "0.";
itoa(number_of_revision,ch_number_of_rev,10);
//strcat(version, ch_num_o_rev ); // doesn't work becouse ch_number_of_rev is char and strcat requires char*

我需要快速帮助...有人知道怎么做吗? ...

【问题讨论】:

    标签: c


    【解决方案1】:

    but I need cast int to char*

    强制转换只会改变类型——它不会改变变量中的值。如果您需要将int 转换为字符数组(即字符串),请使用sprintfsnprintf

    char* buffer = ... allocate a buffer ...
    int value = 970;
    sprintf(buffer, "%d", value);
    

    Converting int to string in c

    此外,您还没有为 version 分配任何内存 - 使用 malloc 并分配一些内存。

    【讨论】:

    • 我不需要更改值。我需要将 int 转换为 char* 或将其保留为 itoa(number_of_revision,ch_number_of_rev,10);但后来我需要加入变量版本,它是 char*,变量 ch_number_of_revision 是 char....
    • @user3036674 - 我发布的代码符合您的要求。测试一次。
    • 谢谢,我会试试 sprintf() :)
    • 是的,谢谢,但是当我尝试在 strcat() 中使用变量“buffer”时它不起作用:
    • 字符缓冲区[3];整数值 = 970; sprintf(缓冲区,“%d”,值); strcat(版本, 缓冲区);
    【解决方案2】:

    strcat 在这里不起作用,因为你没有分配任何空间来存储结果。你的version 可能无论如何都在只读内存中,所以你会得到一个段错误,否则你会得到内存损坏。因此,请确保为其分配足够的空间,例如通过使用

    char version[10] = "0.";
    

    不过,您可能需要先阅读指针。

    【讨论】:

    • 好的,我为“版本”分配了内存,没有任何改变......
    • 好的,我终于解决了这个问题。谢谢大家的帮助。这就是我所做的: char version[40];字符缓冲区[4];整数值 = 970; sprintf(缓冲区,“%d”,值); strcat(版本, 缓冲区);
    猜你喜欢
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多