Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 55
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C] Getchar

    la funzione di output sembra funzionare, è l'input con il doppio ciclo for a dare problemi
    codice:
    #include <stdio.h>
    
    char array[6][6];
    int i , j;
    
    for (i=0; i<6; i++){
            printf ("inserisci stirnga %d \n", (i+1));
    			
    		for (j=0; j<6; j++){
    					array[i][j]=getchar();
    					}
    	 printf("\n");
    	}
    
    for (i=0; i<6; i++){
    		for (j=0; j<6; j++){
    			printf ("%s", array[i][j]);
    		}
    	}
    
    }
    grazie

  2. #2
    Ecco come si conviene fare:
    codice:
    #include <conio.h>
    #include <stdio.h>
    
    int main ()
    {
       char array[6][6];
       int i , j;
    
       for (i=0; i<6; i++)
          {
          printf ("inserisci stirnga %d \n", (i+1));
    	  
          for (j=0; j<6; j++)
             array[i][j]=getchar();
     	  printf("\n");
     	  
     	  fflush (stdin);
    	  }
    
       for (i=0; i<6; i++)
          {
          for (j=0; j<6; j++)
             printf ("%c", array[i][j]);
          printf ("\n");   
          }   
       printf ("\n\nPremere un tasto per terminare ...");
       getchar ();
       return 0;
    }
    Experience is what you get when you don’t get what you want

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    @ Xaratroom


    il problema rimane, in input lavora male il codice e non si capisce il perchè si debba premere un sacco di invio.
    inoltre fflush se non erro si usa con le scanf in quanto se scrivo "de rossi", mi prende solo "de" e il "rossi" altirmenti rimarrebbe nello stack, ma in questo caso non credo sia quello il problema, abbiamo una getchar quindi non abbiamo il problema delgi spazi.
    inoltre ho provato il codice nuovo ma non funge

    non ci capisco più niente

  4. #4
    Strano, a me funziona correttamente (sa la tolgo mi salta le letture) ...
    fflush è usata con stream in generale e non solo con scanf ...
    Experience is what you get when you don’t get what you want

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Scusa ... ma prima di correggere il codice ... cosa dovrebbe fare?

    Perche' usi la getchar?

  6. #6
    non e' ke devi premere 6 volte invio?

    prova a mettere un char per riga (lo so sara' lunga)

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    in teoria dovrebbe chiedere all'utende 6 stringhe di al massimo 6 lettere, il problema sorge credo perchè non metto un while del tipo
    while (array[i][j]=getchar())!='\n')

    solo che non so dove metterlo e come.

    senza questo while non posso inserire meno di 6 caratteri.

    (lo so che si potrebbe fare con una scanf , ma vorrei imparare bene la getchar )

  8. #8
    Come funziona a voi ?
    Perchè a me funziona correttamente e "richiede" solo un invio per stringa ?
    Immagini allegate Immagini allegate
    Experience is what you get when you don’t get what you want

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ho provato così, non funge ma deve essere vicina alla soluzione
    codice:
    #include <conio.h>
    #include <stdio.h>
    
    int main ()
    {
       char array[6][6];
       int i , j;
    
       for (i=0; i<6; i++)
          {
          printf ("inserisci stirnga %d \n", (i+1));
    	  
          for (j=0; j<6; j++)
             array[i][j]=getchar();
     	  printf("\n");
     	  
     	  fflush (stdin);
    	  }
    
       for (i=0; i<6; i++)
          {
          for (j=0; j<6; j++)
             printf ("%c", array[i][j]);
          printf ("\n");   
          }   
       printf ("\n\nPremere un tasto per terminare ...");
       getchar ();
       return 0;
    }
    non mi sembra funzioni il tuo codice, in quanto se inserisci meno di sei caratteri devi premere tanti invio quanti caratteri mancano a raggiungere il sesto, guarda qui che corrispondenza fra numero di caratteri e spazi dovuti all'invio

  10. #10
    codice:
    	char array[6][6];
    	int i, j;
    
    	for( i=0; i<6; i++)
    	{
    		printf("inserisci stringa %d : ", (i+1));
    
    		j=0;
    		do
    			array[i][j]=getchar();
    		while( j<6 && array[i][j++]!='\n');
    
    		/* Elimino eventuali caratteri in più */
    		while( array[i][j-1]!='\n' && getchar() !='\n');
    		/* Aggiungo il terminatore di stringa */
    		array[i][j-1]=0;
    	}
    
    	for( i=0; i<6; i++)
    		printf ("'%s'\n", &array[i][0]);
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.