C语言输入一串字符串,将所有单词颠序输出,只能在main函数里实现
时间: 2023-06-10 15:05:18 浏览: 93
好的,我听明白了。对于您的问题,可以按照以下步骤实现:
1. 在main函数中声明一个字符数组,用于存储输入的字符串。
2. 使用scanf函数从标准输入中读取一行字符串,并将其存储到刚刚声明的字符数组中。
3. 声明一个指向字符的指针数组,用于存储颠倒后的单词。
4. 使用strtok函数将输入的字符串按照空格分割成多个单词,并依次将它们存储到指针数组中。
5. 计算指针数组的长度,并从尾到头依次输出其中的元素。
具体实现代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[1000];
scanf("%[^\n]", str); // 读取一行字符串,遇到换行符则停止
char* p[1000]; // 指向字符的指针数组
int count = 0; // 指针数组的长度计数器
// 使用strtok函数将字符串按照空格划分成多个单词,并依次存储到指针数组中
char* token = strtok(str, " ");
while (token != NULL) {
p[count++] = token;
token = strtok(NULL, " ");
}
// 从指针数组的尾部开始逆序输出单词
for (int i = count - 1; i >= 0; i--) {
printf("%s ", p[i]);
}
printf("\n");
return 0;
}
```
该代码通过使用strtok函数将原始字符串按照空格拆分成多个单词,并将每个单词存储到指针数组中。然后,根据指针数组的长度从后往前输出每个单词。由于使用了指针数组,因此不需要修改原始字符串,也不需要使用额外的空间来存储颠倒后的单词。
阅读全文