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

Usunięta treść Dodana treść
Nie podano opisu zmian
Linia 31:
====size====
 
Konwersja :
 
"%d", 100
 
spowoduje zapisanie :
 
[ 1 | 0 | 0 | \0 ]
 
4 znaków do tablicy :
* 3 znaków liczby całkowitej
* znaku końca łańcucha ( snprintf automatycznie dopisuje ten znak )
 
Jeśli : <ref>[http://joequery.me/code/snprintf-c/ Joe McCullough : snprintf-c]</ref>
* rozmiar tablicy str jest <4 ale argument size jest >=4 to powstaje niezdefiniowanie zachowanie (ang. undefined behavior)
* rozmiar tablicy str >=4 but ale argument size jest <4, to nie powstaje niezdefiniowanie zachowanie ale łańcuch będzie obcięty ( ang. truncated)
 
===Format===
Linia 129:
===Przykład użycia===
 
====pierwszy====
 
====pierwszy====
<source lang="c">
#include <stdio.h>
Linia 145 ⟶ 144:
i = 4
f = 3.1
WskaznikWskaźnik s wskazuje na napis: Monty Python
<!-------
--------- co ten kod ma ukazywać?
Linia 202 ⟶ 201:
------->
====Konwersja ====
Konwersja 1 liczby typu double na łańcuch :
<source lang=c>
/*
Linia 226 ⟶ 225:
</source>
 
Konwersja 2 liczb typu double na łańcuch :<source lang="c">
 
 
Konwersja 2 liczb typu double na łańcuch :
<source lang =c>
/*
 
http://stackoverflow.com/questions/7228438/convert-double-float-to-string
 
 
 
http://linux.die.net/man/3/snprintf
Linia 241 ⟶ 234:
where the number of digits after the decimal-point character is equal to the precision specification.
If the precision is missing, it is taken as 6;
 
 
The precision
Linia 248 ⟶ 240:
#include <stdio.h>
 
int main(){
 
{
 
 
 
 
 
int main() {
 
/* And remember to allow space for :
Linia 282 ⟶ 269:
</source>
 
Wynik działania :
 
<pre>
d = -1.123457,-2.123457
good size of string is = 19 and now true size is = 20
 
 
</pre>
 
====Liczby całkowite====
 
<source lang ="c">
/*
 
gcc l.c -lm -Wall
./a.out
 
 
http://stackoverflow.com/questions/29592898/do-long-long-and-long-have-same-range-in-c-in-64-bit-machine
Linia 306 ⟶ 289:
#include <limits.h> // INT_MAX, http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html
 
int main() {
 
{
 
double lMax;
 
 
int main(){
 
double lMax;
 
 
lMax = log2(INT_MAX);
Linia 334 ⟶ 312:
printf("ULLONG_MAX \t= %25llu ; lMax = log2(ULLONG_MAX) \t= %.0f \n",ULLONG_MAX, lMax);
 
return 0;
 
 
 
 
return 0;
}
 
Linia 345 ⟶ 319:
</source>
 
Wynik :
 
<pre>
Linia 353 ⟶ 327:
ULONG_MAX = 18446744073709551615 ; lMax = log2(ULONG_MAX) = 64
LLONG_MAX = 9223372036854775807 ; lMax = log2(LLONG_MAX) = 63
ULLONG_MAX = 18446744073709551615 ; lMax = log2(ULLONG_MAX) = 64
 
</pre>
 
Linia 407 ⟶ 380:
</source>
 
Kiedy chcemy kilka zapisać do tej samej zmiennej to używamy jej jednocześnie jako wyjścia i wejścia :
 
asprintf(&tmp, "%s %f,%f ", tmp, zx , -zy );
Linia 415 ⟶ 388:
:[[C/Podstawowe procedury wejścia i wyjścia|Podstawowe procedury wejścia i wyjścia]]
:[[C/Napisy#Znaki_specjalne|Znaki specjalne]]
===Źródła===
 
 
===Żródła===
<references/>