我是新在C編碼,並編寫一個程序,需要創建一個從0增加爲使自定義文件名的文件名,我用sprintf()來連接,像這樣的計數器和文件擴展名:C - sprintf()如何工作?
int main(void)
{
// do stuff
int count = 0;
while (condition == true)
{
char filename[7];
sprintf(filename, "0%02d.txt", count) //count goes up to a max of 50;
count++;
//check condition
}
return 0;
}
然而,每一個
sprintf(filename, "0%02d.txt", count);
運行,計數被重置爲0
我的問題的時間,這是什麼的sprintf()做算?爲什麼在傳遞給sprintf()後計數會改變?
任何幫助將不勝感激。
編輯:對不起,我沒有在我的問題的代碼太清楚 - 我寫的程序上的在線課程的鍛鍊,次數上升到50。一個最大我現在已經改變了我的代碼以反映這一點。此外,謝謝你告訴我大約%04D,我用的是一個複雜的if語句來確定有多少個零添加到我的名,使其3位。
定義變量count的位置在哪裏?沒有足夠的上下文來知道「count」存在和可能被設置的位置。 – lit
'sprintf'不會改變'count'。但是你的意思是'filename'的長度。對於'count'的大值,它會溢出 - *這*可能會破壞實際代碼中的count。將其設置爲足夠大以容納* any *'int'值,再加上字符串終止符。 「count」的3位數字只有足夠的空間。 –
'condition'定義在哪裏? while(condition == true)'似乎永遠不會循環或永遠循環。 – chux