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

Параметры функции main

03.12.2014, 11:02. Показов 1021. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени суток! Не могу решить проблему с параметрами функции main. Есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int _tmain(int argc, char* argv[20])
{ 
   int i;
   list<int> addresses;
   cout<<"Size of argv: "<<sizeof argv<<endl;
   for (i = 0; i < argc; i++) 
        {
           cout << "argv[" << i << "] contains " << *argv <<" with size: "<<sizeof *argv<<" * "<< endl;
           addresses.push_back((int)argv);
           argv++;
        }
   for(list<int>::iterator it=addresses.begin();it!=addresses.end();it++)
       cout<<*it<<endl;
}
но он выводит только ПЕРВЫЕ символы всех параметров и адреса смещены на четыре. Я ни как не могу получить полные параметры. Только первые символы
примерно так
argv[1] contains d with size: 4
.
.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2014, 11:02
Ответы с готовыми решениями:

Параметры функции main
Добрый день. Помогите пожалуйста. Внизу дан код программы, у main есть аргументы argc и argv....

Передача файлов через параметры функции main
Всем привет. Я студент первого курса. У меня возникла проблема при написании программы шифрования...

Как задать параметры запуска (аргументы командной строки) функции main?
Как их задать в процессе запуска? т.е. пользователь запускает приложение и указывает параметры...

Чтение из файла, название передано как параметры функции main argc & argv
Вообще дано задание - считать из файла чётные строки, название файла должно быть передано как...

7
шКодер самоучка
2226 / 1920 / 927
Регистрация: 09.10.2013
Сообщений: 4,255
Записей в блоге: 7
03.12.2014, 11:25 2
Цитата Сообщение от Dima_nwv Посмотреть сообщение
но он выводит только ПЕРВЫЕ символы
оно выводит только то, что Вы попросили
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main(int argc, char** argv) {
    for(int idx = 0; idx < argc; ++idx) {
        std::cout << argv[idx] << std::endl;
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 4
03.12.2014, 12:39  [ТС] 3
C++
1
2
3
4
5
6
for (i = 0; i < argc; i++) 
        {
           cout << "argv[" << i << "] contains " << argv[i] <<" with size: "<<sizeof argv[i]<<" * "<< endl;
           addresses.push_back((int)argv);
           //argv++;
        }
argv это есть массив символьных строк с индексацией i. В данном коде я хочу вывести строку на первый символ которой указывает argv[i]. Но выход имеет только первый символ строки массива. А не сам массив. Ваш код приводит к такому же результату.
Спасибо.

Добавлено через 39 секунд
А не сама строка массива.

Добавлено через 5 минут
Эту проблему я забросил. Но опять пришлось вернуться. Поэтому, если поможете спасибо!
0
шКодер самоучка
2226 / 1920 / 927
Регистрация: 09.10.2013
Сообщений: 4,255
Записей в блоге: 7
03.12.2014, 12:39 4
Хм...
Миниатюры
Параметры функции main  
0
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 4
03.12.2014, 12:51  [ТС] 5
C:\Users\Dima>sp.exe dima try to read english
Size of argv: 4
argv[0] contains s with size: 4
argv[1] contains d with size: 4
argv[2] contains t with size: 4
argv[3] contains t with size: 4
argv[4] contains r with size: 4
argv[5] contains e with size: 4

C:\Users\Dima>sp.ex dima live here
"sp.ex" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

C:\Users\Dima>Sp.exe dima live here
Size of argv: 4
argv[0] contains S with size: 4 *
argv[1] contains d with size: 4 *
argv[2] contains l with size: 4 *
argv[3] contains h with size: 4 *
5116032
5116036
5116040
5116044

C:\Users\Dima>sp.exe dima wheel door exogerated
Size of argv: 4
argv[0] contains s with size: 4 *
argv[1] contains d with size: 4 *
argv[2] contains w with size: 4 *
argv[3] contains d with size: 4 *
argv[4] contains e with size: 4 *
14225536
14225540
14225544
14225548
14225552

C:\Users\Dima>sp.exe wheel reek silk
Size of argv: 4
argv[0] contains s with size: 4 *
argv[1] contains w with size: 4 *
argv[2] contains r with size: 4 *
argv[3] contains s with size: 4 *
19075200
19075200
19075200
19075200

C:\Users\Dima>

Добавлено через 9 минут
То есть я что то не понимаю?
0
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
03.12.2014, 13:07 6
Dima_nwv, или так
C++
1
2
3
4
5
int _tmain(int argc, TCHAR * argv[]) {
  for (int i = 1; i < argc; ++i)
    wcout << argv[i] << endl;
  return 0;
}
или так
C++
1
2
3
4
5
int main(int argc, char * argv[]) {
  for (int i = 1; i < argc; ++i)
    cout << argv[i] << endl;
  return 0;
}
0
шКодер самоучка
2226 / 1920 / 927
Регистрация: 09.10.2013
Сообщений: 4,255
Записей в блоге: 7
03.12.2014, 13:08 7
Dima_nwv, судя по _tmain вы используете Visual Studio, в ней по умолчанию для argv используется не char а wchar_t
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <cwchar>
 
int wmain(int argc, wchar_t** argv) {
    for(int idx = 0; idx < argc; ++idx) {
        std::wcout << argv[idx] << std::endl;
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 03.12.2014
Сообщений: 4
03.12.2014, 13:20  [ТС] 8
да, я изменил на char. потом я компилирую и запускаю из коммандной строки *.exe файл. Не в среде VS

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include <list>
using namespace std;
int _tmain(int argc, char* argv[20])
{ 
   int i;
   list<int> addresses;
   cout<<"Size of argv: "<<sizeof argv<<endl;
   for (i = 0; i < argc; i++) 
        {
           cout << "argv[" << i << "] contains " << argv[i] <<" with size: "<<sizeof argv[i]<<" * "<< endl;
           addresses.push_back((int)argv);
           //argv++;
        }
    printf ("argc\t= %d\n", argc);
    for (int i = 0; i < argc; i++)
        printf ("argv[%i]\t= %s\n", i, argv[i]);
   for(list<int>::iterator it=addresses.begin();it!=addresses.end();it++)
       cout<<*it<<endl;
}
Добавлено через 4 минуты
Спасибо! Я изменил _tmain на main и все полшло. Видимо они переопределяю кака то _tmain на main в привязке к среде разработки. Я очень долго не мог решить вопрос. Спасибо!
0
03.12.2014, 13:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2014, 13:20
Помогаю со студенческими работами здесь

Передать параметры в main
Нужно передать два параметра типа double в исполняемы файл ./Lab_10_2k Ни как не получается...

Как передать параметры в main ?
нужно передать параметры с командной строки в основную функцию. например я хочу найти cos(x). как...

Какие параметры принимает функция main?
Всем привет, какие параметры может принимать функция main() в c++, согласен, много статей на эту...

А почему ошибка, что функции print и read не определены в функции main()?
Что-то не понимаю. Они определены в заголовочном файле. А подчеркивается красным что нет.... ...


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

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

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