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库函数。功能因实现而异。