Burada geçirdiğiniz zaman için teşekkürler. Ben snprintf() ile bir sorum var aşağıda koduyla size = 0,:snprintf() size = 0 iken geri dönüş değeri döndürür
#include <stdio.h>
#include <stdlib.h>
int main(int ac, char **av)
{
char *str;
int len;
len = snprintf(NULL, 0, "%s %d", *av, ac);
printf("this string has length %d\n", len);
if (!(str = malloc((len + 1) * sizeof(char))))
return EXIT_FAILURE;
len = snprintf(str, len + 1, "%s %d", *av, ac);
printf("%s %d\n", str, len);
free(str);
return EXIT_SUCCESS;
}
Ben çalıştırdığınızda:
[email protected]:~/TestCode$ ./Test_snprintf
sonucudur:
this string has length 17
./Test_snprintf 1 17
Ne benim karıştırır Kodda, yazılacak boyut 0, neden 17 gösterilir?
ben kaçırdım ne
çözüm Return value
altında in the man page bulunabilir
Anlıyorum. Teşekkürler ~~~ – momoxinduo
neden ilk snprintf bir NULL işaretçisine yazabilir? – momoxinduo
@momoxinduo Sadece null değerini elde etmek için 'NULL 'öğesini geçirin, böylece gerçek baskıyı yapmak için belleği dinamik olarak ayırabilirsiniz. Tam olarak kodunuz ne yapıyor. –