|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请问大佬们这段代码是如何比较两个字符串是相等的呢?
if (*target1 == '\0' && *target2 == '\0')
{
printf("两个字符串完全一致!\n");
}
这样写仅是比较两个字符串是否同时结束吗?
为什么不能用str1==str2或*target1==*target2来比较是否相同呢?
感谢解答!!
答案代码如下:
- #include <stdio.h>
- #define MAX 1024
- int main()
- {
- char str1[MAX];
- char str2[MAX];
- char *target1 = str1;
- char *target2 = str2;
- int index = 1;
- printf("请输入第一个字符串:");
- fgets(str1, MAX, stdin);
- printf("请输入第二个字符串:");
- fgets(str2, MAX, stdin);
- while (*target1 != '\0' && *target2 != '\0')
- {
- if (*target1++ != *target2++)
- {
- break;
- }
- index++;
- }
- if (*target1 == '\0' && *target2 == '\0')
- {
- printf("两个字符串完全一致!\n");
- }
- else
- {
- printf("两个字符串不完全相同,第 %d 个字符出现不同!\n", index);
- }
- return 0;
- }
复制代码
总共有三种情况。1,两个字符串完全一致。2,一个短字符串和一个长字符串的前半部分完全一致。3,两个字符串长的都不一样。第3种情况会触发break,第2种情况不会。第3种情况显然不符合条件。而第2种情况,两个字符串不会同时结束。所以这两种情况都是字符串,不完全一致。剩下的情况就是字符串完全一致。
|
-
题图
|