标题:[求助]gets函数与NULL问题
只看楼主
joylmj
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-2-25
 问题点数:0 回复次数:13 
[求助]gets函数与NULL问题
程序一:

#include "stdio.h"
main()
{
char buff[256];
while(gets(buff)!=NULL)
puts(buff);
}
以上程序运行之后,不能结束循环,不能退出程序。而作如下更改之后就可以了。

程序二:
#include "stdio.h"
main()
{
char buff[256];
gets(buff);
while(strlen(buff)!=0)
{
puts(buff);
gets(buff);
}
}

NULL的使用存在问题,可是具体是怎么回事,不太清楚,希望大家帮帮忙啊,谢谢拉!
搜索更多相关主题的帖子: NULL gets 函数 
2006-06-12 10:57
parr
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-8-14
得分:0 
程序一应该这样修改:
#include<stdio.h>
int main(void)
{
char buff[256],*ptr;
while(*(ptr=gets(buff))!=NULL)
puts(ptr);
return 0;
}

加个指针



两脚踏翻尘世路 以天为盖地为庐
2006-06-12 13:03
joylmj
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-2-25
得分:0 
为什么要加这样一个指针呢?

努力学习C语言中!
2006-06-12 13:31
joylmj
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-2-25
得分:0 
不好意思哦,指针方面学习的不是太好,很多东西都是一知半解,特别对于这个NULL为什么加了指针之后就没有问题了,有点想不通。

努力学习C语言中!
2006-06-12 13:34
csight
Rank: 1
等 级:新手上路
威 望:1
帖 子:293
专家分:0
注 册:2006-6-11
得分:0 

以下也是一样的:
#include "stdio.h"
main()
{
char buff[256],*ptr;
while(*(ptr=gets(buff)))
puts(buff);

}

不知道原因是不是出在gets进行输入时没有马上进行条件的判断的缘故?


头可断,发型不可乱;血可流,皮鞋不可不擦油;
2006-06-12 14:18
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
得分:0 
以下是引用parr在2006-6-12 13:03:46的发言:
while(*(ptr=gets(buff))!=NULL)

判断第一个字符是否为NULL.



#include<stdio.h>
int main(void)
{
char buff[256];
while(gets(buff)&&*buff!=NULL)
puts(buff);
return 0;
}

[此贴子已经被作者于2006-6-12 21:10:55编辑过]


[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-06-12 21:06
parr
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-8-14
得分:0 
gets()函数返回一个指针,而指针的值永远不会为空的,所以第一个程序的循环永远不会结束。
用一个ptr指针就可以判断第一个字符是否为空指针。

两脚踏翻尘世路 以天为盖地为庐
2006-06-14 12:54
lyle3
Rank: 1
等 级:新手上路
帖 子:80
专家分:0
注 册:2006-5-19
得分:0 
以下是引用parr在2006-6-14 12:54:34的发言:
gets()函数返回一个指针,而指针的值永远不会为空的,所以第一个程序的循环永远不会结束。
用一个ptr指针就可以判断第一个字符是否为空指针。

指针的值不会为空吗?


我将再给你一次选择的机会............... QQ:514897584
2006-06-14 15:40
yuleol
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-12-10
得分:0 
以下是引用lyle3在2006-6-14 15:40:12的发言:

指针的值不会为空吗?

并不是说指针的值不会或是不能为空!
在这个题目里,这个指针的指向一个变量,只要这个变量存在,它就不会为空!~

这里的指针为空,和指针所指向的变量的值为空是两码事~


兴趣是我的源动力!
2006-06-14 15:46
parr
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-8-14
得分:0 
大家用VC调试一下,看gets return 的具体是什么值就知道了。再用加指针后对比一下。

两脚踏翻尘世路 以天为盖地为庐
2006-06-14 18:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-71579-1-1.html




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

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