Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tekstitiedoston tallennus

Sivun loppuun

Monkkats [16.11.2003 22:18:53]

#

Eli miten sais C++:lla tehtyä ohjelman joka tekis/tallentais uuden tekstitiedoston jossa lukis vaikka esimerkki?

tomaattigeeni [16.11.2003 22:24:33]

#

striimeillä onnistuu näppärästi, mukaan menoon tarvitaan fstream.h

void tallenna(char *hakemisto)
{
  ofstream file(hakemisto);
  if(file.is_open())
    {
      file << "tallennetaan tää teksti\n"; // \n rivivaihto luonnollisesti
      file.close();
    }
  else printf("bugibugii");
}

funktion kutsuminen tapahtuu simppelisti:

tallenna("tiedostonnim.mi");

Monkkats [16.11.2003 22:36:38]

#

Toi ei oikee toimi mul, mut se saattaa johtuu siitäki, että alottelen vast C++:ssaa.

Mul tulee tollaset errorit:

e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(5) : error C2065: 'tallenna' : undeclared identifier
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(5) : warning C4129: 'm' : unrecognized character escape sequence
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(9) : error C2373: 'tallenna' : redefinition; different type modifiers
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(10) : error C2065: 'ofstream' : undeclared identifier
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(10) : error C2146: syntax error : missing ';' before identifier 'file'
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(10) : error C2065: 'file' : undeclared identifier
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(11) : error C2228: left of '.is_open' must have class/struct/union type
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(13) : error C2297: '<<' : illegal, right operand has type 'char [25]'
e:\joni\cpp jutut\tekstitiedoston tallennus\cpp1.cpp(14) : error C2228: left of '.close' must have class/struct/union type
Error executing cl.exe.

Cpp1.exe - 8 error(s), 1 warning(s)

Ja laitoin ton lähdetekstit tollee:

#include <iostream.h>

void main()
{
	tallenna("c:\moi.txt");
}

void tallenna(char *hakemisto)
{
  ofstream file(hakemisto);
  if(file.is_open())
    {
      file << "tallennetaan tää teksti\n"; // \n rivivaihto luonnollisesti
      file.close();
    }
  else printf("bugibugii");
}

thefox [16.11.2003 23:55:25]

#

Taas huomataan että poika-paralla ei ole C++:n perusteet hallussa ei sitten ollenkaan.

Tarvitset fstreamin (fstream / fstream.h) ja stdion (cstdio / stdio.h) iostreamilla et mitään tee? Lisäksi tiedostopolussa oleva kenoviiva tulee eskeipata eli korvata kahdella kenoviivalla. Kaiken lisäksi olet unohtanut määritellä tallena-funktion ennen kuin kutsut sitä.

Käytä kooditageja.

arcatan [17.11.2003 12:14:32]

#

Koska on tylsää, niin heitänpä vielä "oikean koodin" kehiin yllä olevien viestien perusteella. En pääse testaamaan sitä nyt juuri kylläkään. :/

#include <fstream>
#include <cstdio>

void tallenna(char *hakemisto);

void main()
{
  tallenna("c:\\moi.txt");
}

void tallenna(char *hakemisto)
{
  ofstream file(hakemisto);
  if(file.is_open())
  {
    file << "tallennetaan tää teksti\n"; // \n rivivaihto luonnollisesti
    file.close();
  }
  else printf("bugibugii");
}

thefox [17.11.2003 14:30:09]

#

Unohtui tuosta vielä "using namespace std;" :-)

Meitsi [17.11.2003 15:11:57]

#

Millä voi lukee filun sisällön muuttujaan? Onks se näin:

char manimani [] = "";
file >> manimani;
printf("Sul on manii: ");
printf(mani);
printf("egee.");

Ton heitin hatusta kun en pääse koklaamaan juuri nyt.
Mitäpä jos ei tiedäkkään missä jokin filu siaitsee (siis esim käyttäjän koneella), niin voiks sen hakemistopolun hakee vaikka rekisteriavaimesta ja mitenköhän semmonen onnistuu. Rekkiavaimen luonti? Miten hä? [Oon alottelija]

thefox [17.11.2003 21:45:43]

#

int mani;
file >> mani;
printf("sul on manii: %d", foo);

Noinhan se yleensä taitaa hoitua.

Rekisterin hänpläys Windows-ympäristössä menee Reg*-API-kutsuilla eli mm: RegOpenKeyEx (avaa), RegQueryValueEx (lue), RegSetValueEx (kirjoita), RegCloseKey (sulje).
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_functions.asp

Ainakin VB:lle taitaa putkastakin löytyä monenlaista esimerkkiä rekisterin käytöstä. Soveltamalla niitä homma kääntynee C++:lle suhteellisen luonnollisesti.

Meitsi [18.11.2003 11:16:32]

#

Juu kiitti! Tost on hyötyy!

Monkkats [18.11.2003 15:53:27]

#

Kiitti, sain vihdoinki toimii :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta