C语言利用指针完成字符交换
时间: 2023-07-20 11:32:17 浏览: 55
可以使用指针实现两个字符的交换,具体实现如下:
```c
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
```
其中,`a`和`b`是两个字符型指针,`*a`和`*b`分别表示`a`和`b`所指向的字符。在`swap`函数中,首先将指针`a`所指向的字符保存在临时变量`temp`中,然后将指针`a`所指向的字符赋值为指针`b`所指向的字符,最后将指针`b`所指向的字符赋值为临时变量`temp`,完成了两个字符的交换。
相关问题
c语言 用指针交换字符串前n个字符
可以使用指针来交换字符串的前n个字符,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
void swap(char *str1, char *str2, int n) {
char temp[n + 1]; // 创建一个临时数组来存储要交换的字符
strncpy(temp, str1, n); // 将str1的前n个字符拷贝到临时数组中
strncpy(str1, str2, n); // 将str2的前n个字符拷贝到str1中
strncpy(str2, temp, n); // 将临时数组中的字符拷贝到str2中
}
int main() {
char str1[] = "hello";
char str2[] = "world";
int n = 3;
printf("Before swap: str1=%s, str2=%s\n", str1, str2);
swap(str1, str2, n);
printf("After swap: str1=%s, str2=%s\n", str1, str2);
return 0;
}
```
在上面的代码中,我们定义了一个`swap`函数,该函数接受两个字符串指针和一个整数n作为参数,用于交换这两个字符串的前n个字符。我们首先创建了一个临时数组`temp`,然后使用`strncpy`函数将要交换的字符拷贝到`temp`数组中,接着使用`strncpy`函数将str2的前n个字符拷贝到str1中,最后再将临时数组中的字符拷贝到str2中。
在主函数中,我们定义了两个字符串`str1`和`str2`,以及一个整数n,用于指定要交换的字符数。然后调用`swap`函数进行交换,并输出交换前后的字符串。
c语言用指针实现字符串反转
可以使用指针来实现字符串反转。具体的实现方法如下:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
char temp;
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "hello, world";
printf("Original string: %s\n", str);
reverse_string(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
在这个例子中,我们定义了一个 `reverse_string` 函数,它接收一个指向字符串的指针作为参数。在函数内部,我们使用了三个指针来实现字符串反转。`start` 指针指向字符串的起始位置,`end` 指针指向字符串的末尾位置,`temp` 变量用来交换两个字符的值。
通过一个 `while` 循环,我们不断将 `start` 指针向字符串末尾移动,将 `end` 指针向字符串起始位置移动,同时交换它们指向的字符的值。当 `start` 指针大于等于 `end` 指针时,字符串反转过程结束。最后,我们将反转后的字符串输出到屏幕上。
运行程序,输出结果如下:
```
Original string: hello, world
Reversed string: dlrow ,olleh
```
可以看到,字符串已经被成功地反转了。