| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1625 人关注过本帖
标题:关于文件输入输出的一些问题
只看楼主 加入收藏
超电磁场
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-10-3
结帖率:50%
收藏
 问题点数:0 回复次数:6 
关于文件输入输出的一些问题
如题,程序目的是要输入一个10x10的东西,有字符,有数字

输入:
**********
*   1* 3 *
* ****   *
*@*2    **
*2*     #*
* ** *  **
*    *  **
* ****  **
*   3*  1*
**********
其中@是起点,#是出口,数字表示传送门,找最短的脱出路线

我在测试的时候尝试了一下输出调试,结果output是这样的
**********

*   1* 3 *

* ****   *

*@*2    **

*2*     #*
就是无端的多了一行,不知道是什么情况…这对后面的二维坐标影响巨大……求大神帮忙解决

(下面代码与题目算法、思路无关,仅为输入)
#include <stdio.h>
int main()
{
    char a[10][10];

    FILE *fp1;
    FILE *fp2;
    fp1 = fopen("d:\\input.txt", "r");
    fp2 = fopen("d:\\output.txt", "w");
    int i;
    for (i = 0; i < 10; i++) fgets(a[i],11,fp1);
    for (i = 0; i < 10; i++) fputs(a[i],fp2);
    fclose(fp1);
    fclose(fp2);
    return 0;
}
好像排版有点问题,我截了图下来....
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2016-10-3 21:27编辑过]

搜索更多相关主题的帖子: 影响 起点 传送门 
2016-10-03 20:39
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册:2014-5-20
收藏
得分:0 
看看fgets出来的尾部有无\n,再看看fputs进去的尾部有无多了个\n。
2016-10-03 21:13
超电磁场
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-10-3
收藏
得分:0 
回复 2楼 吹水佬
不是很懂什么意思?......
2016-10-03 21:28
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:0 
每行字符数组长度少了,导致fgets不能一次性读进一行代码,会把回车单独放进一行。代码修改如下即可:
#include <stdio.h>
int main()
{
    char a[10][12];

    FILE *fp1;
    FILE *fp2;
    fp1 = fopen("d:\\input.txt", "r");
    fp2 = fopen("d:\\output.txt", "w");
    int i;
    for (i = 0; i < 10; i++) fgets(a[i],12,fp1);
    for (i = 0; i < 10; i++) fputs(a[i],fp2);
    fclose(fp1);
    fclose(fp2);
    return 0;
}
2016-10-03 21:32
超电磁场
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-10-3
收藏
得分:0 
回复 4楼 xzlxzlxzl
不是很理解这样改的理由,
追问一下加深理解:
输入
    **********

储存在a[0]中...
a  0  1  2  3  4  5  6  7  8  9  10  11
   *  *  *  *  *  *  *  *  *  *        

10 位置是\0,11 是换行符,是这样吗?
2016-10-03 21:44
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:0 
如果每行都输入回车的话,
10 位置是换行符,11 是\0

遗憾的是,
文件里还是两个回车
2016-10-03 22:02
超电磁场
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-10-3
收藏
得分:0 
回复 6楼 实际应用
明白,问题解决
2016-10-03 22:10
快速回复:关于文件输入输出的一些问题
数据加载中...
 
   



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

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