Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.

Capitolul 7.3. Iesirea formatata-printf

In jos

Capitolul 7.3. Iesirea formatata-printf Empty Capitolul 7.3. Iesirea formatata-printf

Mesaj  zooky Mier Mar 18, 2009 2:33 pm

Cele doua rutine "printf" pentru iesire si scanf pentru intrare permit translatarea in si din reprezentarea caracterelor a cantitatilor numerice. Ele de asemenea permit generarea sau interpretarea liniilor formatate. Am folosit deja "printf" in capitolele precedente ; aici ii dam o descriere mai precisa si complecta.

printf(control, arg1, arg2,....)

printf converteste, formateaza si tipareste argumentele sale la iesirea standard sub controlul sirului "control". Sirul de control contine doua tipuri de obiecte: caractere ordinare, care sint simplu copiate in sirul de iesire si semnificatii de conversie dintre care fiecare cauzeaza conversia si tiparirea a urmatoarelor argumente succesive ale printf.

Fiecare specificatie de conversie este introdusa prin caracterul % si incheiata printr-un caracter de conversie. Intre % si caracterul de conversie pot fi:

Un semn minus care specifica cadrarea la stinga in cimp a argumentului convertit.

Un sir de digiti care specifica o lungime minima a cimpului. Numarul convertit va fi introdus in cimp la cel putin aceasta lungime sau mai mare daca este necesr. Daca argumentul are mai putine caractere decit dimensiunea cimpului el va fi cadrat la dreapta sau la stinga (in funcite de specificatie sau implicit) si va fi completat cu zero sau spatii pina la lungimea cimpului. Caracterul de complectare este normal blank, iar daca dimensiunea cimpului a fost specificata prin "leading" zero, este zero (aceasta nu implica cimpurile octale).

O virgula, care separa lungimea cimpului de un alt sir de digiti.

Un sir de digiti (precizia), care specifica numarul maxim de caractere acceptate dintr-un sir, sau numarul de pozitii dupa virgula zecimala virgula flotanta si dubla precizie.

Caracterele de conversie si semnificatiile lor sint:

d-argumentul este convertit in zecimal

o-argumentul este convertit in octal fara semn

x-argumentul este convertit in hexazecimal fara semn

u-argumentul este convertit in zecimal fara semn

c-argumentul este preluat ca un singur caracter

s-argumentul este un sir ;caracterele din sir sint introduse pina cind este intilnit caracterul nul sau pina cind este atinsa lungimea specificata.

e-argumentul este luat ca virgula flotanta sau dubla precizie si convertit in notatia zecimala de forma [-]m. nnnnnnE[+sau-]XX unde lungimea sirului de n-uri este specificata de precizie. Precizia implicita este 6.

f-argumentul este luat ca virgula mobila sau dubla precizie si convertit tot intr-o notatie zecimala de forma [-]mmm. nnnnnn unde lungimea sirului de n-uri este specificat de precizie, implicit este 6. De observat ca precizia nu determina numarul de digiti semnificativi in formatul f.

g-foloseste % sau %l , oricare este mai scurt ; zerourile nesemnificative nu apar. Daca caracterul de dupa % nu este un caracter de conversie acest caracter este tiparit chiar 5 poate fi tiparit prin %%.

Cele mai multe formate de conversie sint evidente si au fost ilustrate in capitolele precedente. oO exceptie este precizia referitoare la siruri. Tabela urmatoare arata efectele unei varietati de specificatii asupra sirului "hello, world" de 12 caractere. Am pus doua puncte pentru a putea urmari mai bine lungimea.

::%10s: :hello, world:
:5-10s: :hello, world:
:%20s: : hello, world:
:%-20s: :hello, world :
:%20. 10s: : hello, wor:
:%-20. 10 :hello, wor :
:%. 10s: :hello, wor:

Atentiune: "printf" foloseste primul sau argument pentru a decide cite argumente urmeaza si de ce tip. Daca nu sint destule argumente sau de tip gresit veti obtine rezultate lipsite de sens.

Exercitiul 7.1. Scrieti un program care tipareste diferentiat o intrare arbitrara. Ca o conditie minima trebuie sa tipareasca caracterele non-grafice in octal sau hexa(conform uzantelor locale).
zooky
zooky
Moderator
Moderator

Numarul mesajelor : 147
Data de inscriere : 15/03/2009
Varsta : 31
Localizare : Cernatesti City

https://e-learning.forumgratuit.ro

Sus In jos

Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum