Аргументы командной строки, чтение файла

Если я вошел в командную строку C: myprogram myfile.txt

Как я могу использовать myfile в своей программе. Должен ли я сканировать его или есть произвольный способ доступа к нему.

мой вопрос в том, как я могу использовать myfile.txt в моей программе.

int
main(){
    /* So in this area how do I access the myfile.txt 
    to then be able to read from it./*

5 ответов


можно использовать int main(int argc, char **argv) Как ваша основная функция.

argc - будет количество входных аргументов для вашей программы.
argv - будет указателем на все входные аргументы.

Итак, если вы ввели C:\myprogram myfile.txt для запуска программы:

  • argc будет 2
  • argv[0] будет myprogram.
  • argv[1] будет myfile.txt.

более подробная информация можно найти вот!--27-->

читать файл:
FILE *f = fopen(argv[1], "r"); // "r" for read

для открытия файла в других режимах читать это.


  1. объявите свой основной, как это

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

    • argc задал количество аргументов (если аргументы не передаются, это равно 1 для имени программы)

    • argv-указатель на массив строк (содержащий хотя бы один элемент - название программы)

    • вы прочитали бы файл из командной строки следующим образом: C:\my_program input_file.txt

  2. настройка дескриптора файла:

    File* file_handle;

  3. откройте file_handle для чтения:

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

    • функции fopen возвращает указатель на файл или NULL если файл не существует. аргв1, содержит файл, который вы хотите прочитать в качестве аргумента

    • "r" означает, что вы открываете файл для чтения (подробнее о другом режимы здесь)

  4. прочитайте содержимое, используя, например,fgets:

    fgets (buffer_to_store_data_in , 50 , file_handle);

    • вам понадобится char * buffer для хранения данных в (например, массив символов), Второй аргумент указывает, сколько читать, а третий является указателем на файл
  5. наконец-то закрыть ручка

    fclose(file_handle);

все готово :)


Это путь программирования 101. Это требует много само собой разумеющегося, и он не делает никакой проверки ошибок вообще! Но это поможет тебе начать.

/* this has declarations for fopen(), printf(), etc. */
#include <stdio.h>

/* Arbitrary, just to set the size of the buffer (see below).
   Can be bigger or smaller */
#define BUFSIZE 1000

int main(int argc, char *argv[])
{
    /* the first command-line parameter is in argv[1] 
       (arg[0] is the name of the program) */
    FILE *fp = fopen(argv[1], "r"); /* "r" = open for reading */

    char buff[BUFSIZE]; /* a buffer to hold what you read in */

    /* read in one line, up to BUFSIZE-1 in length */
    while(fgets(buff, BUFSIZE - 1, fp) != NULL) 
    {
        /* buff has one line of the file, do with it what you will... */

        printf ("%s\n", buff); /* ...such as show it on the screen */
    }
    fclose(fp);  /* close the file */ 
}

аргументы командной строки - это просто C-строки. Ты можешь делать с ними все, что захочешь. В вашем случае вы можете открыть файл, прочитать что-то из него и закрыть его.

вы можете найти это вопрос (и ответ) полезные.


все предложения, которые вы получили об использовании командной строки правильные,но Мне кажется, вы также можете использовать типичный шаблон, который читается stdin вместо файла, а затем диск вашего приложения по трубопроводу, например cat myfile > yourpgm. Затем вы можете использовать scanf для чтения из stdin. Аналогичным образом вы можете использовать stdout/stderr произвести выход.