Visualizzazione dei risultati da 1 a 7 su 7

Discussione: programma c strano

  1. #1

    programma c strano

    potete spiegarmi perchè questo codice

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

    main()
    {
    int numero;
    char inizialenome;

    printf("Inserire un numero: ");
    scanf("%d", &numero);

    printf("Inserire l'iniziale del tuo nome: ");
    scanf("%s", &inizialenome);

    printf("Il tuo numero e': %d\nE il tuo nome inizia per %c\n\n", numero, inizialenome);

    system("pause");
    }


    mi modifica il valore di "numero" dopo la seconda scanf? grazie

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Re: programma c strano

    Originariamente inviato da mari87
    potete spiegarmi perchè questo codice
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    main()
    {
          int numero;
          char inizialenome;
          
          printf("Inserire un numero: ");
          scanf("%d", &numero);
          
          printf("Inserire l'iniziale del tuo nome: ");
          scanf("%c ", &inizialenome);
          
          printf("Il tuo numero e': %d\nE il tuo nome inizia per %c\n\n", numero, inizialenome);
        
          system("pause");
    }

    mi modifica il valore di "numero" dopo la seconda scanf? grazie
    prova come modificato nel quote, cmq cosa intendi con modica del valore?
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  3. #3
    mi modifica il valore perchè qualunque numero inserisci dopo visualizza zero...

  4. #4
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    a me funziona,cmq avevo sbagliato a correggere la scanf del carattere va bene %s
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Metflar
    a me funziona,cmq avevo sbagliato a correggere la scanf del carattere va bene %s
    No ... % s non va affatto bene dato che la variabile inizialenome non e' una stringa e con %s verrebbe inserito il terminatore null che andrebbe a "sporcare" lo stack (e quindi il valore dell'altra variabile, come in effetti succede).

    E' necessario usare %c e un getchar() per eliminare il new line dalla prima scanf, ovvero

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
          int numero;
          char inizialenome;
          
          printf("Inserire un numero: ");
          scanf("%d", &numero);
          getchar();
    
          printf("Inserire l'iniziale del tuo nome: ");
          scanf("%c", &inizialenome);
          
          printf("Il tuo numero e': %d\nE il tuo nome inizia per %c\n\n", numero, inizialenome);
        
          system("pause");
    
          return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da oregon
    No ... % s non va affatto bene dato che la variabile inizialenome non e' una stringa e con %s verrebbe inserito il terminatore null che andrebbe a "sporcare" lo stack (e quindi il valore dell'altra variabile, come in effetti succede).

    E' necessario usare %c e un getchar() per eliminare il new line dalla prima scanf, ovvero

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    {
          int numero;
          char inizialenome;
          
          printf("Inserire un numero: ");
          scanf("%d", &numero);
          getchar();
    
          printf("Inserire l'iniziale del tuo nome: ");
          scanf("%c", &inizialenome);
          
          printf("Il tuo numero e': %d\nE il tuo nome inizia per %c\n\n", numero, inizialenome);
        
          system("pause");
    
          return 0;
    }
    infatti sembrava strano che nn andava bene mi ero scordato del new line
    conoscenze: C/C++, Java, PHP, Python
    [No PM tecnici o di qualsiasi genere]

  7. #7
    grazie veramente quella è solo una porzione di programma ma mi stava facendo impazzire!

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.