AIUTOOOO!!!! fgets!!

di il
5 risposte

AIUTOOOO!!!! fgets!!

Salve, sto riscontrando qualche problema con la funzione fgets, ecco il codice incriminato:

#define f1 "input.txt"
#define f2 "output.txt"
#define s 9
#define x 20000
#include<stdio.h>
typedef struct {
	char nome[x+1], cognome[x+1];
}persona;
int main(void) {
	persona p[s];
	FILE *f = fopen(f1, "r");
	char*c[s];
	char*n[s];
	int y = 0; int j = 0;
	for (int i = 1; EOF != (fgetc(f)); i++)
	{
		if (i % 2 == 1) {
			c[y] = fgets(p[j].cognome,sizeof(p[j].cognome), f);
		}
		else
		{
			n[y] = fgets(p[j].nome,sizeof(p[j].nome), f); y++; j++;
		}
	}
}
questo programma dovrebbe leggere da file delle stringhe continue per ogni riga(le righe dispari contengono un cognome, e le pari un nome)
come per esempio:

pappalardo
salvatore
bella
alfio
bella
salvatore
inoltre il programma dovrebbe assegnare i nomi ad elementi dell'array n[], ed i cognomi ad elementi dell'array c[].
Il codice funziona correttamente, oltr ad un piccolo ma rilevante problema, nella lettura con fgets perdo sempre la prima lettera della riga, infatti invece di assegnare "pappalardo" a c[0] viene assegnato "appalardo", la stessa identica cosa con bella->ella, alfio->lfio ecc.....
è da un intera giornata che provo a capire qual'è il problema, ma non ne sono venuto a conosenza, qualcuno che può illuminarmi??

5 Risposte

  • Re: AIUTOOOO!!!! fgets!!

    Utilizza un titolo più corretto ... non si usa AIUTO o cose del genere, finisce che nessuno ti risponda ...

    Comunque, che sono i vettori

    c[]
    n[]

    ??

    Hai creato dei vettori di puntatori ... ma che ci volevi fare con dei vettori di puntatori?
  • Re: AIUTOOOO!!!! fgets!!

    Nel libro e a lezione la prof ci ha detto di fare dei vettori di puntatori, non ho capito bene il perché.
  • Re: AIUTOOOO!!!! fgets!!

    I puntatori li usi per allocare la memoria per le stringhe. Hai chiara l'allocazione dinamica della memoria tramite puntatori?
  • Re: AIUTOOOO!!!! fgets!!

    Si l'ho chiara.
  • Re: AIUTOOOO!!!! fgets!!

    Ma non l'hai usata
Devi accedere o registrarti per scrivere nel forum
5 risposte