| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1767 人关注过本帖
标题:一道C语言试题,不知道错在哪里了,大神求指教
取消只看楼主 加入收藏
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
一道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
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 2楼 wp231957
我是把整个试题粘上去了,其实就只要编辑fun函数就好了,
2017-03-21 11:34
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 3楼 是2014
大神,我写的代码哪里不对呢?
2017-03-21 13:40
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 5楼 wp231957
大神,我知道我写的这个代码很麻烦,但是我想知道我写的代码错在哪里了?
2017-03-21 13:44
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 8楼 wp231957
不好意思啊,我刚学C语言,您说的我有点看不懂,能不能举个例子说明一下,谢谢啊
2017-03-21 14:05
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 10楼 wp231957
我想的是把m[81]再把值给char*a,让他返回主函数;这样也不行吗(我刚接触C语言,显得比较外行,请见谅啊)
2017-03-21 14:10
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 10楼 wp231957
我是想把m[81]的值再给指针a所指的数列,这样子也不对吗?
2017-03-21 14:14
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 14楼 吹水佬
char *aa=a;
    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';
    q=m;
    while(*q)
        *aa++=*q++;
    *aa='\0';
我的错误是不是就是少了这些别标为红色的字句,这些字句的作用是把指针重写指回开头对不?
2017-03-21 14:46
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 14楼 吹水佬
我理解的对不,大神
2017-03-21 14:47
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 17楼 吹水佬
谢谢大神啊
2017-03-21 14:55
快速回复:一道C语言试题,不知道错在哪里了,大神求指教
数据加载中...
 
   



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

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