Salve a tutti, sono nuovo del forum..
Vi scrivo per chiedere chiarimenti su un pezzo di codice che il compilatore mi segna come "segmentation fault".
premetto che sono obbligato ad utilizzare il compilatore cygwin
il file da cui vado a leggere è composto da un centinaio di parole divise tra loro da un numero ogni volta diverso di spazi.
utilizzo la fscanf per velocizzare l'esecuzione visto che con la fgetc il tempo di esecuzione cresce notevolmente.
ogni parola trovata andrà poi salvata su un altro file.
potreste aiutarmi a capire il mio errore? ve ne sarei molto grato!
credo che il problema dovrebbe essere nel ciclo while.
Grazie a tutti in anticipo
codice:
#include <stdio.h> //Direttive al pre processore che ci permettono di includere
#include <string.h> //gli haeder file,relativi a librerie standar.
#include <stdlib.h>
#include <limits.h>
#include <assert.h>
int main(int argc, char *argv[])
{
char *nomeDelFile; //puntatore al nome del file da comprimere o decomprimere
char *centoParole;
char *stampa;
char *pra;
FILE *fileTesto;
FILE *fpw ;
if(argc!=2) //controllo sul numero di parametri per far partire il programma che devono essere: <nome programma> <nome file>
{
printf("\nErrore!Indicare il nome del file da comprimere o da decomprimere\n");
exit(1);
}
nomeDelFile=argv[1]; //copio il contenuto di argv[1] che contiene il nome del file da comprimere/decomprimere
centoParole = (char*)malloc(sizeof(char)*(strlen(nomeDelFile)+7));
strncpy(centoParole,nomeDelFile,strlen(nomeDelFile));
strncat(centoParole,".world\0",7);
fileTesto=fopen(nomeDelFile,"r"); //apertura del file di testo in modalità lettura
fpw=fopen(centoParole,"w"); //apertura del file di testa in cui devo andare a scrivere
fflush(stdout);
while(!feof(fileTesto))
{
//QUI IL COMPILATORE VA IN SEGMENTATION FAULT
fscanf(fileTesto,"%s", pra);
printf("\n Parola: %s \n", pra);
stampa=(char*)malloc(sizeof(char)*(strlen(pra)));
strncpy(stampa,pra,strlen(pra));
fprintf(fpw," %s \n",pra);
}
fclose(fileTesto);
fclose(fpw);
return 0;
}