Luvuilla kyllä, merkeillä ei. Dynaamisuutta taulukoihin.

Olen opetellut c:tä tässä jonkin aikaa ja osaan tehdä dynaamisia taulukoita käyttäen inttiä ja doublea.

Nyt yritän tehdä ohjelman tynkää, jossa voisi kysyä käyttäjältä yksittäisiä merkkejä taulukkoon. Luettavien merkkien määrän haluaisin kysyä siis myös käyttäjältä. Eli ohjelma ensin kysyy minkä kokoinen taulukkotehdään, sitten kysellään yksittäisiä merkkejä taulukko täyteen.

No tämän kaltaisen ohjelman osaan tehdä käyttäen lukuja, mutta en onnistu merkeillä millään?

Alla koodini jolla tehdään haluttu temppu doubleilla, eli mitä ihmettä pitäis tehdä että onnistuis chareilla?

[code]
#include
#include

int main(void)
{
   double *taulukko;
   int koko;
   int i;

printf("Mikas kokoinen taulukko tehdaan ?\n");
scanf("%d",&koko);


taulukko =(double *) malloc( koko*sizeof(double));
   for(i=0;i
6391
Äänestä

Muut lukivat myös

Vastaukset 6

Vanhimmat

Ongelmanasi on se, että terminaalit toimivat yleensä ns. rivimoodissa, eli syövät syötteen vasta kun rivinvaihto ilmaantuu. Pointtina on se, että pitää mennä muokkaamaan terminaalin asetuksia. Alla on kekeilematon koodi.



#include
#include

#include

int main(void)
{
char *taulukko;
int koko;
int i;
struct termios mun_term;


printf("Mikas kokoinen taulukko tehdaan ?\n");
fscanf(stdin,"%d",&koko);

tcgetattr(0,&mun_term);

mun_term.c_lflag &= (~ICANON);
mun_term.c_cc[VTIME] = 0;
mun_term.c_cc[VMIN] = 1;

tcsetattr(0,TCSANOW,&mun_term);
getc(stdin);

taulukko =(char *) malloc( koko*sizeof(char));
for(i=0;i

Äänestä
  • Ei taida sisältyä ihan joka kirjastoon tuo termios.
    Ei helpompaa keinoa olisi?

    Tämän verran olen itse saanut aikaiseksi, muttei toimi oikein. Ohjelma kysyy taulukonkoon, mutta silmukassa kysyy vain yhden merkin ja nakkaa ulos.
    Eli missä mättää?

    [code]
    #include
    #include

    int main(void)
    {

       

       char *taulukko;
       int koko;
       int i;

       printf("Mikas kokoinen taulukko tehdaan ?\n");
       scanf("%d",&koko);

    //mallocilla saadaan koko halutun laiseksi!
    taulukko =(char *) malloc( koko * sizeof(char));
       for(i=0;i

    Äänestä

  • kaisa kirjoitti:

    Ei taida sisältyä ihan joka kirjastoon tuo termios.
    Ei helpompaa keinoa olisi?

    Tämän verran olen itse saanut aikaiseksi, muttei toimi oikein. Ohjelma kysyy taulukonkoon, mutta silmukassa kysyy vain yhden merkin ja nakkaa ulos.
    Eli missä mättää?

    [code]
    #include
    #include

    int main(void)
    {

       

       char *taulukko;
       int koko;
       int i;

       printf("Mikas kokoinen taulukko tehdaan ?\n");
       scanf("%d",&koko);

    //mallocilla saadaan koko halutun laiseksi!
    taulukko =(char *) malloc( koko * sizeof(char));
       for(i=0;i

    #include
    #include

    int main(void)
    {



    char *taulukko;
    int koko;
    int i;
    char merkki;

    printf("Mikas kokoinen taulukko tehdaan ?\n");
    scanf("%d",&koko);

    //mallocilla saadaan koko halutun laiseksi!
    // tarviiko tuo ton sizeof(char"*")??? en o warma
    // koko scanf on ihan perseestä...DDD
    taulukko =(char*)malloc( koko * sizeof(char*));
    for(i=0;i

    Äänestä

  • TSwiGH kirjoitti:

    #include
    #include

    int main(void)
    {



    char *taulukko;
    int koko;
    int i;
    char merkki;

    printf("Mikas kokoinen taulukko tehdaan ?\n");
    scanf("%d",&koko);

    //mallocilla saadaan koko halutun laiseksi!
    // tarviiko tuo ton sizeof(char"*")??? en o warma
    // koko scanf on ihan perseestä...DDD
    taulukko =(char*)malloc( koko * sizeof(char*));
    for(i=0;i

    ja tietysti tuon viimesen scanf("%d",&koko);
    tilalle ---> free(taulukko);

    Äänestä

  • TSwiGH kirjoitti:

    #include
    #include

    int main(void)
    {



    char *taulukko;
    int koko;
    int i;
    char merkki;

    printf("Mikas kokoinen taulukko tehdaan ?\n");
    scanf("%d",&koko);

    //mallocilla saadaan koko halutun laiseksi!
    // tarviiko tuo ton sizeof(char"*")??? en o warma
    // koko scanf on ihan perseestä...DDD
    taulukko =(char*)malloc( koko * sizeof(char*));
    for(i=0;i

    Muutama seikka, jotka osuivat silmään. En ole varma, onko tossa vaan typo mutta:

    char *taulukko;
    ...
    taulukko =(char*)malloc( koko * sizeof(char*));

    Varataan tilaa koko * sizeof(char*), ja char* on
    pointeri eli 32-bittisellä alustalla 4-tavua kun taas char on aina tavun mittainen.

    Toinen, juttu:
    char merkki;
    ...
    scanf("%s", &merkki);

    Toi scanf pistää perään '\0':n ja kun tohon ei mahdu kun yks tavu niin tossa käy vielä huonosti. Ja kuten jo todettiin scanf() on kyllä ihan perseestä ;) mutta sattuu olemaan (valitettavasti) standardi tapa tehdä tuollaisia.

    Äänestä

  • kaisa kirjoitti:

    Ei taida sisältyä ihan joka kirjastoon tuo termios.
    Ei helpompaa keinoa olisi?

    Tämän verran olen itse saanut aikaiseksi, muttei toimi oikein. Ohjelma kysyy taulukonkoon, mutta silmukassa kysyy vain yhden merkin ja nakkaa ulos.
    Eli missä mättää?

    [code]
    #include
    #include

    int main(void)
    {

       

       char *taulukko;
       int koko;
       int i;

       printf("Mikas kokoinen taulukko tehdaan ?\n");
       scanf("%d",&koko);

    //mallocilla saadaan koko halutun laiseksi!
    taulukko =(char *) malloc( koko * sizeof(char));
       for(i=0;i

    #include
    #include

    int main(void)
    {
    char *taulukko;
    int koko;
    int i;
    char foo;

    printf("Mikas kokoinen taulukko tehdaan ?\n");
    scanf("%d%c",&koko, &foo);

    taulukko =(char *) malloc( koko*sizeof(char));
    for(i=0;i

    Äänestä

Kommentoi aloitusta


Kaisa kirjoitti:

Olen opetellut c:tä tässä jonkin aikaa ja osaan tehdä dynaamisia taulukoita käyttäen inttiä ja doublea.

Nyt yritän tehdä ohjelman tynkää, jossa voisi kysyä käyttäjältä yksittäisiä merkkejä taulukkoon. Luettavien merkkien määrän haluaisin kysyä siis myös käyttäjältä. Eli ohjelma ensin kysyy minkä kokoinen taulukkotehdään, sitten kysellään yksittäisiä merkkejä taulukko täyteen.

No tämän kaltaisen ohjelman osaan tehdä käyttäen lukuja, mutta en onnistu merkeillä millään?

Alla koodini jolla tehdään haluttu temppu doubleilla, eli mitä ihmettä pitäis tehdä että onnistuis chareilla?

[code]
#include
#include

int main(void)
{
   double *taulukko;
   int koko;
   int i;

printf("Mikas kokoinen taulukko tehdaan ?\n");
scanf("%d",&koko);


taulukko =(double *) malloc( koko*sizeof(double));
   for(i=0;i

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu