c語言原始檔大括號獨佔一行處理

2021-08-03 06:40:12 字數 1475 閱讀 9049

下面的程式實現了兩個功能:

1.讀入乙個.c原始檔,對其中的大括號進行處理,使其獨佔一行;

2.處理後的檔案單獨儲存並加行號輸出;

考察檔案中兩個字元(這裡是指除了回車、製表符以外的字元)的相對位置關係的各種情況,分別進行處理,可以實現大括號獨佔一行的目的。值得注意的是,對已獨佔一行的括號不會產生多餘的輸出(回車)。

其實,雖然case有七種情況,但是輸出只有兩種:需要加回車、不需要加。括號-括號的情形顯然可以歸結到括號-ascii碼中,即六種情況,只有flag等於1時需要加回車輸出。

#include

#include

file *braket_deal(file *fp_in);

void main()

else

putchar(ch);

} fclose(fp_put);

}//對原始檔中的大括號進行檢測並使其獨佔一行,返回處理後的檔案的指標,返回型別是file

file *braket_deal(file *fp_goal)

; char ch[2],now;

int flag;

fp_deal=fopen("change_file.c","w+");

if(fp_goal==null)

else if(fp_deal==null)

/*方式1 while(!feof(fp_goal)) ')

else

fputc(ch,fp_deal);

}*/ch[0]='\0'; //方式2考慮所有的情況,但是**複雜度較高

while(!feof(fp_goal))

') if(ch[1]=='\n') flag=0; //括號-回車

else flag=1; //括號-字元

else if(ch[0]=='\n') flag=0; //回車-括號

else if(ch[1]=='') flag=1; //字元-括號

else flag=0; //字元-字元

ch[0]=ch[1];

} if(flag==1) fprintf(fp_deal,"\n%c",ch[1]);

else

fputc(ch[1],fp_deal);

} rewind(fp_deal); //等價於fseek(fp_deal,0,0);

//由於檔案位置指標當前指向檔案末尾,手動給其復位,為後面主函式中使用提供方便

printf("程式處理完畢!\n");

return fp_deal;

}

對大括號進行分別處理的程式流程圖如下:

C語言一行一行讀取檔案

c語言中,使用fgets函式可以一行行讀du取檔案。1 fgets函式 原型 char fgets char buf,int bufsize,file stream 功能 從檔案結構體指標stream中讀取資料,每次讀取一行。說明 讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize ...

C語言 一行一行讀取檔案txt

參考 怎麼用c語言實現讀取乙個txt檔案裡的資料 要按行讀出來 開啟檔案 fopen 需要開啟的路徑 然後使用fgets函式讀取行 include include include define max line 1024 intmain while fgets buf,max line,fp nul...

C語言一行太長的換行處理

在c語言程式編寫中,我們有時會遇到一行 太長而影響閱讀或者出現與部分公司或組織要求的編碼規範不符的情況,此時我們需要將這行 分成多行來寫。一 針對一般語句換行 使用 結尾作為換行標記 在編譯時,後面的換行符將被忽略,當做一行處理。比如巨集定義時使用 define my puts x printf s...