как использовать аргумент команды? - PullRequest
0 голосов
/ 13 марта 2011

в fopen.c есть ошибка, как я могу ее решить?ошибка при назначении argv [1], argv [2] в ft, fs.

int main ( int argc, char *argv[] )
{
  //FILE *fs, *ft ;
  char ch ;
  //ft = fopen ("d:\\out.txt", "w") ;        

  fs = fopen( argv[1], "r" );
  if ( fs == NULL )        {               
    puts ( "Cannot open source file" ) ;                           
    exit(1) ;  
  }
  //fs = fopen("d:\in_file.txt","r") ;

  ft = fopen( argv[2], "w" );
  if ( ft == NULL ){               
    puts ( "Cannot open target file") ;               
    exit(1) ;
  }
}

Ответы [ 2 ]

1 голос
/ 13 марта 2011

Во-первых, в вашем коде огромная проблема с отступами.Пожалуйста, решите это.[РЕДАКТИРОВАТЬ: Теперь все в порядке]

Во-вторых, что за ошибка?И fs, и ft равны NULL?Вместо использования put для отображения сообщения об ошибке вы можете использовать perror (const char * s).Это добавит информацию к вашему сообщению, зная статистику переменной errno.

0 голосов
/ 14 марта 2011

Это работает для меня.Это программа, которая копирует гласные и перевод строки ('\ n') из файла, указанного в 1-м аргументе, в файл в 2-м аргументе.

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

int main(int argc, char **argv) {
  FILE *fi, *fo;
  if (argc != 3) {
    fprintf(stderr, "syntax: %s in out\n", argv[0][0]?argv[0]:"program");
    fprintf(stderr, "copies vowels and linefeeds from in to out\n");
    exit(EXIT_FAILURE);
  }
  fi = fopen(argv[1], "r");
  if (!fi) {
    perror("input file");
    exit(EXIT_FAILURE);
  } else {
    fo = fopen(argv[2], "w");
    if (!fo) {
      perror("output file");
      exit(EXIT_FAILURE);
    } else {
      int ch;
      while ((ch = fgetc(fi)) != EOF) {
        switch (ch) {
          case 'a': case 'e': case 'i':
          case 'o': case 'u': case '\n':
              fputc(ch, fo);
              break;
          default:
              break; /* do nothing */
        }
      }
      fclose(fo);
    }
    fclose(fi);
  }
  return 0;
}

Когда я запускаю его с указанным выше источником в качестве ввода (./a.out 5292243.c 5292243.vowels), полученный файл содержит

iueio
iuei

iaiiaaa
io
ia
ieaiouaaoa
ieoieoeaieeeoioou
ei

ioea
ii
eoiuie
ei
ee
ooea
io
eoouuie
ei
ee
i
ieei
i
aeaaeeaei
aeoaeuaeuo
eaueaooi


oeo

oei

eu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...