用c语言编写一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为“int strcmp(char* p1,char* p2);”设p1指向字符串s1,p2指向字符串s2,要求当s1==s2时,函数返回值为0;若s1≠s2,则返回二者中第一个不相同字符的ASCII码差值(如"BOY"与"BAD"的第二个字母不同,'O'与'A'之差为79-65=14)。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入两个字符串s和字符串t。其中s、t的长度不超过10,且只包含英文字母。 输出格式: 对于每组测试,输出调用自己编写的strcmp函数的比较结果。
时间: 2023-11-27 13:54:52 浏览: 158
以下是使用 C 语言编写的 `strcmp` 函数的实现:
```c
#include <stdio.h>
int strcmp(char* p1, char* p2) {
while (*p1 != '\0' && *p1 == *p2) {
p1++;
p2++;
}
return *p1 - *p2;
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
char s[11], t[11];
scanf("%s%s", s, t);
printf("%d\n", strcmp(s, t));
}
return 0;
}
```
首先,`strcmp` 函数通过循环遍历两个字符串,直到遇到不相等的字符或者其中一个字符串结束。在循环过程中,每次比较两个指针所指向的字符,如果相等则将指针向后移动,继续比较下一个字符。如果遇到不相等的字符,则函数返回这两个字符的 ASCII 码差值。
在主函数中,首先输入测试数据组数 `T`,然后依次输入每组测试数据,调用 `strcmp` 函数比较两个字符串,并输出比较结果。
相关问题
C语言指针自己编写一个函数实现字符串比较
在C语言中,你可以通过指针来实现字符串比较功能。下面是一个简单的自定义函数,它接受两个指向字符数组的指针作为输入,并返回一个整数表示它们是否相等:
```c
#include <stdio.h>
#include <string.h> // 使用库函数strcmp()是为了对比
// 自定义字符串比较函数
int stringCompare(char* str1, char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
if (len1 != len2) {
return len1 > len2 ? 1 : -1; // 如果长度不同,直接返回长度差
}
for (int i = 0; i < len1; i++) {
if (str1[i] != str2[i]) { // 比较每个字符直到找到不一致
return str1[i] > str2[i] ? 1 : -1;
}
}
return 0; // 全部字符都相同,返回0
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
char str3[] = "Hello";
printf("str1 and str2: %d\n", stringCompare(str1, str2));
printf("str1 and str3: %d\n", stringCompare(str1, str3));
return 0;
}
```
在这个例子中,`stringCompare`函数逐个比较两个字符串的字符,如果遇到不匹配,则返回一个整数值表示哪个性质的字符串更大。如果所有字符都匹配,最后返回0表示两者相等。
请编写一个函数实现两个字符串的比较,即用户编写一个strcmp函数。要求实参为字符数组,形参为字符指针。
当然可以,这里是一个简单的C语言函数,它模拟了`strcmp`的功能,用于比较两个字符串:
```c
#include <stdio.h>
#include <string.h>
int my_strcmp(char* str1, char* str2) {
int i = 0;
// 检查哪个字符串先结束(即有'\0')
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return (str1[i] - str2[i]); // 字符大小写敏感,如果需要忽略大小写需做额外处理
}
i++;
}
// 如果其中一个字符串已达到结尾,但另一个还未,返回那个未结束字符串的剩余部分的ASCII值
return (str1[i] - str2[i]);
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = my_strcmp(str1, str2);
if (result > 0) {
printf("str1 is greater than str2\n");
} else if (result < 0) {
printf("str1 is less than str2\n");
} else {
printf("str1 and str2 are equal\n");
}
return 0;
}
```
这个函数会逐个字符地比较两个输入的字符串,直到找到第一个不同的字符或者遇到空字符`\0`,此时就确定了它们的相对顺序。
阅读全文