C语言如何将一个字符串中的单词分别存到另一个二维数组?

供稿:hz-xin.com     日期:2025-01-15
c语言一个字符串如何以空格为分隔符分别存入一个二维数组每行?

c语言一个字符串要以空格为分隔符分别存入一个二维数组每行一个单词,可以逐个字符复制到二维数组中的一行中,遇到空格就结束复制,并把二维数组中新的字符置为空字符,并准备开始下一行的复制。直到第一个字符串结束为止。

/*用多级指针,字符串长度不定;但多少组字符串要预定好*/

#include "stdio.h"

int main( void )
{
char *a[4]; /*设指针数组为4个,几组字符串在这定*/
char * *p; /*重指针*/
int i;
p = a;
for (i=0; i<4; i++)
{
scanf("%s", *(p+i));
}
for (i=0; i<4; i++)
{
printf("a[%d] = %s
", i, *(p+i));
}
getch( );
return 0;
}

/*通过gcc编译*/
#include <stdio.h>
#include <string.h>

int isalpha(char t)
{
return( (t>='a'&&t<='z') || (t>='A'&&t<='Z') );
}

int main()
{
char line[256];
char word[128][80];
char tmp[2]={"\0\0"};
int i,length,totalNumber;
int prvIsAlpha;

while(1)
{
gets(line);
if(line[0]=='\0') break;
/*如果输入空行的话就退出程序*/

totalNumber=0;
length=strlen(line);

/*如果当前字符是字母那么通过判断前一个字符是不是字母来判断当前单词的输入是否断开*/
prvIsAlpha=0;
for(i=0;i<length;++i)
if(isalpha(line[i]))
{
tmp[0]=line[i];
if(prvIsAlpha) strcat(word[totalNumber-1],tmp);
else word[totalNumber++][0]=line[i];
prvIsAlpha=1;
}
else prvIsAlpha=0;

/*输出结果*/
if(totalNumber>1)
{
printf("There are %d words.\nThey are %s",totalNumber,word[0]);
for(i=1;i<totalNumber;++i)printf(",%s",word[i]);
printf(".\n");
}
if(totalNumber==1)
printf("There is 1 word.\nIt is %s.\n",word[0]);
if(totalNumber==0)
printf("There is no word.\n");
/*结果输出完毕*/
}

return 0;
}

用STRCPY()库函数

/*通过gcc编译*/
#include
<stdio.h>
#include
<string.h>
int
isalpha(char
t)
{
return(
(t>='a'&&t<='z')
||
(t>='A'&&t<='Z')
);
}
int
main()
{
char
line[256];
char
word[128][80];
char
tmp[2]={"\0\0"};
int
i,length,totalNumber;
int
prvIsAlpha;
while(1)
{
gets(line);
if(line[0]=='\0')
break;
/*如果输入空行的话就退出程序*/
totalNumber=0;
length=strlen(line);
/*如果当前字符是字母那么通过判断前一个字符是不是字母来判断当前单词的输入是否断开*/
prvIsAlpha=0;
for(i=0;i<length;++i)
if(isalpha(line[i]))
{
tmp[0]=line[i];
if(prvIsAlpha)
strcat(word[totalNumber-1],tmp);
else
word[totalNumber++][0]=line[i];
prvIsAlpha=1;
}
else
prvIsAlpha=0;
/*输出结果*/
if(totalNumber>1)
{
printf("There
are
%d
words.\nThey
are
%s",totalNumber,word[0]);
for(i=1;i<totalNumber;++i)printf(",%s",word[i]);
printf(".\n");
}
if(totalNumber==1)
printf("There
is
1
word.\nIt
is
%s.\n",word[0]);
if(totalNumber==0)
printf("There
is
no
word.\n");
/*结果输出完毕*/
}
return
0;
}

...单词间以空格分隔,然后分离其中的单词按每行一个单词输出,程序有了...
{ for(;s[i]&&s[i]!=' ';i++)使用循环逐个字母输出每一个空格后的单词,即:字符不为空格或结束符 遇到空格后就 printf("\\n");换行,从新执行 for(i=0;s[i];i++)if(s[i]!=' '){ for(;s[i]&&s[i]!=' ';i++)printf("%c",s[i]);printf("\\n");i--;} 直到结束...

c语言输入一行字符,用函数编程统计其中有多少个单词。假设单词之间以空...
printf("请您输入字符串:\\n");gets(str);fprintf(fp,"字符串:\\n%s\\n", str);panduan(str, m);printf("%d\\n",a);puts(str);fprintf(fp,"单词个数:\\n%d\\n", a);fclose (fp);} void panduan(char *p, int *n){ n = 1;for (; *p!='\\0'; p++)if (*p == ' ')n ...

...单词间以空格分隔,然后分离其中的单词按每行一个单词输出,程序有了...
for循环的意思是,如果当前的字符不是字符串结束符'\\0'也不是空格的时候就把这个字符打印到屏幕上,直到遇到空格表示打印完了一个单词了,这时候跳出循环打一个回车换行出来,准备开始打下一个单词,但是因为在for循环里i已经自加了,为了不错过下一个单词的第一个字符,所以要把i先减一,这样的话外面的大循环再执行...

编写程序,输入字符串(包含空格),统计其中单词的个数,单词之间以一个或...
2、定义两个字符串变量,保存要查找的字符串,以及是否包含的单词。3、输入查找的字符串,保存在变量str中。4、输入要查找的单词,保存在word中。5、查找单词在字符串中的起始位置,保存在变量p中。6、如果p的值为-1,则输出字符串中没有要找的单词。7、然后,将查找到的单词替换为英文name。8、...

java 如何将一串字符串解析成含有几个单词的字符串数?
在Java中,解析字符串为单词数组通常涉及到使用字符串的split方法。这里提供了一个例子来说明如何实现这一过程。首先,定义一个字符串变量a,并赋值为"hello world"。这个字符串包含我们希望解析的单词。接下来,我们使用字符串的split方法将a字符串分割成一个字符串数组。split方法接收一个参数,该参数是...

怎样从一个字符串里面找到特定的单词,然后用别的单词取代?用c语言实现...
include <stdio.h> include <string.h> void replace(char* org, char* find, char* rep){ char *p1, *p2;while(p1 = strstr(org, find)) { p2 = p1 + strlen(find);memmove(p1 + strlen(rep), p2, strlen(p2) + 1);memcpy(p1, rep, strlen(rep));} } int main(){ char ...

...分别统计出其中英文字母,空格,数字字符,其它字符及单词的个数...
int letters=0,spaces=0,digits=0,others=0;printf("请输入一串任意的字符:\\n");while((c=getchar())!='\\n'){ if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letters++;else if(c>='0'&&c<='9')digits++;else if(c==' ')spaces++;else others++;} printf("字母有%d个...

编写函数对存储在一个字符串变量中的英文句子,统计其中的单词个数,单...
\/\/因为单词之间是用空格隔开的,只要统计出句子中 空格的个数就可以了,另外统计完空格后还要给记 数器再加1,要不句末的那个单词就统计不到了 while(*(p+i)!='\\0'){ if(*(p+i)==' ')num++;i++;} printf("你输入的字符是:");puts(str);printf("num=%d \\n",num+1);} ...

...然后再每一行按顺序输出该字符串的单词 (每行一个单词)
j=0;} else if(i==strlen(a)-1) \/\/防止最后一个数不被输出 { b[j]=a[i];j++;for(temp=0;temp<j;temp++)printf("%c",b[temp]);printf("\\n");} else \/\/把字符放入一个数组里存起来,就好像记忆这是单词 { b[j]=a[i];j++;} return 0;} ...

从键盘输入一个英文句子或单词组成的字符串,可以不包含标点符号,但单 ...
print("字符串:", sentence)print("每个单词对应频次:")print(output)运行这段代码,它将要求您从键盘输入一个英文句子或单词组成的字符串(不包含标点符号),然后将每个单词的出现频次以列表形式输出。请注意,这段代码假定输入的句子中每个单词之间都用空格分隔,并且不包含标点符号。如果有其他的分隔...