(轉)按行處理文本內容(C語言實現)


C語言中處理文本內容,通常有三種形式,一是逐個字符,二是按行處理,三是二進制形式,這里用一段C代碼演示一下按行處理的過程,順便回顧一下標准C中行I/O相關函數.

代碼文件 main.c

#include <stdio.h>
#include <stdlib.h>
#define MAX_LENTH 1024
/**********************************************************
功能描述:按行讀寫文件
涉及知識:行I/O相關函數
1)未格式化行I/O函數:fgets(),gets(),fputs(),puts()
2)格式化行I/O函數:scanf(),fscanf(),printf(),fprintf()



*********************************************************
*/
void printLine(char *path , char *dest);
int main()
{
char *path = "/home/magc/software/test1.txt";
char *dest = "/home/magc/software/dest.txt";
printLine(path,dest);
return 0;
}

void printLine(char *path , char *dest)
{
char buffer[MAX_LENTH];//以一個字符數組為緩存,按行讀取內容,每次按一個字符串來處理
int num = 1;
FILE *pf = fopen(path,"r");
FILE *df = fopen(dest,"w");
if(pf != NULL&&df !=NULL)
{
perror("file not open ");

}
while(fgets(buffer,MAX_LENTH,pf)!=NULL)
{
printf("No.%d:%s\n",num,buffer);
fputs(buffer,df);
num++;
}


fclose(pf);

}

注:上述代碼的功能就是按行讀取一個文件內容,然后在每行內容前加行數,打印並輸出到另一個文件中去.

涉及知識小結:

1, fgets()函數:指定一個緩存,每次讀取最大長度,每次讀取截至有兩種情況,一是遇到換行符,二是已經達到緩存的最大長度,下一次讀取會從下一個字符開始,未不會造成字符丟失的.另外每次讀到緩存中,會在最后一位加上"\NUL",使此次讀取結果作為一個完整的字符串.

2,fputs()函數:指定一個字符串,將這個字符串連續寫入到指定的文件中去.其中的換行符也都是直接寫入,實現按行寫入的效果.

3,gets()和puts()則不需要一個緩存,來源也固定為標准輸入輸出,這有它的缺點,即不可控制每次讀寫的長度,有時很容易產生溢出,造成不良后果.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM