| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1270 人关注过本帖
标题:关于从文件中读取数据保存到二维字符数组, 问题来了就是文件内容打印出来了 ...
只看楼主 加入收藏
小白编程
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-6-5
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:9 
关于从文件中读取数据保存到二维字符数组, 问题来了就是文件内容打印出来了, 可是后面的未定义的字符怎么消除
关于从文件中读取数据保存到二维字符数组, 问题来了就是文件内容打印出来了, 可是后面的未定义的字符怎么消除啊很多乱7 8 糟的, 怎么样即保存了文件的内容到二维字符数组, 又能不打印其后面的未定义的乱码呢??
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
int main(void)
{
    int i, j;
    FILE *fp;
    if((fp = fopen("aa.txt", "r")) == NULL)
    {
        printf("空指针\n");
        exit(1);
    }
    char a[MAX][MAX];
    for(i = 0; i < MAX; i++)
        for(j = 0; j < MAX; j++)
        {
            fscanf(fp, "%c",  &a[i][j]);
            printf(" %c", a[i][j]);
        }
   
    fclose(fp);
    return 0;
}
搜索更多相关主题的帖子: include 
2015-06-07 08:56
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
意思是不是要给数组初始化?

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 10:56
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
将i<max改成i<20,乱码就不见了

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 11:06
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
for(i = 0; i <1; i++)
        for(j = 0; j < MAX; j++)

这样子就完全合适了

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 11:08
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
你的这个代码好像是做完100x100次运算才关闭文件,事实上,好像没有必要做那么多运算,100次够了?用一维数组好像也可以吧?

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 11:11
你欠我人情
Rank: 2
等 级:论坛游民
威 望:1
帖 子:46
专家分:52
注 册:2015-6-5
收藏
得分:0 
我已经完全晓得你的问题出在哪里了,乱码是因为数组没有初始化。下面空出来那么多空处是因为数组太长了。

我是小白我是小白我是小白我是小白我是小白我是小白
2015-06-07 12:33
小白编程
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-6-5
收藏
得分:0 
回复 6楼 你欠我人情
对啊 ,因为从文件里读取的内容不知道她多大啊
2015-06-07 16:24
ityue114
Rank: 2
等 级:论坛游民
帖 子:10
专家分:27
注 册:2014-12-26
收藏
得分:0 
你可以先用一个while语句的循环计算出里面的二维数组有多少个啊    然后再把他们全部输出!
2015-06-08 15:13
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:10 
程序代码:
int main(void)
{
    int i, j;
    FILE *fp;
    if ((fp = fopen("aa.txt", "r")) == NULL)
    {
        printf("空指针\n");
        exit(1);
    }
    char a[MAX][MAX];
    for (i = 0; i < MAX; i++)
    {
        for (j = 0; j < MAX; j++)
        {
            a[i][j] = getc(fp);
            if (a[i][j] == EOF)
                break;
            printf(" %c", a[i][j]);
        }
        if (a[i][j-1] == EOF)
            break;
    }
    
    fclose(fp);
    return 0;
}

人有多懒,编程就有多难。
2015-06-08 15:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
楼上
a[i][j] = getc(fp);
if (a[i][j] == EOF)
这是错误的,getc返回类型为int,才具有和EOF比较的意义。不能因为绝大部分情况下没问题就认为它正确。
2015-06-09 09:05
快速回复:关于从文件中读取数据保存到二维字符数组, 问题来了就是文件内容打印 ...
数据加载中...
 
   



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

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