Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему argv не выводит полный путь 
V
    Опции темы
n199a
  Дата 8.8.2013, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Код

#include <stdio.h>
int main(int argc, char *argv[]) {
    int i;
    for(i=0; i<argc; i++)
        printf("%s\n", argv[i]);
    return 0;
}


Зависит от компилятора?

Это сообщение отредактировал(а) n199a - 8.8.2013, 00:19
PM MAIL   Вверх
EgoBrain
Дата 8.8.2013, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



argv[0] - это самый первый параметр командной строки, то есть команда, затем идут ключи, как ты команду задашь, так она и передастся сюда.
Если исполняемый файл имеет имя command.exe и ты "открываешь" его командой command.exe, то в таком виде и передастся, если вызываешь
командой command - argv[0] == "command".
PM MAIL ICQ Skype   Вверх
n199a
Дата 8.8.2013, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Цитата(EgoBrain @  8.8.2013,  01:30 Найти цитируемый пост)
argv[0] - это самый первый параметр командной строки, то есть команда, затем идут ключи, как ты команду задашь, так она и передастся сюда.
Если исполняемый файл имеет имя command.exe и ты "открываешь" его командой command.exe, то в таком виде и передастся, если вызываешь
командой command - argv[0] == "command". 


Я не понимаю, я ничего не вызоваю, жму СКОМПИЛИРОВАТЬ, потом СБОРКА и выполнить...
В компиляторе строку выдаёт:
gcc -Wall -c "119-fopen-BSIZE.c" (в каталоге: G:\hprojects)
и всё...
PM MAIL   Вверх
akizelokro
Дата 8.8.2013, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



измени код и запусти
Код

    printf("Цикл выполнится: %d раз\n",argc);
    for(i=0; i<argc; i++)
        printf("%s\n", argv[i]);
    return 0;


Это сообщение отредактировал(а) akizelokro - 8.8.2013, 13:09


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
n199a
Дата 8.8.2013, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Цитата(akizelokro @  8.8.2013,  13:08 Найти цитируемый пост)
измени код и запусти


Выполнится 1 раз. Что это дает в моем случае?

В учебнике пишут:
Цитата

Программа, с которой мы познакомились в предыдущем
разделе, хотя и выполняет стоящую перед ней задачу, но очень
неудобна в работе, потому что имя каждого нового файла
приходится включать в исходный текст и снова его
компилировать. А хочется, чтобы программа, увидев в
командной строке что-то вроде
Программа.exe имя_файла.с имя_результата.с
сама открыла файл имя_файла.с, читала бы каждую строчку,
предваряла символом табуляции и записывала результат в
файл имя_результата.с.

Такая возможность конечно же есть, но чтобы ей
воспользоваться, придется познакомиться поближе с функцией
main(), которая умеет читать командную строку, то есть
параметры, введенные при вызове программы.
Пусть наша программа сдвига текста вправо называется
rshift.exe и вызывается как
rshift.exe имя_файла.с имя_результата.с .


Мне что, через cmd запускать надо или что? 
PM MAIL   Вверх
bsa
Дата 8.8.2013, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



n199a, параметры командной строки можно задать и в среде разработки. Но можешь и через cmd.
PM   Вверх
n199a
Дата 8.8.2013, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Цитата(bsa @  8.8.2013,  14:27 Найти цитируемый пост)
n199a, параметры командной строки можно задать и в среде разработки. Но можешь и через cmd. 

В учебнике пишут:
rshift.exe имя_файла.с имя_результата.с,
Какой exe? Какие два си-файла? Откуда их то брать... 

В командах сборки прописывать надо?
Код

gcc -Wall -c "%f"

Цитата

n199a, ты что нам эти вопросы задаешь? Мы что ли придумали задание?
Скорее всего, имена файлов значения не имеют. 




Это сообщение отредактировал(а) n199a - 8.8.2013, 14:34
PM MAIL   Вверх
bsa
Дата 8.8.2013, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




 ! 
bsa
Ты зачем в двух разных темах задаешь одни и те же вопросы? Прекрати это делать


Добавлено через 1 минуту и 26 секунд
Цитата(n199a @  8.8.2013,  15:28 Найти цитируемый пост)
В командах сборки прописывать надо?
Без подсветки
gcc -Wall -c "%f"
Что за бред?
Сборка - это сборка. А запуск - это запуск.
PM   Вверх
n199a
Дата 8.8.2013, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 17.11.2011

Репутация: нет
Всего: нет



Цитата(bsa @  8.8.2013,  14:30 Найти цитируемый пост)
Ты зачем в двух разных темах задаешь одни и те же вопросы? Прекрати это делать

Я в другой теме написал, что, лучше в одной отвечать. Получилось так, что, из двух тем получилась общая суть. Извините  smile 

Самое главное в этом тексте:
Если, например, программа запускалась с двумя параметрами
имя_программы.exe file1 file2 ,
то argc равен 3 и функции main() станут доступны три
указателя на строки: argv[0], argv[1] и argv[2]. Первый
argv[0] укажет на полный путь к программе1, второй
argv[1] — на первый аргумент, то есть file1, третий
argv[2] — на file2.

Вопрос: Как запустить этот простой код с двумя параметрами?
Пользуюсь Geany.

Цитата(bsa @  8.8.2013,  14:30 Найти цитируемый пост)
Что за бред?
Сборка - это сборка. А запуск - это запуск. 

Вот, что стоит в комманде сборки:
Код

"./%e"



Решено:
user posted image

Это сообщение отредактировал(а) n199a - 8.8.2013, 14:40
PM MAIL   Вверх
akizelokro
Дата 8.8.2013, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Это стандартный простой пример на обработку параметров для выполняемого файла.
Раньше, когда графическими интерфейсами и не пахло, всё делалось именно так.
То есть это урок как обрабатывать входящие параметры (можно ещё и парсер приделать). В рамках обучения - полезный пример. Заодно ты ознакомился с чтением параметров командной строки.

Добавлено через 1 минуту и 1 секунду
Прости запускай этот выполняемый файл из командной строки. или можешь скрипт написать по его запуску.



--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.