2016-06-28 3 views
0

Я пытаюсь сравнить содержимое char * с строкой. Я могу распечатать контент, но не могу их сравнить. КодСравнение 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

OP в хорошо итерацию через x ...

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

... но попытки сравнить каждый char из x по адресу "ne".

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

Для сравнения строк указывали на 2 char *, может сделать свой собственный strcmp().
Обратите внимание, что реальный strcmp() возвращает 0 при совпадении строк или положительных или отрицательных значений в зависимости от того, что «больше». Кажется, что для ОП требуется только то или иное сравнение.

// 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; 
    } 
    .... 
} 
Смежные вопросы