这问题又在哪= =?
never 资深达人 2016-08-18 22:31:32
1643 8 0

#include <stdio.h>

#include <ctype.h>


void fun(char *str)

{int i ;


while(*str)

for(i=0;i<81;i++)

if(str[i]==' ')

str[i]=str[i+1];


str[i]=0;

}


main()

{

  char str[81];void NONO ();


  printf("Input a string:") ;

  gets(str);

  puts(str);

  fun(str);

  printf("*** str: %s\n",str);

  NONO();

}


void NONO ()

{

/* 请在此函数内打开文件,输入调试数据,调用 fun 函数,

   输出数据,关闭文件。 */

  char str[81];

  int n = 0;

  FILE *rf, *wf ;


问题来自: 编程题真题

共 8 个回答

    qqq 资深元老 助教 3592天前

    字符串数组申请的内存空间是81,但不代表它就正好有81个元素,只要小于等于81就可以,所以i的循环条件小于81是错的。

    never 资深达人 3592天前

    回复 qqq:改成str[i]还是不行


    qqq 资深元老 助教 3592天前

    回复 never:那最外面那个while循环是用来干嘛的。。

    qqq 资深元老 助教 3592天前

    回复 never:这题的思路不应该是遇到空格就删除,而是应该遇到非空格就将它存在返回的数组里。

    qqq 资深元老 助教 3592天前

    回复 never:按照你的代码思路,如果有两个空格在一起,就无法得到正确结果了,仔细想想就明白了。

    qqq 资深元老 助教 3592天前

    回复 never:void fun (char *str)
    {
     int i=0;
     char *p=str;
     while(*p)
     {
       if(*p!=' ')          /*删除空格*/
       {
         str[i]=*p;
         i++;
       }
       p++;
     }
     str[i]='\0';            /*加上结束符*/
    }

    要适应这样的解题思路,加油!

    never 资深达人 3592天前

    回复 qqq:有两个空格的话第二个先覆盖第一个然后后面的再补上来啊。。

    qqq 资深元老 助教 3592天前

    回复 never:那如果不是空格咧。。

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

相关问题