C 有没有合适的方法将整数放入字符串中?[丙]

C 有没有合适的方法将整数放入字符串中?[丙],c,arrays,string,integer,c-strings,C,Arrays,String,Integer,C Strings,我有这样的代码: char str[100]; int r = 0; for(int k = 0; k < i;k++){ str[r++] = y[k]; sprintf(str[r], str, x[k]); r++; } 我想在数组y中,我只有字母字符se.gc,D。。。在数组x中,我只有数字。我想制作像C50D80E20之类的字符串。 但我不知道如何将INTEGER放入Stringer,我知道我使用sprintf是错误的,而且在这种情况下不应该使用它 提前

我有这样的代码:

char str[100];
int r = 0;
for(int k = 0; k < i;k++){
    str[r++] = y[k];
    sprintf(str[r], str, x[k]);
    r++;
}
我想在数组y中,我只有字母字符se.gc,D。。。在数组x中,我只有数字。我想制作像C50D80E20之类的字符串。 但我不知道如何将INTEGER放入Stringer,我知道我使用sprintf是错误的,而且在这种情况下不应该使用它

提前谢谢

使用itoa。 诸如此类的事:

itoa(y[k], str[r++], 10);
这是关于伊藤的

UPDT:

或者正如评论员正确标记的那样,您可以使用int+'0'

使用itoa。 诸如此类的事:

itoa(y[k], str[r++], 10);
这是关于伊藤的

UPDT:

或者正如评论员正确标记的那样-您可以在这里使用int+'0'

#include <stdio.h>

int main(void) 
{
    enum { N = 100 };
    char s[N];

    char a[] = "CDE";
    int  b[] = { 50, 80, 20 };

    int pos = 0;
    for ( size_t i = 0; i + 1 < sizeof( a ); i++ )
    {
        pos += sprintf( s + pos, "%c%d", a[i], b[i] );
    }

    s[pos] = '\0';

    puts( s );

    return 0;
}
此声明

s[pos] = '\0';
仅当没有值附加到数组s时,即没有执行sprintf调用时,才需要

如果你想得到这样的字符串

C50 D80 E20
那就写个例子吧

pos += sprintf( s + pos, "%c%d%c", a[i], b[i], ' ' );
如果要删除最后一个空格字符,则

s[pos] = '\0';

您可以使用函数snprintf代替函数sprintf。但是,如果没有为结果字符串分配足够的内存,这并不能解决问题,因为在任何情况下,在这种情况下都不会得到预期的结果

至于函数itoa,那么它不是标准的C函数。

给你

#include <stdio.h>

int main(void) 
{
    enum { N = 100 };
    char s[N];

    char a[] = "CDE";
    int  b[] = { 50, 80, 20 };

    int pos = 0;
    for ( size_t i = 0; i + 1 < sizeof( a ); i++ )
    {
        pos += sprintf( s + pos, "%c%d", a[i], b[i] );
    }

    s[pos] = '\0';

    puts( s );

    return 0;
}
此声明

s[pos] = '\0';
仅当没有值附加到数组s时,即没有执行sprintf调用时,才需要

如果你想得到这样的字符串

C50 D80 E20
那就写个例子吧

pos += sprintf( s + pos, "%c%d%c", a[i], b[i], ' ' );
如果要删除最后一个空格字符,则

s[pos] = '\0';

您可以使用函数snprintf代替函数sprintf。但是,如果没有为结果字符串分配足够的内存,这并不能解决问题,因为在任何情况下,在这种情况下都不会得到预期的结果

至于函数itoa,它不是标准的C函数

有没有合适的方法将整数放入字符串中?[丙]

使用snprintf。 检查结果

char str[N];
int len = snprintf(str[r], sizeof str, "%d", x[k]);
if (len < 0 || (unsigned)len >= sizeof str) Handle_Error();
有没有合适的方法将整数放入字符串中?[丙]

使用snprintf。 检查结果

char str[N];
int len = snprintf(str[r], sizeof str, "%d", x[k]);
if (len < 0 || (unsigned)len >= sizeof str) Handle_Error();


这回答了你的问题吗?您可以通过添加“0”将数字转换为字符。例如:chary=6+'0';使y保持字符“6”。@YanBir使用ASCII是,但通常not@YanBir它只适用于小于10的数字:/I我需要一些可以适用于任何数字的东西,但谢谢您的帮助。@P_uj_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u,上述十进制数字列表中0后的每个字符的值应大于前一个字符的值。但它只适用于int值0到9。这能回答你的问题吗?您可以通过添加“0”将数字转换为字符。例如:chary=6+'0';使y保持字符“6”。@YanBir使用ASCII是,但通常not@YanBir它只适用于小于10的数字:/I我需要一些可以适用于任何数字的东西,但谢谢您的帮助。@P_uj_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u,上述十进制数字列表中0后的每个字符的值应大于前一个字符的值。但它只适用于int值0到9。太好了,如果要在每次组合后添加呢?下面的代码似乎不起作用。字符c='';pos+=sprintf s+pos,%c%d%c,a[i],b[i],c@汤马斯认为我看不出有什么问题。只需使用pos+=sprintf s+pos,%c%d%c,a[i],b[i],“”;也就是说,使用字符文字“”而不是字符串文字。每当我这样做时,程序就会删除。@ThomasDestThings,似乎你做错了什么。可能是您在循环中错误地指定了条件。或者数组a包含的字符少于数组大小,依此类推。只需复制并粘贴我的示例。请注意,您需要使用字符文字“”,而不是字符串文字。我稍微修改了您的示例,效果很好,我只想制作最终的字符串,如C50 D80 E20等。太好了,如果要在每次组合后添加呢?下面的代码似乎不起作用。字符c='';pos+=sprintf s+pos,%c%d%c,a[i],b[i],c@汤马斯认为我看不出有什么问题。只需使用pos+=sprintf s+pos,%c%d%c,a[i],b[i],“”;也就是说,使用字符文字“”而不是字符串文字。每当我这样做时,程序就会删除。@ThomasDestThings,似乎你做错了什么。可能是您在循环中错误地指定了条件。或者数组a包含的字符少于数组大小,依此类推。只需复制并粘贴我的示例。请注意,您需要使用字符文字“”,而不是字符串文字。我稍微修改了您的示例,效果很好。我只想生成最终字符串,如C50 D80 E20等。请注意,itoa不是标准的C库函数。功能因实现而异。否 te认为itoa不是标准的C库函数。功能因实现而异。