| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1700 人关注过本帖
标题:一道C语言试题,不知道错在哪里了,大神求指教
只看楼主 加入收藏
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
一道C语言试题,不知道错在哪里了,大神求指教
程序代码:
题目的内容是:假定输入的字符串中只包含字母和*号,请编写函数fun它的功能是:除尾部*号外,将字符串中其它*号全部删除。形参p已指向字符串中最后一个字母(红色的是我写的fun函数,虽然是十分麻烦,我觉得应该能输出正确结果的,求大神指教啊)

#include <stdio.h>
void fun(char *a, char *p)
{char m[81]={'0'};

 char *q=m;

 int j=0;

 while(a<p)

 {  if(*a!='*')
    *q++=*a;
     a++;}

 while(*a)

 {  *q++=*a;
    a++;}

 *q='\0';

 while(*q)
     *a++=*q++;

 *a='\0';
}
main()
{char s[81],*t;
   void NONO ();
   printf("Enter a string:\n");gets(s);
   t=s;
   while(*t)t++;
   t--;
   while(*t=='*')t--;
   fun(s , t);
   printf("The string after deleted:\n");puts(s);
   NONO();
}
void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *in, *out ;
  int i ; char s[81],*t ;
  in = fopen("in.dat","r");
  out = fopen("out.dat","w");
  for(i = 0 ; i < 10 ; i++) {
    fscanf(in, "%s", s);
    t=s;
    while(*t)t++;
    t--;
    while(*t=='*')t--;
    fun(s,t);
    fprintf(out, "%s\n", s) ;
  }
  fclose(in);
  fclose(out);
}






[此贴子已经被作者于2017-3-21 11:05编辑过]

搜索更多相关主题的帖子: C语言 字符串 字母 
2017-03-21 11:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:7 
没看题目要求哪里要用到文件啊

DO IT YOURSELF !
2017-03-21 11:28
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 2楼 wp231957
我是把整个试题粘上去了,其实就只要编辑fun函数就好了,
2017-03-21 11:34
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>

void delstr(char* source ,char* dest,char* p)
{
    char* t=--p;
    for(;source<=t;source++)
    {
        if(*source!='*')
        {
            *dest=*source;
            dest++;
        }
    }
    *dest=*(++t);
    *(++dest)='\0';
}
int main()
{
    char* m="abcd*sdf*sfa*";
    char* n="akjsdf*f*saf*asf";
    char t[256]={'\0'};
    char* p;
    p=m;
    while(*p!='\0') p++;
    p--;
    delstr(m,t,p);
    printf("%s\n",t);
    p=n;
    while(*p!='\0') p++;
    p--;
    delstr(n,t,p);
    printf("%s\n",t);
    return 0;
}


DO IT YOURSELF !
2017-03-21 12:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用是2014在2017-3-21 11:03:46的发言:

题目的内容是:假定输入的字符串中只包含字母和*号,请编写函数fun它的功能是:除尾部*号外,将字符串中其它*号全部删除。形参p已指向字符串中最后一个字母(红色的是我写的fun函数,虽然是十分麻烦,我觉得应该能输出正确结果的,求大神指教啊)
 
#include  
void fun(char *a, char *p)
{char m[81]={'0'};
 char *q=m;
 int j=0;
 while(a
子函数里的{char m[81]={'0'};  啥用都没有 只能作为临时存储
若想在返回时 把它返回到主函数  只能在形参中把某个数组指针给传进来

DO IT YOURSELF !
2017-03-21 12:11
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:7 
程序代码:
#include <stdio.h>

char* foo( char* s )
{
    char* a=s;
    char* b=s;
    char* p;
    for( p=s; *p; ++p )
    {
        if( *p != '*' )
        {
            *a++ = *p;
            b = p+1;
        }
    }
    for( ; *a++=*b++; );

    return s;
}

//#include <assert.h>
//#include <string.h>

int main( void )
{
    //{
    //    char s[] = "**a***b****c*****";
    //    assert( strcmp(foo(s),"abc*****") == 0 );
    //}
    //{
    //    char s[] = "a***b****c";
    //    assert( strcmp(foo(s),"abc") == 0 );
    //}
    //{
    //    char s[] = "abc";
    //    assert( strcmp(foo(s),"abc") == 0 );
    //}

    {
        char s[81];
        scanf( "%80s", s );
        puts( foo(s) );
    }

    return 0;
}
2017-03-21 12:18
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 3楼 是2014
大神,我写的代码哪里不对呢?
2017-03-21 13:40
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 7楼 是2014
看五楼
回复你的你都不看錒

DO IT YOURSELF !
2017-03-21 13:42
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 5楼 wp231957
大神,我知道我写的这个代码很麻烦,但是我想知道我写的代码错在哪里了?
2017-03-21 13:44
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用wp231957在2017-3-21 12:11:24的发言:

子函数里的{char m[81]={'0'};  啥用都没有 只能作为临时存储
若想在返回时 把它返回到主函数  只能在形参中把某个数组指针给传进来
你的函数中心是离不开这个m[81]的  而这个m 由于是在子函数中申请的内存 是无法返回主函数的 是个废品


DO IT YOURSELF !
2017-03-21 13:49
快速回复:一道C语言试题,不知道错在哪里了,大神求指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014570 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved