Vypsani souboru – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vypsani souboru – C / C++ – Fórum – Programujte.comVypsani souboru – C / C++ – Fórum – Programujte.com

 

Piwik0
Duch
21. 10. 2014   #1
-
0
-

#include <stdio.h>

int main(void)
{
    FILE *soubor;
    soubor = fopen("textak.txt","r");
    char radek[80];
    while ((fscanf(soubor, "%[^\n]", radek)) != EOF)
    {
       fgetc(soubor);
       printf("Radek = %s \n", radek);
    }

}


tohle mi nacte jen soubor s omezenym poctem znaku, jak udelam aby mi to nacetlo libovolne velky soubor?

Nahlásit jako SPAM
IP: 78.157.167.–
21. 10. 2014   #2
-
0
-

Pole alokuj dynamicky, pamatuj si jeho alokovanou velikost a počítej načtené znaky. Před úplným naplněním pole realokuj. Vhodnější je realokovat "po blocích".

hu

Nahlásit jako SPAM
IP: 193.86.81.–
21. 10. 2014   #3
-
0
-

Druhá možnost je procházet soubor a počítat znaky dokud není konec řádku. Pak alokovat dynamicky pole odpovídající velikosti, vrátit se v souboru na začátek řádku a načíst ho celý.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
Matěj Andrle+1
Grafoman
22. 10. 2014   #4
-
0
-

#3 hlucheucho
Není lehčí přečíst si informace o souboru? :)

Nahlásit jako SPAM
IP: 78.136.181.–
22. 10. 2014   #5
-
0
-

V informacích o souboru se nedozvíš kolik řádků obsahuje.

hu

Nahlásit jako SPAM
IP: 2001:67c:1222:800:208e:ca...–
vitamin+8
Grafoman
22. 10. 2014   #6
-
+1
-
Zajímavé

#1 Piwik

Mozes nacitat cely subor a potom v nom hladat riadky:


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

int main(void){
    FILE *subor = 0;
    size_t size = 0;
    char* data = 0;
    
    if(!(subor = fopen("textak.txt","r")))return errno;
    if(fseek(subor, 0, SEEK_END))goto CLOSE_FILE;
    size = ftell(subor);
    if(fseek(subor, 0, SEEK_SET))goto CLOSE_FILE;
    if(!(data = (char*)malloc(size)))goto CLOSE_FILE;
    if(fread(data, 1, size, subor) != size)goto FREE_DATA;
    
    //-------------------
    fwrite(data, 1, size, stdout);
    ///TODO...
    //-------------------
    
    
    FREE_DATA:
    free(data);
    
    CLOSE_FILE:
    fclose(subor);
	
    return errno;
}
Nahlásit jako SPAM
IP: 95.105.186.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Piwik0
Duch
22. 10. 2014   #7
-
0
-

#6 vitamin
Díky moc, přesně tohle jsem potřeboval :)

Nahlásit jako SPAM
IP: 78.157.167.–
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, 115 hostů

Podobná vlákna

Vypsání — založil Karel

Vypsání matice — založil Asinkan

Vypsani stringu — založil Tase

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ý