c程序 不调用strcmp函数,比较两个字符串,输出 比较结果—一串相等时输出0,不等时输出第一 对儿不等字符的差值。
时间: 2023-12-14 14:38:15 浏览: 81
可以通过循环遍历两个字符串的每一个字符,逐个比较它们的 ASCII 码值来实现字符串的比较。如果两个字符串的每个字符都相等,则输出 0;否则,找到第一对不相等的字符,计算它们的 ASCII 码值之差,作为比较结果输出。
以下是一个示例代码:
```c
#include <stdio.h>
int main() {
char str1[100], str2[100];
int i = 0, flag = 0;
printf("Enter first string: ");
fgets(str1, 100, stdin);
printf("Enter second string: ");
fgets(str2, 100, stdin);
while (str1[i] != '\0' || str2[i] != '\0') {
if (str1[i] != str2[i]) {
flag = 1;
printf("Strings are not equal. Their difference is %d.\n", str1[i] - str2[i]);
break;
}
i++;
}
if (flag == 0) {
printf("Strings are equal.\n");
}
return 0;
}
```
在这个程序中,我们首先定义了两个字符数组 `str1` 和 `str2` 来存储两个字符串,并且定义了一个整型变量 `i` 和一个标志位 `flag`。我们使用 `fgets()` 函数从标准输入读入这两个字符串。
然后,我们使用一个循环来遍历两个字符串中的每一个字符。如果发现有不相等的字符,则将标志位 `flag` 设为 1,并输出它们的 ASCII 码值之差。如果两个字符串的所有字符都相等,则标志位 `flag` 仍为 0,此时输出字符串相等的信息。
需要注意的是,在使用 `fgets()` 函数读入字符串时,它会将输入缓冲区中的换行符也一并读入,因此我们需要在比较字符时判断到达字符串结尾时的标志字符 `\0`,而不是判断换行符。
阅读全文