Inserire stringa con spazi da imput in C

di il
8 risposte

Inserire stringa con spazi da imput in C

Buonasera a tutti, sono nuovo del forum, volevo un chiarimento su come inserire spazi in una stringa utilizzando come funzione printf,sto impazzendo, provo in vari modi ma niente. Posto il codice confidando in un vostro aiuto:

L'algoritmo simula la gestione di un giornale solo che appena inserisco una frase e quindi parole distanziate dal carattere spazio il programma salta delle istruzioni...
Come potrei risolvere?

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

//BOZZA di Soluzione. Mancano ancora l'utilizzo di funzioni per inserire articoli e per stamparli
// al fine di rispettare i vincoli dell'esercizio

#define MAXNUMPAGINE 10
#define MAXARTICOLIPERPAGINA 3
#define MAXDIMSTRINGHE 200

// definiamo il tipo "articolo del giornale"

typedef
struct{
char titolo[MAXDIMSTRINGHE];
char corpo[MAXDIMSTRINGHE];
} articolodelgiornale;

//definiamo il tipo pagina del giornale

typedef
struct{
int numeropagina;
articolodelgiornale articolo[MAXARTICOLIPERPAGINA];
} PaginaDelGiornale;

//definiamo il tipo giornale

typedef
struct{
int NumArticoliTotali;
int NumPagineTotali;
PaginaDelGiornale Pagina[MAXNUMPAGINE];
} Giornale;


int main() {

Giornale IlMattino;

//dichiarazione di variabili
int i,j, numero,numeri;
char tmpStr[MAXDIMSTRINGHE];

//Inserimento degli articoli nel giornale
printf("Inserire il numero di pagine del giornale: ");
scanf("%d", &numero);
IlMattino.NumPagineTotali=numero;
printf("Inserire il numero di articoli per pagina: ");
scanf("%s", &numeri);
IlMattino.NumArticoliTotali=numeri;

// mancano le funzioni aggiungere le funzioni inserimento articolo e stampa articolo per esercizio
// e modificare il codice in modo opportuno

for(i=0;i<IlMattino.NumPagineTotali;i++){
IlMattino.Pagina[i].numeropagina=i;
for(j=0;j<IlMattino.NumArticoliTotali;j++)
printf("Inserisci il titolo dell'articolo: ");
scanf("%s", tmpStr);
strcpy(IlMattino.Pagina[i].articolo[j].titolo,tmpStr);
printf("Inserire il corpo dell'articolo: ");
scanf("%s", tmpStr);
strcpy(IlMattino.Pagina[i].articolo[j].corpo,tmpStr);
printf("numpagina i=%d numarticolo j=%d", i, j);
}
}

for(i=0;i<IlMattino.NumPagineTotali;i++){
printf("\nPagina%d\n", IlMattino.Pagina[i].numeropagina);
for(j=0;j<IlMattino.NumArticoliTotali;j++){
printf("\nTitoloarticolo : %s\n", IlMattino.Pagina[i].articolo[j].titolo);
printf("\nCorpoarticolo : %s\n", IlMattino.Pagina[i].articolo[j].corpo);
}
}
system("PAUSE");
return 0;
}
[\code]

8 Risposte

  • Re: Inserire stringa con spazi da imput in C

    Qual'è la tua domanda? Metti il codice dentro i tag code che così non si capisce niente.
  • Re: Inserire stringa con spazi da imput in C

    Ciao, scusa cosa intendi per mettere il rag.?
    Cmq vorrei sapere come inserire uno spazio nella stringa.

    Grazie per l'interessamento
  • Re: Inserire stringa con spazi da imput in C

    I tag code significa racchiudere tra [ code ] e [ /code ] il tuo codice (togli gli spazi che ho mess io).
    Esempio:
    
    codice cpp
    
    per prendere una linea puoi usare gets.
    http://www.cplusplus.com/reference/clibrary/cstdio/gets/
  • Re: Inserire stringa con spazi da imput in C

    Ho provato ad inserire code come a te suggerito ma sembra non essere cambiato nulla sono un pò imbranato, perdonami.
    Ho inserito gets ma il programma continua a non funzionare, è come se quel gets lo vedesse come un semplice scanf e quindi appena inserisco più parole mi salta una parte dell'algoritmo.
    C'è un modo alternativo per inserire stringhe con spazi? Se creassi una funzione che simula un ciclo di scanf potrebbe funzionare?

    Ti ringrazio ancora per l'interessamento, Always.
  • Re: Inserire stringa con spazi da imput in C

    Per il code vedi in fondo dove hai messo \code, cambialo in /code
    ecco il tuo errore.
    
    printf("Inserire il numero di articoli per pagina: ");
    	scanf("%s", &numeri);
    
    da cambiare in:
    printf("Inserire il numero di articoli per pagina: ");
    	scanf("%d", &numeri);
    
  • Re: Inserire stringa con spazi da imput in C

    Lìaltro errore.
    
    for(j=0;j<IlMattino.NumArticoliTotali;j++)
    		{
    			printf("Inserisci il titolo dell'articolo: ");
    			gets(tmpStr); //qui c'era lo scanf
    			strcpy(IlMattino.Pagina[i].articolo[j].titolo,tmpStr);
    			printf("Inserire il corpo dell'articolo: ");
    			gets(tmpStr); //qui c'era lo scanf
    			strcpy(IlMattino.Pagina[i].articolo[j].corpo,tmpStr);
    			printf("numpagina i=%d numarticolo j=%d", i, j);
    		}
    
  • Re: Inserire stringa con spazi da imput in C

    Grazie skynet, ho risolto come da te suggeritomi, solo che il professore continua a dire che mancano "le funzioni di lettura e inserimento dei dati", gli ho chiesto più volte cosa volesse dire dato che il programma compila svolgendo correttamente il suo dovere ma non ho avuto risposte...
    Puoi aiutarmi?

    Grazie ancora
  • Re: Inserire stringa con spazi da imput in C

    Vuol dire che tu oltre ad utilizzare il main, utilizzi anche delle funzioni, tipo:
    
    bool InserisciArticolo(Giornale & nomeGIornale)
    {
      ........esempio di codice........
       for(j=0;j<IlMattino.NumArticoliTotali;j++)
          {
             printf("Inserisci il titolo dell'articolo: ");
             gets(tmpStr); //qui c'era lo scanf
             strcpy(IlMattino.Pagina[i].articolo[j].titolo,tmpStr);
             printf("Inserire il corpo dell'articolo: ");
             gets(tmpStr); //qui c'era lo scanf
             strcpy(IlMattino.Pagina[i].articolo[j].corpo,tmpStr);
             printf("numpagina i=%d numarticolo j=%d", i, j);
          }
       ........esempio di codice........
       return true;
    }
    
Devi accedere o registrarti per scrivere nel forum
8 risposte