C - 为strcat创建变量INT作为Char *

时间:2012-10-22 02:10:49

标签: c pointers char strcat

我正在尝试使用表示整数的char来创建char *。 所以到目前为止我有这个

int x;
for(x=0;x<12;x++){
    cp->name=strcat(tp->name, (char *)x);
}

名称是char * 问题是x部分。我得到分段错误,我假设它是因为它无法访问地址x的内容并将其转换为char *

关于此的任何提示?

由于

3 个答案:

答案 0 :(得分:3)

通过将x转换为char *,您告诉编译器,“我知道我在做什么。将x视为地址并将其传递给{{1 }}“

因为strcat包含0到12之间的整数,x正试图访问该数字地址处的字符数组。因为内存中的地址很可能不属于你,所以你会遇到一个段错误。

您需要strcatsprintf来获取整数的字符串表示。

例如:

snprintf

答案 1 :(得分:0)

您需要将x中的数字显式转换为字符串(= chars数组)。你不能仅仅通过类型演员来做到这一点。

使用sprintf()可能是最简单的方法:

int x;
for (x = 0; x < 12; x++)
    sprintf(tp->name + strlen(tp->name), "%d", x);

毋庸置疑,tp->name必须有足够的空间且必须'\0' - 在您执行上述操作之前已终止。

答案 2 :(得分:0)

在C中,您可以使用sprintf(str,"%d",x);或者在C ++ stringstream std::ostringstream oss; oss << tp->name << x;中。如果您对使用非标准功能没有疑虑,您也可以使用非标准itoa()功能。