Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 03.08.2017
Сообщений: 40
1

GCC передача аргументов через командную строку

09.03.2021, 19:39. Показов 1834. Ответов 8
Метки gcc (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь запустить программу используя gcc на ubuntu, но не понимаю как мне передать в главную функцию аргумент имя папки.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
 
struct FileList
{
    char name[128];
    struct FileList* next;
};
 
struct FileList* FileListInit(const char* filename)
{
    struct FileList* list = (struct FileList*)malloc(sizeof(struct FileList));
    strcpy(list->name, filename);
    list->next = NULL;
    return list;
}
 
struct FileGroup
{
    int links;
    struct FileList* list;
    struct FileGroup* next;
};
 
struct FileGroup* FileGroupInit(int _links, struct FileList* _list)
{
    struct FileGroup* group = (struct FileGroup*)malloc(sizeof(struct FileGroup));
    group->links = _links;
    group->list = _list;
    group->next = NULL;
    return group;
}
 
void ListToGroup(struct FileGroup* group, struct FileList* _list)
{
    struct FileList* list = group->list;
    while (list->next)
        list = list->next;
    list->next = _list;
}
 
void FileToList(int _links, struct FileGroup* _group, struct FileList* _list)
{
    struct FileGroup* group = _group;
    do
    {
        if (group->links == _links)
        {
            ListToGroup(group, _list);
            break;
        }
        group = group->next;
    } while (group);
 
    if (!group)
    {
        group = _group;
        short less_flag = 0;
        while (group->next)
        {
            if (group->next->links > _links)
            {
                less_flag = 1;
                break;
            }
            group = group->next;
        }
        struct FileGroup* new_group = FileGroupInit(_links, _list);
        if (less_flag)
        {
            new_group->next = group->next;
            group->next = new_group;
        }
        else
            group->next = new_group;
    }
}
 
void PrintList(struct FileGroup* _group)
{
    struct FileGroup* group = _group->next;
    while (group)
    {
        struct FileList* list = group->list;
        printf("Files with %d number of links:\n", group->links);
        while (list)
        {
            printf("%s\n", list->name);
            list = list->next;
        }
        printf("/n");
        group = group->next;
    }
}
 
int main(int argc, char** argw)
{
    struct FileGroup* group = (struct FileGroup*)malloc(sizeof(struct FileGroup));
 
    if (argc != 2)
    {
        fprintf(stderr, "Invalid number of arguments");
        exit(1);
    }
 
    char* dirname = argw[1];
    DIR* dir = opendir(dirname);
 
    if (!dir)
    {
        fprintf(stderr, "Cannot open directory");
        exit(2);
    }
 
    struct dirent* obj;
 
    while (obj = readdir(dir))
    {
        char filename[128] = "\0";
        strcat(filename, dirname);
        strcat(filename, '/');
        strcat(filename, obj->d_name);
 
        struct stat* file = (struct stat*)malloc(sizeof(struct stat));
        stat(filename, file);
 
        FileToList(file->st_nlink, group, FileListInit(obj->d_name));
    }
 
    PrintList(group);
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2021, 19:39
Ответы с готовыми решениями:

Передача значений аргументов через командную строку
К примеру, видел такие реализации как prog.exe -server 10.10.10.1 -mask 255.255.255.192 -key...

QProcess и передача аргументов в командную строку
Доброго времени суток, господа форумчане! И так к делу: столкнулся со следующей задачей: используя...

Передача параметра через командную строку
В общем такая проблема делаю ScrSaver Нужно помочь с настройками Через командную строку все...

Передача символов через командную строку
Доброго времени суток! Прошу помочь мне с решением данной задачи: Через командную строку...

8
343 / 198 / 52
Регистрация: 18.10.2017
Сообщений: 1,952
09.03.2021, 21:23 2
Странный вопрос. А в чём проблема - передать аргумент? И как вы это делаете?
0
1 / 1 / 0
Регистрация: 03.08.2017
Сообщений: 40
09.03.2021, 21:50  [ТС] 3
Ну я пока никак не делаю. Проблема в том чтобы как раз передать - не знаю куда его писать.
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
09.03.2021, 22:04 4
C
1
2
3
4
5
6
7
8
int main(int ac, char ** av)
{
   if (ac <2) {
      printf("нет АГРУМЕНТА\n"); 
     return 1;
  }
  char *path = av[1];  // это и есть твоя папка (которую ты передал при запуске)
 ....
0
1 / 1 / 0
Регистрация: 03.08.2017
Сообщений: 40
09.03.2021, 22:12  [ТС] 5
Вот вот а как я передал? В командной строке что нужно написать?
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
09.03.2021, 22:14 6
Цитата Сообщение от Quartzetum Посмотреть сообщение
В командной строке
Код
proga "home/myfolder"
0
343 / 198 / 52
Регистрация: 18.10.2017
Сообщений: 1,952
09.03.2021, 22:16 7
Программа принимает, а не передаёт, передаёт оболочка.
В командной строке надо написать имя аргумента в двойных апострофах.
0
1 / 1 / 0
Регистрация: 03.08.2017
Сообщений: 40
09.03.2021, 22:20  [ТС] 8
То есть мне сперва нужно получить .out файл и при его запуске писать аргументы?
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
09.03.2021, 22:21 9
Quartzetum, угадал....
0
09.03.2021, 22:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2021, 22:21
Помогаю со студенческими работами здесь

Передача числа через командную строку
Доброго времени суток. Необходимо через командную строку передать число. Параметры из списка...

Передача пути через командную строку
Задача - обработка входных параметров командной строки. Мне необходимо в программу передать...

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

Передача строки в командную строку
Здравствуйте. Прошу подсказать,как передать в cmd из .py файла команду: cd C:\sdfs\sdfs...

Передача сообщений в командную строку
Здравствуйте господа. Никак не могу понять каким образом передать в командную стоку сообщение о...

Передача параметров в командную строку
Добрый день. Создал батник, который ищет на серверах активную указанную учетку RDP, и если...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru