Forum » Programiranje » [C] - branje zadnjih znakov iz vrstice
[C] - branje zadnjih znakov iz vrstice
Gwanaroth ::
V datoteki imam podatke v takem formatu:
308942 -1.500000e+01 -6.237590e-07
312121 -1.500000e+01 -6.440814e-07
315302 -1.500000e+01 -6.836881e-07
318482 -1.500000e+01 -7.055025e-07
321662 -1.500000e+01 -7.300692e-07
V zadnjem stolpcu so tako pozitivne kot negativne vrednosti. Narediti moram, da program v Cju prebere zadnji podatek v vrstici, torej -6.237590e-07, če je negativen, ga mora pretvorit v pozitivnega.
Vrstice iz datoteke berem s funkcijo fgets(). Lahko namignete, kako "izluščiti" le zadnji podatek iz te vrstice, ker se mi ne sanja ravno dosti.. ?
308942 -1.500000e+01 -6.237590e-07
312121 -1.500000e+01 -6.440814e-07
315302 -1.500000e+01 -6.836881e-07
318482 -1.500000e+01 -7.055025e-07
321662 -1.500000e+01 -7.300692e-07
V zadnjem stolpcu so tako pozitivne kot negativne vrednosti. Narediti moram, da program v Cju prebere zadnji podatek v vrstici, torej -6.237590e-07, če je negativen, ga mora pretvorit v pozitivnega.
Vrstice iz datoteke berem s funkcijo fgets(). Lahko namignete, kako "izluščiti" le zadnji podatek iz te vrstice, ker se mi ne sanja ravno dosti.. ?
Lights often keep secret hypnosis..
LjubimPeezde ::
Pomagaj si s presledki
Ali pa uproabi kakšno knjižnjico s kakšno funkcijo da ti recimo posamezne vrednosti razdeli po presledkih v eno tabelo in potem samo pokličeš tabela[radnji element] da dobiš zadnjo vrednost. Potem pa preveriš če je prvi znak = '-' In pač narediš kar je za narediti.
Lahko pa si tako funkcijo napišeš tudi sam :P
Ali pa uproabi kakšno knjižnjico s kakšno funkcijo da ti recimo posamezne vrednosti razdeli po presledkih v eno tabelo in potem samo pokličeš tabela[radnji element] da dobiš zadnjo vrednost. Potem pa preveriš če je prvi znak = '-' In pač narediš kar je za narediti.
Lahko pa si tako funkcijo napišeš tudi sam :P
Zgodovina sprememb…
- spremenilo: LjubimPeezde ()
napsy ::
Ali pa z fscanf/sscanf:
fscanf(fd, "%d %e %e", &myint, &mydouble1, &mydouble2);
sscanf(str, "%d %e %e", &myint, &mydouble1, &mydouble2);
fscanf(fd, "%d %e %e", &myint, &mydouble1, &mydouble2);
sscanf(str, "%d %e %e", &myint, &mydouble1, &mydouble2);
"If you die, you die. But when you live you live. There is no time to waste."
Zgodovina sprememb…
- spremenil: napsy ()
fiction ::
Pametno je najbrz brati datoteko vrstico po vrstici.
Vsakic preberes vrsto s fgets() v nek buffer.
Za razdelitev tega niza znakov po presledkih potem lahko uporabis strtok() oz. manj prenosljiv, a boljsi strsep().
Ampak v tem primeru je najbrz lazje narediti kar omenjeni
sscanf(str, "%d %e %e", &myint, &mydouble1, &mydouble2);
nad bufferjem, pri cemer lahko naredis tudi nekaj v stilu:
if (sscanf(str, "%*d %*e %e", &mydouble) != 1)
/* Napacen format vrstice */
Iz manuala:
Vsakic preberes vrsto s fgets() v nek buffer.
Za razdelitev tega niza znakov po presledkih potem lahko uporabis strtok() oz. manj prenosljiv, a boljsi strsep().
Ampak v tem primeru je najbrz lazje narediti kar omenjeni
sscanf(str, "%d %e %e", &myint, &mydouble1, &mydouble2);
nad bufferjem, pri cemer lahko naredis tudi nekaj v stilu:
if (sscanf(str, "%*d %*e %e", &mydouble) != 1)
/* Napacen format vrstice */
Iz manuala:
Following the % character introducing a conversion there may be a number of flag characters, as follows:
* Suppresses assignment. The conversion that follows occurs as
usual, but no pointer is used; the result of the conversion is
simply discarded.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] Razbitje stringa s pomočjo indeksovOddelek: Programiranje | 820 (698) | Shinobi |
» | [C++][Naloga] Tekstovne datoteke, realna številaOddelek: Programiranje | 4007 (3623) | Gundolf |
» | [C] atoi() problemOddelek: Programiranje | 1005 (945) | sid_dabster |
» | C++ vs. C (strani: 1 2 )Oddelek: Programiranje | 6852 (5843) | rokpok |
» | Kako bi izbrisal vrstico v neki datotekiOddelek: Programiranje | 1123 (1000) | DMouse |