编写一个C程序,该程序通过指针逆序输出一个字符串
时间: 2024-03-03 12:50:54 浏览: 21
下面是一个通过指针逆序输出字符串的 C 语言程序:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], *p, *q;
printf("请输入一个字符串:");
gets(str);
p = str; // p指向字符串的首地址
q = str + strlen(str) - 1; // q指向字符串的末尾
while (p < q) // 交换p、q指向的字符
{
char temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
printf("逆序输出的字符串为:%s\n", str);
return 0;
}
```
该程序首先读入一个字符串,然后定义两个指针 p 和 q,分别指向字符串的首地址和末尾地址。接着,程序通过 while 循环不断交换 p、q 指向的字符,直到它们相遇为止。最后,程序输出逆序后的字符串。
需要注意的是,该程序使用了 gets 函数来读入字符串,但该函数存在缓冲区溢出的风险,建议使用 fgets 函数代替。另外,由于该程序改变了原字符串的内容,因此需要注意字符串的备份和恢复问题。
相关问题
C语言编写程序,本题要求逆序输出一个字符串,要求用递归方式完成。
可以用以下代码来实现递归输出字符串的逆序:
```c
#include <stdio.h>
void reverse_string(char *str) {
if (*str) {
reverse_string(str+1);
printf("%c", *str);
}
}
int main() {
char str[100];
printf("请输入字符串: ");
scanf("%s", str);
printf("逆序输出字符串: ");
reverse_string(str);
return 0;
}
```
在这个代码中,我们定义了一个递归函数`reverse_string`,它的参数是一个指向字符串的指针。函数的实现方式是:如果指针所指的字符不是字符串结束符`\0`,就递归调用函数,将指针向后移动一位;当指针所指的字符是字符串结束符`\0`时,就开始逆序输出字符串。
在`main`函数中,我们首先输入一个字符串,并且打印出逆序输出的结果。
用C++编写一个程序,编写函数将字符串按逆序存放
好的,下面是用 C++ 编写的程序,实现将字符串按逆序存放的功能:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void reverse(char str[]) {
int len = strlen(str);
for(int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str[100];
cout << "请输入字符串:";
cin >> str;
reverse(str);
cout << "逆序后的字符串为:" << str << endl;
return 0;
}
```
在上面的程序中,我们编写了一个 `reverse` 函数,用于将传入的字符串按逆序存放。具体实现是使用双指针法,将字符串首尾字符互换,直到两个指针相遇为止。在 `main` 函数中,我们接受用户输入的字符串,调用 `reverse` 函数进行逆序操作,并输出结果。