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

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

#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,麻烦提问的时候描述清楚

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

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?