Отправка указателя FILE на функцию для чтения - PullRequest
0 голосов
/ 23 сентября 2011

Я часами работал над этим, искал и искал, и мой код все еще не работает правильно.

Как мне прочитать мой ФАЙЛ из функции main, используя argv[] в качестве файла, который я хочу прочитать?

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>


FILE words(FILE *filesToRead)
{
    const char *Open;
    Open = (char *)filesToRead;

    filesToRead = fopen(Open, "rt");
    int line;
    while ((line = fgetc(filesToRead)) != EOF)
    {
        printf("%c", line);
    }

    fclose(filesToRead);

}

int main(int argc, char *argv[])
{
    char *ah = argv[];
    words(ah);
    return 0;
}

Ответы [ 2 ]

5 голосов
/ 23 сентября 2011

Попробуйте:

void words(char *filename)
{
    FILE *filesToRead = fopen(filename, "rt");
    /* ... */
}

int main(int argc, char *argv[])
{
    if (argc > 1)
        words(argv[1]);

    return 0;
}

Если честно (и, пожалуйста, не обижайтесь), то, как выглядит ваш код, кажется, вы пропустили несколько глав в используемой вами книге Си.

0 голосов
/ 23 сентября 2011

argv[] - это массив char * с. Например, если вы вызываете вашу программу из командной строки как:

my_prog.exe foo bar

Тогда:

  • argc будет 3;
  • argv[0] будет указывать на «my_prog.exe»
  • argv[1] будет указывать на "foo"
  • argv[2] будет указывать на "бар"

Так что внутри вашей функции main(), если вы ожидаете один аргумент, вам нужно проверить, что значение argc равно 2, а затем прочитать ваш аргумент из argv[1].

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