比较手动输入的字符串与用户输入
问题描述:
我尝试读取用户输入,直到用户输入“故事结束”。我可以通过以下代码成功比较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));
答
您编写的代码有一个无关部分和一个无法到达的部分,以及注释中提到的次优问题。如果尺寸不匹配,无法访问的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;
}
来自gets的字符串在结尾处有'\ n'。你需要照顾这一点。 –
'return i-1;' - >'return i;' – BLUEPIXY
当输入'test'时,我得到'1'。 – BLUEPIXY