Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    3

    [C] Riempire array con numeri interi

    Ciao, sto cercando di imparare un pò di C. Sono davvero agli inizi e ho bisogno di un aiuto.
    Qui di seguito vi riporto il testo di un programmino per riempire un array con dei numeri interi:


    codice:
    #include <stdio.h>
    
    
    void inserisciArray (int array[], int n); //prototipo della funzione
    
    
    int main ()
    
    
    {
    
    
    int array[]={0,0,0,0,0};
    
    
    int i=0;
    
    
    inserisciArray (array,5);
    
    
    for (i=0;i<5;i++)
    
    
    {
    
    
    printf("%d\t",array[i]);
    
    
    }
    
    
    return 0;
    
    
    }
    
    
    void inserisciArray (int array[], int n) //scrivo la funzione
    
    
    {
    
    
    int i=0;
    
    
    for (i=0;i<n;i++)
    
    
    {
    
    
    printf("Inserisci un numero:\n");
    
    
    scanf("%d",&array[i]);
    
    
    }

    Questo programmino funziona perfettamente.
    Ora, voglio modificare il programmino in modo da poter riempire un array con dei caratteri ... e qui casca l'asino ... Io lo ho modificato come segue, ma ovviamente non funziona:


    codice:
    #include <stdio.h>
    
    
    void inserisciArray (char array[], int n); //prototipo della funzione
    
    
    int main ()
    
    
    {
    
    
    char array[]={0,0,0,0,0};
    
    
    int i=0;
    
    
    inserisciArray (array,5);
    
    
    for (i=0;i<5;i++)
    
    
    {
    
    
    printf("%c\t",array[i]);
    
    
    }
    
    
    return 0;
    
    
    }
    
    
    void inserisciArray (char array[], int n) //scrivo la funzione
    
    
    {
    
    
    int i=0;
    
    
    for (i=0;i<n;i++)
    
    
    {
    
    
    printf("Inserisci una lettera:\n");
    
    
    scanf("%c",&array[i]);
    
    
    }
    
    }

    Qualcuno mi aiuta a capire cosa sbaglio?!
    Grazie mille
    Ultima modifica di LeleFT; 17-09-2014 a 15:40 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il problema potrebbe essere nella scanf perché il buffer rimane sporco per l'uso del tasto invio.
    Dopo la scanf utilizza una linea

    while(getchar()!='\n');
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    3
    Grazie mille! Così funziona.

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Se non sbaglio (ora non ho tempo di provare) un'altra soluzione potrebbe essere quella di inserire uno spazio nella scanf, quindi

    codice:
    scanf(" %c", ...);

    E' giusto?

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da minomic Visualizza il messaggio
    Se non sbaglio (ora non ho tempo di provare) un'altra soluzione potrebbe essere quella di inserire uno spazio nella scanf, quindi

    codice:
    scanf(" %c", ...);

    E' giusto?
    Uno spazio rimuove qualsiasi blank. Se l'utente decidesse di inserire uno spazio la tua soluzione non funzionerebbe in quanto la rimozione non si fermerebbe a '\n'.
    Prova ad eseguire questo inserendo solamente degli spazi e te ne renderai conto
    codice:
    #include <stdio.h>
    
    int main(void) {
      char c;
      scanf("%c", &c);
      printf("Carattere [%c]\n", c);
      while(getchar()!='\n');
      scanf("%c", &c);
      printf("Carattere [%c]\n", c);
      scanf(" %c", &c);
      printf("Carattere [%c]\n", c);
      return 0;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.