Olen tekemässä sellaista ohjelmaa joka lukee "salakirjoitetun" tiedoston (fopenilla) ja tulostaa "selvän tekstin" näytölle. Esimerkiksi salainen.txt voi olla seuraavanlainen:
___________________
C. oh.je.
lm.oin.
ti. on.
k.i.
va.a
____________
eli ohjelman pitäisi poimia tekstistä kirjaimet pisteiden väliltä ja ymmärtää rivinvaihdot sekä sanojen välisen tyhjän tilan, ja tulostaa ruudulle teksitin:
"C ohjelmointi on kivaa"
Pisteet on tekstissä sen takia että ohjelma poimisi kirjaimet pisteiden ympäriltä. Ongelmaksi onkin muodostunut se että mä en löydä sellaista funktiota mistään joka poimisi tiettyjä kirjaimia tekstitiedostosta. Mielessä kävi sscanf:n käyttö mutta onko muitakin keinoja?
Hieman sekavasti selitetty mutta toivottavasti joku pystyy jeesaamaan.
t:Pointteri (hukassa)
Lue tiedostosta kyllä kaikki merkit, mutta tulosta ainoastaan ne, jotka kuuluvat varsinaiseen viestiin. Voit vaikka lukea tiedot riveittäin fgets-funktiolla ja käydä tiedostosta luetut merkkijonot läpi silmukan avulla tulostaen kelpaavat merkit.
Miten tuosta voi tietää, että "on kivaa" kirjoitetaan erikseen eikä yhteen?
Siis siihen normaaliin tekstiin on vain lisätty satunnaisesti pisteitä sotkemaan alkuperäistä viestiä. Ja fscanf:n pitäisi kyllä ymmärtää kokonainen sana ja välilyönti. Mä koitan mennä läpi harmaan kiven fscanf:llä, ainakin toistaiseksi tullut vain pää kipeeksi.
Tässä sulle "pseudo" niin voit itse kääntää sen C:lle.
// ensin määriteleeään merkkijono johon purettu salaus laitetaan, määritellään muuttuja johon juuri luettu merkki tallennetaan ja avataan tiedosto lukua varten loopataan niin kauan kuin tiedostossa on merkkejä { lue tiedostosta merkki; jos se on joku muu kuin piste, lisätään se merkkijonoon; } tulostetaan merkkijono
Yhden merkkijonon lukuun käytetään "%c":a.
Aihe on jo aika vanha, joten et voi enää vastata siihen.