2014-02-16 1 views
-2

C의 명령 줄 내용에 관한 간단한 질문.'<'및 '- option'이있는 명령 줄 C

아래 내용은 무엇을 의미합니까? 나는 그것이 실행 가능 테스트를위한 옵션이라는 것을 알게된다. test-a < test.txt

'< test.txt'는 무엇을 의미합니까?

또한 간단한 프로그램이 '-a, -b, -c'와 같은 옵션을 어떻게 받아 들일지 이해할 수 있다면 도움이 될 것입니다. 내 머리 꼭대기에서이 작업을 수행하는 방법처럼 보이는데 그 인수가 2 자이고 올바른 옵션의 문자 뒤에 '-'가 오는 지 확인하는 것입니다.하지만이 작업을 수행하는 특별한 방법이 있습니까? 마찬가지로 '-'다음에 옵션과 같은 문자가 자동으로 인식되는 C 언어가 있습니까?

+0

이 게시물은 도움이 될 것입니다. http://stackoverflow.com/questions/498320/pass-arguments-into-c-program-from-command-line – user376507

답변

1

C에서 특별한 의미가 아니며 명령 줄에 "<"이 있습니다.

많은 OS에서는 test.txt 파일의 표준 입력을 리디렉션합니다. 나는. 터미널에서 오는 표준 입력 대신 이름이 지정된 파일에서 가져옵니다.

사용자를 위해 명령 줄 구문 분석을 처리하려면 getopt을보십시오.

< 편집> I는 주석으로이 추가,하지만 난이 질문에 대해 답이 될만한 생각 : 당신이 app -a -b < xxx 입력하면

이 응용 프로그램을 호출하는 쉘이 라인의 < xxx 부분 < xxx원을 '해석 응용 프로그램에 전달 된 args 배열 (argv)에 있어야합니다. 리디렉션이 발생했음을 알 수있는 쉬운 방법이 없습니다.

+0

그렇다면이 파일의 모든 인수를 추출한다는 의미입니까? 그 텍스트 파일에 "The quick brown fox"와 같은 것이 있다면 어떻게 읽습니까? – user2353398

+0

당신의 프로그램이'scanf'를하거나 그것과 같은 것을한다면 그것은 당신이 intp 터미널을 타이프하는 대신에 파일에서 오는 것입니다. 파일 입출력은 여전히 ​​파일 입출력입니다 - 읽으려는 파일을 여는 경우 리다이렉션은 원하는 것이 아닙니다. – John3136

+0

잠깐, 혼란스러워. 테스트의 차이점은 무엇입니까? user2353398

-1

"< test.txt"는 test.txt의 내용이 인수로 전달됨을 의미합니다. "<"이 ">"로 바뀌면 프로그램의 출력이 test.txt로 리디렉션됩니다.

"-"을 (를) 탐지하는 특별한 방법이 없다고 생각합니다. 인수를 반복하고 첫 번째 문자가 "-"인지 확인합니다.

+0

닫기지만 올바른 것은 아닙니다. 대부분의 셸에서'foo

1

지금까지 John3136과 enedil이 말한 것을 명확히하고 싶습니다. 당신이 그 대답들 중 하나를 받아주기를 바랍니다.

셸 (예 : bash)은 입력 한 명령을 처리하고 적절한 프로그램을 실행하는 프로그램입니다. 스 니펫 < test.txt은 셸이 프로그램에 입력 (이 경우 text.txt)을 읽도록 지시하는 특수 지시어입니다. 지시문이 아닌 단어는 인수로으로 C 프로그램에 전달되고 enedil이 지적한대로 변수 argv을 통해 전달됩니다.

편집. 두 가지 방법으로 파일을 프로그램에 전달할 수 있습니다.

런타임시 파일 경로를 인수로 제공합니다.그런 다음 지정된 파일을 열 수 fopen를 호출 할 수

if (argc == 1) { 
    fprintf("No filename provided!"); 
    exit(EXIT_FAILURE); 
} 
FILE* f = fopen(argv[1], "r"); 
/* Do stuff with f here */ 

당신이 파일의 내용을 사용하고자 할 때마다 다른 옵션은 당신의 C 프로그램에 stdin에서 입력을 읽고, < test.txt을 사용하여 파일을 리디렉션하는 것입니다 stdin으로 이 방법을 사용하면 프로그램이 파일에서 입력을 읽거나 사용자 입력을받을 수 있으므로 더 많은 유연성을 제공합니다.

+0

그렇다면 test.txt의 내용을 읽고 싶다면 어떻게 이해할 수 있습니까? C 언어로 테스트하는 방법은 무엇입니까? – user2353398

+0

당신이하려고하는 것에 많이 달려 있습니다. 나는 그것을 대답으로 편집 할 것입니다. – MBlanc

+0

좋아요, 그런 식으로 리디렉션 된 경우 test.txt를 열어 볼 수 있습니까? 나는 fopen과 fscanf를 사용하는 방법을 이해하지만 커맨드 라인 인수와 리다이렉트 된 입력의 차이에 의해 문제가된다. – user2353398