| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:关于读取文件字符的问题
只看楼主 加入收藏
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:9 
关于读取文件字符的问题
Write a program which asks user to enter a filename and then reads
numbers from that file until end of file is reached.
When the end of file is reached program prints the sum of numbers
and the amount of numbers that was read from the file.

codeblocks调试没问题,一运行程序就直接死掉。。
请问哪里错了。。


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MY_FILENAME "numbers.txt"
#define LINESIZE 80
int main()
{
    FILE *fp;
    char *filename="numbers.txt",*fileinput,*fileptr;
    int count=0;
    int value=0;
    double sum=0;
    char line[LINESIZE];
    printf("Please enter a filename!\n");
    scanf("%s",fileinput);
    fileptr=strstr(filename,fileinput);
    if (fileptr)
    {
        fp=fopen("numbers.txt","r");
        if (fp==NULL)
        {
            printf("Unable to open %s\n", MY_FILENAME);
        }
        else
            printf("numbers from %s...\n",MY_FILENAME);
        while (!feof(fp))
        {
            if (fgets(line,LINESIZE,fp)!=NULL)
            {
                if (sscanf(line,"%d",&value)==1)
                {
                    sum+=value;
                    count++;
                    printf("Read %d\n",value);
                }
                else
                {
                    printf("Invalid line\n");
                }
            }
        }
        fclose(fp);
        printf("the sum of %d numbers from %s is %f\n",count,MY_FILENAME,sum);
    }
    else
        printf("the file doesn't exist");
    return 0;
}
搜索更多相关主题的帖子: 字符 文件 
2010-05-10 16:59
yc2575757
Rank: 7Rank: 7Rank: 7
来 自:北京
等 级:黑侠
威 望:1
帖 子:113
专家分:522
注 册:2010-5-7
收藏
得分:0 
fileinput请开辟内存。。。。 scanf("%s",fileinput);
2010-05-10 17:08
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
好像是scanf不能给指针赋值? 那看输入的字符串和 已经储存的字符串是否匹配应该怎么写啊,strstr好像只能用指针哦。

But here I am
2010-05-10 17:18
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 2楼 yc2575757
能不能举个例子啊,谢谢

But here I am
2010-05-10 17:19
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
请楼主直接把要实现的具体细节给出来吧。

南国利剑
2010-05-10 17:20
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 5楼 南国利剑
题目就是要输入个文件名,打开文件,将所有数字相加求和并显示出一共有多少个数字

我的问题是文件名的匹配怎么写
如果是strstr的话只能用指针
而scanf又不能直接对指针赋值
应该怎么做,谢谢

But here I am
2010-05-10 17:36
yc2575757
Rank: 7Rank: 7Rank: 7
来 自:北京
等 级:黑侠
威 望:1
帖 子:113
专家分:522
注 册:2010-5-7
收藏
得分:10 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MY_FILENAME "numbers.txt"
#define LINESIZE 80
int main()
{
    FILE *fp;
    char *filename="numbers.txt",*fileinput,*fileptr;
    int count=0;
    int value=0;
    double sum=0;
    char line[LINESIZE];
    fileinput = (char *)malloc(80*sizeof(char));//这里你可以根据你的需要改变大小,我暂定80,呵呵~~
    printf("Please enter a filename!\n");
    scanf("%s",fileinput);
    fileptr=strstr(filename,fileinput);
    if (fileptr)
    {
        fp=fopen("numbers.txt","r");
        if (fp==NULL)
        {
            printf("Unable to open %s\n", MY_FILENAME);
        }
        else
            printf("numbers from %s...\n",MY_FILENAME);
        while (!feof(fp))
        {
            if (fgets(line,LINESIZE,fp)!=NULL)
            {
                if (sscanf(line,"%d",&value)==1)
                {
                    sum+=value;
                    count++;
                    printf("Read %d\n",value);
                }
                else
                {
                    printf("Invalid line\n");
                }
            }
        }
        fclose(fp);
        printf("the sum of %d numbers from %s is %f\n",count,MY_FILENAME,sum);
    }
    else
        printf("the file doesn't exist");
    free(fileinput);
    return 0;
}
我试了下,应该没问题,不好意思,前面在看电影,让lz久等了,sorry~~
2010-05-10 21:04
liuzhiping
Rank: 2
等 级:论坛游民
帖 子:19
专家分:31
注 册:2009-7-8
收藏
得分:0 
Write a program which asks user to enter a filename and then reads
numbers from that file until end of file is reached.
When the end of file is reached program prints the sum of numbers
and the amount of numbers that was read from the file.
楼主难道在看英文书 ?  我看了你几个帖子类  都是英文的。。。。。
2010-05-11 14:38
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 8楼 liuzhiping
老师给的题目是英文的。。

But here I am
2010-05-13 07:43
liuzhiping
Rank: 2
等 级:论坛游民
帖 子:19
专家分:31
注 册:2009-7-8
收藏
得分:0 
回复 9楼 Timber
你们老师真牛B 。。。。。。
2010-05-13 13:45
快速回复:关于读取文件字符的问题
数据加载中...
 
   



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

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