Аргументы командной строки, чтение файла
Если я вошел в командную строку 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
для открытия файла в других режимах читать это.
-
объявите свой основной, как это
int main(int argc, char* argv [])
argc задал количество аргументов (если аргументы не передаются, это равно 1 для имени программы)
argv-указатель на массив строк (содержащий хотя бы один элемент - название программы)
вы прочитали бы файл из командной строки следующим образом:
C:\my_program input_file.txt
-
настройка дескриптора файла:
File* file_handle;
-
откройте file_handle для чтения:
file_handle = fopen(argv[1], "r");
-
прочитайте содержимое, используя, например,fgets:
fgets (buffer_to_store_data_in , 50 , file_handle);
- вам понадобится
char *
buffer для хранения данных в (например, массив символов), Второй аргумент указывает, сколько читать, а третий является указателем на файл
- вам понадобится
-
наконец-то закрыть ручка
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
произвести выход.