ŠPatné počítání znaků v souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ŠPatné počítání znaků v souboru – C / C++ – Fórum – Programujte.comŠPatné počítání znaků v souboru – C / C++ – Fórum – Programujte.com

 

chef060
Duch
21. 11. 2013   #1
-
0
-

Zdravím, pokusil jsem si napsat skript na počítání znaků, kde chci zjistit, kolik znaků je na nejdelším řádku:

#include <stdio.h>
#include <string.h>
#define CHYBA {printf("Soubor se nepodarilo otevrit/zavrit"); return 1;}
FILE *fr;

int otevri(void) {
    return((fr=fopen("DOPIS.TXT","r")) != NULL);
    }
int zavri(void) {
    return(fclose(fr) != EOF);
    }
    
int cti_radek(void) {
 int delka=0, c=0;
   while((c=getc(fr)) != EOF) {
      if(c == '\n') {
        return(delka+1);}
      else {
        delka++;
          }
        }
      return EOF;                      
    }
    int main(void) {
        int nejdelsi=0; 
        int aktualni=0;
          if(otevri() == 0) {
            CHYBA        
            }
            while((aktualni=cti_radek()) != EOF) {
              if (aktualni > nejdelsi) {
                nejdelsi = aktualni; 
              } 
            } 
            printf("Delka nejdelsiho radku je %d\n", nejdelsi);
              if (zavri() == 0) {
                   CHYBA                   
              }
                                          
           return 0; 
        }


Jenže neustále mi to vrací hodnotu 49. Dokázal by mi někdo pomoci najít chybu? Díky

Nahlásit jako SPAM
IP: 85.70.169.–
KIIV
~ Moderátor
+43
God of flame
21. 11. 2013   #2
-
0
-

asi mas neustale stejne dlouhej radek :D

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
chef060
Duch
21. 11. 2013   #3
-
0
-

#2 KIIV
To ne. Vzdyť tam mám 4 řádky, a pokaždé jiný počet slov. V tom chyba nebude.

Nahlásit jako SPAM
IP: 213.235.185.–
KIIV
~ Moderátor
+43
God of flame
21. 11. 2013   #4
-
0
-

???

vis o tom ze to vypise jen pocet znaku na nejdelsim z nich? zadny slova ani tak.. muzes klidne prohazovat radky ale dokud nezmenis pocet znaku na nich, tak to bude delat furt to same

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
chef060
Duch
21. 11. 2013   #5
-
0
-

#4 KIIV
jo, jo.. Když má řádky:

Dnes je krásně

Sobota

Už se nic neděje, jen svítí slunce

Pojďtme všichni.

Tak tam asi 49 znaků nikde nenajdu na jednom řádku, který je zakončen entrem.

Nahlásit jako SPAM
IP: 213.235.185.–
KIIV
~ Moderátor
+43
God of flame
21. 11. 2013   #6
-
0
-

jestli mas soubor v UTF-8 tak by to nemel byt zase tak moc problem

taky muzes jednotlive znaky vypisovat a pri kazdem konci radku vypsat kolik je to znaku a tak podobne

kazdopadne me to pocita dobre kdyz neni to utf.

Dnes je krásně>17<
Sobota>7<
Už se nic neděje, jen svítí slunce>39<
Pojďtme všichni.>19<
Delka nejdelsiho radku je 39

(teda krom toho ze do delky radku pocitas i ten enter to pocita dobre... s utf8 teda)

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Radek Chalupa
~ Redaktor
+1
Super člen
21. 11. 2013   #7
-
0
-

#1 chef06
Pokud je to ve Windows, tak tam standardně v textovém soubory je na konci řádku "dvojznak" \r\n, přesněji řečeno byty 0x0D a 0x0A.

Navíc pokud je to Unicode, některé aplikace zapisují na začátek souboru dva příznakové byty (nevím z hlavy hodnoty, ale není problém to zjistit) a nebo můžeš můžeš na načtený text použít API funkci IsTextUnicode.

Radek Chalupa 
- vývoj software na zakázku 
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC) 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 105 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý