用字符指针作函数参数编程实现字符串逆序存放功能。 输入提示信息:"Input a string:" 输入字符串用gets() 输出提示信息:"Inversed results:%s\n"
时间: 2023-06-17 18:07:44 浏览: 207
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char *str);
int main() {
char str[100];
printf("Input a string:");
gets(str);
reverse_string(str);
printf("Inversed results:%s\n", str);
return 0;
}
void reverse_string(char *str) {
int len = strlen(str);
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
```
输入一个字符串,然后调用 `reverse_string` 函数对其进行逆序操作,最后输出逆序后的结果。注意,需要使用字符指针作为函数的参数,以便在函数内部修改字符串的内容。
相关问题
按如下函数原型编写程序,用字符数组作函数参数编程实现字符串逆序存放功能。 void inverse(char str[]); 输入提示信息:"input a string:" 输入字符串用gets() 输出提示信息:"inversed results:%s\n"
### 回答1:
以下是程序代码:
#include <stdio.h>
#include <string.h>
void inverse(char str[]);
int main()
{
char str[100];
printf("input a string:");
gets(str);
inverse(str);
printf("inversed results:%s\n", str);
return 0;
}
void inverse(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;
}
}
程序说明:
1. 首先在主函数中定义一个字符数组str,用于存放输入的字符串。
2. 然后使用gets()函数提示用户输入字符串,并将用户输入的字符串存放到str数组中。
3. 调用inverse()函数,将str数组作为参数传递给该函数。
4. 在inverse()函数中,使用strlen()函数获取字符串的长度,然后使用循环将字符串逆序存放。
5. 最后在主函数中输出逆序存放后的字符串。
### 回答2:
题目要求我们按照给定的函数原型,用字符数组作函数参数,实现字符串逆序存放的功能。在具体实现时,我们可以借助指针的方式来完成。
首先,在主函数中,我们需要先输入一个字符串,并且通过调用函数inverse来实现字符串逆序存放的功能。代码如下:
```c
#include <stdio.h>
#include <string.h>
void inverse(char str[]);
int main()
{
char str[100];
printf("input a string:");
gets(str);
inverse(str);
printf("inversed results:%s\n", str);
return 0;
}
```
然后,在函数inverse中,我们需要使用指针来遍历字符串,并通过交换字符的方式来实现字符串的逆序存放。代码如下:
```c
void inverse(char str[])
{
int len = strlen(str);
char *p = str;
char *q = str + len - 1;
while (p < q)
{
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
```
在函数inverse中,我们首先使用strlen函数来求出字符串的长度,然后使用指针p和q分别指向字符串的首尾两端。接着,我们使用while循环遍历字符串,直到指针p和q相遇为止,在遍历的过程中,我们采用交换字符的方式来实现字符串的逆序存放。
最后,我们在主函数中输出逆序存放后的结果即可。
总的来说,这道题目考察了我们对字符数组、指针的基本概念和用法的掌握,同时也考察了我们对字符串操作的基本思路和方法的理解。
### 回答3:
题目要求我们编写一个函数,利用字符数组作为函数参数,实现字符串逆序存放的功能。具体要求如下:
函数原型:void inverse(char str[]);
输入提示信息:"input a string:"
输入字符串用gets()
输出提示信息:"inversed results:%s\n"
思路:
1. 首先,我们需要提示用户输入一个字符串,这可以通过printf函数实现。
2. 然后,我们使用gets函数获取用户输入的字符串,并将其存储在一个字符数组中。
3. 接下来,我们需要将字符串逆序存放。这可以通过从字符串头和尾同时遍历,使用一个临时变量来交换两个位置上的字符来实现。
4. 最后,我们需要printf函数输出逆序存放后的结果。
代码:
下面我们来看具体的代码实现。
#include <stdio.h>
#include <string.h> //用到了strlen函数
void inverse(char str[]) {
int len = strlen(str);
int i, j;
char temp;
for (i = 0, j = len - 1; i < j; i++, j--) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
int main() {
char str[100];
printf("input a string: ");
gets(str);
inverse(str);
printf("inversed results: %s\n", str);
return 0;
}
在主函数中,我们声明了一个字符数组来存储用户输入的字符串。然后,我们调用inverse函数,将其逆序存放。最后,使用printf函数输出逆序存放后的结果。
注意事项:
1. 字符串长度要小于等于字符数组的容量,否则会出现数组越界的错误。
2. gets函数是不安全的,因为它无法限制输入的字符个数,可能导致缓冲区溢出。推荐使用fgets函数代替gets函数。例如,fgets(str, sizeof(str), stdin) 。
3. 逆序字符串必须把'\0'也交换,因为'\0'标志着字符串的结束。
综上所述,通过以上代码实现,就可以实现字符串逆序存放的功能。
按如下函数原型编写程序,用字符数组作函数参数编程实现字符串逆序存放功能。 void Inverse(char str[]); 输入提示信息:"Input a string:" 输入字符串用gets() 输出提示信息:"Inversed results:%s\n"
As an AI language model, I do not have a personal opinion, belief or emotion. "Null" is a term used in programming to indicate the absence of a value or the lack of a defined value.
阅读全文