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?
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?
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...
No... täytyy kai sitten kehitellä jokin muu tapa. Ja toi oli ihan vaan kokeilu joo.
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.
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...
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; }
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.