int fun(char *a, char *b){ while ( (*a!='\0') && (*b!='\0') && (*a==*b ) ) { a++; b++; } return (*a-*b); }
时间: 2023-12-20 13:04:11 浏览: 69
这是一个函数,它接受两个参数,即指向字符数组的指针a和b。函数中使用了while循环,如果指针a和b指向的字符都不是字符串的结尾符'\0',且它们所指向的字符相等,那么就让指针a和b分别向后移动一位,直到找到它们指向的字符不相等或者有一个指针指向了字符串的结尾。最后,函数返回指针a指向的字符的ASCII码减去指针b指向的字符的ASCII码,用来比较两个字符串的大小关系。如果返回值为0,则表示两个字符串相等;如果返回值小于0,则表示第一个字符串小于第二个字符串;如果返回值大于0,则表示第一个字符串大于第二个字符串。
相关问题
void fun(char *a) { // 去掉前导的 * while (*a == '*') { a++; } // 去掉尾部的 * char *end = a + strlen(a) - 1; while (*end == '*' && end > a) { end--; } *(end + 1) = '\0'; // 去掉中间的 * char *p = a; while (*p != '\0') { if (*p == '*') { if (*(p + 1) == '*' || *(p - 1) == '*') { // 保留连续的 * p++; } else { // 删除单个 * char *q = p; while (*q != '\0') { *q = *(q + 1); q++; } } } else { p++; } }}帮我运行这个程序
好的,我可以帮你运行这个程序。下面是我写的测试代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void fun(char *a) {
// 去掉前导的 *
while (*a == '*') {
a++;
}
// 去掉尾部的 *
char *end = a + strlen(a) - 1;
while (*end == '*' && end > a) {
end--;
}
*(end + 1) = '\0';
// 去掉中间的 *
char *p = a;
while (*p != '\0') {
if (*p == '*') {
if (*(p + 1) == '*' || *(p - 1) == '*') {
// 保留连续的 *
p++;
} else {
// 删除单个 *
char *q = p;
while (*q != '\0') {
*q = *(q + 1);
q++;
}
}
} else {
p++;
}
}
}
int main() {
char a[100];
cout << "请输入带*的字符串(不超过99个字符):" << endl;
cin >> a;
fun(a);
cout << "处理后的字符串为:" << endl;
cout << a << endl;
return 0;
}
```
你可以把上面的代码复制到你的编译器中运行,输入带*的字符串,程序会自动调用函数 fun 处理字符串,并输出处理后的结果。注意,输入的字符串长度不能超过 99 个字符。
编写时用int fun(char*p1)
好的,下面是使用`int fun(char*p1)`定义的函数的C语言代码:
```c
#include <stdio.h>
int fun(char *p1) {
int len = 0;
while (*p1 != '\0') {
len++;
p1++;
}
return len;
}
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = fun(str);
printf("该字符串的长度为:%d\n", len);
return 0;
}
```
在上述代码中,我们同样将`fun`函数的参数类型改为字符指针。在`fun`函数中,我们使用指针来遍历字符串,直到遇到字符串的结尾`\0`。每经过一个字符,我们就将指针向后移动一位,并且计数器`len`加1。在`main`函数中,我们同样声明一个字符数组`str`,并通过`scanf`从控制台输入一个字符串。然后,我们调用`fun`函数计算该字符串的长度,并将其输出到控制台上。