编写一个程序,使指针从标准输入读取一组字符串,并将他们逆序输出到标准输出上
时间: 2024-03-01 09:51:25 浏览: 20
好的,下面是C语言的程序实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char *str[10]; //定义一个指针数组
int i = 0;
//从标准输入读取字符串,直到读取到空字符串
while (scanf("%s", str[i]) != EOF && strcmp(str[i], "") != 0) {
i++;
}
//逆序输出字符串
for (int j = i - 1; j >= 0; j--) {
printf("%s\n", str[j]);
}
return 0;
}
```
在上面的程序中,我们使用了一个指针数组 `str` 来存储输入的字符串。然后我们从标准输入不断读取字符串,直到读取到空字符串为止。最后,我们逆序输出存储在 `str` 数组中的字符串。
需要注意的是,在使用指针数组存储字符串时,需要为每个指针分配内存空间。这里为了简便起见,我们没有进行内存分配,仅仅使用了未初始化的指针。在实际的应用中,需要根据实际情况进行内存分配。
相关问题
C语言编写程序,输入任意一个字符串,逆序输出。要求:使用指针和数组相结合实现。
好的,这是一个简单的 C 语言编程问题。以下是实现该功能的示例代码。
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 100
int main()
{
char str[MAX_LENGTH + 1];
char *p, *q;
int len;
printf("请输入字符串:");
fgets(str, MAX_LENGTH + 1, stdin);
len = strlen(str);
p = str;
q = str + len - 1;
while (p < q) {
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
printf("逆序输出字符串:%s", str);
return 0;
}
```
代码解释:
- 定义了一个字符数组 `str` 来存储输入的字符串,使用 `fgets` 函数读取字符串,保证输入字符串的安全性;
- 定义两个指针 `p` 和 `q`,分别指向字符串的首位和末位;
- 使用 `while` 循环将 `p` 和 `q` 指向的字符交换,并向中间移动,直到 `p` 和 `q` 相遇;
- 输出逆序后的字符串。
注意事项:
- 在定义字符数组时,需要预留一个额外的字节来存储字符串的结束符 `\0`;
- 输入的字符串可能包含回车符,需要在读取字符串后去掉;
- 在输出字符串时,不需要换行符。
输入一个字符串将其逆序输出c语言(用指针实现)
也可以使用指针来实现字符串的逆序输出,以下是一个例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
int len = strlen(str);
char *p = str + len - 1;
while (p >= str) {
printf("%c", *p);
p--;
}
return 0;
}
```
首先,我们定义一个字符数组 `str` 存储输入的字符串,并使用 `scanf` 函数读取用户输入的字符串。然后,使用 `strlen` 函数获取字符串的长度,定义一个指针 `p` 指向字符串末尾的字符。接着,使用循环遍历指针 `p`,逐个输出字符,直到指针 `p` 指向字符串头部为止。最后,返回0表示程序正常结束。