Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537

    [C] Problema con scanf e vettori di caratteri

    Ragazzi ho un problema con la funzione scanf che utilizzo per inizializzare un vettore bidimensionale di caratteri ma il mio caro compilatore mi sputa in faccia.
    Vi posto il sorgente :
    Codice PHP:
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argcchar *argv[])
    {
      
      const 
    int m 34;
      
    int kxy;
      
    char matrice[m][n], c;
      
      
    printf("Scrivi prima il numero poi il carattere\n");
      
    scanf("%d %c", &k, &c);
      
      
    printf("Scrivi l'array di 12 elementi\n");
      
      for (
    0m; ++x)
      {
        for(
    0n; ++y)
        {
          
    scanf("%c", &matrice[x][y]);
        }  
      }
      
      
    system("PAUSE");    
      return 
    0;

    Però dal dos riesco solo ad immettere 6 caratteri perchè accade?
    Il ciclo dovrebbe fare 12 volte ma lo fa solo sei volte chimando autometicamente scanf solo 6 volte

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dopo ogni scanf scrivi

    fflush(stdin);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    A che serve fflush(stdin);????

  4. #4
    Serve a pulire il buffer di input.
    Perchè ? Perchè se qualche newline rimane nel buffer, al ciclo successivo la scanf si troverà subito il carattere di newline e allora saltera al ciclo successivo (le funzioni di input "bufferizzate" leggono fino al carattere newline).
    Di solito fflush(stdin) funziona, ma è sbagliato; perchè fflush è solo per buffer di ouput.
    Il perchè:
    http://faq.cprogramming.com/cgi-bin/...&id=1043284351

    Al posto di fflush(stdin) puoi usare:
    codice:
    while(getchar() != '\n');
    Leggi qua:
    http://faq.cprogramming.com/cgi-bin/...&id=1043284392


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.