免费注册 查看新帖 |

Chinaunix

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

请教对文件的写和内容替换操作? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-23 09:13 |只看该作者 |倒序浏览
例:我的文件内容为:

name=Complus
age=18
sex=man
number=2

现在我要从键盘输入scanf("%s %d %s %d",name,age,sex,number);然后替换写入文件,使文件变为:
name=yourname
age=22
sex=woman
number=6

请教其中的替换写操作怎么实现?非常感谢!!

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

请教对文件的写和内容替换操作?

字符串的查找替换函数,可以自己写一个。

论坛徽章:
0
3 [报告]
发表于 2004-08-23 09:35 |只看该作者

请教对文件的写和内容替换操作?

直接写入覆盖不行么?
你若不放心可以把原文件内容删除再写入

论坛徽章:
0
4 [报告]
发表于 2004-08-23 10:14 |只看该作者

请教对文件的写和内容替换操作?

我就是要采用替换的方法,但写的不成功,aero这位仁兄可否有好的例子供参考。mylover9989说的删除再写入我也考虑过,但觉得不太合适,大家讨论一下,希望有好的参考例子!!!非常感谢!

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

请教对文件的写和内容替换操作?

呵呵,无事。自己练习了一下文件的读写。下面的代码仅供测试,健壮性极差,^_^。

  1. #include <stdio.h>;
  2. #include <stdlib.h>;
  3. #include <string.h>;

  4. int main(void) {
  5.         char    buf[256],
  6.                 buf1[32],
  7.                 name[16],
  8.                 sex[8];
  9.         int     age,
  10.                 i,
  11.                 number;
  12.         FILE    *pin,
  13.                 *pout;

  14.         memset(name,0x0,16);
  15.         memset(sex,0x0,8);

  16.         printf("Input value:");
  17.         fflush(stdout);
  18.         scanf("%s %d %s %d",name,&age,sex,&number);

  19.         if ( ( pin = fopen("./in.txt","r") ) == NULL ) {
  20.                 printf("open infile error!\n");
  21.                 exit(1);
  22.         }
  23.         if ( ( pout = fopen("./out.txt","w") ) == NULL ) {
  24.                 printf("open outfile error!\n");
  25.                 exit(1);
  26.         }

  27.         memset(buf,0x0,256);
  28.         memset(buf1,0x0,32*sizeof(int));

  29.         fgets(buf,256,pin);

  30.         while ( !feof(pin) ) {

  31.                 i = 0;
  32.                 while ( buf[i] != '=' ) {
  33.                         buf1[i] = buf[i];
  34.                         i++;
  35.                 }
  36.                 buf1[i] = '=';
  37.                 i++;

  38.                 if ( strcmp("name=",buf1) == 0 ) {
  39.                         sprintf(buf1+i,"%s",name);
  40.                 }
  41.                 else if ( strcmp("age=",buf1) == 0 ) {
  42.                         sprintf(buf1+i,"%d",age);
  43.                 }
  44.                 else if ( strcmp("sex=",buf1) == 0 ) {
  45.                         sprintf(buf1+i,"%s",sex);
  46.                 }
  47.                 else if ( strcmp("number=",buf1) == 0 ) {
  48.                         sprintf(buf1+i,"%d",number);
  49.                 }
  50.                 else {
  51.                         printf("input file error!\n");
  52.                         exit(1);
  53.                 }

  54.                 fputs(buf1,pout);
  55.                 fputc('\n',pout);

  56.                 memset(buf,0x0,256);
  57.                 memset(buf1,0x0,32*sizeof(int));

  58.                 fgets(buf,256,pin);

  59.         }
  60.         exit(0);
  61. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP