Diskuze: formátovaný výstup z funkce

C a C++ C a C++ formátovaný výstup z funkce American English version English version

Aktivity (1)
Avatar
David Ježek
Člen
Avatar
David Ježek:25. května 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. května 11:42
Avatar
DarkCoder
Člen
Avatar
Odpovídá na David Ježek
DarkCoder:25. května 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  +1 25. května 12:46
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
David Ježek
Člen
Avatar
David Ježek:25. května 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. května 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.