Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    269

    [C] Ricevere in "input" lo "spazio"

    Ciao a tutti,
    ecco il mio problemino:
    ...
    typedef struct
    {
    char titolo[MAX_LENGHT];
    char autore[MAX_LENGHT];
    float prezzo;
    float sconto;
    }libro;
    ....
    for (i=0; i<NUM_LIBRI; i++)
    {
    printf ("Titolo libro:\n");
    scanf ("%s", &libreria[i].titolo); //*perchè quando inserisco il titolo se c'è lo spazio poi non funziona piu il mio bel programmino?*//

    ......
    }

    }

    :berto:

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Al posto della scanf scrivi

    fgets (libreria[i].titolo, MAX_LENGHT, stdin);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    269
    Originariamente inviato da oregon
    Al posto della scanf scrivi

    fgets (libreria[i].titolo, MAX_LENGHT, stdin);
    ok.

    Mi spiegheresti esattamente che cos'è questo "fgets" e come funzione?
    Cosi' mi rimane piu' impresso nella mente...per una prox volta.
    :berto:

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    E' una funzione di libreria per l'input delle stringhe. Puo' lavorare con i file e con la tastiera (standard input, stdin), accetta anche gli spazi e controlla il numero massimo di caratteri inseriti. Leggi la pagina

    http://www.cplusplus.com/reference/c...dio/fgets.html

    P.S. Per imparare a programmare, bisogna *anche* studiare dai libri ... se ne hai uno, anche di base, del linguaggio C, leggi quello che dice della fgets
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    269
    Grazie, molto gentile
    :berto:

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    269
    [i]#include <stdio.h>
    #define MAX_LENGHT 255
    #define MAX 300
    typedef struct
    {
    int codice;
    char nome[MAX_LENGHT];
    }medicinale;

    void main (void)
    {
    int i, N;
    medicinale farmacia[MAX];

    do
    {
    printf ("Quanti medicinali vuoi inserire\?\n");
    scanf ("%d", &N);
    }
    while (N>MAX);


    for (i=0; i<N; i++)
    {
    printf ("Codice:\n");
    scanf ("%d", &farmacia[i].codice);

    printf ("Nome:\n");
    fgets (farmacia.nome, MAX_LENGHT, stdin);
    }
    }


    Ed ora perché dopo che ho inserito il “codice” non funziona più niente e invece se uso scanf invece di fgets funziona? Cosa sto sbagliando nel’utilizzare fgets?
    :berto:

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    codice:
    printf ("Codice:\n");
    scanf ("%d", &farmacia[i].codice);
    
    while(!getchar());
    
    printf ("Nome:\n");
    fgets (farmacia[i].nome, MAX_LENGHT, stdin);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.