题目要求编写一个函数,实现两个字符串的比较,即自己写一个strcmp函数。函数原型为“int strcmp(char* p1,char* p2);”,其中p1指向字符串s1,p2指向字符串s2,要求当s1==s2时,函数返回值为0;若s1!=s2,则返回值为两者中第一个不相同字符的ascii码差值(如"boy"与"bad"的第二个字母不同,即'o'与'a',它们的ascii码差值为79-65=14)。
时间: 2023-06-06 17:05:24 浏览: 53
好的,我明白了。以下是我对你的问题的回答:
这是一个编程问题,请允许我提供解答。strcmp函数的实现如下:
int strcmp(char* p1, char* p2) {
while (*p1 != '\0' && *p2 != '\0' && *p1 == *p2) {
p1++;
p2++;
}
return (*p1 - *p2);
}
该函数首先使用一个while循环来比较p1和p2所指向的字符串中的每个字符。如果字符串相同,则继续比较下一个字符。如果出现字符不相同的情况,则返回它们的ascii码差值。如果p1或p2指向的字符串到达了字符串的结尾,则循环将停止,并返回它们的ascii码差值。如果两个字符串完全相同,则返回值为0。
希望这个解答对你有所帮助。
相关问题
题目描述:用一个函数实现两个字符串的比较,即自己写一个strcmp函数
### 回答1:
可以使用循环来遍历两个字符串,比较对应位置上的字符。如果不同,则返回两个字符的差值(第一个字符的ASCLL码减第二个字符的ASCLL码)。如果相同,则继续比较下一个字符。如果遍历完所有字符后仍相同,则返回0.
具体实现如下:
```
int my_strcmp(const char *s1, const char *s2)
{
while (*s1 != '\0' && *s2 != '\0')
{
if (*s1 != *s2)
{
return *s1 - *s2;
}
s1++;
s2++;
}
if (*s1 != '\0')
{
return 1;
}
if (*s2 != '\0')
{
return -1;
}
return 0;
}
```
这是一个简单的strcmp函数的实现,如果有更复杂的需求可以进行修改。
### 回答2:
strcmp函数是C语言中的一个标准库函数,可以用来比较两个字符串的大小。如果两个字符串相等,则返回0;如果第一个字符串大于第二个字符串,则返回大于0的值;如果第一个字符串小于第二个字符串,则返回小于0的值。
那么如何自己写一个strcmp函数呢?首先,我们可以定义一个函数,取名为my_strcmp,这个函数需要传入两个参数,分别是要比较的两个字符串。函数的返回值为int类型,表示两个字符串的大小关系。
下面是一个简单的实现:
```
int my_strcmp(char* s1, char* s2) {
while (*s1 != '\0' || *s2 != '\0') { // 当两个字符串都没有比较到结尾时
if (*s1 == *s2) { // 如果两个字符相等
s1++; // 指针向后移动
s2++;
} else { // 如果两个字符不相等
return (*s1 - *s2); // 直接返回它们的差值
}
}
return 0; // 如果比较到结尾,说明两个字符串相等,返回0
}
```
这个函数的思路很简单:用while循环逐个比较两个字符串中的字符,如果不相等就返回它们的差值,如果比较到结尾还没有返回,说明两个字符串相等,返回0即可。
上面的实现还比较简单,有些情况下可能不够严谨。比如,如果两个字符串中有其中一个字符串比另一个字符串短,那么可能会发生越界的问题,可以考虑添加一些针对边界条件的处理,增加函数的鲁棒性。
实现一个strcmp函数,对于理解字符串比较的过程非常有帮助,也可以通过这个例子学会如何自己写一个标准库函数。
### 回答3:
strcmp函数是一种比较字符串的函数,可以将两个字符串进行比较,如果相等则返回0,如果不相等则返回非0值。该函数可以在常用的程序设计语言中使用。现在需要我们自己编写一个strcmp函数。
在编写这个函数之前,我们需要了解一些相关的知识。字符串是由一组字符组成的序列,通常以空字符('\0')作为结束符。我们需要将两个字符串逐个字符进行比较,比较的过程需要注意以下几点:
1. 如果两个字符串的长度不同,则它们肯定不相等。
2. 如果两个字符串的前n个字符相等,则比较下一个字符,直到某一字符不相等或者所有字符都相等。
3. 如果两个字符串中有一个字符串已经比较完,则比较结果取决于另一个字符串有没有更多的字符。
基于以上的考虑,我们可以在代码中实现以下的函数:
int strcmp(char *str1, char *str2)
{
int n = 0;
while (str1[n] != '\0' && str2[n] != '\0')
{
if (str1[n] != str2[n])
{
return (str1[n] - str2[n]);
}
n++;
}
if (str1[n] == '\0' && str2[n] == '\0')
{
return 0;
}
else if (str1[n] == '\0')
{
return -1;
}
else
{
return 1;
}
}
在这个函数中,我们使用了一个while循环,每次将两个字符串中的一个字符进行比较。如果不相等,则返回它们之间的差值。如果两个字符串比较完全相等,则返回0。如果一个字符串比较完了但是另一个字符串还有字符,则返回非0值。
这个自定义的strcmp函数可以用于在C语言程序中比较字符串。在使用时,只需要将两个需要比较的字符串作为参数传入函数即可。函数的返回值可以用于判断两个字符串是否相等,以及它们之间的大小关系。
写一个函数,实现两个字符串的比较过程。即自己写一个strcmp函数,函数的原型为:int
自己写一个字符串比较函数strcmp的实现需要注意以下几点:
1. 函数原型为int strcmp(const char *str1, const char *str2),参数为两个要比较的字符串的指针。
2. 函数需要按照字典序进行比较,即从左到右逐个字符比较其ASCII值。
3. 当两个字符不相等时,根据其ASCII值的大小关系返回-1(表示str1小于str2),0(表示str1等于str2)或1(表示str1大于str2)。
4. 在比较过程中需要判断字符串是否已经比较到结尾(即'\0'字符),如果有某个字符串已经到结尾,则需要根据此时的结果返回-1、0或1。
5. 如果两个字符串完全相等,需要返回0。
6. 如果其中一个字符串已经到结尾而另一个字符串还有未比较的字符,则已经到结尾的字符串较小。
下面是一个简单的strcmp函数的实现:
```cpp
int strcmp(const char *str1, const char *str2) {
while (*str1 != '\0' && *str2 != '\0') {
if (*str1 < *str2) {
return -1;
} else if (*str1 > *str2) {
return 1;
}
str1++;
str2++;
}
if (*str1 == '\0' && *str2 == '\0') {
return 0;
} else if (*str1 == '\0') {
return -1;
} else {
return 1;
}
}
```
以上函数会逐个比较str1和str2中的字符,根据ASCII值的大小关系返回结果。如果两个字符串完全相等,则返回0。