Προς το περιεχόμενο

προβλημα με gets στη c


jimmysnn_17

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα!!Μήπως μπορεί να δει κανείς που είναι το λάθος στη case1 με τη gets() και δεν με αφήνει να εισάγω το string?

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

 

int main() {

int i;

//menu:

puts("To hmerologio mou:");

for(i=0;i<34;i++) printf("* ");

puts("");

puts("* 1. Epilogi imeras gia na grafei simeiwsh. *");

puts("* 2. Emfanisi simeiwshs mia sigkekrimenis imeras. *");

puts("* 3. Emfanisi olwn twn simeiwsewn tou imerologiou. *");

puts("* 4. Eksodos apo to imerologio mou. *");

for(i=0;i<34;i++) printf("* ");

puts("");

 

//main prog:

char cal[30][40];

int choise,day;

int len;

for(i=0;i<30;i++)

cal[0]='\0';

do {

puts("Dose ena arithmo:");

scanf("%d",&choise);

switch(choise) {

case 1:

puts("Dose mia imera:");

scanf("%d",&day);

puts("Dose tin simeiwsh:") ;

gets(cal[day]);

 

 

 

break;

case 2:

puts("Dose tin imera gia na emfanistei i antistoixh simeiwsh:");

scanf("%d",&day);

len=strlen(cal[day]);

 

if(len==0)

puts("Den iparxei simeiwsh gia tin sigkekrimeni mera");

else

puts(cal[day]);

break;

case 3:

for(i=0;i<30;i++){

if(strlen(cal)!=0) {

printf("Simeiwsh %dhs meras:\n",i+1);

puts(cal);

}

}

case 4:

break;

}

}while(choise!=4);

system("pause");

return 0;

Δημοσ.

γιατί αφού χρησιμοποιείς και στις άλλες scanf δεν χρησιμοποιείς και εκεί ?

 

 

>scanf("%s",cal[day]);

 

αυτό δουλεύει μια χαρά. Τώρα αν θες να χρησιμοποιήσεις το gets τότε θα πρέπει πριν την εντολή gets να βάλεις ένα getchar()

>getchar();
gets(cal[day]);

και θα είσαι μια χαρα!

 

Τώρα αυτό που συμβαίνει είναι ότι η gets "πιάνει" το enter που πάτησες πριν και για αυτό δεν σε αφήνει να περάσεις τιμή

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...