免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4173 | 回复: 22
打印 上一主题 下一主题

如何用C去读不定个数的数字?谢谢!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-11 22:40 |只看该作者 |倒序浏览
有几行数字(存在文件中,纯文本文件),每行的个数不定,中间以空格作间隔(空格个数不定),请问如何用C读出每行的数字,并将其赋值到一个数组中?

谢谢!!

B.T.W.初学,请多多关照……

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-01-11 22:46 |只看该作者

如何用C去读不定个数的数字?谢谢!!

什么叫每行的数字?
是字符个数?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-01-11 22:53 |只看该作者

如何用C去读不定个数的数字?谢谢!!

不明白楼主每行的意思。

论坛徽章:
0
4 [报告]
发表于 2004-01-12 09:58 |只看该作者

如何用C去读不定个数的数字?谢谢!!

你的意思是不是文件有多行?
每行都有很多十进制的数字?
想把他们读出来,并存到一个int类型的数组里?
是这个意思吗?(问题阐述的不清楚,小心遭来杀身之祸,呵呵)

论坛徽章:
0
5 [报告]
发表于 2004-01-12 10:27 |只看该作者

如何用C去读不定个数的数字?谢谢!!

fgets之后用sscanf。

论坛徽章:
0
6 [报告]
发表于 2004-01-12 10:53 |只看该作者

如何用C去读不定个数的数字?谢谢!!

[quote]原帖由 "fieryfox"]fgets之后用sscanf。[/quote 发表:

如果知道每行有多少个空格才能用sscanf吧?
我的办法是循环取每一个字符,付给一个字符串,遇到空格字符是,该字符串结束,然后atoi转换

论坛徽章:
0
7 [报告]
发表于 2004-01-12 11:20 |只看该作者

如何用C去读不定个数的数字?谢谢!!

sscanf返回值是成功读取的数目。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2004-01-12 13:09 |只看该作者

如何用C去读不定个数的数字?谢谢!!

fieryfox 说得对。不论中间有多少空格。sscanf都可以正确处理

论坛徽章:
0
9 [报告]
发表于 2004-01-12 13:13 |只看该作者

如何用C去读不定个数的数字?谢谢!!

我写了一个只用fgetc()的实现。[Code]
#include <stdio.h>;

#define MAXLEN 10

static int ch;
static FILE * input_file;

/*初始化,成功返回1,失败返回0*/
int get_num_init(const char * file_name)
{
        input_file=fopen(file_name, "r");
        if(input_file==NULL)
                return 0;
        ch=fgetc(input_file);
        if(ch==EOF)
                return 0;
        else
                return 1;
}

/*从输入文件中取得一个数字,成功返回1,失败返回0,注意,失败有可能是读到非法字符,也可能是到达文件尾*/
int get_num(int * num)
{
        while((ch==' ')||(ch=='\t')||(ch=='\n'))
                ch=fgetc(input_file);
       
        if((ch<'0')||(ch>;'9'))
                return 0;
       
        *num=ch-'0';
       
        do
        {
                ch=fgetc(input_file);
                if((ch>;='0')&&(ch<='9'))
                        *num=*num*10+ch-'0';
        }while((ch>;='0')&&(ch<='9'));
       
        return 1;
}

int main(int argc, char ** argv)
{
        int values[MAXLEN];
        int values_len;
        int i;
       
       
        if(argc!=2)
        {
                printf("运行方式:%s 文件名\n",argv[0]);
                return 0;
        }
       
        if(!get_num_init(argv[1]))
        {
                printf("初始化失败\n");
                return 0;
        }
       
        for(values_len=0; (values_len<MAXLEN)&&get_num(values+values_len); values_len++);
       
       
        for(i=0; i<values_len; i++)
                printf("%d\n",values[i]);
}
[/Code]

论坛徽章:
0
10 [报告]
发表于 2004-01-12 13:19 |只看该作者

如何用C去读不定个数的数字?谢谢!!

[quote]原帖由 "BingbingNorth"][/quote 发表:


粘代码的时候, 不是  [Code], 而是  [code]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP