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
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
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
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
ja tietysti tuon viimesen scanf("%d",&koko);
tilalle ---> free(taulukko);
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.
#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