[ Lexx @ 12.11.2005. 15:28 ] @
Imam seminarski rad iz informatike predati u školi ovaj tjedan. Pisao sam jedan prijateljici, no isti sam problem sa tim getsom riješio tako da sam jednostavno rekao da kada piše ime proizvoda (tribalo joj je samo dvije riječi maksimalno) stavi _ između riječi i onda sam sa primjer - scanf("%s", &naziv); skupljao podatak pa bi to ispalo recimo Cokolada_Milka. No ja imam filmsku enciklopediju i treba mi gets za učitavanje sinopsisa, a glupo bi izgledalo da između svake riječi bude _. E sada, dosjetio sam se da probam izbjeći direktan gets u switch/case-u tako da kada pozove slučaj za učitavanje ode u funkciju za učitavanje. No opet gets ne radi. Kada istu funkciju pozovem prije switch/case u glavnom programu sve radi.

Može li se niz znakova kojom drugom funkcijom učitavati osim gets, pa da taj nesretni gets izbjegnem?

E da, nisam rekao da program ne blokira ili nešto slično, već se ponaša kao da tog getsa nema. Treba li možda nešto dodatno deklarirati kada se gets koristi u switch/case ili što?

Hvala.

[Ovu poruku je menjao Lexx dana 12.11.2005. u 16:29 GMT+1]
[ NrmMyth @ 12.11.2005. 19:49 ] @
Pa moram ti reci da nisam puno shvatio o tvom problemu iz posta.
[ X Files @ 12.11.2005. 21:23 ] @
Kada kazes da nesto ne radi - to nista ne govori o problemu niti ga potvrdjuje.

Moras dati primer... Pokazi barem minimalan kod u kome gets() ne radi u switch/case.

Ja ipak mislim da u tvome kodu nesto nedostaje, a to je:

Code:

fflush( stdin );


generalno, problem kod ulaza kod konzolnih programa je u tome sto ENTER (RETURN)
koji si pritisnuo da prihvatis JEDAN upis, moze biti ulazni podatak za neki drugi
upis. fflush() je tzv. gutac RETURN-a i ponekad ga je potrebno staviti na pamentno
mesto.

Evo ti jedan blentav primer, pa probaj sa njime i bez njega (fflush-a).



Code:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
   char text[1000];
   int x;

   printf( "upisi broj:" );
   scanf ( "%d", &x );

   fflush( stdin );

   switch ( x )
   {
      case 0:
         printf( "upisi tekst:" );
         gets( text );
         break;

      default:
         printf( "upisi tekst:" );
         gets( text );
         break;
   }

   printf( "%s\n", text );

   system( "PAUSE" );
   return 0;
}
[ Lexx @ 12.11.2005. 23:09 ] @
fflush je riješio problem, hvala... ;-)