| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 580 人关注过本帖
标题:紧急求助写文件操作的问题
只看楼主 加入收藏
nidemingzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-18
收藏
 问题点数:0 回复次数:6 
紧急求助写文件操作的问题
小弟用vc6.0编了个小程序
#include<stdio.h>
main()
{
int i;
unsigned char out[10];
FILE *fp;
for(i=0;i<10;i++)
{
out[i]=5+i;
}
fp=fopen("test.263","a+");
for(i=0;i<10;i++){
putc(out[i],fp);
}
fclose(fp);
}
运行完以后打开test.263文件发现里面的数据是
5 6 7 8 9 13 10 11 12 13 14
我明明只写了10个阿 怎么出来了11个
而后我将out[10]中的数全改成10
结果是13 10 13 10 13 10 .......
各位大虾我的程序错哪了,HELP ......
搜索更多相关主题的帖子: 文件 
2006-01-18 11:12
cbase
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-1-18
收藏
得分:0 
我也是新来的.
我觉得是不是unsigned char out[10]这里出错??
因为你定义的是字符,当你输入的时候,它会把空格,回车接收进去,所以出错?

[此贴子已经被作者于2006-1-18 11:28:28编辑过]

2006-01-18 11:27
nidemingzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-18
收藏
得分:0 
我把unsigned char out[10]改成int out[10],然后全赋值为10
结果是13 10 13 10 13 10......
哭死
2006-01-18 12:12
nidemingzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-18
收藏
得分:0 
难道我就不能把10写进文件里了?
2006-01-18 12:12
nidemingzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-1-18
收藏
得分:0 
对了,这是我看那个test.263程序
#include <stdio.h>
main()
{
FILE *fp1;
int i,status,j;
unsigned char raw[100000];
i=0;
fp1=fopen("E:\\CPROGRAM\\打开文件\\fwrite\\test.263","rb");
while(!feof(fp1))
{
fread(&raw[i], sizeof(char), 1, fp1);
i++;
}
fprintf(stderr,"%d\n",i);
for(j=0;j<i;j++){
fprintf(stderr,"%d ",(int)raw[j]);
}
fclose(fp1);
}
真诚请教各位了
2006-01-18 12:19
cbase
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-1-18
收藏
得分:0 
因为out[i]里的数值是int型,而putc输出的字符型,所以转换有问题
要先把out[i]里的数值转成字符
2006-01-18 16:32
陆哥
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-1-16
收藏
得分:0 
关键问题是,你不了解putc的作用,putc会自动在字符后面添加回车,所以当每个数都赋给10的时候给每个字符后面添加了回车,回车的ASIC码是13就是这样的,至于你第一次我想你写错了吧,11个数程序没有出错,但是13应该在整个数组的最后出现才对

为中国的软件产业崛起而奋斗终生!!!
2006-01-18 19:13
快速回复:紧急求助写文件操作的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011971 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved