Diskuze: Nezmyselný výstup

C++ C a C++ Nezmyselný výstup

Avatar
ra3sk
Člen
Avatar
ra3sk:

Ahoj, mám taký problém. Tento kód som si napísal.

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

// V súbore projekt.txt sa nachádza niekoľko riadkov textu
// Zistite, ktorý riadok je najdlhší a vypíšte jeho poradové číslo a počet znakov

int main(int argc, const char *argv[]) {
    FILE*fr;
    char riadok_precitany[500];
    int max=0,dlzka_riadku=0,riadok_pozicia=0,riadok_najdlhsi=0;

    if((fr=fopen("/Users/lukasschmelcer/Desktop/projekt.txt","r"))==NULL){
        printf("Program sa nepodarilo otvorit.");
        return 1;
    }
    else{
        while(fgets(riadok_precitany,500,fr)!=NULL){
            dlzka_riadku=strlen(riadok_precitany);
            riadok_pozicia++;
            if(max<dlzka_riadku){
                max=dlzka_riadku;
                riadok_najdlhsi = riadok_pozicia;

            }

        }

        printf("%d.riadok ma %d znakov",riadok_najdlhsi,max);

        if((fclose(fr))==EOF){
            printf("Subor sa nepodarilo zatvorit");
            return 1;
        }
    }


    return 0;
}

a mám súbor ktorý je takýto :

Ahoj, moje meno je Marek.
Ako sa máš?
Ja sa mám celkom dobre, dnes bude víkend. Si rád? Dúfam, že áno.
Nie? A to z akého dvôvodu? Si teda smutný? Prečo?

Avšak z programu dostanem iba to že súbor má 5 riadkov a 121 znakov, čo nie je pravda. Potrebujem aby program vypísal počet znakov najdlhšieho riadku a pozíciu na ktorej sa riadok nachádza. Predom ďakujem za akýkoľvek nápad.

Editováno 13. května 20:29
 
Odpovědět 13. května 20:29
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na ra3sk
tomisoka:

Můj výstup je "3.riadok ma 71 znakov", což odpovídá.
Jinak pokud chceš používat znaky které nejsou v ASCII, tak budeš muset použít něco jiného než strlen, protože ostatní znaky se budou počítat za více znaků.

 
Nahoru Odpovědět 13. května 20:45
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:

Neviem teda no. Ja to robím v CLion-e a potom som skúsil aj XCode. V akom IDE to máš ty? A na akom OS? Ja som na MAC OS X.

 
Nahoru Odpovědět 13. května 20:55
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na ra3sk
tomisoka:

Linux s gcc. Jinak jak přesně vypadá ten tvůj výstup? Protože "súbor má 5 riadkov a 121 znakov" by neměl vypisovat, má vypisovat data o tom jednom řádku (jeho číslo a délku).

 
Nahoru Odpovědět 13. května 22:16
Avatar
ra3sk
Člen
Avatar
ra3sk:

Takto to vypadá.

 
Nahoru Odpovědět 13. května 22:45
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:

možno si stiahnem na usb linux a skúsim ako to pobeží tam... každopádne dám vedieť

 
Nahoru Odpovědět 13. května 22:46
Avatar
B42P6
Člen
Avatar
Odpovídá na ra3sk
B42P6:

A ako .txt súbor ukladáš? UTF-8, UTF-16, ANSI(Windows-1252)?

Nahoru Odpovědět 13. května 23:00
'long long long' is too long for GCC
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na ra3sk
tomisoka:

Asi by se hodilo vypsat co za řádky to načítá, možná i rovnou číselnou hodnotu těch znaků.

 
Nahoru Odpovědět 13. května 23:23
Avatar
ra3sk
Člen
Avatar
Odpovídá na B42P6
ra3sk:

kódovanie mám klasické UTF-8

 
Nahoru Odpovědět 14. května 10:31
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:

už to dáva zmysel... načíta to toto:

{\rtf1\ansi\an­sicpg1250\coco­artf1404\coco­asubrtf340

len neviem prečo

 
Nahoru Odpovědět 14. května 10:33
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na ra3sk
tomisoka:

No vypadá to, že nepoužíváš klasický txt soubor, který jde takto jednoduše přečíst. Používáš rtf formát, který obsahuje řadu dalších informací, které ti ten tvůj program načte.

 
Nahoru Odpovědět 14. května 11:11
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:

Lenže keď zmením súbor na txt tak to načíta to isté.

 
Nahoru Odpovědět 14. května 12:23
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na ra3sk
tomisoka:

Jak změníš na txt? Tím myslíš to, že změníš koncovku? Pokud ano, tak tím neměníš formát, ale jen název. Vytvoř normální txt soubor a překopíruj do něj ten text.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 14. května 12:29
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:

Už to ide. Neuvedomil som si, že predvolený formát v OS X nie je plain text ale rich text. Inak 71 je to preto lebo je tam interpunkcia, že? Ak by som to dal bez nej tak by to malo byť 65. Správne?

 
Nahoru Odpovědět 14. května 12:49
Avatar
tomisoka
Redaktor
Avatar
 
Nahoru Odpovědět 14. května 12:54
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 15 zpráv z 15.