Portál AbcLinuxu, 10. května 2025 01:03

Dotaz: C fscanf() číst ze souboru xxx|xxx|xxx

unknown_ avatar 17.12.2008 21:40 unknown_ | skóre: 30 | blog: blog
C fscanf() číst ze souboru xxx|xxx|xxx
Přečteno: 501×
Odpovědět | Admin
Ahoj, píšu maturitní projekt v C, a potřebuju poradit s jednou věcí. V souboru mám:
|xxx|xxxxx|xxxxx|xxxxx|xxxxxx|\n
spoustu řádků, proměnného počtu znaků mezi |. A potřeboval bych ideálně načíst každý to mezi | do vlastního stringu.
Zatím to mám vyřešení úplně jinak, ale na hodně řádků.
Zkusil jsem použít
fscanf(todosoubor,"|%s|%s|%s|%s|%s|\n",string,string1,string2,string3,string4);
Ale všechno se načte do stringu prvního. Zadávám nějak špatně oddělovače (není potřeba použít něco jako \?), nebo tohle prostě fscanf() neumí, a budu to muset ještě nějak jinak udělat?
Děkuju za rady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.12.2008 21:58 dfsfsfs
Rozbalit Rozbalit vše Re: C fscanf() číst ze souboru xxx|xxx|xxx
Odpovědět | | Sbalit | Link | Blokovat | Admin

Napadaji me reseni:

1. vymazat | a nahradit je mezerou

2. scanovat rucne retezec a kdyz se narazi na | tak se zalozi (naalokuje pamet atd) novy retezec

3. pouzit strtok

4. nastavit v scanf aby se bral jako odelovac retezcu znak | (timhle si nejsem jistej a mozna to funguje jen po GNU, ale snad je tam takovej parametr v formatu

unknown_ avatar 18.12.2008 15:10 unknown_ | skóre: 30 | blog: blog
Rozbalit Rozbalit vše Re: C fscanf() číst ze souboru xxx|xxx|xxx
1. to by bohuzel nebylo mozny, retezce mohou obsahovat x mezer.
2. nad tim sem premyslel, ale bylo by to dlouhy a narocny.
Josef Kufner avatar 17.12.2008 22:34 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: C fscanf() číst ze souboru xxx|xxx|xxx
Odpovědět | | Sbalit | Link | Blokovat | Admin
man scanf
Hint: "|%[^|]|%[^|]|"
Hello world ! Segmentation fault (core dumped)
unknown_ avatar 18.12.2008 15:11 unknown_ | skóre: 30 | blog: blog
Rozbalit Rozbalit vše Re: C fscanf() číst ze souboru xxx|xxx|xxx
Je, dekuju, to je ono :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.