[英]C - Make variable INT as Char * for strcat
我正在尝试使用表示整数的char来生成char *。 所以到目前为止我有这个
int x;
for(x=0;x<12;x++){
cp->name=strcat(tp->name, (char *)x);
}
name是char *问题是x部分。 我得到分段错误,我假设它是因为它无法访问地址x的内容并将其转换为char *
关于这个的任何提示?
谢谢
通过将x
转换为char *
,您告诉编译器,“我知道我在做什么。将x
视为地址并将其传递给strcat
”
因为x
包含0到12之间的整数,所以strcat
尝试访问该数字的地址处的char数组。 因为内存中的地址很可能不属于您,所以您会遇到段错误。
你需要sprintf
或snprintf
来获取整数的字符串表示。
例如:
int x;
for(x=0;x<12;x++){
char buffer[16];
snprintf(buffer, sizeof(buffer), "%d", x);
cp->name=strcat(tp->name, buffer);
}
您需要将x
的数字显式转换为字符串(= chars
数组)。 你不能仅仅通过类型转换来做到这一点。
使用sprintf()
可能是最简单的方法:
int x;
for (x = 0; x < 12; x++)
sprintf(tp->name + strlen(tp->name), "%d", x);
不用说, tp->name
必须有足够的空间,并且在执行上述操作之前必须将'\\0'
终止。
在C中,您可以使用sprintf(str,"%d",x)
; 或者在C ++中使用stringstream std::ostringstream oss; oss << tp->name << x;
std::ostringstream oss; oss << tp->name << x;
。 如果您对使用非标准功能没有疑虑,您也可以使用非标准的itoa()函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.