NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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 – Lekce 6 - Rozdíly mezi textovými a binárními soubory v jazyce C

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):9.6.2014 18:15

Nemyslíš, že je to zbytočné? Pri spôsobe odporúčanom Heroutom to funguje tak ako som písal. Kto sa bude chcieť baviť a hľadať iné spôsoby, nech sa páči.
Navyše, nie každý má dobré CPU a WIN7. ;)

Odpovědět
9.6.2014 18:15
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:9.6.2014 19:37

To spíš prozraď Ty mně.

Předvádíš práci s "rozdílnými" soubory, když vlastně rozdílné nejsou. Textový mód je zastaralý princip a navíc funguje trochu jinak, než sis zjevně myslel, což jsme probrali výše. Ke všemu měříš vždy něco jiného, když v jednom případě nepoužíváš buffer, zatímco ve druhém ano.

Článek je tedy vlastně o rozdílném formátu dat, což předvádíš na souborech o velikosti stovek MB. Prosím Tě, kolik 0.5GB textových souborů jsi už viděl? Jestliže pracuji s obvyklými velikostmi do řádů stovek kB, jak moc bude záležet na měřených časech?

Pokud bych už opravdu potřeboval zpracovat textový soubor, který bude hodně velký, ano, vyplatí se si s tím pohrát a zrychlit práci, ale to už jsou trochu jiné techniky.

 
Odpovědět
9.6.2014 19:37
Avatar
Jaroslav Polívka:10.6.2014 2:11

Ahoj, zkoušel jsem níže uvedeným kódem kopírovat soubor, jednou se fopen dával w+b a jednou na w+t a časy mi vycházeli velmi podobně.

//---------------------------------------------------------------------------
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
#pragma hdrstop

//---------------------------------------------------------------------------
#pragma argsused

int main(int argc, char* argv[])
{

FILE *in, *out;
char text = 0;

if (argc > 3){
cout << "Neplatne zadani souboru!!!" << endl;
getch();
return 0;
}

if ((in = fopen(argv[1], "r+t"))== NULL)
{
cout << "Nemohu otevrit zdrojovy soubor!";
getch();
return 0;
}

if ((out = fopen(argv[2], "w+t")) == NULL)
{
cout << "Nemohu vytvorit cilovy soubor!";
getch();
return 0;
}

clock_t start1 = clock();

while (!feof(in))
{
text = fgetc(in);
if ( text == ' ' ) continue;
fputc(text, out);
}

clock_t finish1 = clock();

fclose(in);
fclose(out);

printf("Potrebny cas %.3f secund.\n", (float)((int)fi­nish1 - (int)start1) / CLOCKS_PER_SEC);

getchar();

return 0;

}
//---------------------------------------------------------------------------

Odpovědět
10.6.2014 2:11
Velice často si věci žijí svým životem
Avatar
Jaroslav Polívka:10.6.2014 2:12

Ale článek mě velmi chytil.

Odpovědět
10.6.2014 2:12
Velice často si věci žijí svým životem
Avatar
Patrik Pastor:1.9.2019 19:26

hazi mi to undefined reference to 'vytvor_txt_soubor' i tak samo na funkci vytvareni bin. Mam je to ale vsechno v jedne slozce - primo na desktopu mam vsechny soubory (fce.c, fce.h, UlozTextBin.c) ocividne se v to UlozTextBin neincluduje, nevite nekdo proc? - Ackoliv jsem to prach sproste skopiroval? (vsechny 3 soubory) - takze mam vse implementovane spravne

Pouzivam Ubuntu unity, a kompiluju v terminalu pres gcc, ale to by snad nemel byt problem.
Dik za rady

Editováno 1.9.2019 19:27
 
Odpovědět
1.9.2019 19:26
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Patrik Pastor
DarkCoder:1.9.2019 20:05

Že jsou uloženy v jedné složce nestačí. Je třeba, aby byly všechny potřebné soubory do programu naimportované, jinak je program neuvidí a nebude s nimi pracovat. Zkontroluj si obsah projektu, zda-li v něm máš všechny soubory.

Odpovědět
1.9.2019 20:05
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Patrik Pastor:1.9.2019 20:48

Ve slozce s main.c jsem nemel naimportovane fce.c - ale to ani tady v lekci nemaji naimportovane v slozce s main.c. Nicmene, kdyz jsem to naimportoval (samozrejme fce.h uz jsem mel, ale ted i fce.s) tak to najednou jelo. Jak to ze je nutnost mi i source i header, a proc to tady nemeli?

 
Odpovědět
1.9.2019 20:48
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Patrik Pastor
DarkCoder:1.9.2019 20:55

Citace z odstavce Program:

Založme si nový Project Console application napríklad UlozenieTextBin. Pridajme si do projektu dva súbory, (source) fce.c a (header) fce.h. Súbor main.c sa vytvorí automaticky.

Odpovědět
1.9.2019 20:55
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Patrik Pastor:1.9.2019 20:56

/** main.c **/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "fce.h"

int main()

-- vidis tu nekde #include "fce.c" ?

 
Odpovědět
1.9.2019 20:56
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Patrik Pastor
DarkCoder:1.9.2019 20:59

.c soubory se do programu neincludují. Inkludují se pouze hlavičkové soubory ve kterých jsou deklarovaná všechna potřebná data (funkce, makra, konstanty, objekty, apod).

Je rozdíl includovat hlavičkový soubor do programu a přidat soubor do projektu.

Odpovědět
1.9.2019 20:59
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
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 10 zpráv z 33.