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??