C语言 不用strcmp() 实现字符串比较

#include "stdio.h"
main()
{
char str1[20],str2[20];
int i=0,k;
gets(str1);
gets(str2);
while(str1[i])
if(str1[i]!=str2[i]) break;
else i++;
k=str1[i]-str2[i];
if(k==0)
printf("str1=str2\n");
else
if(k>0) printf("str1>str2\n");
else printf("str1<str2\n");
}
其中
while(str1[i])
if(str1[i]!=str2[i]) break;
else i++;
这一步是什么意思?我怎么感觉可有可无呢?哪位高手解释一下。

判断字符串str1是不是已经结束了,这里判断不严密,str1与str2都应判断是否已经结束。
while( (str1[i]!='\0')&&(str2[i]!='\0'))
if (str1[i]!=str2[i])
break;

else

i++; //继续判断下一个字符追问

这步不加行吗?对程序本身有什么影响?

追答

必须要加
不加的话,只能判断两个字符串的第一个字符是不是相等
不能判断整个字符串的内容
不加的话:china和chinese两个字符串 会输出:str1=str2,因为只比较了第一个字符“c”

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-07
首先要判断str1[i]这个位置是否存在,因为一个字符串可能没用完数组空间就结束了,以一个\0作为结尾,遇到这里就要跳出循环,因此用了while来遍历。追问

那如果不加这一步会怎么样呢,我运行了一下加和不加没区别呀

第2个回答  2012-12-07
找到第一个不相同的字符,然后比较这两个字符大小。

C语言 不用strcmp() 实现字符串比较
这句话才是遍历字符串啊。如果没有这句,只用k=str1[i]-str2[i]; 判断的话,只能判断第一个字符(如"a"和"ab"就会判定为相等了)。while(str1[i]) \/\/ 这句话是判断 字符串1 有没有到结尾if(str1[i]!=str2[i]) break; \/\/ 这计划是判断两个字符串的第 i 个字符相不相等,不相等就跳出else i...

C语言 不用strcmp() 实现字符串比较
判断字符串str1是不是已经结束了,这里判断不严密,str1与str2都应判断是否已经结束。while( (str1[i]!='\\0')&&(str2[i]!='\\0'))if (str1[i]!=str2[i])break;else i++; \/\/继续判断下一个字符

用c语言编写程序,不使用strcmp函数,比较任意两个字符串的大小
int my_strcmp(const char *a, const char *b){ if (((a == 0) && (b == 0)) || ((*a == 0) && (*b == 0))) return 1; \/\/如果已经比较到字符串结尾,则表示字符串相等 if ((strlen(a) != strlen(b)) || (a[0] != b[0])) return 0; \/\/如果长度不相同或发...

c语言两个字符串比较大小的问题,不使用strcmp函数
不过不用加头文件string.hwhile((str1[i]==str2[i])&&(str1[i]!='\\0')) i++; 这是说两个字符串从首位字符开始比较、如果相比较的两个字符相等且第一个字符串没有到结尾、那么要比较的字符各向后移动一位、str1[i]!='\\0'是判断字符串结束的、当不满足条件时就会继续向下执行if(str1[i]=='\\...

C语言问题:不用strcmp函数比较两个字符串的大小
strcmp函数是用来比较字符串的,而字符串以'\\0'作为结尾标志,故要加上&&a[i]!='\\0'。

c语言怎么不用strcmp按字典顺序对多个字符串排序?
strcmp子函数的功能是比较str1和str1字符串的每个字符 用一个for循环来实现这个功能的 功能实现,模拟着函数 void mystrcmp(char *str1,char *str2){ int i;for(i=0;str1[i]||str2[i];i++)if(str1[i]<str2[i])retrun -1;else if(str1[i]>str2[i])return 1;return 0;} strc...

编写C语言程序,不使用strcmp函数,比较任意两个字符串的...
丹凤呈祥龙献瑞 红桃贺岁杏迎春 福满人间 一年好运随春到 四季彩云滚滚来 万事如意

用循环和数组编写,比较两个字符串的大小。(不用到strcmp函数)
\/* HELLO.C -- Hello, world *\/ include <stdio.h> int main(){ int i, n;char s1[50];char s2[50];printf("enter s1:");scanf("%s", s1);printf("enter s2:");scanf("%s", s2);n = strlen(s1) >strlen(s2) ? strlen(s2) : strlen(s1);for (i = 0; i <= n; ...

...字符串的比较。不使用C语言提供的标准函数strcmp。输出比较的结果...
include "stdio.h"int main(int argv,char *argc[]){char a[100],b[100],i;printf("Input 2 strings...\\n");scanf("%100s%100s",a,b);for(i=0;a[i]==b[i] && a[i];i++);printf("%d\\n",a[i]-b[i]);return 0;}运行样例:...

c语言只能用strcmp比较字符串相等吗,还是也可以用==号比较字符串...
只能用strcmp函数,当然了也可以一个个的比较,就是先看长度是否相等,如果长度相等再比较字符串中的每一个字符是否一样,不能用==直接比较、

相似回答
大家正在搜