vc6中的文件操作是否不支持二进制文件操作,该如何解决

vc6中的文件操作是否不支持二进制文件操作
我是在VC6中进行文件操作,感觉好像vc6中不支持二进制文件的操作,代码如下:
void   main()
{
FILE*   fp;
FILE*   fp1   =   fopen( "fp1.txt ",   "wb+ ");

fp   =   fopen( "fp.txt ",   "wb+ ");
int   ii   =   100;
fprintf(fp,   "%d ",   ii);
char   ch   =   'a ';
fprintf(fp,   "%c ",   ch);
int   i;
char   c   =   'x ';
fseek(fp,sizeof(int),0);
fscanf(fp,   "%c ",   &c);
printf( "%c\n ",   c);
fprintf(fp1,   "%c ",   c);

fclose(fp);
fclose(fp1);
}
我觉得程序应该在标准输出中显示字符a,也就是从fp文件中取得的,但是显示的是x,也就是说fscanf(fp,   "%c ",   &c);没有成功(我测试过了,就是这一步出了问题),如果将指针定位操作fseek(fp,sizeof(int),0);改为fseek(fp,3L,0);则一切正常,能得到正确的结果。但是语句fseek(fp,3L,0);好像是根据ASIC文件(文本文件)得到的,不知道这是为什么,请高手指点。

------解决方案--------------------
支持

result = fseek(fp,sizeof(int),0);
if( result )
perror( "Fseek failed " );
else
{
// 处理
}

------解决方案--------------------
主要是因为:文本文件和二进制文件存储方式不同.
ASCII文件(文本文件):每一个字节放一个ASCII代码
二进制文件:把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
那么按照你两次使用fprinf写入了4个字节的数据(你所使用得是txt文本文件),分别为1,0,0,a四个字节.
当你再使用fseek(fp,sizeof(int),0);设置当前文件指针到第五个字节数据,已经超出了你写得4个字节.第5个字节是结束符.再调用fscanf()返回-1表示出错.所以c变量得值不改变.所以一直输出x.

------解决方案--------------------
二进制要用fread和fwrite来写,不要用fprintf。
------解决方案--------------------
print是打印的意思 打印出可读的字符
fopen "b " 和 没有 "b " 区别在于 二进制回车换行2个字节 "\r\n " 文本文件1个字节 "\n "
int n=1234567890;
fprintf( "%d ",n);输出到文件是1234567890占10字节 写的是个字符串
fwrite(&n,sizeof(int),1,pFile);占4字节 写的是二进制流
------解决方案--------------------
fprintf(fp, "%d ", ii);//文件中写入 0x31 0x30 0x30 ( '1 ' '0 ' '0 ')三个字符
char ch = 'a ';
fprintf(fp, "%c ", ch);//写入 'a '
文件中内容: '1 ' '0 ' '0 ' 'a '
自己用记事本打开这个文件看看吧,用UltraEdit以十六进制方式查看也可以