Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Merkkijonon tallennus tiedostoon (C)

Plasmidi [01.10.2007 12:43:32]

#

Yritän tehdä ohjelmaa, joka kysyy etu- ja sukunimen ja tallentaa koko nimen tiedostoon. Millä funktiolla tallennetaan merkkijonoja tiedostoon?

jlaire [01.10.2007 12:50:37]

#

fprintf
https://www.ohjelmointiputka.net/oppaat/opas.php?tunnus=cohj_4#tiedostojenkasittely

Edit:
Jep. :-)

K_L [01.10.2007 12:51:24]

#

http://www.cprogramming.com/tutorial/cfileio.html


Edit:
meh... kerkesit ensin :D

Plasmidi [01.10.2007 13:49:47]

#

#include <stdio.h>

int main() {

FILE *tiedosto;
char etunimi[15], sukunimi[20];
char tiedoston_nimi[8][3];

printf("Ohjelma tallentaa etunimesi ja sukunimesi tiedostoon. \n");

printf("Syötä etunimesi:");
scanf("%s", &etunimi[0]);

printf("Syötä sukunimesi:");
scanf("%s", &sukunimi[0]);

printf("Tiedosto johon haluat tallentaa nimesi:");
scanf("%s", &tiedoston_nimi[0][0]);

tiedosto = fopen("tiedoston_nimi", "w");

fprintf(tiedosto," %s %s ", etunimi, sukunimi);

fclose(tiedosto);

printf("\nTallennus onnistui! \n");

return 0;
}

Olen tehnyt tuollaisen koodin, tekstit tulevat oikein, mutta nimi ei tallennu tiedostoon. Mitä vikoja tuossa on ?

hunajavohveli [01.10.2007 14:04:00]

#

Minulla nuo tallentuvat molemmat tiedostoon nimeltä "tiedoston_nimi". Ota fopenin ensimmäisestä parametristä lainausmerkit pois. Miksi muuten tiedoston_nimi on kaksiulotteinen?

progo [01.10.2007 14:05:55]

#

Avaat tuossa "tiedoston_nimi" -nimisen tiedoston, ehkäpä otat sulkeet pois. Samoiten "char tiedoston_nimi[8][3]" on vähän väärin ajateltu, epäilemättä haluat ajatella että tiedostossa on 8 merkkiä ja sitten kolmen merkin pääte, mutta tuossa määrittelet kaksiulotteisen taulukon (käytännössä siis merkkijonotaulukon tässä). Ehkäpä "char tiedoston_nimi[8+3+1]" (tiedostonimessä on myös piste) olisi parempi, joskin nykykäyttöjärjestelmissä tuo 8+3 merkkiä käy aika pieneksi.

Plasmidi [01.10.2007 14:16:11]

#

Kiitoksia taas kaikille avusta sain ohjelman toimimaan.

Vastaus

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

Tietoa sivustosta