免费注册 查看新帖 |

Chinaunix

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

求救:关于calloc和menset的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-01-07 11:24 |只看该作者 |倒序浏览
小弟写了几行小程序,可以运行,可是结果和预料的不一样,令我寝食难安,希望高手以一举手一投足之劳,帮我解决这个问题。谢谢!
功能:生成一个指定文件名,大小,内容(unsigned int)的文本文件
命令行格式:程序名 生成的文件名 文件大小(MB)  文件内容(单个字符)
程序如下。

#include <stdlib.h>;
#include <stdio.h>;
main(int argc,char *argv[])
{
FILE *fp;
if(argc!=4)
    {usege(1);
     return;}
if(isdigit(atoi(argv[2])))
    {usege(2);
     return;}
char *content=calloc(1024*1024,sizeof(char));
memset(content,*argv[3],1024*1024);
fp=fopen(argv[1],"a+";
fwrite(content,1024*1024,atoi(argv[2]),fp);
fclose(fp);
free(content);
printf("OK! \n";
}
usege(int usegeno)
{
if(usegeno=1)
printf("\tthe usege of shdata is : \n\tshdata filename length(MB) content(unsign
ed char) \n";
return;
if(usegeno=2)
printf("\tthe length of the data file must be a number. \n";
return;
}

论坛徽章:
0
2 [报告]
发表于 2005-01-07 11:28 |只看该作者

求救:关于calloc和menset的问题

不论我第3个参数是什么。
nomoffwrite=fwrite(content,1024*1024,atoi(argv[2]),fp);

nomoffwrite都是2。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2005-01-07 11:32 |只看该作者

求救:关于calloc和menset的问题

fwrite(content,1024*1024,atoi(argv[2]),fp);
改成:
for(i=0; i<atoi(argv[2]; i++) fwrite(content, 1024*1024, 1, fp);

论坛徽章:
0
4 [报告]
发表于 2005-01-07 11:50 |只看该作者

求救:关于calloc和menset的问题

我知道这样可以。
能不能不用while?
我fwrite的使用好像是没错呀。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2005-01-07 11:55 |只看该作者

求救:关于calloc和menset的问题

fwrite(content,1024*1024,atoi(argv[2]),fp);
要写atoi(argv[2])*1024*1024个字节,但content只有1M,数组越界了

论坛徽章:
0
6 [报告]
发表于 2005-01-07 11:58 |只看该作者

求救:关于calloc和menset的问题

哦。原来是这样子。
谢谢!
终于明白了。
thank you!thank you!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP