나는 주요 매개 변수를 표시 해야하는 코드를 작성했지만 컴파일하고 "*"프로그램을 입력하면 파일 구조가 표시됩니다. cmd의 명령은 다음과 같습니다.program.exe 1 2 3 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const* argv[]) {
for (int i=0; i<argc; i++) printf("%s\n", argv[i]);
return 0;
}
결과는 다음과 같습니다.
program
1
2
3
program.c
program.exe
10-03-20
11-02-20
그리고 내 질문 : 프로그램이 파일을 나열하는 대신 "*"를 인쇄하도록 할 수 있습니까? 조언 감사합니다
문제는 쉘
—
pmg
*
에 "file1 file2 ..."
의해 변환 된다는 것 입니다 . C 프로그램에는 아무런 문제가 없습니다 (포함 <stdlib.h>
하지 않아도 됨). 쉘이 별표 를 변환하지 못하도록하려면 :program.exe 1 2 3 "*"
도움을 주셔서 감사합니다
—
stasio14
질문과 관련이 없지만 엄격하게 말하면
—
Lundin
char const* argv[]
정확하지 않습니다. main () 형식을 직접 만들 수는 없으며 컴파일러만이 가능합니다. argv
쓰기는 종종 최선의 아이디어는 아니지만 실제로 읽기 / 쓰기 메모리입니다.
Windows cmd 쉘은 와일드 카드 확장을 수행하지 않습니다. cmd 셸에서 실행되지 않거나 컴파일러가 셸에서 수행 할 확장을 에뮬레이트하는 논리를 삽입하고 있습니다.
—
ikegami
*
쉘이 아닌 프로그램 자체에 의해 해석됩니다. 사용\*
또는"*"
프로그램에 *를 전달합니다.