Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: char-taulukko funktion palautusarvona

Sivun loppuun

Gaxx [15.05.2004 19:29:47]

#

Aina näitten charrien kanssa saa taistella! Pystyykö funktio palauttamaan char taulukon

Yritin tällaista:

#include <stdlib.h>
#include <stdio.h>

char ascii(int luku);

int main()
{
printf("%s", ascii(65));
system("PAUSE");
return 0;
}

char ascii(int luku)
{
char jono[10];
jono[0] = char(luku);
return jono;
}

... mutta ei toiminu :(

Eli miten tota pitää muutta vai pitääkö vittailla, osoitella ja tökkiä miten sattuu?

sqwiik [15.05.2004 19:32:52]

#

Taulukkoa ei pysty palauttamaan, vaan yksittäisiä arvoja/rakenteita/osoittimia.
Jos haluat koodisi toimimaan, kerro ensin mitä yritit sillä tehdä. Onko tuo int:n muuttamista stringiksi, vai ascii-arvon esillesaamiseen?

jcd3nton [15.05.2004 20:05:53]

#

Ehkäpä se on vain kokeilu että onnistuuko tuo merkkijonon palauttaminen? Itselläni ainakin tulee usein tarpeeseen tehdä funktio joka palauttaa merkkijonon... vaikkakaan ei C++:ssa mutta kyllä se tässäkin tulee eteen sitten kun jaksan enemmän C++:aa koodata...

Gaxx [15.05.2004 20:36:30]

#

No... täytyy kai sitten kehitellä jokin muu tapa. Ja toi oli ihan vaan kokeilu joo.

tejeez [15.05.2004 20:52:32]

#

char ascii(int luku)
{
char jono[10];
jono[0] = char(luku);
return jono;
}

Tuossahan on määritelty palautusarvoksi yksi char-luku, mutta returnilla yritetään palauttaa taulukko.

Edit: Korjasin pari typoa.

jcd3nton [15.05.2004 21:17:24]

#

tejeez: Ei kai sillä tässä vaiheessa niin kamalasti merkitystä ole? Eihän kokeilun tarvitse olla täydellinen. Pääasia että saadaan selville miten jokin asia ylipäätänsä onnistuu...

sqwiik [15.05.2004 22:12:38]

#

Tuo on pahimmanlaatuisia virheitä, joita C:ssä voi tehdä... palautat osoittimen paikallisen muuttujaan (jono[0]), ja siitä lukeminen kutsumisen jälkeen tuottaa tuskan toiseen potenssiin (tiedän enginestä...).
Uskon koodisi tarkoittavan ascii-koodin muuttamista merkiksi (esim. 31 = '0'). Käytä %c-merkintää tällöin :)
Oikeaoppisesti pitäisi laittaa funktioon muuttuja mukaan:

int main(int argc, char ** args){
char str[10];
  printf("%s", ascii(63, str));
  return 0;
}

char * ascii(int asc, char * jono){
  sprintf(jono, "%c", asc); //kirjoitetaan ascii-merkki tekstiin
  return jono;
}

Gaxx [16.05.2004 10:05:31]

#

Joo tota mulla ei oo viä ihan hallussa noi osoittimet ja viittaukset eli en nyt ihan täysin ymmärtänyt mitä toi koodi tekee(siis mitä noi "*" merkit tossa tekee) mutta täytyy lukea kirjasta huolella kappale osoittimista ja viittauksista niin eiköhän ala selvitä. Uskoisin, että tämä selviää tästä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta