Ciao a tutti,

qui di seguito il codice da me fatto per leggere un file di testo, composto da piu' righe (il numero delle righe non e' mai fisso) e da 11 colonne.
Con questo codice voglio leggere ciascuna riga del file, estrarne solo determinate colonne e stamparle a video.

Il mio problema e' questo. Nella riga indicata in rosso, ho indicato "cat argv[1]" ma quando eseguo la mia procedura, ricevo il messaggio d'errore mostrato nel titolo. Dove sto sbagliando?

Grazie a tutti

codice:
#include<stdlib.h>
#include<stdio.h>

main(int argc , char *argv[]){

  FILE *filemch;
  char buf[200];
  char *res;
  char comando[500];
  char val1[200];

if(argc!=2)
{
        printf("Syntax: procedura file_name.mch\n");
        exit(1);
}

        /* veifica che il file sia presente nel direttorio */
sprintf(comando,"test -f %s",argv[1]);
if(system(comando)!=0)
{
        printf("The file %s does not exist\n",argv[1]);
        exit(1);
}

		/* apre il file */
  filemch=popen("cat  argv[1]  | awk ' { print $2,$3,$4,$7,$9} '", "r")   
if( filemch==NULL ) {
    perror("Errore in apertura del file");
    exit(1);
  }


		/* legge e stampa ogni riga */
  while(1) {
    res=fgets(buf, 200, filemch);
    if( res==NULL )
      break;
    printf("%s", buf);
  }


		/* chiude il file */
  fclose(filemch);

  return 0;
}