标题:[求助]gets函数与NULL问题
只看楼主
private
Rank: 1
等 级:新手上路
帖 子:110
专家分:0
注 册:2006-5-1
得分:0 
程序一:

#include "stdio.h"
main()
{
char buff[256];
while(gets(buff)!=NULL)
puts(buff);
}
此程序中 char buff[256];这句定义了一个数组 而数组名就是一个有值得地址(此地址是系统分的 且 是第一个元素地址)
而 gets(buff) 是在这个数组里放字符串,最后返回 的 还是数组名buff(也就是上面说的系统分的地址)
此时 buff(数组名) 是有值的且不是空的 ,那么再 判断他是不是 不等与 NULL,当然是永不等的,循环不停的!!!

2006-06-14 18:59
trivycool
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-6-10
得分:0 
程序一应该这样修改:
#include<stdio.h>
int main(void)
{
char buff[256],*ptr; 
while(*(ptr=gets(buff))!=NULL)
puts(ptr);
return 0;
}

加个指针

给你解释一下2楼的程序  1是定义一个树组和指针  2是说把树组的第一个元素的地址放到BUFF{0}中 且不为空时开始循环    
2006-06-14 22:11
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
得分:0 
11 楼正确

另:gets(str)如果返回NULL不是代表没有输入任何字符,而是代表操作发生了错误

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-15 00:22
yuxing_628
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-3-26
得分:0 
1. while(gets(buff) != NULL)  //char *gets(char *string),因此gets(buff)返回的是一个指针值,该值为字符数组的首地址即buff,则指针指永不为空
    puts(buff);

2. while(*(ptr=gets(buff)) != NULL)  //将gets(buff)的返回值赋给指针ptr,然后对指针ptr进行取值操作,并判断ptr所指向的变量的值是否为空
    puts(ptr);  

3. while(*(gets(buff)) != NULL)  //原理与2相同
        puts(buff);

[[it] 本帖最后由 yuxing_628 于 2008-10-9 10:24 编辑 [/it]]
2008-10-09 10:23



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




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

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