利用指针实现由键盘任意输入一串字符,将此字符串倒置用C语言
时间: 2023-06-16 17:03:43 浏览: 276
可以使用指针和数组来实现字符串的倒置,具体实现步骤如下:
1. 定义一个字符数组存储输入的字符串,并使用scanf函数从键盘输入字符串。
2. 定义两个指针,一个指向字符串的开头,另一个指向字符串的末尾。
3. 使用while循环交换指针所指向的字符,直到两个指针相遇为止。
4. 输出倒置后的字符串。
下面是具体的代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
char *p1 = str;
char *p2 = str + len - 1;
while (p1 < p2)
{
char temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
printf("倒置后的字符串为:%s\n", str);
return 0;
}
```
相关问题
用c语言编写一段程序,要求:利用指针实现由键盘任意输入一串字符,将此字符串倒置输出。
以下是用指针实现字符串倒置的C语言程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char *p1, *p2;
int len;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
p1 = str;
p2 = str + len - 1;
while (p1 < p2) {
char tmp = *p1;
*p1 = *p2;
*p2 = tmp;
p1++;
p2--;
}
printf("倒置后的字符串为:%s\n", str);
return 0;
}
```
该程序首先读入一个字符串,然后使用指针 p1 和 p2 分别指向该字符串的首尾字符。接着,使用一个循环,将 p1 和 p2 所指向的字符逐个交换,直到 p1 >= p2 为止。最后输出倒置后的字符串。
用C语言利用指针实现由键盘任意输入一串字符,将此字符串倒置(还需存放在原来的数组中)。
### 回答1:
下面是一个简单的实现:
```c
#include <stdio.h>
#include <string.h>
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];
printf("请输入一串字符:");
scanf("%s", str);
reverse(str);
printf("倒置后的字符串:%s\n", str);
return 0;
}
```
我们定义了一个 `reverse` 函数,接收一个指向字符数组的指针作为参数,将其倒置。主函数中,我们从键盘输入一串字符,调用 `reverse` 函数进行倒置并输出结果。需要注意的是,我们使用了 `strlen` 函数来获取字符串长度,因此需要包含 `string.h` 头文件。
### 回答2:
利用指针实现字符串倒置的C语言程序如下:
```c
#include <stdio.h>
#include <string.h>
void reverseString(char* str) {
int length = strlen(str);
char* start = str;
char* end = str + length - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[100];
printf("请输入一串字符:");
scanf("%s", str);
reverseString(str);
printf("倒置后的字符串:%s\n", str);
return 0;
}
```
首先,我们定义了一个名为`reverseString`的函数,该函数用于倒置字符串。函数参数`str`是一个指向字符数组的指针。
在函数内部,我们使用`strlen`函数获取字符串的长度,并将指针`start`指向字符串的首字符,将指针`end`指向字符串的末字符。
然后,我们使用一个循环来倒置字符串。在每一次循环中,我们使用一个临时变量`temp`来交换`start`和`end`所指向的字符。然后,将`start`指针向后移动一步,将`end`指针向前移动一步。当`start`指针超过或等于`end`指针时,循环结束。
在`main`函数中,我们首先定义了一个长度为100的字符数组`str`,用于存储从键盘获取的字符串。然后,使用`scanf`函数从键盘读取字符串并将其存储在`str`数组中。
接下来,我们调用`reverseString`函数来倒置字符串。传入的参数是`str`数组的地址。
最后,我们输出倒置后的字符串,即`str`数组的值。
注意,该程序假设输入的字符串长度不超过`str`数组的大小,因此,当输入的字符串长度超过100时,可能会发生缓冲区溢出。为了确保程序的安全性,可以使用动态分配内存的方式来存储输入的字符串。这样,可以根据输入字符串的长度来动态分配合适大小的内存空间。
### 回答3:
可以使用C语言中的指针来实现将输入的字符串倒置的功能。具体的实现步骤如下:
1. 首先定义一个字符数组来存放输入的字符串,例如`char str[100] = {0};`,这里假设最大长度为100。
2. 使用`scanf`函数从键盘接收输入的字符串,并将其存放在`str`数组中,示例如:`scanf("%s", str);`
3. 使用指针来倒置字符串,定义两个指针变量`start`和`end`,分别指向字符串的起始位置和末尾位置。可以使用`strlen`函数获取字符串的长度,示例如:`int len = strlen(str);`。
4. 使用循环遍历字符串,将`start`指针指向的字符与`end`指针指向的字符进行交换,并同时将`start`指针向后移动,将`end`指针向前移动,直到`start`指针大于等于`end`指针。
5. 交换字符的具体操作是通过一个临时变量来实现,示例如下:
```c
char temp;
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
```
6. 最后,打印倒置后的字符串,可以使用`printf`函数来输出结果,示例如:`printf("倒置后的字符串为:%s\n", str);`
总结起来,这是一种使用指针操作字符数组的方法实现字符串倒置的方法,通过交换字符来实现倒置,最后结果存储在原来的数组中。
阅读全文