hjn_jenny 2017-11-27 06:30 采纳率: 28.6%
浏览 1244
已采纳

如何把带标点的英文字符串分为单个的单词输出

#include
#include
int main()
{

char a[50];
char word[50];
char *string=a;
int c,d,total=0,i;
int characternumber(char *str);
int wordnumber(char *str);
void divide(char *str,char *word);
printf("请输入一个带有标点符号或空格的字符串\n");
gets(string);
for(i=0;*(string+i)!='\0';i++)
total++;
c=characternumber(string);
d=wordnumber(string );
divide(string,word);
printf("字符串中的字母数为%d,单词数为%d\n",c,d);
printf("各个单词为\n");
for(c=0;c<total;c++)
printf("%c",word[c]);
return 0;

}
int characternumber(char str)
{
int count=0,i=0,k=0,temp=0,b=0;
char delimiters[]=",.!? \";:\"";
for(i=0;
(str+i)!='\0';i++)
b++;
for(i=0;*(str+i)!='\0';i++)
for(k=0;k<9;k++)
if(*(str+i)==delimiters[k])
temp++;

count=b-temp;
return count;

}
int wordnumber(char str)
{
int count=0,i=0,k=0,temp=0,b=0;
char delimiters[]=",.!? \";:\"";
for(i=0;
(str+i)!='\0';i++)
b++;
for(i=0;i<b;i++)
for(k=0;k<9;k++)
if(*(str+i)!=delimiters[k]&&*(str+i+1)==delimiters[k])
count++;
return count;

}
void divide(char str,char *word)
{
int i,b,k,temp=0;
char delimiters[]=",.!? \";:\"";
for(i=0;
(str+i)!='\0';i++)
b++;
for(i=0;i<b;i++)
{for(k=0;k<9;k++)
{if(*(str+i)=delimiters[k])
temp=1;break;}
if(temp==0)
word[i]=str[i];
if(temp==1)
word[i]='\n';}

}
最后一个函数 我想把标点换成换行符
题目要求写函数做

  • 写回答

1条回答 默认 最新

  • Debug_dodge 2017-11-27 06:47
    关注

    你的问题是什么,是想问怎么实现,还是问程序哪里有bug,麻烦提问的时候描述清楚

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大