指针实现strcmp c例子
时间: 2023-02-16 22:50:31 浏览: 102
好的,这是一个用指针实现 `strcmp` 函数的例子:
```
#include <stdio.h>
#include <string.h>
int my_strcmp(const char *s1, const char *s2)
{
while (*s1 && *s2 && *s1 == *s2) {
s1++;
s2++;
}
return *s1 - *s2;
}
int main()
{
char str1[] = "abcdefg";
char str2[] = "abcdefh";
int result = my_strcmp(str1, str2);
if (result > 0) {
printf("str1 > str2\n");
} else if (result == 0) {
printf("str1 = str2\n");
} else {
printf("str1 < str2\n");
}
return 0;
}
```
其中,`my_strcmp` 函数中,每次用指针 `s1` 和 `s2` 分别指向两个字符串的当前字符,如果两个字符相同,就继续比较下一个字符。如果两个字符不同或者其中一个字符串已经到了末尾,就停止比较并返回当前字符的 ASCII 码之差。
相关问题
不用指针和strcmp
如果你不想直接使用指针或者`strcmp()`函数,你可以通过循环逐个字符比较的方式来判断两个字符串的大小。下面是一个简单的例子,它将两个字符串视为数组,并通过ASCII码值进行比较:
```c
#include <stdio.h>
#include <stdbool.h> // 引入bool类型
bool areEqual(char str1[], char str2[]) {
int len1 = strlen(str1), len2 = strlen(str2);
if (len1 != len2) {
return false; // 如果长度不同,则不可能相等
}
for (int i = 0; i < len1; i++) {
if (str1[i] != str2[i]) {
return false;
}
}
return true;
}
int compareWithoutPointers(char str1[], char str2[]) {
if (areEqual(str1, str2)) {
return 0;
}
bool isStr1Greater = str1[0] > str2[0];
for (int i = 1; i < strlen(str1); i++) {
if (!isStr1Greater && str1[i] < str2[i]) {
isStr1Greater = true;
} else if (isStr1Greater && str1[i] > str2[i]) {
break;
}
}
return isStr1Greater ? 1 : -1; // 返回1表示str1较大,-1表示str2较大,0表示相等
}
int main() {
char str1[] = "apple";
char str2[] = "banana";
int result = compareWithoutPointers(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;
}
```
c语言中实现strcmp函数
在C语言中,`strcmp()` 函数是一个标准库函数,它用于比较两个字符串是否相等。这个函数通常定义在头文件`string.h`中。其原型是这样的:
```c
int strcmp(const char* str1, const char* str2);
```
该函数接受两个`const char *`类型的指针,分别指向需要比较的两个字符串。它通过逐个字符比较这两个字符串的内容,直到遇到不同的字符或者结束符'\0'为止。如果所有字符都相同并且到达了结尾,说明两个字符串完全相等,函数会返回0;如果第一个字符串结束而第二个还没结束,或者第一个字符串的某字符小于第二个,函数会返回负数;反之则返回正数。
例如,以下是如何使用`strcmp()`的例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
if (strcmp("hello", "world") == 0) {
printf("The strings are equal.\n");
} else {
printf("The strings are not equal.\n");
}
return 0;
}
```
在这个例子中,`strcmp()`会比较"hello"和"world",因为它们不完全相等,所以会输出"The strings are not equal."。
阅读全文