编写时用int fun(char*p1)
时间: 2024-02-12 22:04:47 浏览: 66
好的,下面是使用`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`函数计算该字符串的长度,并将其输出到控制台上。
相关问题
void fun(char *w,int m) { char s,*p1,*p2; p1=w;p2=w+m-1; while(p1<p2) { s=*p1++;*p1=*p2--;*p2=s; } } main() { char a[]="ABCDEFG"; fun(a,strlen(a)); puts(a); }
这段代码是一个函数`fun`和一个主函数`main`的示例。函数`fun`的作用是将字符串中的字符进行逆序。主函数`main`定义了一个字符数组`a`,并将其作为参数传递给函数`fun`进行逆序操作,然后使用`puts`函数输出逆序后的字符串。
具体的执行过程如下:
1. 定义字符变量`s`和指针变量`p1`、`p2`,并将指针`p1`指向字符串首地址,将指针`p2`指向字符串尾地址。
2. 进入循环,判断指针`p1`是否小于指针`p2`。
3. 如果满足条件,执行以下操作:
- 将指针`p1`所指向的字符赋值给变量`s`;
- 将指针`p1`后移一位,将指针`p2`前移一位;
- 将变量`s`赋值给指针`p2`所指向的字符。
4. 循环结束后,字符串中的字符已经完成反转。
5. 主函数中定义了字符数组`a`并初始化为"ABCDEFG",然后调用函数`fun(a, strlen(a))`对数组进行逆序操作。
6. 最后使用`puts(a)`函数输出逆序后的字符串。
注意:这段代码中存在一个潜在的问题,即在执行 `*p1=*p2--` 时可能会发生未定义行为,因为 `*p1` 和 `*p2` 是同一个地址,修改同一位置的值可能会导致不可预料的结果。建议修改为 `s=*p1;*p1=*p2;*p2=s; p1++; p2--;` 来避免这个问题。
void fun(char *w,int m) { char s,*p1,*p2; p1=w;p2=w+m-1; while(p1<p2) { s=*p1++;*p1=*p2--;*p2=s; } } main() { char a[]="ABCDEFG"; fun(a,strlen(a)); puts(a); }这段代码的输出结果是什么
这段代码的输出结果将是字符串`"GFEDCBA"`。
代码中的函数`fun`用于将字符串中的字符进行逆序操作。主函数`main`定义了一个字符数组`a`并初始化为"ABCDEFG",然后将数组`a`和其长度作为参数传递给函数`fun`。在函数`fun`中,通过交换指针`p1`和`p2`所指向的字符,实现了字符串反转的目的。
具体的执行过程如下:
1. 字符数组`a`被初始化为"ABCDEFG"。
2. 调用函数`fun(a, strlen(a))`对数组进行反转操作。
3. 在函数`fun`中,使用指针`p1`指向字符串的首地址,使用指针`p2`指向字符串的末尾地址。
4. 进入循环,判断指针`p1`是否小于指针`p2`。
5. 如果满足条件,执行以下操作:
- 将指针`p1`所指向的字符赋值给变量`s`;
- 将指针`p1`后移一位,将指针`p2`前移一位;
- 将变量`s`赋值给指针`p2`所指向的字符。
6. 循环结束后,字符串中的字符已经完成反转。
7. 最后,使用`puts(a)`函数输出反转后的字符串,即输出"GFEDCBA"。
所以,代码的输出结果将是字符串"GFEDCBA"。
阅读全文