Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C-koodini ei käänny

sleepout [12.03.2018 13:28:25]

#

Moikka moi...

Minä olen tässä kokeillut C-ohjelmointia ja keksin seuraavanlaisen koodin. Tarkoitus olisi luoda tiedosto, johon sitten teksti "moikka!". Tämän jälkeen suljen tiedoston.. Laitanko virheilmoitukset alle vielä, vai onko tämä ihan simppeli juttu...

#include <stdlib.h>

main()
{
  char = a,tiedosto;

  a = "moikka!";

  tiedosto = fopen(jotain.txt, "w");
  fprintf(tiedosto, a);

  fclose();


}

Grez [12.03.2018 14:27:26]

#

Onhan tuossa jonkun verran korjattavaa.

Ilmeisesti rivillä char = a,tiedosto; on tarkoituksena esitellä muuttujat a ja tiedosto. Esittelyssä ei kuitenkaan käytetä = -merkkiä ja a:n pitäisi olla tyypiltään char * ja tiedoston pitäisi olla tyypiltään FILE *

Merkkijonot täytyy laittaa lainausmerkkeihin (tuo tiedostonimi jotain.txt)

Lisäksi tarvitset stdio.h

fcloselle pitää kertoa minkä tiedoston haluat sulkea.

Eli tässä korjattuna:

#include <stdlib.h>
#include <stdio.h>
main()
{
  char * a;
  FILE * tiedosto;

  a = "moikka!";

  tiedosto = fopen("jotain.txt", "w");
  fprintf(tiedosto, a);

  fclose(tiedosto);
}

sleepout [13.03.2018 15:36:54]

#

Mitä "FILE" tarkoittaa? Entä miks muuttujat ilmoitetaan *-merkillä?

Grez [13.03.2018 16:03:35]

#

Muuttujia ei lähtökohtaisesti ilmoiteta * merkillä, vaan * tarkoittaa että kyseessä on osoitin.

Eli esim. char a tarkoittaisi että muistipaikassa a on yksi merkki. char * a taas tarkoittaa, että muistipaikassa a on osoitin muistiin, josta voi löytyä yksi tai useampi char.

FILE on tietotyyppi, joka on määritelty tuolla stdio.h:ssa. Erinäiset stdio.h:ssa määritellyt funktiot, kuten fopen, fprintf ja fclose käyttävät tuota kyseistä tietotyyppiä.

Mitem olisi jonkun C-oppaan lukeminen? Jos kysyt jokaisen asian erikseen niin menee aika paljon aikaa sulta ja vastaajilta :D

Vastaus

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

Tietoa sivustosta