2016-06-28 5 views
0

char *의 내용을 문자열과 비교하려고합니다. 콘텐츠를 인쇄 할 수는 있지만 비교할 수는 없습니다. x을 통해 잘char *를 strcmp없이 문자열에 비교

#include<stdio.h> 

int input(char * x){ 
    int i,j = 0; 
    char myArray[10]; 
    x = myArray; 
    scanf("%s", x); 

    for(x; *x !='\0'; x++){ 
     if(*x == "ne"){ 
      printf("%d",1); 
      return 0; 
     } 
    } 
} 
+1

'if (* x == "ne")'는'char'' * x'와''ne "'의 주소를 비교합니다. 코드는'char'과'char'를 한 번에 하나씩 비교해야합니다. – chux

+0

char *는 실제로 각 문자열의 첫 번째 문자의 메모리 주소를 나타냅니다. 따라서 포인터의 값을 비교하고 싶지는 않지만 포인터가 가리키는 내용을 비교하려고합니다. – Module

+0

@chux : 나는 그렇게하려고 노력해 왔습니다. 나는 온라인에서 기사를 봤고 그들은 나를 사용하도록 제안했다. 나는 각 인물을 비교할 필요가 있음을 이해하지만 그렇게하는 방법을 모르겠습니다. – Maddy

답변

2

영업 이익의 코드 반복 ... 다음

for(x; *x !='\0'; x++){ 

...하지만 "ne"의 주소로 각각 charx의 비교를 시도합니다.

if(*x == "ne"){ // bad code 

자신의 strcmp()을 만들 수, 2 char * 가리키는 문자열을 비교합니다.
실제 strcmp()은 문자열이 "greater"에 따라 일치하거나 양수 또는 음수 일 때 0을 반환합니다. OP는 동등한 비교 만 필요로하는 것처럼 보입니다.

// Return 1 if the same 
int my_streq(const char *s1, const char *s2) { 
    while (*s1 == *s2 && *s1) { 
    s1++; 
    s2++; 
    } 
    return *s1 == *s2; 
} 


int readinput(char * x) { 
    .... 
    if (my_streq(x, "ne")) { 
    printf("%d",1); 
    return 0; 
    } 
    .... 
}