Как работать с именем уже в массиве строк - PullRequest
0 голосов
/ 15 января 2012

Я пытаюсь найти способ использовать FILE * fopen ( const char * filename, const char * mode );, но передаю имя файла косвенно.я также хотел бы знать, как косвенно вызывать функцию с именем, взятым прямо из argv []. Я не хочу хранить строку в буферном массиве char.Например:

 int main (int argc,char *argv[])
    {
      FILE *src;
      ...
      src = fopen("argv[1]", "r");   //1st:how to insert the name of the argv[1] for example?
      ...
     function_call(argc,argv);    //2nd:and also how to call a function using directly argc argv
     ...
     }
    void create_files(char name_file1[],char name_file2[])
    {...}

Нужно ли хранить длину и строку символов для вызова функции?(относительно второго вопроса):)

Ответы [ 2 ]

4 голосов
/ 15 января 2012

Вы можете просто использовать argv[1], это char *:

if (argc < 2)
    /* Error. */

src = fopen(argv[1], "r");

То же самое относится к create_files.

create_files(argv[1], argv[2]);
1 голос
/ 15 января 2012

fopen принимает указатель на массив символов. argv - указатель на массив указателей на массивы символов.

fopen(argv[1], "r")

передаст указатель во второй позиции массива argv в fopen.

Если вы хотите передать argc и argv, просто передайте их такими, какие они есть. Их типы не меняются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...