Передача аргументов в программу на C - PullRequest
0 голосов
/ 17 апреля 2010

Я писал программу на C, где я использую 6 переменных a, b, c, d, e, f

a, b, c - постоянные значения, которые я должен передать в качестве аргументов из командной строки.

d, e, f будут размером массивов структуры.

typedef struct
{
   blah blah
} ex;

ex ex0[d];

Я очень озадачен тем, как передать все это в качестве аргумента. Прямо сейчас я жестко закодировал эти значения, что, по-видимому, я не должен делать.

Ответы [ 3 ]

7 голосов
/ 17 апреля 2010

Это должно помочь вам начать:

int main(int argc, char* argv[]) {
    // argc - number of command line arguments
    // argv - the comand line arguments as an array

    return 0;
}
3 голосов
/ 17 апреля 2010

Все параметры, которые вы передаете программе, сохраняются во втором аргументе основной функции

int main(int argc, char* argv[]) // or int main(argc, char** argv)

, чтобы вы могли легко получить доступ к 4-му параметру с помощью argc [3]. Но это не int, это строка, поэтому вам нужно ее проанализировать. Существуют стандартные библиотеки для того, чтобы вы могли получать реальные параметры из argc и анализировать их для нужного вам типа. Но в случайных программах нет смысла их использовать, поэтому ваш код может выглядеть так:

typedef struct
 {
  blah blah
 } ex;
int main(int argc, char* argv[])
{
 ex ex0[(int)argv[3]]; // i am not sure if it works on pure C, so you can try int atoi(char *nptr) from stdlib.h
}
1 голос
/ 17 апреля 2010

Использовать аргументы командной строки

int main(int argc, char* argv[]) // or int main(int argc, char **argv)
{
   // argc is the argument count
   //argv : The array of character pointers is the listing of all the arguments.
   //argv[0] is the name of the program.   
   //argv[argc] is a null pointer
}
...