[英]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.