Diskuze: podminka if (znak != '\n') mi nefunguje
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Ta podmínka vždycky bude true, nikdy Ti tak naskočí řízení programu do sekce else. Nikdy totiž nemůže nastat že znak bude '\n' a zároveň EOF. Musíš použít logický AND &&.
Jinak znak není třeba inicializovat.
Když prochazis soubour do jeho konce, pak cteny znak musíš porovnávat s
EOF.
#include <stdio.h>
int main(void) {
int pocet_znaku_na_radce = 0;
int znak;
FILE *fr = NULL;
FILE *fw = NULL;
if ((fr = fopen("PISMENA.TXT", "rt")) == NULL) {
fprintf(stderr, "nepodarilo se otevrit soubor PISMENA.TXT\n\n");
return 1;
}
if ((fw = fopen("KOLIK.TXT", "wt")) == NULL) {
fprintf(stderr, "nepodarilo se otevrit soubor KOLIK.TXT\n\n");
fclose(fr);
return 1;
}
while ((znak = fgetc(fr)) != EOF) {
if (znak != '\n') {
fputc(znak, fw);
pocet_znaku_na_radce++;
} else {
fprintf(fw, "%d\n", pocet_znaku_na_radce);
pocet_znaku_na_radce = 0;
}
}
fclose(fr);
fclose(fw);
return 0;
}
Uz to vidim, spatne jsem tu podminku pochopil. Dekuji
Nemáš zač. Je běžné že člověk udělá chybu při vytváření složité podmínky. Může pomoci to, že si řekneš pravý opak a pořadí vyhodnocení otočíš.
Ve tvém případě:
Co se stane, kdyz načtu znak nového řádku nebo konce souboru?
Je to oak mnohem srozumitelnější..
Zobrazeno 4 zpráv z 4.