课后作业S1E22:指针和数组的问题
题目:使用 fgets 函数接收用户输入的两个字符串(仅支持英文)到 str1 和 str2 中,对比 str1 和 str2,如果两个字符串完全一致,打印“完全一致”;如果存在不同,打印第一处不同的位置(索引下标)。循环那里有问题,但看不出来问题是什么{:10_272:}
#include <stdio.h>
int main()
{
char str1;
char str2;
printf("请输入第一个字符串:");
fgets(str1,100,stdin);
printf("请输入第二个字符串:");
fgets(str2,100,stdin);
char *p1 = str1;
char *p2 = str2;
int index =1;
while((*p1==*p2)!='\0')
{
p1++;
p2++;
index++;
}
if(*p1=='\0'&&*p2=='\0')
{
printf("两个字符串完全一致!\n");
}
else
{
printf("两个字符串不完全相同,第%d个字符出现不同!\n",index);
}
return 0;
}
你提到的代码有几点需要改进:
1. **变量声明错误**:`char str1;`应该是`char str1;`,因为`fgets`需要接收数组。
2. **`while`循环条件错误**:不该用`'\\0'`进行比较。
3. **比较方法错误**:应直接比较字符。
这里是修正后的代码:
#include <stdio.h>
int main()
{
char str1;
char str2;
printf("请输入第一个字符串:");
fgets(str1, sizeof(str1), stdin);
printf("请输入第二个字符串:");
fgets(str2, sizeof(str2), stdin);
int index = 0;
while (str1 != '\0' && str2 != '\0')
{
if (str1 != str2)
{
printf("两个字符串不完全相同,第%d个字符出现不同!\n", index + 1);
return 0;
}
index++;
}
if (str1 == '\0' && str2 == '\0')
{
printf("两个字符串完全一致!\n");
}
else
{
printf("两个字符串不完全相同,第%d个字符出现不同!\n", index + 1);
}
return 0;
}
### 关键修改点:
- **用于存储字符串的数组**:`char str1; char str2;`
- **循环终止条件**:用`str1 != '\0' && str2 != '\0'`
- **字符比较**:`if (str1 != str2)`,比较时需确保每个字符。
这样代码能正确比较输入的两个字符串。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 这一句:
while((*p1==*p2)!='\0')
改为:
while(* p1 && * p2 && * p1 == * p2)
页:
[1]