广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4038 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
s89tsvs62219
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x8
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++] 写档案的问题??
各位大大~~
小弟的问题是有个里面已有资料的2位元档,小弟想每次做完处里就在文字档的后面加上一些文字或修改。
..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:台湾中华电信 | Posted:2005-08-10 13:41 |
codeboy 手机
个人文章 个人相簿 个人日记 个人地图
社区建设奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x6 鲜花 x331
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

将整个档案读进来,找到要修改的地方后先改正后,再重新存回档案中~ 表情
这应该是最简单的方法~



连结有问题请来信,我会尽快修正~^^
通报时请附上是"哪一篇失效"...这样我才能去修正~麻烦各位好心人士了~

[连结失效通报][ 网页.伺服.程式 讨论区]
----------------------在世界中心呼喊爱情----------------------
深深思念一个人的时候,我们不知不觉的地活在世界的中心...
献花 x0 回到顶端 [1 楼] From:台湾政府网际 | Posted:2005-08-10 13:46 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

你的问题表达得不太明确... 可以再多说明一下吗?


献花 x0 回到顶端 [2 楼] From:台湾和信超媒体 | Posted:2005-08-10 14:20 |
s89tsvs62219
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x8
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

感谢大大~~
我的做法是~~

复制程式
if ( (BitStream_File= fopen("08k_temp.bs", "wb")) == NULL)
 {
     printf("Cannot Open %s\n", tmp);
     return -1;
  }
//先开个暂存档   


 if ( (BitStream_File_temp= fopen("08k.bs", "rb")) == NULL) 
 {
     printf("Cannot Open %s\n", file);
//看之前档案有无建立过
 }
 else
 {
//有建立过
           while(!feof(BitStream_File_temp))
           {
       char_read=fread(buffer,1,1024,BitStream_File_temp);
           fwrite(buffer,1,char_read, BitStream_File);
           }       
//复制
    fclose(BitStream_File_temp);
 }
//做之后的处理,把处理过后要写的档案写入暂存档中



可是最后我的暂存档要正名成原本的档案
我用这个方法,他是改档名的,不过好像如果原有的档案已存在,他不会做覆盖的动做
  rename("08k_temp.bs","08k.bs");

可以问一下,我要用什么指令吗??我找不到用什么指令

谢谢


献花 x0 回到顶端 [3 楼] From:台湾中华电信 | Posted:2005-08-10 14:38 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我还是听不懂阁下的描述, 真是对不起呀! 不知道是不是指, 阁下有一文字档, 想设计一个函式将其读取出来, 然后修正后再储存回去原本的那个档案? 如果是, 那照着 codeboy 所说的方式会比你所用的方法好一点喔! 1. 读取档案 2. 修改 3. 覆盖回原档 4. 关闭档案


献花 x0 回到顶端 [4 楼] From:台湾和信超媒体 | Posted:2005-08-10 15:09 |
s89tsvs62219
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x8
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

嗯~~你说的是 先把所有的东西先读到记忆体,在做处理,然后最后存回原档~~

我目前用的方法是读一段,存一段,因为程式的关系,我会修改的部份只有档案结束的最后几个byte,如果全部先读入,要考虑记忆体分配的大小,因为档案大小不定,要用到动态记忆体,复杂度就增加了~~

所以我读一段,存一段,直到档尾,才会有我要修改增加的地方,剩下的只要把我做出来的暂存档取代我原有档案就好。

但~~~我找不到指令~~~如何做丫~~~

大大方法不错,不过我想到动态记忆体,就头痛不会写


献花 x0 回到顶端 [5 楼] From:台湾中华电信 | Posted:2005-08-10 15:26 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

读一段, 存一段, 如果档案有N段, 你的时间复杂度就是 N + c 了 ... 一次读完, 一次改完, 然后存回去, 只有 1 + c 的时间复杂度. 再来, 你的 Data type 是什么呢? 怎会需要考虑记忆体的分配大小? 这是不是你的作业呀? 方便把题目原文公布出来吗?


献花 x0 回到顶端 [6 楼] From:台湾和信超媒体 | Posted:2005-08-10 15:34 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

我写了一个程式, 你看看能不能帮得上忙!
语法是 trycopy [file1] [file2]
功能是把 file1 覆盖到 file2
程式码如下:
复制程式
#include <stdio.h>
#include <stdlib.h>

int main( int argc, char *argv[] )
{
    if( argc != 3 )
       {
              printf( "ERROR" );
              exit( 0 );
       }

    FILE *file1,*file2;
    char ch;

    if( ( file1 = fopen( argv[ 1 ], "r" ) ) == NULL )
       {
              printf( "ERROR" );
              exit( 0 );
       }

    file2 = fopen( argv[2], "w" );

    while( ( ch = getc( file1 ) ) != EOF )
    {
              printf( "%c", ch );
              putc( ch, file2 );
    }

    fclose( file1 );
    fclose( file2 );
       return( 0 );
}



献花 x1 回到顶端 [7 楼] From:台湾和信超媒体 | Posted:2005-08-10 16:01 |
s89tsvs62219
数位造型
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x8
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

嗯~~感谢大大~~的回答~~

这个不是作业,这是我专题之中会用到的地方~~

依你的做法~~

我要的是 trycopy [file1] [file2]   但 file1 和 file2 是同一个档案。 

file1是原本档案,可以关毕了

file2作完没有马上关毕

要在档案后面再加点东西。

我目前的作法是加上

~处理~写档~

  remove("file1");
  rename("file2","file1")

file1是原本档案 ex: aa.bs
file2是file1里的资料+新资料 ex.aa_temp.bs

读档写档用和你差不多的方法

把原本的file1杀掉
把file2的档案改成file1的档名,完成取代的动作

ps:有取代的函式吗??


献花 x0 回到顶端 [8 楼] From:台湾中华电信 | Posted:2005-08-10 16:25 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

其实, 那个暂存档可以不用删了! 因为下次修改时, 还是会用到呀! 另外, 既然你是要修改某些资料片断而已, 何不先将所有的资料读出来, 先放到一个变数里, 然后写个函式来修改这个变数内容, 之后再用 w-mode 把这变数内容覆盖回去原本的档案呢? 这样子连暂存档都不用了! 给你作个参考! ^_^


献花 x0 回到顶端 [9 楼] From:台湾和信超媒体 | Posted:2005-08-10 18:45 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.038616 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言