c语言 指针数组初步,编程题
问题描述:一个长度不超过10000的字符串,字符串中只含字母和空格,空格用于分隔单词.请将字符串中用空格分隔的单词输出来。要求:1.利用指针数组保存每个单词的开始位置。2...
问题描述:一个长度不超过10000的字符串,字符串中只含字母和空格,空格用于分隔单词.请将字符串中用空格分隔的单词输出来。
要求:1.利用指针数组保存每个单词的开始位置。
2.吧字符串中单词结束后的空格改为'\0’,然后用指针数组将每个单词输出
3.不可直接输出或用二维数组输出单词
这应该是比较简单的程序,求大神不要把它复杂化,求思路简介清晰,各种复杂的语句实在看不懂,再次说。。c语言c语言!不是c++等等东西。。 展开
要求:1.利用指针数组保存每个单词的开始位置。
2.吧字符串中单词结束后的空格改为'\0’,然后用指针数组将每个单词输出
3.不可直接输出或用二维数组输出单词
这应该是比较简单的程序,求大神不要把它复杂化,求思路简介清晰,各种复杂的语句实在看不懂,再次说。。c语言c语言!不是c++等等东西。。 展开
4个回答
展开全部
#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++;
}
}
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++;
}
}
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
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";是什么啊。。真心看不懂
追答
定义一个字符串啊,我试了能运行啊,你那什么错?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
{
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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询