字符串比较大小不用strcmp
时间: 2024-05-30 19:05:54 浏览: 142
字符串比较大小可以使用以下方法:
1. 直接按照ASCII码进行比较。即将两个字符串的每个字符依次进行比较,如果相同则继续比较下一个字符,如果不同则返回它们的ASCII码差值。
2. 将两个字符串转化为数字,然后进行比较。可以先将字符串转化为整数类型,然后比较大小。
3. 利用string类型的compare函数进行比较。该函数会返回一个整数,如果两个字符串相同则返回0,如果第一个字符串小于第二个字符串则返回负数,如果第一个字符串大于第二个字符串则返回正数。
4. 自己实现一个字符串比较函数。可以自己编写一个函数,按照ASCII码进行比较,依次比较每个字符的ASCII码大小。
相关问题
比较两个字符串的大小不用strcmp
### 回答1:
可以使用循环逐个比较字符串中每个字符的ASCII码值来比较两个字符串的大小。具体实现可以参考以下代码:
```c
int compare(char* str1, char* str2) {
int i = ;
while (str1[i] != '\' && str2[i] != '\') {
if (str1[i] > str2[i]) {
return 1;
} else if (str1[i] < str2[i]) {
return -1;
}
i++;
}
if (str1[i] == '\' && str2[i] == '\') {
return ;
} else if (str1[i] == '\') {
return -1;
} else {
return 1;
}
}
```
该函数返回值为1表示str1大于str2,返回值为-1表示str1小于str2,返回值为表示str1等于str2。
### 回答2:
比较两个字符串的大小可以使用以下方法:
1. 基于字符比较
可以使用循环遍历两个字符串,按照字符的ASCII码比较每个字符的大小,直到出现不相同的字符或其中一个字符串结束。如果两个字符串的所有字符都相同,则比较它们的长度,长度较短的字符串比较小。以下是代码示例:
```c
int compare_string(char* str1, char* str2) {
int i = 0;
while(str1[i] != '\0' && str2[i] != '\0') {
if(str1[i] != str2[i]) {
return str1[i] < str2[i] ? -1 : 1;
}
i++;
}
if(str1[i] == '\0' && str2[i] != '\0') {
return -1;
} else if(str1[i] != '\0' && str2[i] == '\0') {
return 1;
} else {
return 0;
}
}
```
2. 基于字符串长度比较
如果两个字符串的所有字符都相同,可以比较它们的长度,长度较长的字符串比较大。以下是代码示例:
```c
int compare_string(char* str1, char* str2) {
int len1 = 0, len2 = 0;
while(str1[len1] != '\0') {
len1++;
}
while(str2[len2] != '\0') {
len2++;
}
if(len1 < len2) {
return -1;
} else if(len1 > len2) {
return 1;
} else {
return 0;
}
}
```
以上两种方法都是基于比较字符或比较字符串长度来确定字符串大小的。需要注意的是,这两种方法都只适用于比较仅包含字母和数字的字符串。对于包含其他字符的字符串,比较时需要进行特殊处理。
### 回答3:
比较两个字符串的大小不用strcmp,需要用到字符数组和循环语句。具体步骤如下:
1.声明两个字符数组,分别存储需要比较的两个字符串。
2.使用循环语句,逐个比较两个字符串中对应位置上的字符。比较时,可以将字符转换为ASCII码进行比较。
3.可以设置一个计数器变量,记录两个字符串中不同的字符的个数。若两个字符串完全相等,则计数器变量为0,反之,则大于0。
4.若两个字符串长度不一致,则需要在循环中增加特定条件判断,以防止数组溢出。
5.比较结束后,根据计数器变量的值来判断两个字符串的大小关系。若计数器变量为0,则两个字符串相等;若计数器变量大于0,则第一个字符串大于第二个字符串;反之,则第一个字符串小于第二个字符串。
例如:
char str1[50] = "hello world";
char str2[50] = "hello earth";
int count = 0;
for(int i = 0; str1[i] != '\0' || str2[i] != '\0'; i++){
if(str1[i] != str2[i]){
count++;
break;
}
}
if(count == 0){
printf("str1和str2相等");
}else if(count > 0){
printf("str1大于str2");
}else{
printf("str1小于str2");
}
以上就是比较两个字符串大小的不用strcmp的方法,虽然此方法不如strcmp函数准确和方便,但尽管如此,它也是一种可以实现字符串比较的可行方法。需要注意的是,在实际应用时,要对所比较的字符数组的长度进行合理的控制,以免导致程序溢出等问题。
分别用字符数组和字符指针作为函数参数,编写下列字符串处理函数,并给出测试结果: (1)求字符串长度的函数strLen(源字符串); (2)字符串复制函数strCpy(源字符串,目的字符串); (3)字符串连接函数strCat(字符串1,字符串2):字符串2连接到字符串1中; (4)字符串比较大小函数strCmp(字符串1,字符串2):若字符串1>字符串2,返回值大于0,比如1,若字符串1<字符串2,返回值小于0,如-1,若字符串1=字符串2,返回值等于0。
好的,我会根据您的要求回答您的问题。
(1)使用字符数组作为函数参数,求字符串长度的函数strLen:
```c++
int strLen(char s[]) {
int len = 0;
for (int i = 0; s[i] != '\0'; i++) {
len++;
}
return len;
}
```
测试代码:
```c++
char s[] = "hello world";
printf("字符串长度为:%d\n", strLen(s));
```
输出结果:字符串长度为:11
(2)使用字符指针作为函数参数,字符串复制函数strCpy:
```c++
void strCpy(char* dest, const char* src) {
while (*src != '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
```
测试代码:
```c++
char s1[] = "hello";
char s2[10];
strCpy(s2, s1);
printf("复制后的字符串为:%s\n", s2);
```
输出结果:复制后的字符串为:hello
(3)使用字符数组作为函数参数,字符串连接函数strCat:
```c++
void strCat(char s1[], const char s2[]) {
int i, j;
i = j = 0;
while (s1[i] != '\0') {
i++;
}
while (s2[j] != '\0') {
s1[i] = s2[j];
i++;
j++;
}
s1[i] = '\0';
}
```
测试代码:
```c++
char s1[20] = "hello";
char s2[] = "world";
strCat(s1, s2);
printf("连接后的字符串为:%s\n", s1);
```
输出结果:连接后的字符串为:helloworld
(4)使用字符指针作为函数参数,字符串比较大小函数strCmp:
```c++
int strCmp(const char* s1, const char* s2) {
while (*s1 != '\0' && *s2 != '\0') {
if (*s1 > *s2) {
return 1;
} else if (*s1 < *s2) {
return -1;
}
s1++;
s2++;
}
if (*s1 == '\0' && *s2 == '\0') {
return 0;
} else if (*s1 == '\0') {
return -1;
} else {
return 1;
}
}
```
测试代码:
```c++
char s1[] = "hello";
char s2[] = "hello world";
printf("比较结果为:%d\n", strCmp(s1, s2));
```
输出结果:比较结果为:-1
阅读全文