编写一个函数 实现两个字符串的比较 函数原型为int scmp
时间: 2024-12-22 16:21:54 浏览: 6
在编写一个用于比较两个字符串的函数时,通常我们会考虑字符逐个比较直到遇到不同字符或达到字符串结束的情况。这里提供一个简单的`scmp`函数的例子,它将整数返回值作为比较结果,例如0表示相等,正数表示第一个字符串大,负数表示第二个字符串大。这个函数假定输入的都是非空字符串。
```c++
#include <string>
// 定义一个比较字符串的整数返回值函数
int scmp(const std::string& str1, const std::string& str2) {
size_t len1 = str1.length();
size_t len2 = str2.length();
// 比较长度,如果长度不同则短的字符串较小
if (len1 != len2) {
return len1 < len2 ? -1 : 1;
}
// 从头开始逐字符比较,直到找到差异
for (size_t i = 0; i < len1; ++i) {
char c1 = str1[i];
char c2 = str2[i];
// 如果字符不同,返回它们的ASCII码之差的符号
if (c1 != c2) {
return c1 - c2;
}
}
// 如果所有字符都相同,则返回0表示相等
return 0;
}
相关问题
编写函数实现连个字符串的比较函数原型为int scmp(char *s1,char *s2)
在C语言中,编写一个名为`scmp`的函数,用于比较两个字符串`s1`和`s2`,通常我们会考虑字符串的内容、长度以及结束标志`\0`。函数原型如下:
```c
#include <stdbool.h> // 引入stdbool_t以支持比较结果
int scmp(char* s1, char* s2) {
// 检查字符串是否为空,空字符串视为小于非空字符串
if (!s1 && !s2) {
return 0; // 若两者都为空,则相等
} else if (!s1 || !s2) {
return s1 ? -1 : 1; // 若其中一个为空,非空的那个更大
}
// 使用while循环逐个字符对比,直到遇到'\0'或者一个字符串结束
while (*s1 == *s2) { // 相同字符继续比较
s1++;
s2++;
}
// 如果*s1已经到达'\0',说明s1比s2短
if (*s1 == '\0') {
return -1;
}
// 否则,*s2已达到'\0',说明s2比s1短
else {
return 1;
}
}
// 示例用法
int main() {
char* str1 = "apple";
char* str2 = "banana";
int comparison = scmp(str1, str2);
if (comparison > 0) {
printf("%s is greater than %s.\n", str1, str2);
} else if (comparison < 0) {
printf("%s is less than %s.\n", str1, str2);
} else {
printf("%s is equal to %s.\n", str1, str2);
}
return 0;
}
```
`scmp`函数会比较两个字符串内容,如果完全相等则返回0,若第一个字符串较短则返回-1,反之返回1。
用大一所学知识。从键盘输入一个字符串,编写一个函数,将此字符串中从第m个字符开始的n个字符复制成另一个字符串。用指针实现。,
好的,这是一个比较基础的字符串操作题目。可以使用指针和循环来实现。下面是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 复制字符串函数
char *copy_string(char *str, int m, int n)
{
// 创建一个新的字符串
char *new_str = (char *)malloc(n + 1);
// 指针指向原始字符串的第m个字符
char *p = str + m - 1;
// 循环复制n个字符
int i;
for (i = 0; i < n; i++) {
*(new_str + i) = *(p + i);
}
// 在新字符串的结尾添加'\0'
*(new_str + n) = '\0';
return new_str;
}
int main()
{
char str[100];
int m, n;
// 从键盘读取字符串
printf("请输入一个字符串:");
scanf("%s", str);
// 读取m和n
printf("请输入m和n:");
scanf("%d%d", &m, &n);
// 复制字符串
char *new_str = copy_string(str, m, n);
// 输出新字符串
printf("复制后的字符串是:%s\n", new_str);
// 释放内存
free(new_str);
return 0;
}
```
需要注意的是,这里使用了动态内存分配函数`malloc`来创建新的字符串,使用完后需要使用`free`来释放内存,防止内存泄漏。
阅读全文