| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 793 人关注过本帖
标题:文件读取行的问题,求指导
取消只看楼主 加入收藏
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
文件读取行的问题,求指导
            
程序代码:
#include <stdio.h>
#include <string.h>

main()
{
  char line[1024];
  int ident = 0;
  int i;

  FILE *fip = fopen("a.c", "r");
  FILE *fop = fopen("a.tmp", "w");
  fgets(line, 1024, fip);
  while(!ferror(fip)&& !feof(fip)){
    if(line[strlen(line)-1] == '{'){

    }
    if(line[strlen(line)-1] == '}'){

    }
    fgets(line, 1024, fip);
  }
  fclose(fip);
  fclose(fop);
  system("move a.c a.bak");
  system("move a.tmp a.c");
}
1. 读方式打开a.c, 写方式打开a.tmp
2. 读a.c的一行到 line
3. 判断 line 的最后一个字符
  3.1 { 缩进加2                           /*如何在行前面加空格*/
  3.2 } 缩进减2                           /*如何在行前面减去2空格*/
4. 将 line 前面的所有空格去掉             /*如何把一行前面的空格全去掉*/
5. 写入缩进到 a.tmp
6. 写入 line 到 a.tmp
7. 关闭 a.c 和 a.tmp
8. 将 a.c 重命名为 a.bak
9. 将 a.tmp 重命名为 a.c


就上面的第三步第4步的在行前面加减空格.  和空格全去掉不懂...求指导指导
搜索更多相关主题的帖子: 指导 
2012-02-29 17:47
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
4个小时了。。。没人么·
2012-02-29 21:44
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 3楼 TonyDeng
加密那个完成了。到这个了。郁闷
2012-03-01 08:58
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 3楼 TonyDeng
用哪个函数可以做到阿?
2012-03-01 09:00
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 3楼 TonyDeng
像程序现在是写了其他几部。我就差前面加空格那些不知道用什么函数。
2012-03-01 09:00
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 9楼 TonyDeng
嗯。了解。
2012-03-01 13:11
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 9楼 TonyDeng
if(line[strlen(line)-1] == '{')                 /**  如果读到的行最后一个位是否‘{’           */ 我这个表达对还是错阿。
2012-03-01 13:14
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 12楼 TonyDeng
程序代码:
#include <stdio.h>
#include <string.h>

main()
{
  char line[1024];
  int  ident = 0;
  char *p;
  int  i;
  int  k = 0;
  FILE *fip = fopen("a.c", "r");
  FILE *fop = fopen("a.tmp", "w");
  char j[] = {0x20};
  fgets(line, 1024, fip);
  while(!ferror(fip)&& !feof(fip)){
    while(line[k++] == ' ')
      p = line+(k-1);
    for (i=0; i<ident; i++){
      fwrite(j, 1, sizeof(char), fop);
    }
    if(line[strlen(p)-1] == '{'){
      ++ident;
      ++ident;
    }
    if(line[strlen(p)-1] == '}'){
      --ident;
      --ident;
    }
    i = 0;
    fgets(line, 1024, fip);
  }
  fclose(fip);
  fclose(fop);
}


哪里错了。为什么运行没效果
2012-03-01 13:42
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 12楼 TonyDeng
继续想
2012-03-01 13:42
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 12楼 TonyDeng
程序代码:
#include <stdio.h>
#include <string.h>
#define MAXLINE 1000000

main()
{
  char line[MAXLINE];
  int  indent = 0;
  char *p;
  int  i;
  int  k = 0;
  FILE *fip = fopen("a.c", "r");
  FILE *fop = fopen("a.tmp", "w");
  char j[] = {0x20};
  fgets(line, MAXLINE, fip);
  while(!ferror(fip)&& !feof(fip)){
    if(line[strlen(line)-1] == '{'){
      ++indent;
      ++indent;
    }
    if(line[strlen(line)-1] == '}'){
      --indent;
      --indent;
    }
    while(line[k++] == ' ')
      p = line+(k-1);
    for (i=0; i<indent; i++){
      fwrite(j, 1, sizeof(char), fop);
    }
    fputs(p, fop);
    i = 0;
    fgets(line, 1024, fip);
  }
  fclose(fip);
  fclose(fop);
  system("move a.c a.bak");
  system("move a.tmp a.c");
}

为什么不行呢
2012-03-01 14:13
快速回复:文件读取行的问题,求指导
数据加载中...
 
   



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

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