| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 452 人关注过本帖
标题:关于c的printf错位问题。。。
取消只看楼主 加入收藏
cwlmyjm
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-11-2
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:5 
关于c的printf错位问题。。。
coursework2的作业要求写一个程序从一个stops.txt里面读取自行车站点的信息,在命令行输入起点和终点的经度纬度,计算出离起点最近的stops和终点的stops,最后再print出来。
正确的print应该像是这个样子的:
程序代码:
F:\Introduction to Programming\bikehelper>bikehelper 121.593567 29.86417 121.589
78 29.88098

Starting from 121.593567 29.864170

Walk North-West to haoyangguangshangwu at 121.593560 29.864180

Cycle North to tiyuguanbei at 121.589600 29.879370

Walk North to your destination at 121.589780 29.880980.


F:\Introduction to Programming\bikehelper>

我这一部分的代码是酱紫的:
程序代码:
...
    printf("Starting from %lf %lf\nWalk ",location[1],location[2]);
    direction(location[1],location[2],stops_info[stop_s].stop_longitude,stops_info[stop_s].stop_latitude);
    printf(" to %s at %lf %lf\nCycle ",stops_info[stop_s].stop_name,stops_info[stop_s].stop_longitude,stops_info[stop_s].stop_latitude);
    direction(stops_info[stop_s].stop_longitude,stops_info[stop_s].stop_latitude,stops_info[stop_d].stop_longitude,stops_info[stop_d].stop_latitude);
    printf(" to %s at %lf %lf\nWalk ",stops_info[stop_d].stop_name,stops_info[stop_d].stop_longitude,stops_info[stop_d].stop_latitude);
    direction(stops_info[stop_d].stop_longitude,stops_info[stop_d].stop_latitude,location[3],location[4]);
    printf(" to your destination at %lf %lf.\n",location[3],location[4]);
    exit(0);
}
我在我自己的WinXP下的dev下测试是完全正常的,但是在Ubuntu下测试就会问题。
于是到学校的centos下测试,学校的centos属于虚拟主机那种,在user目录下printf是完全正常,但是如果是在user/test文件夹下测试就又会出现问题。
问题就如图片中显示的一样。。。。但是如果将编译结果拷贝出来运行,又不会出现这样子的错位问题。。。
<img src="http://bucket. />
一开始考虑是不是没有加'\0'的原因,但是加上之后问题依旧存在。
源码:[local]2[/local]

搜索更多相关主题的帖子: 自行车 起点 信息 
2014-12-09 13:40
cwlmyjm
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-11-2
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

附上图片...
2014-12-09 13:43
cwlmyjm
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-11-2
收藏
得分:0 

附上源码...
bikehelper.rar (10.91 KB)
2014-12-09 13:45
cwlmyjm
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-11-2
收藏
得分:0 
回复 4楼 rjsp
正确的第二行应该是Walk North-West to haoyangguangshangwu at 121.593560 29.864180
但是从图片里面看出来,程序先是print了Walk North-West to haoyangguangshangwu然后又从这行的开始print接下来的 at 121.593560 29.864180。因为后半段的长度比前半部分短,所以在 at 121.593560 29.864180后还有地名的文字。。。就是不能理解为什么后半部分的print不是接着print而是重新到该行的开始print。。。。
2014-12-09 14:22
cwlmyjm
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-11-2
收藏
得分:0 
回复 6楼 rjsp
好像是的,我在用fgetc读取的时候最后一位没有加上'\0',导致这个字符串没有结尾符号。加上之后就正常了。
2014-12-10 22:54
cwlmyjm
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2014-11-2
收藏
得分:0 
回复 7楼 yahwei
在那个string结尾加上'\0',printf就正常了。
2014-12-10 22:55
快速回复:关于c的printf错位问题。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017794 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved