1 / 12

Agenda

Programare in limbajul C – Cursul 8 Operaţii elementare de intrare – ieşire Prof. univ. dr. Constantin Popescu. Agenda. Functia printf Functia scanf Functia getchar Functia putchar Ordinea evaluării. Funcţia printf (1). Există o serie de specificatori de format pentru funcţia printf.

zyta
Download Presentation

Agenda

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programare in limbajul C – Cursul 8Operaţii elementare de intrare – ieşireProf. univ. dr. Constantin Popescu

  2. Agenda • Functia printf • Functia scanf • Functia getchar • Functia putchar • Ordinea evaluării

  3. Funcţia printf (1) • Există o serie de specificatori de format pentru funcţia printf. Specificator Semnificatie %dtipăreşte argumentul de tip int în format zecimal %ldtipăreşte arg. de tip long int în format zecimal %ctipăreşte un caracter %stipăreşte un şir de caractere %f tipăreşte un argument de tip float sau double %ela fel ca %f, dar foloseşte notaţia exponenţială %gfoloseşte %e sau %f, care e mai bun %otipăreşte un argument de tip int în baza 8 %xtipăreşte un argument de tip int în baza 16 %%tipăreşte %

  4. Funcţia printf (2) • Apelul: printf("%c %d %f %e %s %d%%\n", '1', 2, 3.14, 56000000., "opt", 9); va tipări: 1 2 3.140000 5.600000e+07 opt 9% • Apelul: printf("%d %o %x\n", 100, 100, 100); va tipări: 100 144 64 • Apeluri succesive ale funcţiei printf vor genera ieşirile una după alta, astfel apelurile de mai jos vor afişa Hello, world! (pe o singură linie): printf("Hello, "); printf("world!\n");

  5. Funcţia scanf • Functia scanf esteasemanatoare cu printf: • Este o functie din biblioteca C: <stdio.h> • Specificatorii de format sunt aceeasi ca la functia printf • Exemple: scanf ("%d", &x); /* citeste un numar intreg */ scanf ("%f", &rate); /* citeste un numar real */ int n1, n2; float f; scanf("%d%d%f",&n1,&n2,&f); (Trebuie sa fie adaugate spatii pentru a separa numerele.) • Caracterul & este utilizat pentru adresa unei variabile

  6. Intrare - ieşire pe caractere • Folosind funcţiile getchar() şi putchar(), putem scrie un program simplu, pentru copierea intrării, caracter cu caracter, la ieşire: #include <stdio.h> /* copierea intrării în ieşire */ int main() { int c; c = getchar(); while(c != EOF) { putchar(c); c = getchar(); } return 0; }

  7. Intrare - ieşire pe caractere • Funcţia pentru citirea unei linii: #include <stdio.h> /* Citeste o linie de la intrarea standard, copiind-o in tabloul line. */ /* \n nu va fi plasat in tabloul line. */ /* Returneaza lung. liniei, sau 0 pt. liniile goale, sau EOF pentru sfarsit de fisier */ int getline(char line[], int max) { int nch = 0; int c; max = max - 1; /* lasam spatiu pentru '\0' */ while((c = getchar()) != EOF){ if(c == '\n')break; if(nch < max){ line[nch] = c; nch = nch + 1; } } if(c == EOF && nch == 0)return EOF; line[nch] = '\0'; return nch; }

  8. Intrare - ieşire pe caractere • O buclă echivalentă care să nu folosească instrucţiunea break ar fi: while((c = getchar()) != EOF && c != '\n') { if(nch < max) { line[nch] = c; nch = nch + 1; } } • Dăm mai jos un program de test care apelează funcţia getline, citind din intrare câte o linie o dată şi tipărind linia citită: #include <stdio.h> extern int getline(char [], int); int main() { char line[256]; while(getline(line, 256) != EOF) printf("%s\n", line); return 0; }

  9. Intrare - ieşire pe caractere • Un întreg s-ar putea citi în felul următor: #include <stdlib.h> . . . char line[256]; int n; printf("Scrieti un intreg:\n"); getline(line, 256); n = atoi(line); • Acum variabila n conţine numărul scris de utilizator. • Presupunem că utilizatorul a introdus un număr valid • Functia getline nu a returnat EOF.

  10. Intrare - ieşire pe caractere • Citirea unui număr în virgulă mobilă se face similar: #include <stdlib.h> . . . char line[256]; double x; printf("Scrieti un numar in virgula mobila:\n"); getline(line, 256); x = atof(line);

  11. Ordinea evaluării • Expresia: (c = getchar()) != EOF • atribuie valoarea returnată de funcţia getchar variabilei c şi compară acea valoare cu EOF. • Vom folosi şi expresii care fac trei lucruri deodată, de exemplu: a[i++] = b[j++]; • care atribuie b[j] lui a[i] şi incrementează valorile lui i respectiv j. • Dacă nu suntem atenţi putem scăpa de sub control acest gen de expresii. • De exemplu expresia de mai jos este eronată: a[i++] = b[i++]; /* GREŞIT */

  12. Exemplu-afiseaza restul impartirii #include <stdio.h> #include <conio.h> int main() {   int after = 0; printf(“Afiseaza restul impartirii a doua nr. intregi\n\n"); printf(“Introduceti un numar intre 1 si 10: "); scanf("%d",&after); for(int before=1;before<=15;before++) printf("%d %% %d = %d\n",before,after,before%after); printf(“Apasa orice tasta: "); getch(); return 0; }

More Related