c语言在读写二进制文件中遇到的有关问题,求大神解释

c语言在读写二进制文件中遇到的问题,求大神解释
#include <stdio.h>
#include <stdlib.h>
#define _STDC_WANT_LIB_EXT1_

int main ()
{
long num1=234567L;
long num2=345123L;
long num3=789234L;
long num4=0L;
long num5=0L;
long num6=0L;
float fnum=0.0f;
int ival[6]={0};
FILE *pfile=NULL;
char *filename ="myfile.txt";

if(fopen_s(&pfile,filename,"w"))
{
printf("Failed to open the file.\n");
exit (1);
}
setvbuf(pfile,NULL,_IOFBF,BUFSIZ);
fprintf(pfile,"%6ld%6ld%6ld",num1,num2,num3);
fclose(pfile);
if(fopen_s(&pfile,filename,"r"))
{
printf("Failed to open the file");
}
rewind(pfile);
    fscanf(pfile,"%6l%6l%6l",&num4,&num5,&num6);
printf("%6l%6l%6l",num4,num5,num6);

fclose (pfile);
putchar (10);
system ("pause");
return 0;
}


本人使用的编译器是visual studio2010,运行结果如下:
c语言在读写二进制文件中遇到的有关问题,求大神解释
但是这不是理想的结果,求大神解释。我是个刚刚学习c语言的菜鸟。。


------解决方案--------------------
%6l  --->  %6ld
------解决方案--------------------
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。


作为一个C程序员,对
 scanf,sscanf,fscanf
 printf,sprintf,fprintf
这类函数的用法,还是要做到“拳不离手,曲不离口”的。

------解决方案--------------------
引用:
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。


作为一个C程序员,对
 scanf,sscanf,fscanf
 printf,sprintf,fprintf
这类函数的用法,还是要做到“拳不离手,曲不离口”的。

++
你应该学会设置断点、单步运行调试