当前位置: 代码迷 >> C语言 >> 紧急求助写文件操作的问题
  详细解决方案

紧急求助写文件操作的问题

热度:111   发布时间:2006-01-18 11:12:00.0
紧急求助写文件操作的问题
小弟用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 ......
搜索更多相关的解决方案: 文件  

----------------解决方案--------------------------------------------------------
我也是新来的.
我觉得是不是unsigned char out[10]这里出错??
因为你定义的是字符,当你输入的时候,它会把空格,回车接收进去,所以出错?

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


----------------解决方案--------------------------------------------------------
我把unsigned char out[10]改成int out[10],然后全赋值为10
结果是13 10 13 10 13 10......
哭死
----------------解决方案--------------------------------------------------------
难道我就不能把10写进文件里了?
----------------解决方案--------------------------------------------------------
对了,这是我看那个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);
}
真诚请教各位了

----------------解决方案--------------------------------------------------------
因为out[i]里的数值是int型,而putc输出的字符型,所以转换有问题
要先把out[i]里的数值转成字符
----------------解决方案--------------------------------------------------------
关键问题是,你不了解putc的作用,putc会自动在字符后面添加回车,所以当每个数都赋给10的时候给每个字符后面添加了回车,回车的ASIC码是13就是这样的,至于你第一次我想你写错了吧,11个数程序没有出错,但是13应该在整个数组的最后出现才对
----------------解决方案--------------------------------------------------------
  相关解决方案