标题:关于文件输入输出的一些问题
只看楼主
超电磁场
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469408-1-1.html




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

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