|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
-
|