Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Вечный_Студент
2 / 2 / 0
Регистрация: 16.05.2012
Сообщений: 38
#1

Аргументы, передаваемые в main - C++

13.06.2012, 11:53. Просмотров 1003. Ответов 20
Метки нет (Все метки)

Всем доброго утра. Вот такой вопрос возник.
Запуская программу в консоли имеем вид

C++
1
>cpp1.exe -b -s -f=10 test.txt text_output.rez
cpp1.exe -запуск самой программы
-b -s -f=10 - аргументы
test.txt - исходный файл
text_output.rez - результирующий файл

правильно ли я понимаю, что
C++
1
a=argv[argc-1]
присвоит мне в переменную a, имя результирующего файла?
какого типа должна быть переменная a?
как мне вывести или использовать теперь то, что у меня лежит в этой переменной?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 11:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Аргументы, передаваемые в main (C++):

Где хранятся аргументы, передаваемые в функцию - C++
собственно - сабж... интересует вопрос, где же (в какой памяти) всё таки хранятся аргументы, которые передаются в функцию? и где можно...

аргументы main - C++
int main() { } int main(int argc, char **argv) { }

Аргументы ( main) - C++
Чтобы зашифровать некоторый текст, записанный с помощью русских букв и знаков препинания, его можно переписать, заменив каждую букву...

Аргументы функции main - C++
Здравствуйте! Очень нужна Ваша помощь... Дано натуральное n. Для n, вводимого с клавиатуры получите действительную квадратную матрицу...

Аргументы функции main() - C++
Написать программу для определения, чередуются ли в данной последовательности символы ‘+’ и ‘-‘, и сколько раз каждый из этих символов...

Аргументы функции main - C++
что значит определение оформить как функцию и сортировку оформить как функцию??

20
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
13.06.2012, 14:35 #16
Цитата Сообщение от Вечный_Студент Посмотреть сообщение
FILE* fopen(argv[argc-2],"w+");
ну например так
C++
1
FILE* in = fopen(argv[argc-2],"w+");
0
Вечный_Студент
2 / 2 / 0
Регистрация: 16.05.2012
Сообщений: 38
13.06.2012, 16:58  [ТС] #17
C++
1
    FILE* in = fopen(argv[argc-2],"w+");
error C2360: initialization of 'in' is skipped by 'case' label

Добавлено через 1 час 21 минуту
одни ошибки капец

Добавлено через 53 минуты
C++
1
2
3
4
if (argv[i]=='-i')
{
   ....
}
а тут в чем проблема?
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.06.2012, 17:03 #18
Цитата Сообщение от Вечный_Студент Посмотреть сообщение
error C2360: initialization of 'in' is skipped by 'case' label
FILE* in; - перед switch


C++
1
2
case 'y':
    in = fopen(...);
Добавлено через 1 минуту
Цитата Сообщение от Вечный_Студент Посмотреть сообщение
а тут в чем проблема?
C++
1
2
3
4
5
#include <string.h>
...
if (strcmp(argv[i], "-i") == 0)
{
}
2
Вечный_Студент
2 / 2 / 0
Регистрация: 16.05.2012
Сообщений: 38
13.06.2012, 23:56  [ТС] #19
получил вот такой каскад условий

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
int err=1;
printf("Got %d arguments:\n", argc);
for (int i = 0; i < argc-2; ++i)
{
   if (strcmp(argv[i], "-i")==0)
      printf("%s preobrazovat zaglavnie v strothnie\n",argv[i]);
   else
      if (strcmp(argv[i], "-d")==0)
         printf("%s Otsortirovat najdennye stroki po ubyvaniu ih dliny\n",argv[i]);
      else
         if (strcmp(argv[i], "-a")==0)
            printf("%s Otsortirovat najdennye stroki po vosrastaniu ih dliny\n",argv[i]);
         else
            if (strcmp(argv[i], "-c")==0)
           printf("%s Iskat stroki, NE soderzasie zadannu\n",argv[i]);
        else
               if (strcmp(argv[i], "-e=")==0)
              printf("%s Vypolnat dejstvia do stroki nomer M ishodnogo teksta\n",argv[i]);
           else
          if (strcmp(argv[i], "-b=")==0)
             printf("%s Vypolnat dejstvia so stroki nomer N ishodnogo teksta\n",argv[i]);
          else
          if (strcmp(argv[i], "-f=")==0)
             printf("%s Zadaet posledovatelnost simvolov, kotoruu nuzno iskat\n",argv[i]);
          else err=0;                    
}
 
if (err==0)
{
  printf("error");
}


почему считывается только первый "-i"
остальные ошибку дают и выполнение
C++
1
2
3
4
if (err==0)
{
  printf("error");
}
в консоли:
F:\cpp1\Debug>cpp1.exe -i -c -d
Got 4 arguments:
-i preobrazovat zaglavnie v strothnie

error
0
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
14.06.2012, 08:24 #20
Во первых argv[0] содержит строку с именем исполняемой программы, так как обработки этой строки нигде нету, то на первой же итерации цепочка if'ов будет пройдена до конца, туда где err приравнивается нулю. Выводы делайте сами.

Во вторых
Цитата Сообщение от Вечный_Студент Посмотреть сообщение
for (int i = 0; i < argc-2; ++i)
Подумайте, сколько итераций должно произойти с таким условием.
1
Вечный_Студент
2 / 2 / 0
Регистрация: 16.05.2012
Сообщений: 38
14.06.2012, 11:13  [ТС] #21
C++
1
for (int i = 1; i < argc-2; ++i)
C++
1
F:\cpp1\Debug>cpp1.exe -i -c -d test.txt test.rez
вот почему argc-2
0
14.06.2012, 11:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2012, 11:13
Привет! Вот еще темы с ответами:

Аргументы функции main - C++
Здравствуйте, программисты! Написать программу для определения, есть ли среди символов этой последовательности символы, образующие слово...

обработать аргументы функции main - C++
Всем привет. В main() передается строка и число. Как их можно обработать? На это выскакивает ошибка char* str= new char; ...

Шифрование. Аргументы функции MAIN - C++
Привет всем:) Нужна помощь... С++... Аргументы функции MAIN. Фраза шифруется следующим образом: после первых двух символов...

Аргументы для функции main() - C++
Я совершенно не понял, каким образом работает, допустим вот такой фрагмент программы: int main(int argc, char **argv) { if (argc&gt;1) ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru