Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.03.2010, 18:59   #1
cympak
Новичок
Джуниор
 
Регистрация: 02.03.2010
Сообщений: 3
По умолчанию Передача аргументов программе на Си, как реализовать?

Всем привет!

Прошу не пинать ногами, т.к. я только начал изучать Си.
Изучаю я под Линуксом Дебиан, компилятор gcc.
Я понимаю, что для некоторых мой вопрос будет простым, но для меня это пока сложно.

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

Вот пытался накорябать, не работает.

Код:
int main (int argc, char * argv[]) {
    while (1) {
        printf("...\n");
        usleep (argv[1]);
    }
    return 0;
}
Помогите пожалуйста.

Заранее благодарю за помощь!
cympak вне форума
Старый 02.03.2010, 19:09   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
int main (int argc, char ** argv[])
NiCola999 вне форума
Старый 02.03.2010, 19:17   #3
cympak
Новичок
Джуниор
 
Регистрация: 02.03.2010
Сообщений: 3
По умолчанию

NiCola999, тоже самое...

Вот предупреждение при компиляции:

test.c: In function ‘main’:
test.c:9: warning: passing argument 1 of ‘usleep’ makes integer from pointer without a cast

Несмотря на предупреждение, программа компилится.
за закуске ./test - цикл работает и постоянно выводится "...", если же
запустить ./test 500000 то программа выводит один раз "..." и застревает.

Вот полный код:

Код:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/io.h>

int main (int argc, char ** argv[]) {
    while (1) {
        printf("...\n");
        usleep (argv[1]);
    }
    return 0;
}

Последний раз редактировалось cympak; 02.03.2010 в 19:26.
cympak вне форума
Старый 02.03.2010, 19:31   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

argv имеет тип char** , функция usleep принимает в качестве аргумента целое число. Есть ф-я которая переводит числовую строку в число
int atoi(char *);
она находится в файле stdlib.h
Код:
 usleep (atoi(argv[1]));

Последний раз редактировалось NiCola999; 02.03.2010 в 19:36.
NiCola999 вне форума
Старый 02.03.2010, 19:35   #5
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

NiCola999
Сумничать решил? Это все одно и тоже, да и к тому же написано не правильно.
Код:
int main (int argc, char ** argv)
Модератор: не нужно оскорблений
То Модератор: Я не вижу здесь ни единого оскорбления. И не стоит редактировать мои посты таким образом.



cympak
int main (int argc, char * argv[])
...
int usleep(useconds_t useconds)

А теперь немного подумай... =)

Последний раз редактировалось SnX; 02.03.2010 в 20:04.
SnX вне форума
Старый 02.03.2010, 19:39   #6
cympak
Новичок
Джуниор
 
Регистрация: 02.03.2010
Сообщений: 3
По умолчанию

NiCola999, спасибо! Меня один сайт завел в заблуждение, типа еа Си можно складывать разные типы, а они автоматом доводятся до нужного типа - выходит, это не так!

Еще раз спасибо, все получилось!
cympak вне форума
Старый 02.03.2010, 19:49   #7
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
Меня один сайт завел в заблуждение, типа еа Си можно складывать разные типы, а они автоматом доводятся до нужного типа - выходит, это не так!
вобще-то можно, но не все типы приводятся к нужному. Если не изменяет память... приводятся автоматом только типы с числами, т.е например short можно записать в int, а вот char* в int не перепишешь, так как char* это массив

Последний раз редактировалось NiCola999; 02.03.2010 в 19:51.
NiCola999 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметров программе Granus Общие вопросы C/C++ 3 02.03.2010 17:49
передача параметров программе при запуске из командной строки shurik_7866 Общие вопросы Delphi 3 03.06.2009 18:23
как реализовать в программе, запуск bat файлов? SereJa1020 Общие вопросы Delphi 1 06.03.2008 18:10
Передача параметров программе при её запуске troo Общие вопросы Delphi 7 13.05.2007 21:22