使用c语言编写程序,输入一串字符(长度不超过80个字符),要求不开辟其它数组而将该字符串逆序存放,并输出逆序后的字符串内容。(要求用字符指针来实现
时间: 2023-06-20 12:10:40 浏览: 205
可以使用字符指针和指针运算来实现字符串的逆序存放,具体代码如下:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[81], *p1, *p2;
printf("请输入一个不超过80个字符的字符串:");
scanf("%s", str);
p1 = str; // p1指向字符串首地址
p2 = str + strlen(str) - 1; // p2指向字符串末尾地址
while (p1 < p2) // 交换字符
{
char temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
printf("逆序后的字符串为:%s\n", str);
return 0;
}
```
在上面的代码中,首先定义了一个字符数组 `str` 和两个字符指针 `p1` 和 `p2`。然后输入字符串并将 `p1` 指向字符串首地址,`p2` 指向字符串末尾地址。接着使用 `while` 循环来不断交换 `p1` 和 `p2` 指向的字符,直到 `p1` 大于等于 `p2`。最后输出逆序后的字符串即可。
需要注意的是,输入字符串时使用 `%s` 格式化字符串,这样可以避免字符串中包含空格等空白字符导致输入错误。
相关问题
c语言字符指针输入一串字符(长度不超过80个字符),要求不开辟其它数组而将该字符串逆序存放,并输出逆序后的字符串内容。(要求用字符数组和字符指针两种方式来实现)
使用字符数组实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[81];
printf("请输入字符串(长度不超过80个字符):");
scanf("%s", 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;
}
printf("逆序后的字符串为:%s\n", str);
return 0;
}
```
使用字符指针实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[81];
printf("请输入字符串(长度不超过80个字符):");
scanf("%s", str);
char *p = str;
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char temp = *(p + i);
*(p + i) = *(p + len - i - 1);
*(p + len - i - 1) = temp;
}
printf("逆序后的字符串为:%s\n", str);
return 0;
}
```
输入一串字符(长度不超过80),要求不开辟其他数组而将该字符串逆序存储,并输出逆序后的字符串。c语言
在C语言中,为了不开辟额外数组存储字符串,我们可以直接修改原字符串的字符顺序实现逆序。下面是一个简单的示例,假设输入字符串存在名为`str`的变量:
```c
#include <stdio.h>
void reverse(char str[]) {
int length = strlen(str);
for (int i = 0; i < length / 2; i++) {
char temp = str[i];
str[i] = str[length - i - 1] = temp;
}
}
int main() {
char str[81]; // 保证有足够空间存放最长80字符的字符串加上结束符'\0'
printf("请输入字符串:");
fgets(str, sizeof(str), stdin); // 从标准输入读取字符串,包括换行符
// 去除fgets读取的换行符
str[strlen(str) - 1] = '\0';
// 逆序字符串
reverse(str);
printf("逆序后的字符串为:%s", str);
return 0;
}
```
在这个程序中,我们首先计算字符串的长度,然后遍历一半的长度,通过临时变量交换字符的位置,达到逆序的效果。注意`fgets`函数会包含换行符,所以在使用之前需要去掉。
阅读全文
相关推荐
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)