c语言 指针数组初步,编程题

问题描述:一个长度不超过10000的字符串,字符串中只含字母和空格,空格用于分隔单词.请将字符串中用空格分隔的单词输出来。要求:1.利用指针数组保存每个单词的开始位置。2... 问题描述:一个长度不超过10000的字符串,字符串中只含字母和空格,空格用于分隔单词.请将字符串中用空格分隔的单词输出来。
要求:1.利用指针数组保存每个单词的开始位置。
2.吧字符串中单词结束后的空格改为'\0’,然后用指针数组将每个单词输出
3.不可直接输出或用二维数组输出单词
这应该是比较简单的程序,求大神不要把它复杂化,求思路简介清晰,各种复杂的语句实在看不懂,再次说。。c语言c语言!不是c++等等东西。。
展开
 我来答
伊·梵beec
推荐于2016-09-23 · TA获得超过2158个赞
知道大有可为答主
回答量:1897
采纳率:0%
帮助的人:1362万
展开全部
#include <stdio.h>
void split(char *str, char **a);
int main()
{
char in[10000]={0};
char *a[10000]={NULL};
int i=0;
printf("Please input a string:\n");
//输入字符串
gets(in);
//处理
split(in, a);
//输出单词
printf("Words:\n");
for(;a[i];i++) printf("%s\n", a[i]);
}
void split(char *str, char **a)
{
char *p=str;
//处理第一个单词
if(*p && *p!=' ') {*a++=str;p++;}
while(*p)
{
//处理单词
if(*p!=' ' && *(p-1)=='\0') *a++ = p;
//处理空格
else if(*p==' ') *p='\0';
p++;
}
}
NE_Z
2012-12-21 · TA获得超过1737个赞
知道小有建树答主
回答量:1687
采纳率:55%
帮助的人:572万
展开全部
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int main(void)
{
char str1[N],*pstr=str1;
fgets(str1,N,stdin);
char *a[N];
int n=0;
int ischanged=0;
while(*pstr!='\n')
{
if(*pstr!=' '&&!ischanged)
{
a[n++]=pstr;
ischanged=1;
}else if(*pstr==' ')
{
*pstr='\0';
ischanged=0;
}
++pstr;
}
int i;
for(i=0;i<n;++i)
printf("%s\n",a[i]);
return 0;
}
更多追问追答
追问
运行不了啊。。。
追答

我的成功

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loboho
2012-12-21 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:405万
展开全部
#include<stdio.h>
void GetWord(char* str)
{
char* pWord[10000];
int nNum = 0, i;
bool bSet = true;
for(; *str != '\0'; ++str)
{
if (*str == ' ')
{
*str = '\0';
bSet = true;
}
else if (bSet)
{
pWord[nNum++] = str;
bSet = false;
}
}
for (i = 0; i < nNum; i++)
{
printf("%s\n", pWord[i]);
}
}

void main()
{
char sz[] = " rtrt frerfg e wef4t4t dfgdfgdfg sdfs ef";

GetWord(sz);

}
更多追问追答
追问
= =vc++6.0运行不了而且这个char sz[] = "  rtrt       frerfg  e wef4t4t dfgdfgdfg     sdfs ef";是什么啊。。真心看不懂
追答
定义一个字符串啊,我试了能运行啊,你那什么错?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周生008
2012-12-21 · TA获得超过1222个赞
知道小有建树答主
回答量:1329
采纳率:0%
帮助的人:638万
展开全部
void splitWords(char strSrc[], size_t len)
{
size_t i;
char **ppWords = (char **)malloc(len/2*sizeof(char *));
char **ppWord = ppWords;
memset(ppWords, 0, len/2);
*ppWord = strSrc;
for (i = 0; i < len; i++)
{
if (' ' == strSrc[i])
{
strSrc[i] = '\0';
if (i < len - 1)
{
*(++ppWord) = strSrc + i + 1;
}
}
}
for (i = 0; ppWords+i <= ppWord ; i++)
{
if (strlen(ppWords[i]) > 0)
{
printf("%s\n", ppWords[i]);
}
}
free(ppWords);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式