IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Avatar
David Ježek
Člen
Avatar
David Ježek:25.5.2018 11:42

Ahoj, potřeboval bych poradit mám funkci která je návratového typu void a končí takovýmhle výpisem:
printf("%02d:%02­d:%02d,%03d --> %02d:%02d:%02­d,%03d\n", h, m, s, ms, hDo, mDo, sDo, msDo);

Já bych potřeboval aby funkce vracela char v takovomhle formátu abych ho následně mohl zapsat do souboru (jedná se o přečasování titulků pro školní účely), problém je v tom že formátování spolu s int proměnýma se nechce převést. Je možný že je to hloupý dotaz ale já už jsem vážně vyzkoušel vše co mě napadlo. Budu rád za radu.

 
Odpovědět
25.5.2018 11:42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na David Ježek
DarkCoder:25.5.2018 12:46

Způsob který chceš je zbytečně složitý a pomalý, neboť to vyžaduje mnoho zbytečných kroků. Funkce by navíc neměla vracet char ale ukazatel na char. Ty ale potřebuješ vracet řetězec nikoli znak. Mimochodem možnost zapisovat do souboru nemá žádný vztah s návratovým typem funkce a není důvod jej měnit.

Zápis do souboru lze udělat přímo. Lepší způsob je následující:

K seznamu parametrů přidej formální parametr ukazatel na typ (FILE *). Pro formátovaný zápis použij funkci fprintf(). Ta se chová úplně stejně jako její konzolová funkce printf() s tím rozdílem, že první parametr je právě ukazatel na typ FILE. Můžeš tak provést zápis na obrazovku pomocí printf() a zároveň zápis do souboru pomocí fprintf().

void vypis(FILE *fp){
  //...
  printf(...);
  fprintf(fp, ...);
  return;
}
Nahoru Odpovědět
25.5.2018 12:46
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
David Ježek
Člen
Avatar
David Ježek:25.5.2018 13:05

Díky mě to právě přišlo strašně složitý a zbytečný, ale tohle mě nenapadlo. No spíš jsem zapoměl na fprintf. Díky moc.

 
Nahoru Odpovědět
25.5.2018 13:05
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 3 zpráv z 3.