将手动输入的字符串与用户输入的字符串进行比较

标签 c

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

How should I compare them ?

我无法使用 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;
}

关于将手动输入的字符串与用户输入的字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187325/

相关文章:

谁能告诉我为什么c中会发生这种情况

c - 检测不完整的 32 位二进制数据

c - 嵌入式 Linux : Reading bytes from serial port too slow for quicker transfer

c - 有什么方法可以强制编译器不从缓存中删除任意变量吗?

c - 广度优先搜索构建的树是二叉树吗?

循环双向链表,打印函数

c - 32 位和 64 位编译器中 long 数据类型的大小发生变化

c - 如何在 Windows 的文件系统驱动程序中查找 PNP 设备 ID

c - 双链表中在末尾插入一个节点并在开头删除一个节点

c - 优化计算组合并避免溢出