作者Ryan45758 (☺000Qryan45758)
看板C_and_CPP
标题[问题] 档案处理
时间Mon Dec 3 20:36:03 2018
编译软体 : Dev C++
问题一 :
试产生10个1~16之间的整数乱数,并将它写入二进位档"rand.bin"中。
问题一程式码:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>
int main(void)
{
int i,rnd;
int f1;
char str[3];
f1=creat("C:\\Users\\ryan4\\Desktop\\习题选答\\chap12\\hw12_16\\rand.bin",O_CREAT|O_WRONLY|O_BINARY);
if(f1!=-1)
{
for(i=0;i<10;i++)
{
rnd=rand()%16+1;
strcpy(str,itoa(rnd,str,10));
write(f1,str,sizeof(str));
}
close(f1);
printf("档案写入完成!!\n");
}
else
printf("档案开启失败!!\n");
system("pause");
return 0;
}
执行结果:
10 4 15 5 2 13 7 15 3 1
想请问char str[3]是什麽意思
问题二 : 修改上述程式码,产生50个1~1000的整数乱数,并将它写入纯文字档"rand.txt"中。
程式码 :
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>
int main(void)
{
int i,rnd;
int f1;
char str[3];
f1=creat("C:\\Users\\ryan4\\Desktop\\习题选答\\chap12\\hw12_16\\rand.txt",O_CREAT|O_WRONLY|O_TEXT);
if(f1!=-1)
{
for(i=0;i<
50;i++)
{
rnd=rand()%
1000+1;
strcpy(str,itoa(rnd,str,10));
write(f1,str,sizeof(str));
}
close(f1);
printf("档案写入完成!!\n");
}
else
printf("档案开启失败!!\n");
system("pause");
return 0;
}
执行的错误结果:
名代眝W﹋鵄瞰
想请问为什麽会变一坨乱码呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.200.47.155
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1543840567.A.600.html
1F:推 jianda1996: str的部分是write要用的buffer 12/04 00:25
了解了 感谢
2F:推 mmmmei: 第二个应该是因为你的缓冲区只有3 只要取到百位以上 没地 12/04 01:04
3F:→ mmmmei: 方放\n 就会越界了? 12/04 01:04
测试後还真的是超过100就不行了 我再去试看看 感谢
4F:→ poyenc: 虽然不知道你是怎麽编译过的, 不过这边用 stdio.h 里的函 12/04 02:49
5F:→ poyenc: 式会简单得多, 格式化输出用 fprintf() 非格式化输出用 12/04 02:50
6F:→ poyenc: fwrite(), 这边完全不需要转换成字串, 学会前面提到的两个 12/04 02:52
好的 我会再去摸索看看 因为有些课本还没提到
7F:→ poyenc: 函式即可 12/04 02:52
9F:→ poyenc: file I/O, 不太可能用到 <fcntl.h> 12/04 04:17
※ 编辑: Ryan45758 (1.200.47.155), 12/04/2018 04:47:08
※ 编辑: Ryan45758 (1.200.47.155), 12/04/2018 04:48:36
※ 编辑: Ryan45758 (1.200.47.155), 12/04/2018 04:59:42
11F:推 mmmmei: 建议strcpy改成strncpy 多的一个参数放sizeof(str)-1 留 12/04 05:11
12F:→ mmmmei: 最後一个位子放\n 12/04 05:11
13F:→ loveme00835: 你再好好思考一下”写二进位档”是什麽意思, 不会就 12/04 05:21
14F:→ loveme00835: 问老师或助教 12/04 05:21