그래서 argv 배열에서 C의 플래그와 인수에 대한 질문이 있습니다. 터미널을 통해 교환 원을 입력 할 때 : 예 : ./main a b c -a
끝 부분에 -a를 인식하지 못하지만, 다음과 같은 모든 인수의 시작 부분에 넣으면 : ./main -a a b c
이 검색됩니다.C의 깃발 순서
나는 모든 argumetns의 앞에있을 것이기 때문에 그것을 바꿔 치기를 시도했지만, 스왑 후에는 진행하지 않는다. 그 후 for 루프를 무시하는 것과 같은 것입니다. 그래서 그것은 단지 그것을 바꾼 다음 사건을 끝내게됩니다. 아무도 내가 여기에서 놓치고있는 것을 알고 있으면 나는 행복 할 것이다.
코드 :
(A--
옵션 앞에 표시) 모든
-a
스타일 옵션은 옵션이 아닌 인수하기 전에이있는 경우에도, 처리 할 수 있도록
getopt()
의 GNU 버전은 인수의 순열을 허용
while ((c = getopt(argc, argv, ":ahd:")) != -1) {
switch (c) {
case 'a':
if(strcmp(argv[argc-1], "-a") == 0){
swap(&argv[argc-1], &argv[1]);
}
for(i = optind; i < argc; i++){
for(j = optind; j < argc - 1; j++){
if(strcmp(argv[j], argv[j + 1]) > 0){
swap(&argv[j], &argv[j + 1]);
}
}
}
for(z = optind; z < argc; z++){
printf("%s\n", argv[z]);
}
printf("%s\n", argv[1]);
break;
당신은 그래서 우리는 당신이 잘못하고있는 것을 볼 수 있습니다 질문에 코드 누락하는 경우 변경하여 해결했습니다 좋아? :) –
당신이 "그것은 ...을 인식하지 못한다"고 말할 때 당신이 말하는 "그것"은 무엇입니까? – rici
문제는 프로그램 인수가'argv' 배열에 나타나는지 여부가 아니라 명령 행에서 나타나는 순서대로 나타나지만 프로그램이 수행하는 것입니다. 우리는 프로그램을 발표하지 않았을 때 프로그램이하는 것을 말할 수 없습니다. 코드에 대한 도움이 필요하면 일반적으로 문제를 시연하는 [mcve]가 필요합니다. –