2016-05-12 229 views
0

我尝试读取用户输入,直到用户输入“故事结束”。我可以通过以下代码成功比较2个用户输入的单词,但我无法设法将用户输入的字符串与我的字符串进行比较(本例中为“测试”)。它保持返回0.比较手动输入的字符串与用户输入

我应该如何比较它们?

我不能使用string.h我正准备参加考试,string.h被禁止使用。

int getLength(char str[]) { 
    int i; 
    for (i = 0; str[i] != '\0'; i++) 
    ; 
    return i - 1; 
} 

int strcompare(char alpha[], char bravo[]) { 
    if (getLength(alpha) == getLength(bravo)) { 

    int i; 
    for (i = 0; i <= getLength(alpha); i++) { 
     if (alpha[i] != bravo[i]) { 
     return 0; 
     } 
    } 
    return 1; // theyre same 
    } else { 
    //different lengths cant be same 
    return 0; // not same 
    } 
    return -1; 
} 


char c[500], h[500] = { 't', 'e', 's', 't', '\0' }; 
gets(c); 
printf("%d",strcompare(c,h)); 
+0

来自gets的字符串在结尾处有'\ n'。你需要照顾这一点。 –

+1

'return i-1;' - >'return i;' – BLUEPIXY

+0

当输入'test'时,我得到'1'。 – BLUEPIXY

回答

0

您编写的代码有一个无关部分和一个无法到达的部分,以及注释中提到的次优问题。如果尺寸不匹配,无法访问的return -1声明可能打算返回-1

#include <stdio.h> 

int getLength(char str[]) 
{ 
    int i; 
    for(i = 0 ; str[i] != '\0' ; i++); 
return i; 
} 

int strcompare(char alpha[], char bravo[]){ 
    int a = getLength(alpha); 
    int b = getLength(bravo); 
    if(a == b){ 
    int i; 
    for(i = 0 ; i <= a ; i++){ 
     if(alpha[i] != bravo[i]) 
      return 0; // sizes match, contents don't 
     } 
    return 1;    // they're same 
    } 
return -1;    // sizes don't match 
} 


int main(void){   
    char c[500], h[500] = {'t','e','s','t','\0'}; 
    gets(c); 
    printf("%d\n",strcompare(c,h)); 
return 0; 
} 
相关问题