Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434

    [C]do che non fa il suo dovere?!

    ho appena iniziato a programmare in C, e non riesco assolutamente a capire perchè questo semplice codice non funzioni come dovrebbe:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    int main()
    {
     char path[256];  
     char confirm;
     int i;
     do {
         printf ("Digitare il percorso del file: ");
         scanf ("%s",&path);
         printf ("Percorso digitato: %s\n", path);
         printf ("Percorso esatto? ");
         scanf ("%c",&confirm);
         } while (confirm == "y");
      system("pause");	
      return 0;
    }
    in poche parole il while considera confirm sempre uguale ad y, e dopo aver printato "Percorso esatto?", invece di aspettare che l'utente digiti qualcosa e prema invio, passa direttamente a system("pause"), perchè?

  2. #2
    io lo riscriverei così ma è una risposta al volo quella che ti dò quindi nn so!

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    int main()
    {
     char path[256];  
     char confirm = 'n';
     //int i;
     do {
         printf ("Digitare il percorso del file: ");
         scanf ("%s",&path);
         printf ("Percorso digitato: %s\n", path);
         printf ("Percorso esatto? ");
         scanf ("%c",&confirm);
         } while ((confirm == 'y')||(confirm == 'Y'));
      system("PAUSE");	
      return 0;
    }
    p.s. ho commentato l' i xkè nn so a cosa ti serva

  3. #3
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    no, niente da fare, l'i è un lascito di una prova con il for che avevo tentato

  4. #4

    Re: [C]do che non fa il suo dovere?!

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    
    int main(void) {
    
     char path[256];  
     char confirm = 'n';
     int i;
    
     do {
    
         printf ("Digitare il percorso del file: ");
         scanf ("%s",&path);
    
         printf ("Percorso digitato: %s\n", path);
    
         printf ("Percorso esatto? ");
         scanf ("%c", &confirm);
    
      } while (confirm == "y");
    
      system("pause");
      return 0;
    
    }

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Codice riveduto e corretto:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    
    int main(void) {
    
     char path[256];  
     char confirm = 'n';
     char temp;
     int i;
    
     do {
    
         printf ("Digitare il percorso del file: ");
         scanf ("%s",&path);
         temp = getchar();   // Si mangia il '\n' che rimane nel buffer di stdin
    
         printf ("Percorso digitato: %s\n", path);
    
         printf ("Percorso esatto? ");
         scanf ("%c", &confirm);
    
      } while (confirm == 'y');   // <-- Apici singoli e non doppi
    
      system("pause");
      return 0;
    
    }
    @menphisx: ti erano sfuggite due cose... La prima richiesta contiene un "\n" che rimane nel buffer di input e viene assegnato dalla successiva scanf() a "confirm"... poi stavi confrontando la stessa "confirm" con una stringa contenente "y".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    funzionaaa! grazie, i doppi apici, bè, te l'ho detto, ho appena iniziato (ieri), me l'ero dimenticato, poi c'era un errore logico, non doveva essere 'y' ma 'n', grazie

  7. #7
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    scusa, ma quel getchar non lo trovo nel mio manuale, di preciso dove è che deve essere messo?
    e, soprattutto, perchè?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    grazie
    @oregon: ma non stai anche su megalab.it tu?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.