免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4899 | 回复: 6
打印 上一主题 下一主题

创建一个100M的空文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-30 00:06 |只看该作者 |倒序浏览
FILE *fp = fopen(target_file_name,"wb+");

char *m_handle = new char[100 * 1024 * 1024];
fwrite(m_handle,sizeof(char),100*1024*1024,fp);

以上可以创建一个100M的空文件吗?

望赐教

论坛徽章:
0
2 [报告]
发表于 2009-05-30 02:19 |只看该作者
试试这个:
dd if=/dev/nero of=urfile bs=1M seek=100 count=0

论坛徽章:
0
3 [报告]
发表于 2009-05-30 02:23 |只看该作者
关于创建稀疏文件,昨天刚写了一个,拿来用下吧!
  1 #include <stdio.h>
  2 #include <sys/stat.h>
  3 #include <unistd.h>
  4 #include <fcntl.h>
  5 #include <stdlib.h>
  6
  7 #define SIZE (100 * 1024 * 1024) //100M
  8 #define MODE (S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH) //mode 744
  9
10 int
11 main(int argc, char *argv[])
12 {
13         int fd;
14         char *buf = "\n";
15
16         if (argc != 2) {
17                 fprintf(stderr, "Usage: %s file\n", argv[0]);
18                 exit(1);
19         }
20         if ((fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, MODE)) < 0) {
21                 fprintf(stderr, "open %s error!\n", argv[1]);
22                 exit(1);
23         }
24         if (lseek(fd, SIZE, SEEK_SET) < 0) {
25                 fprintf(stderr, "lseek %s error!\n", argv[1]);
26                 exit(1);
27         }
28         if (write(fd, buf, sizeof(buf)) < 0) {
29                 fprintf(stderr, "write %s error!\n", argv[1]);
30                 exit(1);
31         }
32
33         exit(0);
34 }

论坛徽章:
0
4 [报告]
发表于 2009-05-30 10:06 |只看该作者
试一下,看看大小

论坛徽章:
0
5 [报告]
发表于 2009-05-30 10:22 |只看该作者
我是用fseek(fp,file_size,SEEK_SET)建立,然后写入fwrite(buf,sizeof(buf),1,fp),是可以建立空文件。
但是我很多线程打开这个空文件,需要在不同位置写入数据。我的策略是:每一个线程有一个骑士地址和现在获得的数据量。那么每一次写的位置应该是fseek(fp,start+total,SEEK_SET)但是写入很多空的,而且为什么是追加在file_size后,应该是定位在从SEEK_SET开始的start+total偏移位置牙

论坛徽章:
0
6 [报告]
发表于 2009-05-30 10:34 |只看该作者
你太有才了!
读写文件不需要开设和文件相同大小的缓冲区,你用 putchar() 就行。

size_t size = 100 * 1024 * 1024;
freopen("output.dat", "w", stdout);
while (size-- > 0)
    putchar('\0');

论坛徽章:
0
7 [报告]
发表于 2009-05-30 11:02 |只看该作者
多谢法王指出,问题是后面部分
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP