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