在c语言中,有一个strcmp函数,其功能是比较两个字符串s1和s2。请编写一个你自己的字符串比较函数my_strcmp,来实现strcmp函数的类似功能。如果s1=s2,则返回0;否则返回s1 与s
时间: 2023-06-05 17:47:20 浏览: 518
2的第一个不同字符的ASCII码差值。
以下是一个可能的实现:
```c
int my_strcmp(const char* s1, const char* s2) {
while (*s1 && *s2 && *s1 == *s2) {
s1++;
s2++;
}
return *s1 - *s2;
}
```
这个函数使用了指针的方式来遍历两个字符串,如果两个字符串当前字符相同,则继续比较下一个字符,直到遇到不同的字符或者其中一个字符串结束。如果两个字符串完全相同,则返回;否则返回第一个不同字符的ASCII码差值。注意,这个函数没有考虑字符串中可能存在空字符('\')的情况,因为在C语言中,字符串以空字符结尾,所以只要两个字符串中有一个以空字符结尾,就不会出现遍历到字符串末尾的问题。
相关问题
c语言两个字符串比较,将两个字符串s1和s2比较,如果s1>s2,编写一个程序,将连个字符串s1和s2比较,如果s1 > s2,输出一个整数;若s1 = s2,输出0;若s1 < s2,输出一个负数。...
你好,感谢您使用 ChitGPT 进行咨询。根据您的要求,我提供以下 C 语言代码来比较两个字符串 s1 和 s2:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100];
printf("请输入第一个字符串:");
scanf("%s", s1);
printf("请输入第二个字符串:");
scanf("%s", s2);
int cmp = strcmp(s1, s2);
if (cmp > 0) {
printf("%s 大于 %s,输出一个正整数:%d\n", s1, s2, cmp);
} else if (cmp == 0) {
printf("%s 等于 %s,输出0:0\n", s1, s2);
} else {
printf("%s 小于 %s,输出一个负整数:%d\n", s1, s2, cmp);
}
return 0;
}
```
上述代码中通过 `strcmp()` 函数比较了两个字符串 s1 和 s2 的大小,并根据比较结果分别输出了不同的信息。 `strcmp()` 函数会返回一个整数值,表示 s1 和 s2 的大小关系,具体规则如下:
- 若 s1 大于 s2,则返回正整数;
- 若 s1 等于 s2,则返回0;
- 若 s1 小于 s2,则返回负整数。
希望以上代码能够满足您的需求。如果您还有其他问题或需要进一步帮助,请继续咨询。
4. 编写一程序,将字符串s1和s2比较,如果s1>s2,输出一个正数;s1=s2,输出0;s1<s2,输出一个负数。不用strcmp函数。两个字符串用gets函数读入。
要编写一个不使用`strcmp`函数比较两个字符串`s1`和`s2`的程序,我们可以逐个字符地遍历它们,直到找到第一个不相等的字符。然后根据第一个不相等字符的位置来决定输出正数、0还是负数。
以下是一个简单的C语言程序,实现了这个要求:
```c
#include <stdio.h>
#include <string.h>
int compareStrings(char *s1, char *s2) {
int i = 0;
while (s1[i] == s2[i]) {
if (s1[i] == '\0' && s2[i] == '\0') { // 如果两个字符串都已结束
return 0; // 相等
}
i++;
}
if (s1[i] > s2[i]) { // 如果s1的第一个不同字符大于s2
return 1; // 输出正数
} else { // s1的第一个不同字符小于或等于s2
return -1; // 输出负数
}
}
int main() {
char s1[100], s2[100];
printf("Enter the first string: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0'; // 去除fgets获取的换行符
printf("Enter the second string: ");
fgets(s2, sizeof(s2), stdin);
s2[strcspn(s2, "\n")] = '\0'; // 去除fgets获取的换行符
int result = compareStrings(s1, s2);
if (result > 0) {
printf("The first string is greater than the second: %d\n", result);
} else if (result == 0) {
printf("The strings are equal: 0\n");
} else {
printf("The first string is less than the second: %d\n", result);
}
return 0;
}
```
在这个程序中,`compareStrings`函数比较了两个字符串,直到找到第一个不相等的字符。主函数中使用`fgets`从用户那里获取字符串,并确保去掉输入的换行符。然后调用`compareStrings`函数并打印结果。
阅读全文
相关推荐
















