簡體   English   中英

C - 為strcat創建變量INT作為Char *

[英]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數組。 因為內存中的地址很可能不屬於您,所以您會遇到段錯誤。

你需要sprintfsnprintf來獲取整數的字符串表示。

例如:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM