C程序这儿什么意思啊?
发布网友
发布时间:2023-05-11 06:37
我来回答
共2个回答
热心网友
时间:2024-10-23 15:09
这个是因为feof函数的关系。
“C”语言的“feof()”函数和数据库中“eof()”函数的运做是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。
位置和内容的区别:举个简单的例子,比如有人说“你走到火车的最后一节车箱”这就是位置。而如果说“请你一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
所以需要再次用 !=EOF 来防止最后一个多余的字符。
热心网友
时间:2024-10-23 15:09
这个EOF是fscanf的返回值,它表示有可能是到了文件结尾,也有可能是发生了读取错误。追问fscanf函数 返回的不是成功读入数的个数吗,还有那个while (!feof(fp))不是已经有表示你说的文件结尾和错误的情况了吗?还用EOF那不是多此一举?
追答fscanf读取失败的时候也返回EOF,不一定是到了文件结尾
热心网友
时间:2024-10-23 15:09
这个是因为feof函数的关系。
“C”语言的“feof()”函数和数据库中“eof()”函数的运做是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。
位置和内容的区别:举个简单的例子,比如有人说“你走到火车的最后一节车箱”这就是位置。而如果说“请你一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
所以需要再次用 !=EOF 来防止最后一个多余的字符。
热心网友
时间:2024-10-23 15:09
这个EOF是fscanf的返回值,它表示有可能是到了文件结尾,也有可能是发生了读取错误。追问fscanf函数 返回的不是成功读入数的个数吗,还有那个while (!feof(fp))不是已经有表示你说的文件结尾和错误的情况了吗?还用EOF那不是多此一举?
追答fscanf读取失败的时候也返回EOF,不一定是到了文件结尾
热心网友
时间:2024-10-23 15:09
这个是因为feof函数的关系。
“C”语言的“feof()”函数和数据库中“eof()”函数的运做是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。
位置和内容的区别:举个简单的例子,比如有人说“你走到火车的最后一节车箱”这就是位置。而如果说“请你一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
所以需要再次用 !=EOF 来防止最后一个多余的字符。
热心网友
时间:2024-10-23 15:09
这个EOF是fscanf的返回值,它表示有可能是到了文件结尾,也有可能是发生了读取错误。追问fscanf函数 返回的不是成功读入数的个数吗,还有那个while (!feof(fp))不是已经有表示你说的文件结尾和错误的情况了吗?还用EOF那不是多此一举?
追答fscanf读取失败的时候也返回EOF,不一定是到了文件结尾
热心网友
时间:2024-10-23 15:09
这个是因为feof函数的关系。
“C”语言的“feof()”函数和数据库中“eof()”函数的运做是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。
位置和内容的区别:举个简单的例子,比如有人说“你走到火车的最后一节车箱”这就是位置。而如果说“请你一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
所以需要再次用 !=EOF 来防止最后一个多余的字符。
热心网友
时间:2024-10-23 15:09
这个EOF是fscanf的返回值,它表示有可能是到了文件结尾,也有可能是发生了读取错误。追问fscanf函数 返回的不是成功读入数的个数吗,还有那个while (!feof(fp))不是已经有表示你说的文件结尾和错误的情况了吗?还用EOF那不是多此一举?
追答fscanf读取失败的时候也返回EOF,不一定是到了文件结尾