0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 36
1

Задать имена файлов в командной строке

04.12.2013, 18:32. Показов 1466. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать, чтобы имена файлов задавались в командной строке (первый аргумент - исходный файл, второй - результирующий) ? и если аргументы командной строки отсутствуют, использовать стандартный ввод и стандартный вывод.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <fcntl.h>
 
#define BUFFER_SIZE 8096
 
int main ()
{
  char filename [1000],
       destname [1000],
       buffer[BUFFER_SIZE];
  int fd_in = 0,
      fd_out = 0;
  ssize_t ret_in,
          ret_out;
  printf("Enter name first file:");
  gets(filename);
  printf("Enter name copy of first file:");
  gets(destname);
  fd_in = open(filename, O_RDONLY);
  if (fd_in == -1)
    printf("error with open source file");
  fd_out = open(destname,O_WRONLY | O_CREAT, 0644);
  if (fd_out == -1)
    printf("error with open dest. file");
  while ((ret_in = read(fd_in, &buffer, BUFFER_SIZE)) > 0)
  {
    ret_out = write(fd_out,  &buffer, (ssize_t) ret_in);
    if (ret_out != ret_in)
      printf("Error with write to dest.");
  }
  close(fd_in);
  close(fd_out);
  return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2013, 18:32
Ответы с готовыми решениями:

Написать программу, создающую файл - копию заданного файла. Имена файлов задаются в командной строке
1. Написать программу, создающую файл - копию заданного файла. Имена файлов задаются в командной...

Напишите программу конкатенирующую (соединяющую воедино) последовательно несколько файлов. Имена файлов задаются в командной строке
Напишите программу конкатенирующую (соединяющую воедино) последовательно несколько файлов. Имена...

Имена входных и выходных файлов задаются через аргументы командной строки
Как программе передать аргументы через командную строку? Приложение консольное. Насколько я...

Выведите на экран имена подкаталогов каталога, имя которого указано в командной строке
Помогите, пожалуйста, написать в cmd программу, которая выводит на экран имена подкаталогов...

2
25 / 25 / 16
Регистрация: 12.04.2013
Сообщений: 84
05.12.2013, 15:51 2
C
1
2
3
4
5
int main (int argc, char *argv[])
{
    filename = argv[1];
    destname = argv[2];
    ...
argc - количество аргументов, принятые программой из командной строки (минимум равно 1), т.к. argv[0] - имя запускаемого файла самой программы

ну а дальше argv[1] - первый аргумент, argv[2] - второй и т.д.

UPD: да, инициировать переменные filename и destname как массивы не надо, можно просто char *filename, *destname.
1
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 36
06.12.2013, 13:04  [ТС] 3
Dizark, а как записать условие, что если у меня эти аргументы заданы, то не запрашивать имена файлов?

Добавлено через 25 минут
попробовала условие если filename == NULL, то спрашивать. но выходит ошибка сегментирования.

Добавлено через 17 часов 38 минут
всё, получилось..
0
06.12.2013, 13:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2013, 13:04
Помогаю со студенческими работами здесь

Задать правильно параметры в командной строке.
всем доброго времени суток уже измучался, не могу найти решение как сделать правильно вот...

Не удается в Командной строке задать атрибуты папке с пробелами в имени
Не удается задать атрибуты к папке через командную строку,если папка имеет название с пробелом...

Как задать переменной результат действия команды в командной строке
Ребят, подскажите, не могу вкурить, как задать переменной результат действия команды в командной...

Как задать при компиляции проекта Visual Studio в командной строке конфигурацию?
9.. Как задать при компиляции проекта Visual Studio в командной строке конфигурацию, в которой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru