简易C程序格式化工具

来源:互联网 发布:网络电视在线直播观看 编辑:程序博客网 时间:2024/06/13 20:24
#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
0 0
原创粉丝点击