sprintf
ilk argümanı geçerli tampon göstermelidir. Bir char*
var, ancak çöp atıyor.
için kodunuzu değiştirin
:
numString
aslında geçerli bir tampon işaret
char numString[80] = { };
int charcheck = sprintf(numString, "%d", numCheck);
Böylece (bu örnekte 80 karakter, tüm unsurları olan 0'a ilklendirildikten). Eğer geçmesi tampon boyutundan birini çıkarmak
const int bufsize = 80;
char numString[bufsize] = { };
int charcheck = snprintf(numString, bufsize - 1, "%d", numCheck);
Bildirimi:
Ayrıca böylece tampon taşmaları önlemek yardımcı olacaktır buna da tampon boyutunu geçirebilmesi snprintf
kullanmak iyi olurdu snprintf
için, son dizeyi kullanmasını istemediğinizden emin olun, istediğiniz dizgenin sonunu göstermek için NULL
olduğundan emin olun.
Sonuçları neden topladığımda tam olarak neden çalışıyor? – syl
Bu tanımlanmamış bir davranış. Bazen tanımlanmamış davranış tam olarak beklediğiniz gibi davranır, ki bu muhtemelen en kötü durumdur. –
Neden sprintf' üzerinden snprintf' önerirsiniz? – Kevin