我有这样的代码:
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中只有字母字符(例如C,D ...),而数组x中我只有数字。我想制作像“ C50D80E20”之类的字符串。”但是我不知道如何将整数插入字符串中(我知道我使用sprintf是错误的,并且在这种情况下也不应该使用它)。
提前致谢。
这个给你。
#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;
}
程序输出为
C50D80E20
这个说法
s[pos] = '\0';
仅在没有值要追加到数组的情况下(s
即sprintf
未执行任何调用时)才需要。
如果你想得到这样的字符串
C50 D80 E20
然后写例如
pos += sprintf( s + pos, "%c%d%c", a[i], b[i], ' ' );
如果您要删除最后一个空格字符,请选择
s[pos] = '\0';
写
s[ pos == 0 ? pos : pos - 1 ] = '\0';
除了功能,sprintf
您可以使用function snprintf
。但是,如果您没有为结果字符串分配足够的内存,则无法解决问题,因为在任何情况下,您都无法获得预期的结果。
至于函数,itoa
则它不是标准的C函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句