Sadece standart çıkışa biçimli bir numara yazdırmak için printf()
kullanabilirsiniz:
int c = 5;
fprintf(stdout, "c [%02d]\n", c);
Eğer printf()
kullanamıyorsanız, başka bir seçenek char *
veya dize bir de yastıklı değeri saklamaktır. Biçimlendirilmiş dizeyi char *
arabelleğine yazmak için sprintf()
öğesini kullanabilirsiniz. Örneğin
: Bu yolu ise, yol boyunca kontrol bazı hata yapabileceğini nasıl görebilirsiniz
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[]) {
{
char* c_str = NULL;
int c_int = 5;
int c_str_length = 3; /* two bytes for "0", "5", and one byte for the nul terminator */
c_str = malloc(c_str_length);
if (!c_str) {
fprintf(stderr, "Error: Could not allocate space for string!\n");
return EXIT_FAILURE;
}
int n = sprintf(c_str, "%02d", c_int);
if (n != c_str_length) {
fprintf(stderr, "Error: Something went wrong in writing the formatted string!\n");
free(c_str);
return EXIT_FAILURE;
}
fprintf(stdout, "c_str: [%s]\n", c_str);
free(c_str);
return EXIT_SUCCESS;
}
. Dize uzunluğu hakkında düşünmeniz (hint: log10()
) ya da char *
yerine yeterli uzunlukta uzun bir statik char []
dizisi kullanmanız gerekir.
"printf" olmayan "output" için ne kullanıyorsunuz? Sprintf var mı? –
Bu senin ortamın - neden bize soruyorsun? –
Eğer printf() 'nin baştaki sıfırlarla ondalık tamsayıları biçimlendirebileceğini düşünmüyorsanız, yanılıyorsunuz demektir. İlgili dönüşüm belirtecinde "0" işaretini kullanmanız yeterlidir. –