Diskuze: Jednoduchá práce se souborem v C - načtení znaků ze souboru
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud potřebuješ, aby se vykonala určitá část kódu aspoň jednou (v tomto případě vždy výpis počtu znaků na řádce), pak je třeba použít cyklus do-while a nikoli cyklus while.
do {
c = getc(fp);
if (c != '\n' && c != EOF) {
putchar(c);
pocet_znaku++;
}
else {
printf("\nPocet znaku na radce: %d\n", pocet_znaku);
pocet_znaku = 0;
}
} while (c != EOF);
Aby vše fungovalo správně, je třeba, aby proměnná pocet_znaku byla inicializována na 0. Pokud tomu tak nebude, bude hodnota počtu znaků první řádky nesmyslná.
int pocet_znaku = 0;
Funkce fopen() může selhat, respektivě může dojít k
tomu, že se do ukazatele na soubor přiřadí hodnota
NULL.
Je tedy nutné tuto hodnotu otestovat, než se začne pracovat se souborem.
Např.
fp = fopen("SOUBOR.TXT", "r");
if (!fp) {
fprintf(stderr, "Chyba otevreni souboru.\n");
exit(1);
}
Funkce exit() vyžaduje vložení hlavičkového souboru stdlib.h.
Použití názvu proměnné i pro hodnotu počtu znaků na řádce není zrovna ideální.
Díky moc za podrobné vysvětlení , vše už funguje jak má.
Napiš program, který přečte soubor SOUBOR.txt po řádcích.
Ještě jeden, dost možná podstatný dodatek. Pokud má být soubor čten
po řádcích,
je třeba použít funkci fgets() nikoli funkci fgetc() či makro getc().
Avšak myšlenka, že je třeba použít správný cyklus, zůstává stejná.
Zobrazeno 5 zpráv z 5.