Avatar
Artimer
Člen
Avatar
Artimer:

Ahoj, chcel by som vás poprosiť o pomoc z úlohou do školy. Mám načítať písmená z textového súboru, ktorých počet dopredu neviem zoradiť ich a potom vypísať do ďalšieho súboru... Problém je že načítané písmená po vypísaní vyzerajú ako obdlžníky tj. nevie ich to zobraziť... a ak ich vypíšem do konzoli sú to smailíci... ak však pridám načítavanie znakov v cykli tak sú znaky načítané správne..., lenže ja potrebujem testovať koniec súboru v podmienke cyklu... nič iné mi nenapadá... Neviete čím by to mohlo byť ?

#include<stdio.h>
#include<stdlib.h>

main()

{
        char x;
        FILE *fr,*fw;
        fw=fopen("vystup.txt","w");
        if((fr=fopen("vstup.txt","r"))==NULL)
                printf("Subor sa nepodarilo otvorit!");
        while(x=getc(fr)!=EOF) // tu znkaky načítava nespravne
        {
                printf("%c",x); // ak pridam nacitanie aj tu tak znaky su spravne
                putc(x,fw);     //ale podmienka hore berie kazdy druhy znak
        }
        if(fclose(fr)==EOF)
                printf("Subor sa nepodarilo zavriet!");
        if(fclose(fw)==EOF)
                printf("Subor sa nepodarilo zavriet!");
}
 
Odpovědět 19. června 20:57
Avatar
martanec
Člen
Avatar
Odpovídá na Artimer
martanec:

Skus skontrolovat kodovanie vstupneho suboru. Mne to pride, ako keby ten subor bol kodovany v UTF-8. Ak ano, skonvertuj ho do ISO-8859-2 alebo windows cp1250 (napr. pomocou Notepadd++) a problem by mal byt odstraneny.

 
Nahoru Odpovědět 20. června 8:01
Avatar
B42P6
Člen
Avatar
Odpovídá na Artimer
B42P6:

V C má operátor != vacsiu prioritu ako operator =. Takze toto:

x = getc(fr) != EOF

Je v C chapane ako:

x = (getc(fr)!=EOF)

Myslim si, ze to nieje to, co chces dosiahnut.

Pridaj par zatvoriek a bude to fungovat ako potrebujes.

(x=getc(fr)) != EOF
Editováno 20. června 8:26
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +3 20. června 8:24
'long long long' is too long for GCC
Avatar
Artimer
Člen
Avatar
Odpovídá na B42P6
Artimer:

Ďakujem veľmi pekne za vysvetlenie, už mi to funguje.

 
Nahoru Odpovědět 20. června 19:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.