打印

这个错在哪里啊?

[复制链接]
962|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
limee|  楼主 | 2019-7-17 19:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stdio.h>
#include <unistd.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main()
{
   char c;
   int in,out;
   int rc;
   in = open("file1",O_RDONLY);
   out = open("file2",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);
   while( ( rc = read(in,&c,1)) == 1)
   {
      printf("%d.\n",rc);
      write(out,&c,1);
   }
   exit(0);
}

想把file1复制到file2。源文件46k,实际只复制了4k。
mingw编译的。

网上查的资料说,文件很快读完了,所以读到字节不正确了。


使用特权

评论回复

相关帖子

沙发
dirtwillfly| | 2019-7-17 22:13 | 只看该作者
本帖最后由 dirtwillfly 于 2019-7-17 22:14 编辑

文件里是不是有特殊字符,导致了while里变为假?

使用特权

评论回复
板凳
gy168| | 2019-7-18 09:42 | 只看该作者
二进制打开试试

使用特权

评论回复
地板
limee|  楼主 | 2019-7-18 11:44 | 只看该作者
dirtwillfly 发表于 2019-7-17 22:13
文件里是不是有特殊字符,导致了while里变为假?

的确,是^Z 字符引起的,不知道如何解决?

使用特权

评论回复
5
dirtwillfly| | 2019-7-19 08:28 | 只看该作者
limee 发表于 2019-7-18 11:44
的确,是^Z 字符引起的,不知道如何解决?

那个地方应该用判断是否到文件结尾,而不是看读到的字符

使用特权

评论回复
6
qt8867| | 2019-7-19 09:15 | 只看该作者
文件结束符是EOF,(实际上是-1),判断条件有问题;在实际编程的时候可以引用EOF特殊字符,类似这种:Read(in,&c,1))!= EOF

使用特权

评论回复
7
R2D2| | 2019-7-19 14:45 | 只看该作者
in = open("file1",O_RDONLY);这句要加上BINARY属性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝