怎么比较str1和str2
时间: 2023-08-30 09:08:12 浏览: 146
strcmp函数比较两个字符串的方法是逐个比较它们的字符,直到发现不同的字符或者到达字符串结尾。具体的比较方式如下:
1. 首先,比较str1和str2的第一个字符。如果它们相等,就继续比较它们的下一个字符,直到找到不同的字符或者到达字符串结尾。
2. 如果str1和str2的第一个字符不相等,那么strcmp函数就会返回它们的ASCII码值之差,即str1[0] - str2[0]。
3. 如果str1和str2的第一个字符相等,但它们的第二个字符不相等,那么strcmp函数就会返回它们的ASCII码值之差,即str1[1] - str2[1]。
4. 以此类推,直到找到不同的字符或者到达字符串结尾。
5. 如果str1和str2的所有字符都相等,那么strcmp函数就会返回0,表示两个字符串相等。
需要注意的是,strcmp函数比较的是字符串中的字符,而不是字符串的长度。如果两个字符串的长度不同,那么在比较到较短字符串的结尾时,会返回一个小于0或大于0的值。
相关问题
请用matlab语言,定义两个字符串str1=’Welcomw to Guangdong R2016’和str2=’Welcome to Guangdong r2016’,试用字符串比较函数strcmp、strncmp、strcmpi和strncmpi比较str1和str2两个字符串。
可以使用以下MATLAB代码进行字符串比较:
```matlab
% 定义两个字符串
str1 = 'Welcomw to Guangdong R2016';
str2 = 'Welcome to Guangdong r2016';
% 使用 strcmp 函数比较两个字符串,区分大小写
res1 = strcmp(str1, str2);
fprintf('strcmp(str1, str2) = %d\n', res1);
% 使用 strncmp 函数比较两个字符串的前 8 个字符,区分大小写
res2 = strncmp(str1, str2, 8);
fprintf('strncmp(str1, str2, 8) = %d\n', res2);
% 使用 strcmpi 函数比较两个字符串,不区分大小写
res3 = strcmpi(str1, str2);
fprintf('strcmpi(str1, str2) = %d\n', res3);
% 使用 strncmpi 函数比较两个字符串的前 8 个字符,不区分大小写
res4 = strncmpi(str1, str2, 8);
fprintf('strncmpi(str1, str2, 8) = %d\n', res4);
```
运行结果:
```
strcmp(str1, str2) = 0
strncmp(str1, str2, 8) = 1
strcmpi(str1, str2) = 1
strncmpi(str1, str2, 8) = 1
```
解释一下结果:
- strcmp 函数比较两个字符串,区分大小写。因为 `str1` 和 `str2` 中的 'w' 和 'W' 不相等,所以比较结果为 0。
- strncmp 函数比较两个字符串的前 8 个字符,区分大小写。因为前 8 个字符都相等,所以比较结果为 1。
- strcmpi 函数比较两个字符串,不区分大小写。因为 `str1` 和 `str2` 中的 'w' 和 'W' 相等,所以比较结果为 1。
- strncmpi 函数比较两个字符串的前 8 个字符,不区分大小写。因为前 8 个字符都相等,所以比较结果为 1。
编写函数myStrcmp,实现字符串比较的功能。(10分) 题目内容: 以下为myStrcmp的函数原型,功能为比较str1和str2两个字符串的大小。返回结果如下: ① str1小于str2,返回-1; ② str1等于str2,返回0; ③ str1大于str2,返回1。 在主函数中调用gets函数输入2个字符串,调用该函数比较,输出该函数的返回值。 int myStrcmp( char *str1, char *str2); 输入格式: 两个字符串(不多于20个字符),每个字符串以回车结束。 输出格式: 一个整数,1,0,或者-1。如果大于则输出1,相等则输出0,小于则输出-1. 输入样例: abcd abcde
好的,以下是myStrcmp函数的实现代码:
```c
#include <stdio.h>
int myStrcmp(char *str1, char *str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] < str2[i]) {
return -1;
} else if (str1[i] > str2[i]) {
return 1;
}
i++;
}
if (str1[i] == '\0' && str2[i] == '\0') {
return 0;
} else if (str1[i] == '\0') {
return -1;
} else {
return 1;
}
}
int main() {
char str1[21], str2[21];
gets(str1);
gets(str2);
int result = myStrcmp(str1, str2);
printf("%d", result);
return 0;
}
```
输入样例:
```
abcd
abcde
```
输出样例:
```
-1
```