编写子函数strcmp
时间: 2024-05-07 17:13:45 浏览: 91
strcmp是一个用于比较两个字符串的函数,它可以判断两个字符串是否相等,并返回一个整数值来表示比较结果。下面是strcmp函数的基本用法:
```c
int strcmp(const char *str1, const char *str2);
```
其中,str1和str2是要进行比较的两个字符串。strcmp函数会按照字典序逐个比较两个字符串中的字符,直到遇到不同的字符或者其中一个字符串结束为止。
如果两个字符串相等,strcmp函数返回0;如果str1大于str2,返回一个正整数;如果str1小于str2,返回一个负整数。
下面是一个使用strcmp函数的示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "hello";
char str2[] = "world";
int result = strcmp(str1, str2);
if (result == 0) {
printf("两个字符串相等\n");
} else if (result > 0) {
printf("str1大于str2\n");
} else {
printf("str1小于str2\n");
}
return 0;
}
```
输出结果为:"str1小于str2",因为在字典序中,'h'的ASCII码小于'w'的ASCII码。
相关问题
编写子函数Strcmp(char *,char *),实现库函数 strcmp(char *,char *)的功能,即比 较两个字符串的大小。
编写`Strcmp`子函数是一个常见的任务,目的是实现类似于C标准库中的`strcmp`函数,该函数用于比较两个字符串的字典顺序。下面是一个简单的C语言实现:
```c
#include <stdio.h>
#include <string.h>
// 自定义的strcmp函数
int Strcmp(char *str1, char *str2) {
int i = 0;
// 当遇到空指针或结束符'\0'时停止比较
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] < str2[i]) {
return -1; // 字符串1小于字符串2
} else if (str1[i] > str2[i]) {
return 1; // 字符串1大于字符串2
}
i++;
}
// 如果到达其中一个字符串的结束位置,而另一个还没结束,则未到结尾的那个更长
if (str1[i] == '\0' && str2[i] != '\0') {
return 1; // 字符串2较长
} else if (str1[i] != '\0' && str2[i] == '\0') {
return -1; // 字符串1较长
} else {
return 0; // 两个字符串相等
}
}
、编写子函数Strcmp(char*,char*),实现库函数strcmp(char*,char*)的功能,即比 较两个字符串的大小。
编写一个名为`Strcmp`的子函数,用于比较两个字符串,其功能类似于标准库函数`strcmp`,可以按照以下伪代码进行实现:
```c
#include <stdbool.h>
// 自定义的 strcmp-like 函数
int Strcmp(const char* str1, const char* str2) {
// 检查输入是否为空
if (str1 == NULL && str2 == NULL) {
printf("Error: Both inputs are null.\n");
return 0; // 或者其他特殊处理,例如视为相等
} else if (str1 == NULL) {
return -1; // str1 空,str2 非空,str1 应该小于 str2
} else if (str2 == NULL) {
return 1; // str1 非空,str2 空,str1 应该大于 str2
}
while (*str1 != '\0' && *str2 != '\0') { // 当遇到空字符或字符串结束时停止比较
// ASCII值比较,小则返回负数,大则返回正数,相等则继续比较下一个字符
int cmp = (*str1 - *str2);
if (cmp != 0)
return cmp;
str1++; // 移动到下一个字符
str2++;
}
// 如果两个字符串完全一样,直到结束都相等,返回0
if (*str1 == '\0' && *str2 == '\0')
return 0;
// 如果一个字符串结束了而另一个未结束,剩余部分较长的那个更长
return (*str1 == '\0') ? -1 : 1;
}
int main() {
char str1[] = "hello";
char str2[] = "world";
int result = Strcmp(str1, str2);
if (result > 0)
printf("%s is greater than %s\n", str1, str2);
else if (result < 0)
printf("%s is less than %s\n", str1, str2);
else
printf("%s and %s are equal\n", str1, str2);
return 0;
}
阅读全文
相关推荐
















