用c语言指针写出一段字符串颠倒的函数
时间: 2023-12-10 19:04:31 浏览: 47
好的,下面是一个使用指针实现字符串颠倒的函数:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char *s) {
int len = strlen(s);
char *p = s, *q = s + len - 1;
while (p < q) {
char temp = *p;
*p++ = *q;
*q-- = temp;
}
}
int main() {
char s[] = "hello world";
printf("%s\n", s);
reverse_string(s);
printf("%s\n", s);
return 0;
}
```
这个函数的实现也很简单,它使用了两个指针 `p` 和 `q` 分别指向字符串的第一个字符和最后一个字符,然后通过交换指针所指向的字符来实现字符串的颠倒。具体来说,每次交换 `p` 和 `q` 所指向的字符,并将 `p` 后移、`q` 前移,直到 `p` 和 `q` 相遇为止。注意,在交换字符时,需要使用一个临时变量来保存其中一个字符的值,否则会导致数据丢失。
相关问题
c语言用指针实现字符串颠倒
以下是C语言用指针实现字符串颠倒的代码示例:
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
char *start = str;
char *end = str + strlen(str) - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("Original string: %s\n", str);
reverse(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
运行结果为:
```
Original string: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Reversed string: ZYXWVUTSRQPONMLKJIHGFEDCBA
```
该代码中,我们定义了一个`reverse`函数,该函数接受一个指向字符串的指针作为参数。在函数内部,我们使用两个指针`start`和`end`分别指向字符串的开头和结尾,然后交换它们所指向的字符,直到`start`指针超过了`end`指针。最后,我们在`main`函数中调用`reverse`函数,并输出结果。
用C写一个字符串颠倒函数
在C语言中,你可以创建一个函数来颠倒字符串。下面是一个简单的例子,这个函数接受一个指向字符数组的指针,然后交换数组元素的位置,实现了字符串的反转:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char* str) {
if (str == NULL || *str == '\0') { // 检查是否为空字符串
return;
}
int len = strlen(str); // 获取字符串长度
char temp; // 临时存储字符
for (int i = 0; i < len / 2; i++) { // 只需要遍历到一半即可
temp = str[i]; // 保存当前位置的字符
str[i] = str[len - i - 1]; // 将当前位置的字符移动到最后一位
str[len - i - 1] = temp; // 将最后一位的字符移动到当前位置
}
}
// 测试函数
int main() {
char test_str[] = "Hello, World!";
printf("Original string: %s\n", test_str);
reverse_string(test_str);
printf("Reversed string: %s\n", test_str);
return 0;
}
```
当你运行上面的程序时,输入的原始字符串"Hello, World!"会被反转为 "!dlroW ,olleH"。
阅读全文