Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    22

    [C] Lettura stringhe file

    salve,

    ho un file di testo ("input.txt") strutturato cosi:
    4
    1 6
    5 9
    7 10
    4 8

    dove il primo numero (4) è il numero di richieste di lavoro mentre ognuna delle righe successive contiene 2 interi separati da uno spazio che indicano rispettivamente l'ora dalla quale e fino alla quale un operaio è disposto a lavorare.(es dall'1 alle 6).
    il problema richiede che ipotizzando che un giorno duri 96 ore (non chiedetemi perchè) tutte le ore devono essere coperte da lavoro (dall ora 0 all'ora 95 quindi).dopo aver inserito i dati nel file,penso dunque che dovrò leggere riga per riga e anadre ad inserire le ore coperte semplicemente in un vettore.. giusto? il problema è che usando la fgets non mi stampa ciò che mi aspetto...vi posto il pezzetto di codice se avete voglia di dare un occhiata.grazie mille.

    ...
    ...
    void leggi(int n,FILE*stream)

    {
    int ore[95];
    char stringa[5];

    stream=fopen("input.txt","r");

    while(!feof(stream))
    {
    fgets(stringa, 5, stream);

    printf("%s", stringa);
    }

    fclose(stream);
    }
    ...
    ....

    cosa sbaglio? :-(

  2. #2
    L'output è questo:

    4
    1 6
    5 9
    7 10
    4 8


    cosa ti aspetti invece???
    Vuoi sbattezzarti? Guarda QUI

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    22
    mi apsetto che mi dia l'output che hai scritto ma nn funziona...mi stampa il numero richieste di lavoro e poi due volte l'ultima coppia di orari da me inserita..es:
    2
    1 7
    1 7

    vi posto tutto il codice magari può essere d'aiuto.scusate ma sono alle prime armi.


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

    void input(int n,FILE*stream);
    void leggi(int n,FILE*stream);

    int main(int argc, char *argv[])
    {
    int n;
    FILE*stream;

    printf("Inserisci numero richieste disponibili ");
    scanf("%d",& n);
    stream=fopen("input.txt","w");
    fprintf(stream,"%d\n",n);
    fclose(stream);
    input(n,stream);
    leggi(n,stream);

    system("PAUSE");
    return 0;
    }

    void input(int n,FILE*stream)
    {

    int i=1,x,y,ore_disp;

    while(i<=n)
    {
    do
    {
    printf("Inserisci h di inizio disponibilità lavorativa num %d ",i);
    scanf("%d",& x);
    }
    while(x>95);

    do
    {
    printf("Inserisci h di fine disponibilità lavorativa num %d ",i);
    scanf("%d",& y);
    }
    while(y>95);


    if (y>x)
    ore_disp=y-x;
    else
    ore_disp=(95-x)+y;


    if (ore_disp<=8)
    {
    stream=fopen("input.txt","a");
    fprintf(stream,"%d %d\n",x,y);
    i++;
    }
    else
    printf("Le ore devono essere al max 8\n ");

    }
    fclose(stream);

    }

    void leggi(int n,FILE*stream)

    { int ore[95];

    char stringa[7]={0};

    if((stream=fopen("input.txt","rb"))==NULL)
    {
    printf("Impossibile aprire il file.\n");
    exit(1);
    }

    while(!feof(stream))
    {

    fgets(stringa, sizeof(stringa), stream);

    printf("%s",stringa);

    }

    }

  4. #4
    La funzione "Leggi" scrivila così:

    codice:
    void leggi(int n,FILE*stream)
    
    { 
    	
    
    	char stringa[7]={0};
    
    	if((stream=fopen("input.txt","rb"))==NULL)
    	{
    		printf("Impossibile aprire il file.\n");
    		exit(1);
    	}
    
    	while (fgets(stringa, sizeof(stringa), stream) != NULL) 
    	{			
    
    		printf("%s",stringa);	
    	}
    
    }
    Vuoi sbattezzarti? Guarda QUI

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 © 2025 vBulletin Solutions, Inc. All rights reserved.