2014-12-17 2 views
4

main에 인수를 취하는 C 코드를 작성하려고합니다. 따라서 cmd에 문자열을 쓸 때, 프로그램은 내부에서 일을 처리합니다. 그러나 나는 잘못된 것을하고 있으며 그것을 찾을 수 없습니다. 명령 줄 인수를 제대로 비교하는 방법?

이 코드 다음에 cmd

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char * argv[]){ //File name is main.c 
    if(argc != 3) 
     printf("Wrong!!!!!!!!!"); 
    else 
     if (argv[1] == "-s") 
      girls(); //Prints "Girls" 
     else if(argv[1] == "-k") 
      boys(); //Prints "Boys" 
     else 
      printf("OMG!!"); 
} 

;

gender -s pilkington

gcc -o gender main.c

나는 명령 있음을 입력합니다. 부 출력은 항상

"OMG !!"

어느 부분이 잘못 되었습니까?

+1

** == ** == ** 문자열의 내용이 아니라 포인터의 주소를 비교합니다. – MrSmith42

답변

8

코드에서 argv[1] == "-s"은 잘못된 부분입니다. 문자열 비교는 == 연산자로 수행 할 수 없습니다.

문자열을 비교하려면 strcmp()을 사용해야합니다. argv[1]"-s" 여부가 포함 된 경우 검사 할 경우

코드는

if (! strcmp(argv[1], "-s")) { //code here } 

처럼 보일 것입니다.

+0

고마워, 지금 일하고있어 :) – pilkington

+0

@ pilkington welcome. :-) –

1

을 확인하면 argv[1] == "-s"의 조건이 충족되지 않습니다. 문자열이므로 strcmp 함수를 사용할 수 있습니다.

 if((strcmp(argv[1],"-s")) == 0) 
    girls(); 
    else if ((strcmp(argv[1],"-k")) == 0) 
    boys(); 

이 시도 ..

0

을 당신은 strcmp와 함수를 사용하여 문자열을 비교해야합니다. 항등 연산자에서 문자열을 확인할 수 없습니다.

int strcmp(const char *s1, const char *s2); 

코드에서 확인해보십시오.

if ((strcmp(argv[1],"-s")==0) 
1

strcmp (s1, s2) 기능을 사용하여 두 문자열을 비교하십시오.

  if (strcmp(argv[1],"-s")==0) 
        girls(); //Prints "Girls" 
      else if(strcmp(argv[1],"-k")==0) 
        boys(); //Prints "Boys" 
      else 
        printf("OMG!!"); 
관련 문제