Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Nezmyselný výstup

Aktivity
Avatar
ra3sk
Člen
Avatar
ra3sk:13.5.2016 20:29

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.5.2016 20:29
 
Odpovědět
13.5.2016 20:29
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na ra3sk
tomisoka:13.5.2016 20:45

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.5.2016 20:45
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:13.5.2016 20:55

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.5.2016 20:55
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na ra3sk
tomisoka:13.5.2016 22:16

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.5.2016 22:16
Avatar
ra3sk
Člen
Avatar
ra3sk:13.5.2016 22:45

Takto to vypadá.

 
Nahoru Odpovědět
13.5.2016 22:45
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:13.5.2016 22:46

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.5.2016 22:46
Avatar
B42P6
Člen
Avatar
Odpovídá na ra3sk
B42P6:13.5.2016 23:00

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

Nahoru Odpovědět
13.5.2016 23:00
'long long long' is too long for GCC
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na ra3sk
tomisoka:13.5.2016 23:23

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.5.2016 23:23
Avatar
ra3sk
Člen
Avatar
Odpovídá na B42P6
ra3sk:14.5.2016 10:31

kódovanie mám klasické UTF-8

 
Nahoru Odpovědět
14.5.2016 10:31
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:14.5.2016 10:33

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.5.2016 10:33
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na ra3sk
tomisoka:14.5.2016 11:11

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.5.2016 11:11
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:14.5.2016 12:23

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

 
Nahoru Odpovědět
14.5.2016 12:23
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na ra3sk
tomisoka:14.5.2016 12:29

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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
14.5.2016 12:29
Avatar
ra3sk
Člen
Avatar
Odpovídá na tomisoka
ra3sk:14.5.2016 12:49

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.5.2016 12:49
Avatar
tomisoka
Tvůrce
Avatar
Odpovídá na ra3sk
tomisoka:14.5.2016 12:54

Přesně tak.

 
Nahoru Odpovědět
14.5.2016 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.