简易C程序格式化工具
2015-11-23 10:57
337 查看
#include <stdio.h> #include <string.h> char a[4096]; int main(int argc, char* argv[]) { //open the souce file char* name = argv[1]; FILE* r = fopen(name, "r"); int i=0; while(fscanf(r,"%c",&a[i++])!=EOF)NULL; a[i]=0; int n=i; fclose(r); //replace table with ' ' for(i=0;i<n;i++) { if(a[i]=='\t') a[i]=' '; } //delete replicated' ' int j; for(i=1;i<n;i++) { if(a[i]==' ' && a[i-1]==' ') { for(j=i+1;j<=n;j++) { a[j-1]=a[j]; } n--; } } // add \n after { or } for(i=0;i<n;i++) { if((a[i]=='{'|| a[i]=='}') &&(i+1<n && a[i+1]!='\n') ) { if(a[i+1]!=' ') { for(j=n;j>=i+1;j--) { a[j+1]=a[j]; } a[i+1]='\n'; n++; } else { a[i+1]='\n'; } } } //add \n before { or } for(i=1;i<n;i++) { if((a[i]=='{'|| a[i]=='}') &&(a[i-1]!='\n')) { if(a[i-1]!='\n') { for(j=n;j>=i;j--) { a[j+1]=a[j]; } a[i]='\n'; n++; } else { a[i-1]='\n'; } } } //store the source code by rows char b[1024][128]; int num=0; j=0; for(i=0;i<n;i++) { if(a[i] != '\n') { b[num][j] = a[i]; j++; } else { b[num][j] = '\n'; j++; b[num][j]=0; num++; j=0; } } int lines=num; //delete the start ' ' for(i=0;i<lines;i++) { j=0; while(b[i][j]==' ') j++; int k=j; while(b[i][j]) { b[i][j-k]=b[i][j]; j++; } b[i][j-k]=b[i][j]; } //format num=0; for(i=0;i<lines;i++) { if(strlen(b[i])==1 && b[i][0]=='\n') { continue; } for(j=0;j<strlen(b[i]);j++) { if(b[i][j]== '}') { num--; break; } } n = strlen(b[i]); for(j=n;j>=0;j--) { b[i][j+num*4]=b[i][j]; } for(j=0;j<num*4;j++) { b[i][j]=' '; }; for(j=0;j<strlen(b[i]);j++) { if(b[i][j]== '{') { num++; break; } } } //show && save the result char s[128]="new_"; strcat(s,argv[1]); FILE* w = fopen(s,"w"); for(i=0;i<lines;i++) { if(strlen(b[i])==1 && b[i][0]=='\n') continue; j=0; while(b[i][j]) { fprintf(w,"%c",b[i][j]); putchar(b[i][j]); j++; } } fclose(w); return 0; }
输入:
#include <iostream>using namespace std;bool hasOne(int n) { while(n>0) {if(n%10==3)return true;n=n/10;}return false;}int main(){int count=0;for(int i=0;i<=999999;++i){if(!hasOne(i))count++;}cout<<count<<endl;return 0;}
输出:
./a.out a.cpp #include <iostream>using namespace std;bool hasOne(int n) { while(n>0) { if(n%10==3) return true; n=n/10; } return false;}int main(){ int count=0;for(int i=0;i<=999999;++i) { if(!hasOne(i)) count++; } cout<<count<<endl; return 0;}
Author:段廷银
Date:2015.11.20
Email:clickyeah@yeah.net
相关文章推荐
- 关于Spring中的<context:annotation-config/>配置
- MySql查询结果按照指定顺序排序
- 1、Windows安装和使用zookeeper
- 开源的监控软件
- css案例学习之float浮动
- 消息推送分类:推动(Push)模式和拉动(Pull)模式
- 小白学算法2.3——插入排序
- sql server 2008基础
- Intent,广播Broadcast,和message数据交替
- QT程序打包部署
- 被误解的MVC和被神化的MVVM
- Java File 类的文件名和路径相关函数
- H-index II | LeetCode 12ms Solution
- 如何在CentOS 7中禁止IPv6
- 基于thinkPHP框架使用PHPExcel导出数据
- 简单谈谈AJAX核心对象
- Nodejs的express使用教程
- 设置整行代码上下移动 删除
- 如何在CentOS 7中禁止IPv6
- 解决Windows2003 Server终端服务120天限制