A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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;
}

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

3 个回复

倒序浏览
我的思路是,可以按空格把句子拆分放到数组中,再删除每个数组字符串中的第一个字母。
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
如果要考虑到,第一个字符可能是空格,单词间可能间隔几个空格的情况,那么就用下面的代码
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马