c语言求写一个函数fun(char*p,char*q),功能是把p指向的字符串连接到q指向的字符串后面,把q指向的字符串连接到p指向的字符串后面,然后再交换p和q指向的两个字符串。
时间: 2024-02-03 15:14:41 浏览: 60
以下是一个可能的实现:
```c
#include <stdio.h>
#include <string.h>
void fun(char *p, char *q) {
// 拼接 p 和 q 指向的字符串
strcat(p, q);
strcat(q, p);
// 交换 p 和 q 指向的字符串
char *temp;
temp = p;
p = q;
q = temp;
// 输出结果
printf("p: %s\n", p);
printf("q: %s\n", q);
}
int main() {
char str1[100] = "hello";
char str2[100] = "world";
fun(str1, str2);
return 0;
}
```
这个函数首先使用 `strcat` 函数将 p 和 q 指向的字符串拼接起来,然后交换 p 和 q 的指向,最后输出结果。需要注意的是,由于在 C 语言中函数参数传递是按值传递的,所以在函数内部交换指针指向时需要使用临时变量。
相关问题
C语言编写一个函数fun(char* s),该函数的功能是把字符串中的内容逆置
你可以使用指针来实现字符串的内容逆置。以下是一个用C语言编写的函数`fun`的示例代码:
```c
#include <stdio.h>
#include <string.h>
void fun(char* s) {
int length = strlen(s);
char* start = s;
char* end = s + length - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "Hello, World!";
printf("原始字符串:%s\n", str);
fun(str);
printf("逆置后的字符串:%s\n", str);
return 0;
}
```
在这个示例中,函数`fun`接受一个字符指针`s`作为参数,代表要逆置的字符串。首先,使用`strlen`函数获取字符串的长度。然后,使用两个指针`start`和`end`分别指向字符串的首尾字符。通过交换`start`和`end`指向的字符,并且让`start`指针向后移动,`end`指针向前移动,直到`start`指针不再小于`end`指针为止,完成字符串内容的逆置。
在`main`函数中,我们定义了一个字符串`str`,并将其作为参数传递给函数`fun`进行逆置。最后,打印逆置后的字符串结果。
运行上述代码,输出结果如下:
```
原始字符串:Hello, World!
逆置后的字符串:!dlroW ,olleH
```
希望能帮助到你!如有任何疑问,请随时提问。
c语言编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆置
以下是一个示例代码,实现了将字符串逆置的功能:
```c
#include <stdio.h>
#include <string.h>
void fun(char *s) {
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
char tmp = s[i];
s[i] = s[len - i - 1];
s[len - i - 1] = tmp;
}
}
int main() {
char s[] = "Hello world!";
printf("Before reverse: %s\n", s);
fun(s);
printf("After reverse: %s\n", s);
return 0;
}
```
该代码中,首先使用了 `strlen` 函数获取了字符串的长度,然后使用一个循环来将字符串逆置。循环的次数为字符串长度的一半,因为只需要交换前一半和后一半的字符即可完成逆置。在每次循环中,使用一个临时变量来交换两个字符的位置。
在 `main` 函数中,先输出原始字符串,然后调用 `fun` 函数逆置字符串,最后输出逆置后的结果。
阅读全文