黑马程序员技术交流社区

标题: 输入一个英文句子,要求将每个单词的第一个字母删除 求助 [打印本页]

作者: 该有个目标了    时间: 2014-8-24 21:20
标题: 输入一个英文句子,要求将每个单词的第一个字母删除 求助
#include<stdio.h>
#include<string.h>
int main()
{
    char str[100];
    int i;
   
    gets(str);
    for(i=0;i<strlen(str);i++)
    {
        printf("%c",str);
        if(str==' ')
            i++;
    }
   
    printf("\n");
    return 0;
}

为什么第一个字母删不掉 ,怎么做,求教。


作者: 庄得超    时间: 2014-8-24 21:32
我的思路是,可以按空格把句子拆分放到数组中,再删除每个数组字符串中的第一个字母。
作者: 王振宇351x    时间: 2014-8-25 01:22
  1. #include <stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5.     char str[100];
  6.     int i;
  7.     gets(str);
  8.     for (i=1; i<strlen(str); i++) {   //i必须从1开始. 否则第一个单词的第一个字母就没有办法去掉.
  9.         printf("%c",str[i]);    // 少了"[i]"
  10.         if (str[i]==' ') {       // 少了"[i]"
  11.             i++;
  12.         }
  13.     }
  14.    
  15.     printf("\n");
  16.     return 0;
  17. }
复制代码

作者: 王振宇351x    时间: 2014-8-25 01:30
如果要考虑到,第一个字符可能是空格,单词间可能间隔几个空格的情况,那么就用下面的代码
  1. #include <stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5.     char str[100];
  6.     int i=0;
  7.     gets(str);
  8.     while(str[i]==' ') {    // 将前面的空格都给排除掉
  9.         i++;
  10.     }
  11.     for (i++; i<strlen(str); i++) {   //第一个i++是将第一个单词的第一个字母忽略掉
  12.         printf("%c",str[i]);
  13.         while(str[i]==' ') {       // 将连续的空格都忽略掉.
  14.             i++;
  15.         }
  16.     }
  17.    
  18.     printf("\n");
  19.     return 0;
  20. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2