C/printf: Różnice pomiędzy wersjami

Dodane 195 bajtów ,  11 lat temu
→‎Przykład użycia: poprawki, zakomentowanie akapitu o dziwnej treści
(Anulowanie wersji nr 145951 utworzonej przez 86.63.67.43 (dyskusja))
(→‎Przykład użycia: poprawki, zakomentowanie akapitu o dziwnej treści)
 
===Przykład użycia===
<source lang="c">
#include <stdio.h>
int main() {
int i = 4;
float f = 3.1415;
char *s = "Monty Python";
printf("i = %i\nf = %.1f\nWskaźnik s wskazuje na napis: %s\n", i, f, s);
return 0;
}
 
Wyświetli:
 
int main() {
{
int i = 4;
float f = 3.1415;
const char *s = "Monty Python";
printf("i = %i\nf = %.1f\nWskaźniknWskaznik s wskazuje na napis: %s\n", i, f, s);
return 0;
}
</source>
i = 4
f = 3.1
WskaźnikWskaznik s wskazuje na napis: Monty Python
<!-------
 
--------- co ten kod ma ukazywać?
---------
Funkcja formatująca ciąg znaków i alokująca odpowiednią ilość pamięci:
<source lang="c">
 
#include <stdarg.h>
#include <stdlib.h>
char *sprintfalloc(const char *format, ...) {
{
int ret;
size_t sizeint = 100ret;
char *strsize_t size = malloc(size)100;
if (!char *str) {= malloc(size);
if return 0;(!str)
return 0;
}
for(;;){
va_list ap;{
char *tmp va_list ap;
char *tmp;
va_start(ap, format);
ret = vsnprintf(str, size, format, ap);
va_end(ap);
if (ret<size) {
break;
}
tmp = realloc(str, (size_t)ret + 1);
if (!tmp) {
ret = -1;{
break ret = -1;
} else { break;
str =} tmp;else
size = (size_t)ret + 1;{
} str = tmp;
size = (size_t)ret + 1;
}
}
if (ret<0) {
free(str);{
str = 0 free(str);
str = 0;
} else if (size-1>ret) {
}else charif *tmp = realloc(str, (size_t)size-1>ret + 1);
if (tmp) {
str =char *tmp = realloc(str, (size_t)ret + 1);
} if (tmp)
str = tmp;
}
}
return str;
}
</source>
------->
 
===Uwagi===
8268

edycji