Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    68

    [C++] gets e scanf

    ho risolto i problemi degli spazi nei char usando gets, ma se per esempio prima avevo già usato scanf gets nn me lo prende,es:

    int n_autori;
    printf("Inserisci il numero di autori del libro ");
    scanf("%d",&n_autori);
    autori=new CAutore*[n_autori];
    for (int i=0; i<n_autori; i++){
    autori[i] = new CAutore;
    char* codice;
    printf("Inserisci ISBN libro ");
    codice = new char[13];
    gets(codice);
    }

    compare inserisci ISBN ma subito press any key to continue e nn me lo fa inserire, se invece al posto della scanf per un intero metto una gets per una stringa funziona perfettamente ma come vedete ho bisogno di quell'intero per il ciclo,come posso fare??

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Non si capisce effettivamente qual e' il problema.

    Fai riferimento ad un thread precedente (che non ho letto e che non e' detto che tutti conoscano).

    Non si comprende se il problema e' con il primo scanf e cosa c'entri "l'intero per il ciclo" ...

  3. #3
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Uhmm...di C sono un po' arrugginita ma...non è che centra il solito problema del buffer di input? Cioè tipo tu inserisci "1" e premi enter, la scanf si prende l'1 poi arrivi alla gets che legge l'enter e poi il ciclo termina? è questo che intendevi dire?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    68
    volevo dire che se prima uso la scanf all'interno dello stesso codice dopo la gets nn mi funziona,nn mi fa neanche inserire il valore che dovrebbe scrivere sulla stringa e compare subito press any key to continue
    perchè la gets funzioni e mi scriva sulla stringa bisogna che anche prima ci siano solo gets, se invece ci sono scanf o cin >> nn funziona...spero abbiate capito

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    231

    bisogna svuotare il buffer di imput

    devi svuotare il buffer di input prima di fare gets

    mi pare che il comando sia:

    fflush(stdin);

    o qualcosa del genere cerca su un manuale per essere preciso

    ciao

    marco

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.