用c写一个函数,实现两个字符串的比较。要求用到指针
时间: 2023-06-19 21:08:14 浏览: 55
下面是一个用指针实现字符串比较的C语言函数:
```c
int strcmp(const char *s1, const char *s2)
{
while (*s1 && *s2 && (*s1 == *s2)) {
s1++;
s2++;
}
return *s1 - *s2;
}
```
这个函数的原理是,使用指针遍历两个字符串,如果两个字符串当前指向的字符相同,指针都向后移动一位,直到遇到不同的字符或者其中一个字符串已经到达末尾。如果两个字符串相等,函数返回0,如果第一个字符串小于第二个字符串,返回一个负数,如果第一个字符串大于第二个字符串,返回一个正数。
相关问题
用c编写程序查找指定字符在字符串中第一次和最后一次出现的位置,要用到子函数
好的,下面是使用 C 语言编写的程序,它可以查找指定字符在字符串中第一次和最后一次出现的位置,并使用子函数实现。
```c
#include <stdio.h>
#include <string.h>
void find_first_and_last(char *s, char c, int *first, int *last) {
*first = strchr(s, c) - s;
*last = strrchr(s, c) - s;
}
int main() {
char s[100], c;
int first, last;
printf("Enter a string: ");
fgets(s, 100, stdin);
printf("Enter a character to find: ");
scanf("%c", &c);
find_first_and_last(s, c, &first, &last);
if (first == -1) {
printf("The character '%c' is not found in the string.\n", c);
} else {
printf("The first occurrence of '%c' is at position %d.\n", c, first);
printf("The last occurrence of '%c' is at position %d.\n", c, last);
}
return 0;
}
```
这个程序首先定义了一个 `find_first_and_last` 函数,它接受三个参数:一个指向字符串的指针 `s`,要查找的字符 `c`,以及两个指向整数的指针 `first` 和 `last`。这个函数使用了 C 语言标准库中的 `strchr` 和 `strrchr` 函数来分别查找第一次和最后一次出现的位置,并计算出它们在字符串中的索引。最后,它通过修改指针变量 `first` 和 `last` 的值来返回这两个位置。
在 `main` 函数中,我们首先读入一个字符串和要查找的字符,并调用 `find_first_and_last` 函数来查找这个字符在字符串中第一次和最后一次出现的位置。如果这个字符没有在字符串中出现过,那么 `find_first_and_last` 函数会把 `first` 和 `last` 的值都设置为 -1。在 `main` 函数中,我们通过检查 `first` 是否等于 -1 来判断这个字符是否在字符串中出现过。如果没有出现过,我们就输出一条错误信息。否则,我们输出这个字符在字符串中第一次和最后一次出现的位置。
【id:14】 【10分】b.字符串比较(指针与字符)时间限制 内存限制1s 128mb题目
字符串比较是编程中经常会用到的操作。在C语言中,可以采用指针或字符的方式进行字符串比较。
采用指针比较字符串时,需要用到strcmp函数。该函数的返回值为0时表示比较的两个字符串相同,为正数时表示第一个字符串大于第二个字符串,为负数时表示第一个字符串小于第二个字符串。需要注意的是,如果两个字符串长度不同,则在比较完相同部分之后,函数会继续比较后面的字符,直到比较出相异处。
采用字符比较字符串时,需要用到循环语句和逐个字符比较的方法。需要先比较两个字符串的长度是否相等,如果不相等则两个字符串不同。接着逐个比较两个字符串的每个字符,直到发现不同的字符或者比较完所有字符为止。需要注意的是,当两个字符串不同时,程序应该及时跳出循环,避免无效的比较。
总之,在编程中,采用指针比较字符串比起采用字符比较字符串更为简洁和高效,因为它能够自动处理不同长度的情况。不过,对于特定的需求,也可以用字符比较字符串的方法进行实现。