를 읽고 난 명령 줄 C에 입력합니다. 나는 그것을 스캔해야합니까, 아니면 그것을 접근 할 수있는 임의의 방법이 있습니까?명령 줄 인수는 파일
내 질문에 내 프로그램에서 myfile.txt를 어떻게 사용할 수 있습니까?
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
를 읽고 난 명령 줄 C에 입력합니다. 나는 그것을 스캔해야합니까, 아니면 그것을 접근 할 수있는 임의의 방법이 있습니까?명령 줄 인수는 파일
내 질문에 내 프로그램에서 myfile.txt를 어떻게 사용할 수 있습니까?
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
당신은 당신의 주요 기능으로 int main(int argc, char **argv)
을 사용할 수 있습니다.
argc
- 프로그램에 대한 입력 인수의 수입니다.
argv
- 모든 입력 인수에 대한 포인터가됩니다.
argc
2argv[0]
myprogram
될 것입니다 될 것입니다 : 그래서, 당신은 당신의 프로그램을 실행 C:\myprogram myfile.txt
를 입력 한 경우.
argv[1]
은 myfile.txt
입니다. read this, 다른 모드에서 파일을 여는 FILE *f = fopen(argv[1], "r"); // "r" for read
:
자세한 내용 can be found here
파일을 읽을 수 있습니다.
'txt' 파일 이름을'main'이 아닌 다른 함수에 넘겨주는 법? – Sigur
명령 줄 인수는 단순한 C- 문자열입니다. 원하는대로 할 수 있습니다. 귀하의 경우에는 파일을 열고 파일을 읽고 닫을 수 있습니다.
이 question (및 답변)이 유용 할 것입니다.
는
int main(int argc, char* argv [])
는 argc 인수의 수를 지정처럼 메인이 선언
argv는 문자열 배열에 대한 포인터입니다 (적어도 하나의 멤버 - 프로그램 이름 포함)
당신이 그렇게 같은 명령 줄에서 파일을 읽을 것입니다 :
: 읽기File* file_handle;
엽니 다 file_handle : C:\my_program input_file.txt
는 파일 핸들을 설정
file_handle = fopen(argv[1], "r");
fopen은 파일에 대한 포인터를 반환하거나 파일이없는 경우 NULL
을 반환합니다. ARGV 1, 인수로 읽고 싶은 파일이 포함
"R"은 당신이 사용 내용을 읽고
(더 다른 모드 here에) 읽기 위해 파일을 열 것을 의미한다 예를 fgets :
fgets (buffer_to_store_data_in , 50 , file_handle);
당신은에 char *
버퍼를 필요 (예를 들면 문자의 배열 등)에 데이터를 저장, 두 번째 인수는 읽어 얼마나 지정하고 제 마지막 핸들
fclose(file_handle);
포인터이다
명령 줄을 사용하는 방법에 대한받은 모든 수행 :
모든 제안이 정확하지만, 그것은 당신이 또한 타이를 사용하여 고려할 수 나에게 소리 파일 대신 stdin
으로 읽는 진부한 패턴을 만든 다음 파이핑으로 앱을 구동하십시오 (예 : myfile > yourpgm
). 그런 다음 scanf
을 사용하여 표준 입력에서 읽을 수 있습니다. 유사한 방법으로 stdout/stderr
을 사용하여 출력을 생성 할 수 있습니다.
이것은 프로그래밍 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 */
}
fopen() 또는 open()을 사용하여 엽니 다. – Barmar
파일을 읽는 방법에 대한 질문이나 인수 목록에서 파일 이름을 가져 오는 방법에 대한 질문은 무엇입니까? – Barmar
유닉스 계열 시스템을 사용한다면 프로그램을'myprogram