免费注册 查看新帖 |

Chinaunix

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

关于文件操作的问题,请大虾帮忙!!急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-29 13:40 |只看该作者 |倒序浏览
下面是一部分代码,请各位大虾帮我看一下错在什么地方,谢谢!
程序的结构差不多设计好了,但是语言上有问题!我不太熟悉c语言,请大家帮忙改错!!

void main()
{
    char filename[128];
        
    printf("please input filename:";
    scanf("%s",filename);

    FILE *infile;

    infile = openSaveFile( filename );
    saveHead( infile );
}

//打开文件
FILE* openSaveFile( char* filePath )
{
    char* filepath;
    FILE *infile;
    infile = fopen( filepath,"r+" );
    if( infile == NULL ){
        printf( "the file can not open";
        return NULL;
        }
    return infile;
}

/* 以下代码是为了向上面所打开的文件中写入一个文件头,该文件头只写一次,所以在写之前要判断文件中是否已经写入数据,如果是空文件,则写入文件头,如果不是就不用写。*/

int saveHead( FILE* pfile )
{
    char ch;
   
    openSaveFile( pfile );
   
    //读取文件中的内容
    ch = fgetc( pfile )

    //若文件为空,则写入文件头   
    if( ch == EOF ){
        fputs("shuru yige wenjian ";
    }
    else{
    }

    fclose( pfile );
}

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

关于文件操作的问题,请大虾帮忙!!急!

错误提示?

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

关于文件操作的问题,请大虾帮忙!!急!

openSaveFile( pfile );
???

论坛徽章:
0
4 [报告]
发表于 2004-11-29 19:00 |只看该作者

关于文件操作的问题,请大虾帮忙!!急!

把错误贴出来大家看看

论坛徽章:
0
5 [报告]
发表于 2004-11-29 19:28 |只看该作者

关于文件操作的问题,请大虾帮忙!!急!

我认为应将FILE* openSaveFile( char* filePath ) 改为:FILE** openSaveFile( char* filePath ) ,函数内部做相应改动。

论坛徽章:
0
6 [报告]
发表于 2004-11-29 21:12 |只看该作者

关于文件操作的问题,请大虾帮忙!!急!

我把程序改了一下,但是在运行时有错误,在读文件时有错误



#include "stdafx.h"
#include "stdlib.h"
#include "fcntl.h"
#include "io.h"
#include "string.h"
#include "stdio.h"



/////////////////////////////////////////////////////////////////////////////
// 函 数 名 : openSaveFile
//   
// 概要 : 打开保存的文件,如果文件不存在则创建一个新文件
// 参数 : filepath        保存的文件路径
// 返回値 : infile  保存文件成功
//                                NULL 保存失败
/////////////////////////////////////////////////////////////////////////////
FILE* openSaveFile( char* filePath )
{
/*        char sdrive[32];
        char sdir[32];
        char sfile[64];
        char sext[64];
        int cmp;
*/
        FILE *infile;



/*用来判断输入的文件名是否是.csv
        fnsplit( filePath,sdirve,sdir,sfile,sext );
        cmp = strcmp( sext, ".csv";
        if( cmp != 0){
                printf( "输入的文件名的后缀名不正确,应该为.csv格式" );
                return NULL;
        }
*/
        infile = fopen( filePath,"r+" );
    if( infile == NULL ){
        printf( "%s",MENU_ERROR3 );
                return NULL;
        }
        fclose( infile);
        return infile;
       
}

int saveSysHead( FILE* pfile ){

        int handle;
        long length;

        handle = fileno( pfile );
        length = filelength( handle );
        printf( "%s",length);
       

        //若文件为空,则写入文件头       
        if( length == 0.0 ){
                fputs(" shuru yige wenjian biaoti ";
                return 0;
        }
        else{
        }

        fclose( pfile );
}


void main()
{
       
        char filename[128];
        FILE* infile;
               
        printf("please input save file path";
        scanf("%s",filename);

//检查输入的文件名是否存在,如果不存在则创建该文件
        infile = openSaveFile( filename );

//检查指定的文件中是否包含文件头,如果不包含,则写入文件头
        saveSysHead(infile);
                               
}

论坛徽章:
0
7 [报告]
发表于 2004-11-29 21:32 |只看该作者

关于文件操作的问题,请大虾帮忙!!急!

我的更改如下

  1. /*#include <stdafx.h>;*/
  2. #include <stdlib.h>;
  3. #include <fcntl.h>;
  4. #include <io.h>;
  5. #include <string.h>;
  6. #include <stdio.h>;



  7. /////////////////////////////////////////////////////////////////////////////
  8. // 函 数 名 : openSaveFile
  9. //
  10. // 概要 : 打开保存的文件,如果文件不存在则创建一个新文件
  11. // 参数 : filepath 保存的文件路径
  12. // 返回値 : infile 保存文件成功
  13. // NULL 保存失败
  14. /////////////////////////////////////////////////////////////////////////////
  15. FILE* openSaveFile( char* filePath )
  16. {
  17.         /* char sdrive[32];
  18.         char sdir[32];
  19.         char sfile[64];
  20.         char sext[64];
  21.         int cmp;
  22.         */
  23.         FILE *infile;
  24.        
  25.        
  26.         infile = NULL;
  27.         /*用来判断输入的文件名是否是.csv
  28.         fnsplit( filePath,sdirve,sdir,sfile,sext );
  29.         cmp = strcmp( sext, ".csv");
  30.         if( cmp != 0){
  31.         printf( "输入的文件名的后缀名不正确,应该为.csv格式" );
  32.         return NULL;
  33.         }
  34.         */
  35.         infile = fopen(filePath,"r+" );
  36.         if( infile == NULL )
  37.         {
  38.                 printf( "%s","文件时空的");
  39.                 return NULL;
  40.         }
  41.         return infile;
  42.        
  43. }

  44. int saveSysHead( FILE* pfile )
  45. {
  46.        
  47.         int handle;
  48.         long length;
  49.        
  50.     if (pfile == NULL)
  51.     {
  52.         printf("文件为空\n");
  53.         return -1;
  54.     }
  55.         handle = fileno( pfile );
  56.         length = filelength( handle );
  57.         printf( "%s",length);
  58.        
  59.        
  60.         //若文件为空,则写入文件头
  61.         if( length == 0 )
  62.         {
  63.                 fputs("shuru yige wenjian biaoti ", pfile);
  64.         fclose( pfile );
  65.                 return 0;
  66.         }
  67.         else
  68.         {
  69.         fclose( pfile );
  70.         }
  71.        
  72.         return 0;
  73. }


  74. void main()
  75. {
  76.        
  77.         char filename[128];
  78.         FILE* infile;
  79.        
  80.         printf("please input save file path");
  81.         scanf("%s",filename);
  82.        
  83.         //检查输入的文件名是否存在,如果不存在则创建该文件
  84.         infile = openSaveFile( filename );
  85.        
  86.         //检查指定的文件中是否包含文件头,如果不包含,则写入文件头
  87.         saveSysHead(infile);

  88. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2004-11-30 10:40 |只看该作者

关于文件操作的问题,请大虾帮忙!!急!

你是在什么环境下编译的,我在linux下编译怎么出现
gcc openSaveFile.c
openSaveFile.c:4:17: io.h: No such file or directory
这种错误哦,还有你的filelength(),我就没有google到。

论坛徽章:
0
9 [报告]
发表于 2004-11-30 10:44 |只看该作者

关于文件操作的问题,请大虾帮忙!!急!

是在VC 6.0 下面编译的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP