| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1158 人关注过本帖
标题:打开文件的问题
取消只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:10 回复次数:8 
打开文件的问题
被这个问题搞晕了,
图片附件: 游客没有浏览图片的权限,请 登录注册
我输入的文件名是真实的绝对路径为什么打不开?
(这个文件上写了几个阿拉伯数字。)
#include <stdio.h>
#include <stdlib.h>

void main ()
{
    int i,len,k;
    FILE *fp;
    char infile[30];
    printf("输入要打开的文件名如c:\\test.txt:\n");
    scanf("%s",infile);
   
    if((fp=fopen(infile,"r"))==NULL)
    {
        printf("不能打开文件!\n");
        exit(0);
    }
    printf("\n读取数据中……\n");
    fscanf(fp,"%d",&len);//读入记录数
    for(i=0;i<len;i++)
    {
       fscanf(fp,"%d",&k);
    }
    fclose(fp);
    printf("*****读取数据成功!****\n");
}
搜索更多相关主题的帖子: include 阿拉伯 
2011-12-25 10:14
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
谢谢两位我去试试。

梅尚程荀
马谭杨奚







                                                       
2011-12-25 14:10
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 5楼 TonyDeng
试了2位的办法 还是不能打开文件。后来我撇开了这个程序,重新写了录入信息程序:输入文件名并在原程序中给出输入信息存放在其中,结果在DEBUG文件后发现了一个刚才输入的文件名的新文件,并能用一个读文件信息的程序读出来,我用的是fread读的,fscanf还不知怎么用。

总结后发现,可以通过C程序创建新文件并在其中录入信息,如果手动创建新文件,并在c程序的录入信息函数中使用这个文件名,会在此文件所在目录产生一个和他名字一样的文件,哈哈,同名文件出现在同一个文件夹中?如果手动创建一个新文件并在其中直接由用户写上信息,再在C程序中用文件指针指向他并试图打开它是不行的。

不知道我总结的这些东西是不是对的?

梅尚程荀
马谭杨奚







                                                       
2011-12-25 17:13
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 8楼 TonyDeng
恩。我现在学习基本的知识,很多东西不清楚,希望您多指教。

梅尚程荀
马谭杨奚







                                                       
2011-12-25 19:46
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 10楼 TonyDeng
看了你的讲解我又去弄了下。
图片附件: 游客没有浏览图片的权限,请 登录注册
9528是我手动建立的新文件,9527是程序生成的,里面的内容是一串字符,后来我打开后又修改了下,和9527里的内容一样。下面是我打开文件的程序。
#include <stdio.h>
#include <stdlib.h>
 
int  main(void)
{
    FILE * fp;
    int i, n;
    char a[10], b[100];

    printf("Please input a filename:");
    scanf("%s", a);  // 输入要读的文件名
    getchar();       // 吸收回车符
    if ((fp = fopen(a, "rt")) == NULL)
    {
        printf("can not open file\n");
        exit(0);
    }
    for (i = 0; b[i] != '#'; i++)
        fscanf(fp,"%c", &b[i]);   // 一个字符一个字符的读文件传给b字符数组,遇到#停止
        n = i - 1;                // 记录读取的个数
    for (i = 0; i <= n; i++)      // 显示出来
        printf("%c", b[i]);
    fclose(fp);
    return  0;
}
不管我用"r"还是"rt"都能打开9527而打不开9528.
输入d:\file\9527出现以下现象,后面一堆乱码。
图片附件: 游客没有浏览图片的权限,请 登录注册

输入d:\file\9528 则
图片附件: 游客没有浏览图片的权限,请 登录注册

还有如果
printf("%c", b[i]); 改成 fprintf(fp,"%c", b[i]); 则输入文件名后没任何反应。

为什么会这样,我读文件的程序错在哪里?

梅尚程荀
马谭杨奚







                                                       
2011-12-25 20:47
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 12楼 TonyDeng
哈哈 你咋这么厉害呐。
图片附件: 游客没有浏览图片的权限,请 登录注册

那为什么都有乱码,我都fclose(fp); 还有就是用fprintf();能显示吗。

梅尚程荀
马谭杨奚







                                                       
2011-12-25 21:00
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
另外,你讀到亂碼,是文件沒有那麽長你卻硬讀固定數目數據造成的,與數組越界是同一囘事。

那 for (i = 0; b[i] != '#'; i++)怎么改呢?

梅尚程荀
马谭杨奚







                                                       
2011-12-25 21:02
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 16楼 TonyDeng
照您说的改了
  for (i = 0; ; i++)
    {
        fscanf(fp,"%c", &b[i]);   // 一个字符一个字符的读文件传给b字符数组,遇到#停止
        if (b[i] == '#')
        {    b[i] = '\0';  break; }

    }
           n = i - 1;        // 记录读取的个数
    for (i = 0; b[i] != '\0' ; i++)      // 显示出来
        printf("%c", b[i]);
 
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 有容就大 于 2011-12-25 21:26 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2011-12-25 21:23
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 18楼 TonyDeng
恩, 受教了。

梅尚程荀
马谭杨奚







                                                       
2011-12-25 21:36
快速回复:打开文件的问题
数据加载中...
 
   



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

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