Teen harjoitus ohjelmaa tässä näin ja törmäsin mielenkiintoiseen ohjelmaan, jota en (yllätys yllätys) osaa korjata.
Ongelma: Yritän tallentaa tiedostoon päivämäärän ja ohjelma sekoaa täysin ja tallentaa kylläkin tiedostoon päivämäärästä osan eli ekaan pisteeseen asti.
OS: Linux
Koodi:
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
int tallenna(int kkerta, char *teksti);
int main() {
while(1)
{
char valinta = 0;
cout << endl << "Tervetuloa Harjoitus päiväkirjaan" << endl;
cout << "<------------------------------->" << endl;
cout << "1.Lisää uusi harjoitus kerta." << endl;
cout << "2.Tarkastele viimeisintä harjoitusta." << endl;
cout << "3.Poistu ohjelmasta." << endl;
cout << "<------------------------------->" << endl;
cout << "Anna valintasi:" << endl;
cin >> valinta;
if(valinta == '1')
{
char valinta2 = 0;
cout << "1.Laji1." << endl;
cout << "2.Laji2." << endl;
cin >> valinta2;
if(valinta2 == '1')
{
char tulos;
int kkerta;
kkerta = 0;
tulos = '0';
cout << "Anna käyntikerta:" << endl;
cin >> kkerta;
cout << "Anna mielipiteesi harjoituksestasi:" << endl;
cin >> tulos;
tallenna(kkerta, &tulos);
}
}
if(valinta == '3')
{
break;
}
if(valinta != '1' && valinta != '3')
{
cout << endl << "Virheellinen valinta." << endl;
continue;
}
}
return EXIT_SUCCESS;
}
int tallenna(int kkerta, char *teksti)
{
ofstream file("//home/jookoo/Desktop/harkka.txt");
if(file.is_open())
{
file << kkerta;
file.close();
}
else printf("Virhe tallentaessa.");
}(PS: jos joku viitsii keksiä minulle jonkun harjoitus työn olisin kiitollinen)
Kiitokset vastanneille!
PSS: Kertokaa sitten myös mikä tuossa ja miksi se ei toimi ja miten voisin tehdä kaiken paremmin, koska sitten tajuasin enemmän ja olisin (omasta mielestäni ainakin) parempi koodari =) kun ymmärtäisin jotain.
Sää unohdat kirjoittaa ton teksti-muuttujan harkka.txt-filuu.
Ite tein pienempänä just tälläsiä harjoituksia ja tahalteni yritin keksiä mahdollisimman monimutkaisia ehto-lauseita yms :) ja jossakin vaiheessa aloin kokeilla sitä olioidenki kanssa.. Tällä hetkellä harjoittelen graafista ilmaisua (siis ohjelmoimalla, ei minkää näytelmän vuorosanojen kanssa), mutta matskuni kusasee :D
(btw: yhdys sana => yhdyssana; harjoitus työ => harjoitustyö; harjoitus ohjelmaa => harjoitusohjelma; Harjoitus päiväkirjaan => Harjoitus-päiväkirjaan; harjoitus kerta => harjoituskerta)
Juuh en ole kovin hyvä noiden yhdyssanojen kanssa =) en mie viel ookkaa kirjottaas tota teksti muuttujaa ku toi ekakaa muuttuja ei kirjoitutu (?) oikein =)
Mä vähän veikkaisin, että se johtuu tosta intistä. Kokeileppa vaihtaa se sellaiseksi kuin 'float'. Itellä ainakin lähti sit toimimaa :)
Syy (luulisin): Int = Integer = Kokonaisluku.
EDIT: ainiijoo, mut tossahan voit lisätä vain yhden desimaalin, nii jotta voit lisätä useampia, sen pitäs olla esim. string, merkkijono siis. Eihän numerot ole merkkejä, tässä tapauksessa pisteitä :)
Cc kirjoitti:
Juuh en ole kovin hyvä noiden yhdyssanojen kanssa =)
Sitten kannattaa vilkaista jotakin suomen kielen oppikirjaa. On todella paljon miellyttävämpää lukea kieliopillisesti oikein kirjoitettua kuin kielioppivirheitä vilisevää tekstiä.
olen saannut ratkaistua stringien avulla tuon ongelmani, mutta törmäsin uuteen ongelmaan, miten tuota tallenna funktiota pitäisi muokata, että se ei tallentaisi uutta merkkijonoa vanhan merkkijonon päälle vaan siirtäisi vanhan/vanhat merkkijonot yhden alaspäin ja laittaisi ylimmäksi uusimman merkkijonon?
Lukemalla koko tiedoston muistiin, tyhjentämällä sen, kirjoittamalla uuden rivin ensimmäiseksi ja nuo alussa luetut sen perään.
Joo, hölmöläisten hommaa, laita suosiolla viimeiseksi. Viimeiseksi sen saa avaamalla tiedoston append-moodissa (writen sijaan) ja kirjoittamalla ihan tavallisesti.
kiitos kaikille sain toimimaan...
Aihe on jo aika vanha, joten et voi enää vastata siihen.