C语言编程:从键盘上输入两个字符串,判断两个字符串是否相等。

2025-01-05 13:21:50
推荐回答(5个)
回答1:

主要的错误是因为scanf (“%s,%s”,&str1,&str2);中%s,%s之间的逗号造成的,加上逗号之后会导致第二个输入的字符串出现问题。

可以将scanf (“%s,%s”,&str1,&str2);改成scanf (“%s%s”,&str1,&str2);

 if (str1[j] == ‘\0’ || str2[j] == ‘\0’)应该改为 if (str1[j] == ‘\0’ && str2[j] == ‘\0’)这样可以有效的解决你的问题。

正确代码供参考:

#include

int main() {

   char str1[10],str2[10];

   int j = 0,flag = 0;

   printf(“\n”);

   scanf(“%s%s”,&str1,&str2);

   while (str1[j] == str2[j]) {

       j++;

       if (str1[j] == ‘\0’ && str2[j] ==‘\0’) {

           flag = 1;

           break;

       }

   }

   if (flag==1) {

       printf(“the two string are equal.”);

   } else {

       printf(“the two string are not equal.”);

   }

}

扩展资料:

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。

空白字符会使scanf函数在读操作中略去输入中的一个或多个空白字符。

一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

scanf使用注意:

在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。

对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上“&”操作符。

可以在格式化字符串中的“%”各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。

scanf函数中没有类似printf的精度控制。

scanf中要求给出变量地址,如给出变量名则会出错。

在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。

C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。

参考资料来源:百度百科-scanf

回答2:

string.h头文件中的strcmp函数可以实现字符串的比较...亲..用函数吧

回答3:

1、挑一个错误 scanf("%s %s",str1,str2); 不需要加取缔符
2、 我是我重新打的 你的太乱了
#include
int main()
{
char str1[10],str2[10];
int j,flag;
j=0;
gets(str1);
gets(str2);
while (str1[j]==str2[j])
{
j++;
if ( (str1[j]=='\0')||(str2[j]=='\0'))
break;
}
if ( (str1[j]=='\0')&&(str2[j]=='\0'))
flag=1;
else
flag=0;
if(flag )
printf ("the two string are equal.");
else
printf ("the two string are not equal.!!!\n");
system("pause");
}
3、你可以用更简单的方法
#include
strcmp(str1,str2) 相等时返回0

回答4:

#include
#include
int main()
{
char sa[100],sb[100];
scanf("%s%s",sa,sb);
if(strcmp(sa,sb)==0)puts("相等");
else puts("不相等");
return 0;
}

回答5:

写的太乱了,程序也乱。