This shows you the differences between two versions of the page.
programare-cc:laboratoare:11 [2023/12/20 12:50] mihai.nan [Problema 1 (Rezolvata)] |
programare-cc:laboratoare:11 [2023/12/20 14:41] (current) mihai.nan [Problema 1 (Rezolvata)] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laboratorul 11. Fişiere text. Argumente în linia de comandă ===== | ===== Laboratorul 11. Fişiere text. Argumente în linia de comandă ===== | ||
+ | |||
+ | |||
+ | În acest laborator veţi învăţa să: | ||
+ | * Citiţi şi scrieţi date din fişiere text. | ||
+ | * Trimiteţi şi folosiţi argumente în linia de comandă. | ||
====Fişiere text==== | ====Fişiere text==== | ||
Line 24: | Line 29: | ||
* ''int fscanf ( FILE *f, const char * format, ... )'' | * ''int fscanf ( FILE *f, const char * format, ... )'' | ||
* ''int fprintf ( FILE *f, const char * format, ... )'' | * ''int fprintf ( FILE *f, const char * format, ... )'' | ||
+ | |||
+ | ====Argumente în linia de comandă==== | ||
+ | Pentru a specifica argumente în linia de comandă, antetul funcţiei main va trebui să fie de forma: | ||
+ | <code c> int main ( int argc, char *argv[] ); </code> | ||
+ | **argc** reprezintă numărul de argumente, iar **argv** vectorul de pointeri la argumente (şiruri de caractere). Primul argument argv[ 0 ] este | ||
+ | întotdeauna **numele executabilului**. | ||
+ | Pentru a seta argumentele din CodeBlocks va trebui să adăugaţi fişierul sursă la un proiect şi apoi să selectaţi: Project > Set programs' | ||
+ | arguments. | ||
- | În acest laborator veţi învăţa să: | ||
- | * Citiţi şi scrieţi date din fişiere text. | ||
- | * Trimiteţi şi folosiţi argumente în linia de comandă. | ||
==== Problema 1 (Rezolvata) ==== | ==== Problema 1 (Rezolvata) ==== | ||
Line 51: | Line 61: | ||
| | ||
pFile = fopen("myfile.txt" , "r"); | pFile = fopen("myfile.txt" , "r"); | ||
- | if (pFile == NULL) | + | if (pFile == NULL) { |
printf("Nu s-a putut deschide fisierul"); | printf("Nu s-a putut deschide fisierul"); | ||
+ | return 1; | ||
+ | } | ||
| | ||
while (fgets(buffer, BUFMAX, pFile) != NULL) { | while (fgets(buffer, BUFMAX, pFile) != NULL) { | ||
- | printf("%s", buffer); | + | printf("%s", buffer); |
} | } | ||
- | fclose(pFile); | + | fclose(pFile); |
+ | return 0; | ||
} | } | ||
</code> | </code> | ||
- | ====Argumente în linia de comandă==== | ||
- | Pentru a specifica argumente în linia de comandă, antetul funcţiei main va trebui să fie de forma: | ||
- | <code c> int main ( int argc, char *argv[] ); </code> | ||
- | **argc** reprezintă numărul de argumente, iar **argv** vectorul de pointeri la argumente (şiruri de caractere). Primul argument argv[ 0 ] este | ||
- | întotdeauna **numele executabilului**. | ||
- | Pentru a seta argumentele din CodeBlocks va trebui să adăugaţi fişierul sursă la un proiect şi apoi să selectaţi: Project > Set programs' | ||
- | arguments. | ||
==== Problema 2 (Rezolvata) ==== | ==== Problema 2 (Rezolvata) ==== | ||
Scrieţi un program pentru concatenarea mai multor fişiere text întrun fişier destinaţie. Programul va primi numele fişierelor ca | Scrieţi un program pentru concatenarea mai multor fişiere text întrun fişier destinaţie. Programul va primi numele fişierelor ca | ||
- | argumente în linia de comandă, în următoarea ordine: destinatie sursa1 sursa2 ... sursan. | + | argumente în linia de comandă, în următoarea ordine: destinatie $sursa_1, sursa_2 \dots sursa_n$. |
==Date de intrare== | ==Date de intrare== | ||
- | Fişierele de intrare sursa1 sursa2 ... sursan. | + | Fişierele de intrare $sursa_1, sursa_2 \dots sursa_n$. |
==Date de ieşire== | ==Date de ieşire== | ||
Fişierele de intrare concatenate în fişierul destinaţie. | Fişierele de intrare concatenate în fişierul destinaţie. | ||
Line 123: | Line 129: | ||
==Exemplu== | ==Exemplu== | ||
Pentru a căuta în fişierul input.txt stringul vacanta: | Pentru a căuta în fişierul input.txt stringul vacanta: | ||
- | ./executabil input.txt vacanta | + | |
+ | **./executabil input.txt vacanta** | ||
^ input.txt ^ stdout ^ | ^ input.txt ^ stdout ^ | ||
Line 150: | Line 157: | ||
==Exemplu== | ==Exemplu== | ||
Dacă, căutăm în fişierul input.txt stringul vacanta: | Dacă, căutăm în fişierul input.txt stringul vacanta: | ||
- | ./executabil c i n input.txt vacanta | + | |
+ | **./executabil c i n input.txt vacanta** | ||
^ input.txt ^ stdout ^ | ^ input.txt ^ stdout ^ | ||
Line 172: | Line 180: | ||
==Exemplu== | ==Exemplu== | ||
Aplicăm algoritmul de codare pe fişierul input.txt şi vom obţine un fişier output.txt. | Aplicăm algoritmul de codare pe fişierul input.txt şi vom obţine un fişier output.txt. | ||
- | ./executabil tabela_de_codare.in input.txt output.txt | + | |
+ | |||
+ | **./executabil tabela_de_codare.in input.txt output.txt** | ||
^ Intrare (input.txt ) ^ Ieşire (output.txt) ^ | ^ Intrare (input.txt ) ^ Ieşire (output.txt) ^ |