Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Taulukko merkkijonoksi

Triton [11.11.2008 00:42:36]

#

PHP:ssä ainakin voi suorittaa kyseisen operaation, mutta onnistuuko C:llä?

Grez [11.11.2008 00:44:11]

#

Onnistuu toki. PHP:ssä on parisenkymmentä tapaa muuttaa taulukko merkkijonoksi. Mitäköhän niistä tarkoitat?

Triton [11.11.2008 00:49:59]

#

Ongelma on sellainen, että funktion pitäisi palauttaa useita taulukon arvoja, joten ajattelin, että jos funktiossa muutettaisiin taulukko ensin merkkijonoksi ja vasta sitten palautettaisiin tämä merkkijono. Jos tuohon taulukon palautukseen löytyy muitakin keinoja, niin kerro toki.

Laitinen [11.11.2008 01:00:31]

#

Häh? C:ssä merkkijono on char-taulukko.

hunajavohveli [11.11.2008 09:56:47]

#

Triton kirjoitti:

funktiossa muutettaisiin taulukko ensin merkkijonoksi ja vasta sitten palautettaisiin tämä merkkijono.

C:ssä funktio ei voi palauttaa kokonaista merkkijonoa, ainoastaan osoittimen merkkijonon alkuun. Vastaavalla tavalla voisit palauttaa myös osoittimen suoraan alkuperäisen taulukon alkuun, joten muunnos merkkijonoksi palauttamista varten olisi tarpeeton. Selitätkö tarkalleen, mitä olet tekemässä? Merkkijonot, taulukot yms. toimivat C:ssä hyvin eri tavalla kuin PHP:ssä.

Antti Laaksonen [11.11.2008 11:37:38]

#

Funktio voi palauttaa monta arvoa niin, että funktiolle annetaan parametrina jossain toisaalla määritellyn taulukon osoite muistissa ja funktio voi tehdä siihen haluamansa muutokset, esim. täyttää sen luvuilla.

Seuraavassa esimerkissä funktio kirjoittaa taulukkoon luvut 0–n.

#include <stdio.h>

// taulu[] = osoitin taulukkoon
// n       = taulukon alkioiden määrä
void luvut(int taulu[], int n) {
    int i;
    for (i = 0; i < n; i++) {
        taulu[i] = i;
    }
}

int main(void) {
    int taulu[10];
    luvut(taulu, 10);
    // nyt: taulu[0] = 0, taulu[1] = 1, jne.
    printf("%i\n", taulu[5]);
    return 0;
}

Vastaus

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

Tietoa sivustosta