马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自己写的代码,照着小甲鱼的样例输入,有时候能出来对的结果,有时候会在某个单词后多一个符号,并且这个符号每次运行还不同。
代码及注释和运行结果如下:#include<stdio.h>
#define MAX 1024
int main()
{
int num=0,max_len=0;//保存空格数,将来+1计算单词数;保存最大单词长度
int i=0,j=0,k=0;
char str[MAX];
printf("请输入一个英文句子:");
fgets(str,MAX,stdin);
for(i=0;str[i]!='\n';i++)
{
if(str[i]==' ')
{
if(i==0||i>0&&str[i-1]!=' '&&str[i-1]!='\0')//给每段空格的第一个改为结束标志
{
if(i!=0)//要是一上来就是空格就不改成结束标志
str[i]='\0';
num++;
if(j>max_len)//一个单词计数完了,看看要不要更新最大长度
max_len=j;
}
}
else
{
if(i==0||i>0&&(str[i-1]==' '||str[i-1]=='\0'))//一个新单词开始
j=1;
else
j++;
}
}
if(j>max_len)
max_len=j;//最后一个单词可能没空格,遇到换行符号而退出(fgets保留换行符)
if(str[0]==' ')
num--;
char res[num+1][max_len+1];
printf("分割结果已存放到result[%d][%d]的二位数组中...\n",num+1,max_len+1);
k=0;
for(i=0;i<num+1;i++)
{
for(j=0;j<max_len;j++)
{
if(str[k]=='\0'||str[k]=='\n')//这个单词输入完了
{
k++;break;
}
while(str[k]==' ')
k++;
res[i][j]=str[k++];
}
res[i][j+1]='\0';
}
printf("现在依次打印每个单词:\n");
for(i=0;i<num+1;i++)
printf("%s\n",res[i]);
return 0;
}
|