| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 346 人关注过本帖
标题:T.P版在不··上次那个程序修改
取消只看楼主 加入收藏
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
T.P版在不··上次那个程序修改
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HELP 1
#define INDENT 2

FILE *fop;

int handleargs(int argc, char* argv[])
{
  if (argc != 2){
    return HELP;
  }
  if (argc == 2){
    return INDENT;
  }
}
void printindent(int indent)
{
  int i;
  for(i=0; i<indent; i++){
    fprintf(fop, " ");
  }
}

void printchar(char* line)
{
  int k =0;
  while(line[k++] == ' ')
    ;
  fputs(line+(k-1), fop);
  k = 0;
}

void printline(int indent, char* line)
{
  printindent(indent);
  printchar(line);
}

void doIdent(char* filename)
{
  int i = 0;
  int k = 0;
  char line[1000];
  int indent = 0;
  FILE *fip =fopen(filename, "r");
  fop = fopen("a.tmp", "w");
  fgets(line, 1000, fip);
  while (!ferror(fip)&&!feof(fip)){
  printf("%s",line);
    printf("%s", line);
    if(line[strlen(line)-2] == '}'){
      indent -=2;
      printline(indent, line);
    }
    else if(line[strlen(line)-2] == '{'){
      printline(indent, line);
      indent +=2;
    }
    else if(line[strlen(line)-1] == '}'){
      indent -=2;
      printline(indent, line);
    }
    else
      printline(indent,line);
    fgets(line, 1000, fip);
  }
  fclose(fip);
}

void help()
{
  printf("Useage:  a filename                      /* The document


indented */");
}

int main(int argc, char* argv[])
{
  switch(handleargs(argc,argv)){
  case INDENT:
    doIdent(argv[1]);
    fclose(fop);
    break;
  default:
    help();
  }
}

读最后一行肿么不行D。。。。..
还有替换你输入的文件后缀...
  filename[strlen(filename)-1]='c';
  filename[strlen(filename)-2]='n';
  filename[strlen(filename)-3]='e';

之前因为是txt转enc可以这样写。。。
但现在我要XX.c转XX.bak  然后写进XX.tmp···把XX.tmp替换成a.c   这个就弄不到了。。。.
2012-03-05 10:21
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
最后一行没\n。fgets读不了。..要怎么解决捏..T版上次给的程序没看懂.  

2012-03-05 11:30
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 3楼 TonyDeng
char argv[]
char command[1000]

ssprintf(command, "move %s %s.tmp", argv[1], prefix)
system(command)


刚头头教了这种方法..
2012-03-05 13:46
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 7楼 TonyDeng
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HELP 1
#define INDENT 2

FILE *fop;
FILE *fip;

int handleargs(int argc, char* argv[])
{
  if (argc != 2){
    return HELP;
  }
  if (argc == 2){
    return INDENT;
  }
}
void printindent(int indent)
{
  int i;
  for(i=0; i<indent; i++){
    fprintf(fop, " ");
  }
}

void printchar(char* line)
{
  int k =0;
  while(line[k++] == ' ')
    ;
  fputs(line+(k-1), fop);
  k = 0;
}

void printline(int indent, char* line)
{
  printindent(indent);
  printchar(line);
}

void doIdent(char* filename)
{
  char argv[1];
  int i = 0;
  int k = 0;
  int j = 0;
  char line[1000];
  int indent = 0;
  fip =fopen(filename, "r");
  filename[strlen(filename)-2] = '\0';
  while (!ferror(fip)&&!feof(fip)){
    if(fgets(line, 1000, fip) == NULL){
      break;
    }
    if(line[strlen(line)-2] == '}'){
      indent -=2;
      printline(indent, line);
    }
    else if(line[strlen(line)-2] == '{'){
      printline(indent, line);
      indent +=2;
    }
    else if(line[strlen(line)-1] == '}'){
      indent -=2;
      printline(indent, line);
    }
    else
      printline(indent,line);
  }
  fclose(fip);
}

void help()
{
  printf("Useage:  a filename                      /* The document indented */");
}

int main(int argc, char* argv[])
{
  char gogo[1000];
  char command[1000];
  switch(handleargs(argc,argv)){
  case INDENT:
    fop = fopen("a.tmp", "w");
    doIdent(argv[1]);
    fclose(fop);
    sprintf(command, "move %s.c %s.bak",argv[1],argv[1]);
    system(command);
    sprintf(gogo, "move a.tmp %s.c",argv[1]);
    system(gogo);
    break;
  default:
    help();
  }
}


完成了终于
2012-03-06 12:44
快速回复:T.P版在不··上次那个程序修改
数据加载中...
 
   



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

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