#include <stdio.h> main() { FILE *fp; int i,k=0,n=0; fp=fopen("d1.dat","w"); for(i=1;i<4;i++) fprintf(fp,"%d",i); fclose(fp); fp=fopen("d1.dat","r"); fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n); fclose(fp); }
执行完输出结果是_____123 0. 我的理解:先以可写的形式打开d1.dat文件,然后在文件的开头连续输入1 2 3三
个字符,关闭文件;再以只读的形式重新打开d1.dat,由于123在文本文件中占3
个字节,分别以1、2、3三个字符的形式存储,从指针当前位置读入第一个字符串
123赋给k,123后为空,故把0赋给n,输出k,n,关闭文件.
----------------解决方案--------------------------------------------------------
不是读字符串,而是直接的判断是不是整形,然后输出!!!
那如果是123456789101112,那怎么输出那,我实验了一下,第一次输出只读到十为就结束了。
为什么????
----------------解决方案--------------------------------------------------------
1、2、3在文本文件中不是以字符形式存储的吗?
用fscanf读取时,为什么不读取1、不读取12,而读取123呢?
我觉得把123看成字符串是唯一解释得通的~~
----------------解决方案--------------------------------------------------------
那你的意思就是说不可以读取大与就的数了???
他回自己判断从开始的那个字符起,后面的时候是整数形式,然后在进行符值的!!!
我现在不理解的是是不是"%d"最多读10个字符!!!那符值又是怎么进行的???
[此贴子已经被作者于2004-09-03 11:59:38编辑过]
----------------解决方案--------------------------------------------------------
for(i=1;i<4;i++) fprintf(fp,"%d",i); ===>
for(i=1;i<4;i++) fprintf(fp,"%d\n",i);
再对比一下二次结果,你就明白了。
----------------解决方案--------------------------------------------------------
没有回答我的问题!!!
----------------解决方案--------------------------------------------------------
求助ggjj 如果是想用读出的字符用于计算的话 “123” 该怎么用字符转化成数字123呢??
----------------解决方案--------------------------------------------------------