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);
}
}