Buona sera ragazzi.
Come da titolo sto provando ad eseguire un algoritmo che funzione da test suite, il suo compito effettivo e' solo sommare i numeri che trova(ho cercato di non fare programmi troppo complicati per limitare i possibili errori).
In input per riga di comando gli indico i due file a cui deve riferirsi
(la riga � questa ./a.out testsuite.txt tc_output.txt)
quindi dovrebbe entrare nel file test suite leggere una riga per volta ovvero:
tc1
tc2
tc3
quindi entrare nei file specificati (a cui nel programma aggiungo l'estensione .txt) e leggere i loro dati e, a questo punto, effettuare la somma. Eseguita la somma il programma deve scrivere il risultato sia nel file output.txt che sul terminale.
Il problema � che il programma da errore di segmentazione(a quanto ho imparato sta provando a scrivere in aree di memoria dove risiedono file importanti come dei driver).
Usando la scanf ho notato che fino ad fp=fopen.... va tutto bene ma appena oltre(la riga sottostante in pratica)da l'errore sovracitato.
Premetto che ho gi� scritto un programma di test ma era con un file per volta e quello non da problemi.
Ritengo che in questo programma il problema sia principalmente quello di fargli leggere i file specificati nel file test suite.
Potreste farmi capire come correggere l'errore?
codice:#include<stdio.h>int main(int argc,char **argv) { FILE *fp; FILE *ts; FILE *res; int a[30],i=0,k=0,f; char s[30]; { { if(argc!=3) { printf("Non posso lavorare con questo numero di parametri!\n"); return 0; } } ts=fopen(argv[1],"r"); res=fopen(argv[2],"w"); { while(!feof(ts)) { fscanf(ts,"%s",s);//s è un array di caratteri fp=fopen("%s.txt","r"); scanf("%d", &f);//la scanf mi è servita per individuar ela porzione di codice che da errore fscanf(fp,"%d",&a[i]);//a[i] è un array di interi i++; { int s=0; while(!feof(fp)) { fscanf(fp,"%d",&a[s]); k=k+a[s]; s++; } } } } fprintf(res,"%d",k); printf("%d\n",k); fclose(ts); fclose(res); fclose(fp); } }

Rispondi quotando