Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Programmazione C switch e problema
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
vincenzo2342
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 03/06/08 15:58
Messaggi: 124
Residenza: Trino

MessaggioInviato: 07 Lug 2014 15:23    Oggetto: Programmazione C switch e problema Rispondi citando

Salve, ho questo problema irrisolvibile (apparentemente).
Vi chiedo Perchè non funziona.

Il programma chiede di inserire N nome in rubrica (N=2 per comodità).
li inserisco (in run-time) e vedo che premendo R per ricercare un nome, quello IGNORA LA FUNZIONE FGETS (ho provato anche con GETS).
Incredibile!

Codice:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define N 2
#define M 50
int main()
{
    char rubrica [N][M];
    char t[M];
    int i,trovato;
    char comando;

printf("Riempi la rubrica...\n");

    for(i=0;i<N;i++)
    {
            gets(rubrica[i]);
    }


printf("hai inserito: %s\n%s", rubrica[0],rubrica[1]);
    printf("Inserisci il comando R/S/U: \n");
    comando = getchar();

    while(tolower(comando)!='u')
    {
        switch(tolower(comando))
        {
        case 's':
            for(i=0;i<N;i++)
            {

                    puts(rubrica[i]);
            }
             printf("\n");
             break;

        case 'r':
            printf("Nome? ");
            //gets(t);
            printf("\nDigita un maginifico nome: ");
            fgets(t, M, stdin);
            printf("\nNome digitato.");
            trovato=0;
            for(i=0;i<N && trovato==0; i++)
            {
                        if (strcmp(t,rubrica[i])==0)
                        {
                            printf("\n trovato...");
                            trovato=1;
                        }

            }
            if(trovato==0)
            {
                printf("\n non trovato");
            }

            break;

        default:
            printf("\n COMANDO ERRATO ");


        }


                scanf("%c",&comando);
    }



    return 0;
}



Grazie a chi troverà questo grosso bug..!
Top
Profilo Invia messaggio privato MSN
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 04 Lug 2015 16:16    Oggetto: Rispondi citando

sono un nababbo confronto a te però ho notato che rubrica è una matrice, quindi sei sicuro che vada bene,questo codice?
for(i=0;i<N;i++)
{
gets(rubrica[i]);
}
Top
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11559
Residenza: Tokelau

MessaggioInviato: 06 Lug 2015 10:42    Oggetto: Rispondi

se mescoli gets() e getchar() avrai sempre casini.
usa fflush() prima della getchar.
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi