Tohle je vlastně tak trochu pokračování čtvrté kapitoly, ale potřebujete k tomu znát podmínky a cykly, takže jsem to musel přehodit. 4.5 Souborový vstup a výstup Se soubory se dělá podobně jako s konzolí. Je tam ale jeden rozdíl - konzole je jen jedna, ale souborů je víc, takže každý soubor se v Céčku otevře do svojí vlastní proměnné :
#include <stdio.h> int main() { FILE *soubor; soubor = fopen("jmeno_soub", "jak_otevrit"); // otevře soubor if(soubor == NULL) { printf("Nepodařilo se otevřít soubor"); getchar(); return 0; } fclose(soubor); // uzavře soubor getchar(); return 1; } |
void main() { FILE *fr; char c; fr = fopen("text.txt", "r"); if(fr == NULL) { printf("Soubor nejde otevrit !\n"); getchar(); return; } c = fgetc(fr); fclose(fr); putchar(c); getchar(); } |
void main() { FILE *fr; int c; fr = fopen("text.txt", "r"); if(fr == NULL) { printf("Soubor nejde otevrit !\n"); getchar(); return; } while((c = fgetc(fr)) != EOF) putchar(c); // čte a tiskne soubor text.txt fclose(fr); getchar(); } |
void main() { FILE *fr, *fw; int a, b; fr = fopen("a.txt", "r"); fw = fopen("b.txt", "w"); // otevreme pro zapis if(fr == NULL || fw == NULL) { printf("Soubor nejde otevrit !\n"); if(fr != NULL) fclose(fr); if(fw != NULL) // před koncem programu musíme fclose(fw); // uzavřít všechny soubory getchar(); return; } fscanf(fr, "%d %d", &a, &b); fprintf(fw, "%d + %d = %d\n", a, b, a + b); fclose(fr); fclose(fw); getchar(); } |
void main() { FILE *fr, *fw; int i; fr = fopen("a.txt", "r"); fw = fopen("b.txt", "a"); // otevreme pro pripojeni (append) if(fr == NULL || fw == NULL) { printf("Soubor nejde otevrit !\n"); if(fr != NULL) fclose(fr); if(fw != NULL) // před koncem programu musíme fclose(fw); // uzavřít všechny soubory getchar(); return; } while(!feof(fr)) { fscanf(fr, "%d", &i); fprintf(fw, "%d\n", i * 2); } fclose(fr); fclose(fw); getchar(); } |