2013-04-29 4 views
2

토큰으로 나뉘어져있는 두 단어로 구성된 파일에서 문자열을 읽고이를 내 입력과 비교하려고합니다. 첫 번째 비교는 잘 작동하지만 두 번째 비교는 작동하지 않습니다. print 문은 같은 것을 출력하지만 검사는 실패합니다. 나는 그것이 특수 문자의 끝으로 인한 것 같아요.C 토큰과 문자열 비교

if(strcmp(argv[2], token[0]) == 0){ 
    printf("Input1 match\n"); 
    printf("%s\n", argv[3]); 
    printf("%s\n", token[1]); 
    if(strcmp(argv[3], token[1]) == 0) 
    { 
     printf("Input2 match\n"); 
    } 
} 

편집 :

printf("[%s]\n", argv[3]); 
printf("[%s]\n", token[1]); 

에 : 문자열이

void strip(char *s) { 
    char *p2 = s; 
    while(*s != '\0') { 
     if(*s != '\t' && *s != '\n') { 
      *p2++ = *s++; 
     } else { 
      ++s; 
     } 
    } 
    *p2 = '\0'; 
} 
+1

토큰 화를 수행하는 코드를 게시하면 더 좋은 답변을 얻을 수 있습니다. 그것은 아마도 문제가있는 곳일 것입니다. –

답변

6
에 인쇄 문을 변경

의 수정 프로그램 \ n 개의 내 두 번째 토큰의 성격과 트림이 코드를 사용하여이 있었다 그들이 인 경우 실제로 같은지보십시오. <space> 또는 \n과 같이 토큰 끝에 "숨겨진"문자가 있음을 쉽게 알 수 있습니다.

심지어 그와 함께 표시되지 않는 경우 헥스 덤프 프로그램을 통해 출력이있는 경우 (A), 당신이 할 수있는 파이프, 하나 사용할 수는 , 뭔가 같은 :

./myprog | od -xcb 

그럼 당신이 할 수있는 의심스러운 문자가 있는지 출력을 검사하십시오.


(A) Windows에서 인 경우에, GVIM이있는 메뉴의 "16 진수로 변환", 또는 od 같은 것들을 얻을 Cygwin에서 또는 GnuWin32 도구를 설치할 수 있습니다.

+0

인쇄되지 않는 문자 인 경우이 방법이 도움이되지 않을 수 있습니다. 출력을'hexdump'에 파이핑하거나'strlen'을 출력하는 것은 더 유익 할 것입니다. –

+0

출력에 \ n 문자가 표시됩니다. 그것을 다듬어서 고칠 수 있습니다. 감사. – Danson