“%d ”与“%d空格”的区别?

chananiepan 2011-03-19 07:41:25
#include <stdio.h>

double Ladder(int i_first,int i_second) //积分程序
{
double width=0.01;
double integral=0;
integral=(i_first+i_second)*width/2.0; //梯形面积
return integral;
}
void main()
{

FILE *fx=fopen("x1.txt","r"); //打开文本x1
unsigned int i_first,i_second;
double final=0;
fscanf(fx,"%d ",&i_first);
while(!feof(fx)) //是否读取完毕
{
fscanf(fx,"%d ",&i_second); //读取赋值
final+=Ladder(i_first,i_second); //积分累加
i_first=i_second;
}
fclose(fx); //关闭文本x
printf("积分为:%lf\n",final );
}
x1中为0-100的连续数(0,1,2,...,100)
为什么在fscanf中,当使用"%d"时,输出结果51.使用"%d ",时,输出50.后者正确
...全文
828 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanqi0323 2011-06-20
  • 打赏
  • 举报
回复
如果全部是tab分割的话,在你的代码上改一句就行了
fscanf(fx,"%d\t",&i_second);
luciferisnotsatan 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 hnuqinhuan 的回复:]

fprintf是格式化读取严格按照格式来 就是读取一个整数后还要读取一个空格
[/Quote]
+1
無_1024 2011-03-23
  • 打赏
  • 举报
回复
fprintf是格式化读取严格按照格式来 就是读取一个整数后还要读取一个空格
jvs 2011-03-23
  • 打赏
  • 举报
回复
写个简单的C程序运行一下就知道了,这样印像会更深刻
ffjj56 2011-03-20
  • 打赏
  • 举报
回复
不懂,学习下
chananiepan 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 delphiwcdj 的回复:]
引用 2 楼 chananiepan 的回复:

不好意思忘说了,X1文档中的连续数用TAB分隔

如果全部是tab分割的话,在你的代码上改一句就行了
fscanf(fx,"%d\t",&i_second);
[/Quote]
非非非非非常感谢您的回答,我开始也尝试加上那个\t,计算结果没有问题,我本来的疑问是:那个错误的51是如何计算得到的。对不起,开贴时的表述不够清楚。麻烦您再看看
采石工 2011-03-20
  • 打赏
  • 举报
回复
文件缓冲的问题吧
xali 2011-03-20
  • 打赏
  • 举报
回复
当应该结束时,由于100后面还有空格、\t、回车等符号,文件没有结束,最后一次
fscanf(fx,"%d ",&i_second); 没有改变i_second的值(100),此时i_first=i_second=100;
多加了一次final+=Ladder(100,100);
llhqwertyuiop 2011-03-20
  • 打赏
  • 举报
回复
不是很懂,不过以前有做过这类的题目,当时也没有认真研究
delphiwcdj 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chananiepan 的回复:]

不好意思忘说了,X1文档中的连续数用TAB分隔
[/Quote]
如果全部是tab分割的话,在你的代码上改一句就行了
fscanf(fx,"%d\t",&i_second);
delphiwcdj 2011-03-19
  • 打赏
  • 举报
回复
上面 in =》 fx
delphiwcdj 2011-03-19
  • 打赏
  • 举报
回复
改为:试试

while(!feof(fx)) //是否读取完毕
{
fscanf(fx,"%d",&i_second); // 不带空格
final+=Ladder(i_first,i_second); //积分累加
i_first=i_second;
if( fgetc(in) == EOF )// 加这句
break;
}
delphiwcdj 2011-03-19
  • 打赏
  • 举报
回复
文件中的数据格式为:1,2,3 …… 吧
chananiepan 2011-03-19
  • 打赏
  • 举报
回复
不好意思忘说了,X1文档中的连续数用TAB分隔
delphiwcdj 2011-03-19
  • 打赏
  • 举报
回复
"%d "有空格的会把后面的数据忽略掉

33,323

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧