| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 554 人关注过本帖
标题:一个编程问题……
只看楼主 加入收藏
cosmo89929
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-9-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
一个编程问题……
#include<stdio.h>
#include<stdlib.h>
void main()
{
    int flag=1;
    char c,*p,a[100];
    p=a;
    while(flag==1)
    {
        gets(p);
        puts(p);
        puts("Do you want to continue ?N/Y\n");
        c=getchar();
        if(c=='n'||c=='N') flag=0;
        if(c=='y'||c=='Y')
            {
                free(p);
            }
    }
}





我想不断地根据我的输入来得到新的字符串,请问程序这么写有什么问题?要怎么改呢?
搜索更多相关主题的帖子: continue include 字符串 
2009-09-24 13:29
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
if(c=='y'||c=='Y')   
   {  
     free(p);  
   }  
把这判断整个去掉,程序p指向字符串数组a,用不到free

努力—前进—变老—退休—入土
2009-09-24 14:10
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:0 
你没用到malloc 你free什么
2009-09-24 14:31
血狼夜怨
Rank: 2
等 级:论坛游民
帖 子:13
专家分:22
注 册:2009-9-13
收藏
得分:0 

{
 free(p);
}
这个部分改为flag=1;就可以了。
2009-09-24 19:55
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:15 
其实你原来的程序并没有大的错误,
不论你是
if(c=='y'||c=='Y')   
            {  
                free(p);  
            }  
还是将free(p)去掉,程序都可以实现你的想法。只不过用free(p)的确没必要。
但是你要注意,当 Do you want to continue ?N/Y时,输入N或者n程序可以正常推出;当输入Y或者y时不能直接回车。
因为你选择继续时接下来电脑就等着你继续往里输入字符串,你要是在Y或y后直接回车,它就以为你输入的字符串就是'\0',所以就输出一个'\0',接着又是一句Do you want to continue ?N/Y。所以当你想继续时,在输入Y或者y后别回车,接着输入你想输入的字符串,当然Y和新输入的字符串之间可以有N个空格(只是为了醒目,如果你输入的字符串就想带空格也可以啊),这样它就能将你第二次输入的字符串输出。
有点啰嗦,呵呵。
比方说:
你想继续,而且想输入 abcdefg
那么出现Do you want to continue ?N/Y时
应这么输入:Yabcdefg 接着电脑输出
            abcdefg
            Do you want to continue ?N/Y
接下来的输入类似。
2009-09-25 16:46
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:5 
再加一个 getchar() 吃掉回车符。
2009-09-25 17:08
奋斗2010
Rank: 2
等 级:论坛游民
帖 子:14
专家分:22
注 册:2009-8-31
收藏
得分:0 
{                                 {


                free(p);  改为             gets(p);
{   
                                   }
2009-09-25 17:31
nevdongdong
Rank: 2
等 级:论坛游民
帖 子:26
专家分:12
注 册:2009-9-1
收藏
得分:0 
没搞懂意思...定义了数组也没存,定义了指针也没加,那录入的下一个不是把前一个给覆盖掉了。malloc 没用的确不用free。
2009-09-25 19:17
快速回复:一个编程问题……
数据加载中...
 
   



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

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