LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 757|回复: 9

为什么我修改文件不成功

[复制链接]
发表于 2005-5-25 09:21:52 | 显示全部楼层 |阅读模式
我想在文件的“BOOTPROTO=static”下加一行文字“added here!”,为什么失败?
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main( void )
{
   FILE *fh;
   char buf[80];
   char *tepchar;
   char *std="BOOTPROTO";
  
   fh = fopen( "b.txt", "r+" );
   if( fh == NULL )
      printf( "The file b.txt was not opened\n" );
   else
   {
     while(fgets(buf, sizeof buf, fh))
         {
                 tepchar = strtok(buf, "=");                 
                 if(!strcmp(tepchar,std))
                 {                       
                         fputs("added here!",fh);
                         fflush(fh);
                         break;
                 }
         }
         fclose( fh );
   }
   exit(0);
}
发表于 2005-5-25 09:24:23 | 显示全部楼层
Post by haohao_h
我想在文件的“BOOTPROTO=static”下加一行文字“added here!”,为什么失败?
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main( void )
{
   FILE *fh;
   char buf[80];
   char *tepchar;
   char *std="BOOTPROTO";
  
   fh = fopen( "b.txt", "r+" );
   if( fh == NULL )
      printf( "The file b.txt was not opened\n" );
   else
   {
     while(fgets(buf, sizeof buf, fh))
         {
                 tepchar = strtok(buf, "=");                 
                 if(!strcmp(tepchar,std))
                 {                       
                         fputs("added here!",fh);
                         fflush(fh);
                         break;
                 }
         }
         fclose( fh );
   }
   exit(0);
}

打开方式注意一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-25 10:53:06 | 显示全部楼层
没这么简单吧?
回复 支持 反对

使用道具 举报

发表于 2005-5-25 11:03:58 | 显示全部楼层
如果要改动文件内容,需要一个临时文件。
回复 支持 反对

使用道具 举报

发表于 2005-5-25 11:35:04 | 显示全部楼层
失败的形式是什么?是根本没有修改,还是修改得有问题。请把错误帖出来看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-25 12:30:00 | 显示全部楼层
没有发生任何变化!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-25 12:54:13 | 显示全部楼层
怎样的临时文件?是自己随便创一个过后把它删掉还是用系统的mktemp创建的类似文件?
回复 支持 反对

使用道具 举报

发表于 2005-5-26 16:41:41 | 显示全部楼层
Post by haohao_h
怎样的临时文件?是自己随便创一个过后把它删掉还是用系统的mktemp创建的类似文件?

自己创建一个,把要原来文件不变的部分照样写入临时文件,修改的内容修改后写入,最后把原来的文件删掉,把临时文件改名成原来的文件。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-26 17:48:38 | 显示全部楼层
我这样做成功了,不过感到好笨!
回复 支持 反对

使用道具 举报

发表于 2005-5-28 10:59:41 | 显示全部楼层
还可以用mmap,程序写起来也不复杂。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表