| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:摸索中的路还真不好走啊,一个关于文件打开的问题,请高手指点不甚感激!! ...
只看楼主 加入收藏
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
结帖率:92.31%
收藏
已结贴  问题点数:6 回复次数:8 
摸索中的路还真不好走啊,一个关于文件打开的问题,请高手指点不甚感激!!!!!
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#define LEN 100
int main(void)
{

 FILE *fptr;

 char fpath[LEN];

 int fno,fsize;

 char ch;

 printf("请输入完整的文件路径:\n");

 getc(fpath);

 fptr=fopen(fpath,"r");

 if(fptr==NULL)

 {
    printf("文件不存在,%s 文件打开失败\n",fpath);
    exit(0);

 }

 fno=fileno(fptr);

 fsize=filelength(fno);

 printf("%s文件打开成功,问件大小是%d  Byte\n",fpath,fsize);

 while(ch=getc(fptr)!=EOF)

 {
    printf("%c",ch);

 }
printf("\n\n");
fclose(fptr);
return 0;
}
我本想编辑一个程序打开指定的txt文件,并且输出文件的内容,不想编辑好了之后,逻辑上还看得过去,不过
真被它打败了,
我就是不知道哪里出错啦!!!!!!
快要崩溃啦,请高手给个指点啊!!!!
江湖救急!!!
2011-04-22 13:28
sdupoplar
Rank: 2
等 级:论坛游民
帖 子:18
专家分:40
注 册:2011-3-24
收藏
得分:2 
给你改了下:
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#define LEN 100
int main(void)
{
FILE *fptr;
char fpath[LEN];
int fno,fsize;
int ch;
printf("请输入完整的文件路径:\n");
gets(fpath);
fptr=fopen(fpath,"r");
if(fptr==NULL)
{
    printf("文件不存在,%s 文件打开失败\n",fpath);
    exit(0);
}
fno=fileno(fptr);
fsize=filelength(fno);
printf("%s文件打开成功,问件大小是%d  Byte\n",fpath,fsize);
while((ch=getc(fptr))!=EOF)
{
    printf("%c",ch);
}
printf("\n\n");
fclose(fptr);
    return 0;
}
2011-04-22 16:44
sdupoplar
Rank: 2
等 级:论坛游民
帖 子:18
专家分:40
注 册:2011-3-24
收藏
得分:0 
char ch; 改为 int ch;
因为:getc函数返回int型。
getc(fpath);改为gets(fpath);
因为:需要接收一个字符串,而不是一个字符。
while(ch=getc(fptr)!=EOF)改为while((ch=getc(fptr))!=EOF)
因为:=的优先级低于!= 。

对新手来说,代码写的还是不错的,继续努力。


2011-04-22 16:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:2 
恩 说的不错 不过我觉得一个fscanf就足够把文件信息读取出来了

                                         
===========深入<----------------->浅出============
2011-04-22 17:59
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:2 
回复 4楼 laoyang103
为啥我用fscanf的返回值不是读入的个数呢?
代码如下:
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#define LEN 100
int main(void)
{
    FILE *fptr;
    char fpath[LEN];
    char ch[LEN];
    printf("请输入完整的文件路径:\n");
    gets(fpath);
    fptr=fopen(fpath,"r");
    if(fptr==NULL)
    {
        printf("文件不存在,%s 文件打开失败\n",fpath);
        exit(0);
    }   
    printf("%s文件打开成功,问件大小是%d  Byte\n",fpath,fscanf(fptr, "%s", ch));
    printf("文件内容:%s\n",ch);
    fclose(fptr);
    return 0;
}
fscanf的返回值都是1
为什么?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-04-22 20:36
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:2 
当然是 1, 因为你只向 ch 一个变量里读取
2011-04-22 20:47
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
呵呵给为可不可以请问下
怎样输入文件路径才能将文件正确的找到,并且输出我所要的结果呢???
还请指点一二。
不甚感激啊!!!!!!!!
坐等真相啊!!!!!
如果可以的话
给一个程序的输出截图
2011-04-23 08:23
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
假设你要读取的文件是: c:\path\to\your\file\filename
文件名字符串有两种写法: c:\\path\\to\\your\\file\\filename.txt 或 c:/path/to/your/file/filename
2011-04-23 09:35
因为曾今年少
Rank: 2
等 级:论坛游民
帖 子:131
专家分:62
注 册:2011-4-13
收藏
得分:0 
哦原来是这样啊
恩我试试
谢谢啦
各位的支持和鼓励是我不断进步的动力啊
2011-04-23 15:01
快速回复:摸索中的路还真不好走啊,一个关于文件打开的问题,请高手指点不甚感激 ...
数据加载中...
 
   



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

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