Передача аргумента командной строки из основной функции в пользовательскую функцию C

Мне нужно передать аргумент командной строки из основной функции (main) в пользовательскую функцию с именем (GetFile): я попробовал это:

Основная функция:

FILE *GetFile(String Extension, String RW);

int main(int argc, char** argv) 
{
File *p
char *rootName = argv[1];
p= GetFile( ".name", "r");
if (p)
{   Do some Stuff!! }
 return 0;
}

Определяемая пользователем функция:

FILE *GetFile(String Extension, String RW)   
{
char  Fn[512];  
strcpy(Fn, rootName);
strcat(Fn, Extension);
return fopen(Fn, RW);
}

Пользовательская функция берет файл с именем root из Main function.copy его и объединяет с расширением, переданным вызывающей функцией

Как передать значение rootName в функцию GetFile вне моей основной функции. Любая помощь приветствуется

1 ответ

Продолжая комментарии, вы должны быть близки. Вот пример с объявлением и определением функции, приведенным в рабочий пример:

#include <stdio.h>
#include <string.h>

FILE *getfile (char *rn, char *ext, char *rw);

int main (int argc, char **argv) 
{
    FILE *p;
    char *rootname = argc > 1 ? argv[1] : "somefile";

    p = getfile (rootname, ".name", "r");
    if (p)
        printf ("file open for reading!\n");
    else
        fprintf (stderr, "error: file open failed.\n");

    return 0;
}

FILE *getfile (char *rn, char *ext, char *rw)   
{
    char fn[512] = "";

    if (!rn || !*rn || !ext || !*ext || (*rw != 'r' && *rw != 'w')) {
        fprintf (stderr, "getfile() error: invalid parameter.\n");
        return NULL;
    }

    strcpy (fn, rn);
    strcat (fn, ext);

    printf ("opening: %s, filemode: %s\n", fn, rw);

    return fopen (fn, rw);
}

Пример файла

$ touch myfile.name

Пример использования / Вывод

$ ./bin/fileopenfn myfile
opening: myfile.name, filemode: r
file open for reading!

Пример с несоответствующим именем файла

$ ./bin/fileopenfn
opening: somefile.name, filemode: r
error: file open failed.

Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.

Примечание: хотя это и не ошибка, стандартный стиль кодирования для C позволяет избежать использования caMelCase или же MixedCase имена переменных в пользу всех строчных букв при сохранении заглавных имен для использования с макросами и константами. Это вопрос стиля - так что это полностью зависит от вас. Смотри, например, NASA - C Style Guide, 1994

Другие вопросы по тегам