比如:
输入
asdfw uuio fff tyu
输出为
tyu
fff
uuio
asdfw
(用C语言,最好加上注释,我是初学者,很多地方还不明白,是大神的就关照一下)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
char * temp[10] = { 0 };//定义了指针数组, 并将其初始化, 每个指针的值为 NULL
printf("请输入字符串 : ");
//这里没有分配内存空间, 直接在buff上改的, 如果需要的话, 可以自己 malloc
char buff[128] = { 0 };//定义一个缓冲字符串, 用来保存输入的字符串
gets(buff);//从键盘读取字符串, 注意再输入的时候最后面需要输入一个空格, 如 "aaa ddd kkk "
char * p1 = buff;//定义了两个指针变量, 都初始化为 buff
char * p2 = buff;
int count = 0;//计数器
while (*p1 != '\0')//循环查找字符串
{
if (*p1 == ' ')//当字符等于空格的时候
{
*p1 = '\0';//将这个空格替换成为 '\0'
p1++;//指针后移
temp[count] = p2;//p2 保存的是每个子字符串的开头, 每次将这个开头赋值给temp[count]
p2 = p1;//重新赋值 p2 让 p2每次都是保存的每个子串的开头
count++;//计数器++
}
p1++;//指针++
}
for (int i = 0; i < count; i++)
{
printf("%s\n", temp[count - 1 - i]);//循环打印输出, 因为是逆序, 所以 temp[count - 1 - i]
}
system("pause");
}追问
#include <string.h>
#include <stdlib.h>
void main()
{
char * temp[10] = { 0 };//定义了指针数组, 并将其初始化, 每个指针的值为 NULL
printf("请输入字符串 : ");
//这里没有分配内存空间, 直接在buff上改的, 如果需要的话, 可以自己 malloc
char buff[128] = { 0 };//定义一个缓冲字符串, 用来保存输入的字符串
gets(buff);//从键盘读取字符串, 注意再输入的时候最后面需要输入一个空格, 如 "aaa ddd kkk "
char * p1 = buff;//定义了两个指针变量, 都初始化为 buff
char * p2 = buff;
int count = 0;//计数器
while (*p1 != '\0')//循环查找字符串
{
if (*p1 == ' ')//当字符等于空格的时候
{
*p1 = '\0';//将这个空格替换成为 '\0'
p1++;//指针后移
temp[count] = p2;//p2 保存的是每个子字符串的开头, 每次将这个开头赋值给temp[count]
p2 = p1;//重新赋值 p2 让 p2每次都是保存的每个子串的开头
count++;//计数器++
}
p1++;//指针++
}
for (int i = 0; i < count; i++)
{
printf("%s\n", temp[count - 1 - i]);//循环打印输出, 因为是逆序, 所以 temp[count - 1 - i]
}
system("pause");
}追问
大神,你的代码有点问题,输入asdfw uuio fff tyu,后面那个tyu怎么消失了?
追答每次输入的时候在最后面输入空格,因为程序是按照空格来判断的
温馨提示:答案为网友推荐,仅供参考