Linux C學習筆記——txt檔案讀寫
阿新 • • 發佈:2018-12-20
/*************** perror(s) 用來將上一個函式發生錯誤的原因輸出到標準裝置(stderr)。引數 s 所指的字串會先打印出,後面再加上錯誤原因字串。此錯誤原因依照全域性變數errno的值來決定要輸出的字串。 FILE * fopen(const char * path, const char * mode);返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回 NULL,並把錯誤程式碼存在 error 中。 fgetc()fgetc是一種計算機語言中的函式。意為從檔案指標stream指向的檔案中讀取一個字元,讀取一個位元組後,游標位置後移一個位元組。格式:int fgetc(FILE *stream);。 fputc()將字元ch寫到檔案指標fp所指向的檔案的當前寫指標的位置。函式格式:int fputc (int c, FILE *fp)。 exit() exit(0) 表示程式正常退出,exit⑴/exit(-1)表示程式異常退出。 pid_t wait (int * status);如果執行成功則返回子程序識別碼(PID),如果有錯誤發生則返回-1。失敗原因存於errno 中。 fprintf是C/C++中的一個格式化寫—庫函式,位於標頭檔案<stdio.h>中,其作用是格式化輸出到一個流/檔案中; 函式原型為int fprintf( FILE *stream, const char *format, [ argument ]...),fprintf()函式根據指定的格式(format)向輸出流(stream)寫入資料(argument)。 */
#include <iostream> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> using namespace std; /*************** perror(s) 用來將上一個函式發生錯誤的原因輸出到標準裝置(stderr)。引數 s 所指的字串會先打印出,後面再加上錯誤原因字串。此錯誤原因依照全域性變數errno的值來決定要輸出的字串。 FILE * fopen(const char * path, const char * mode);返回值:檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回 NULL,並把錯誤程式碼存在 error 中。 fgetc()fgetc是一種計算機語言中的函式。意為從檔案指標stream指向的檔案中讀取一個字元,讀取一個位元組後,游標位置後移一個位元組。格式:int fgetc(FILE *stream);。 fputc()將字元ch寫到檔案指標fp所指向的檔案的當前寫指標的位置。函式格式:int fputc (int c, FILE *fp)。 exit() exit(0) 表示程式正常退出,exit⑴/exit(-1)表示程式異常退出。 pid_t wait (int * status);如果執行成功則返回子程序識別碼(PID),如果有錯誤發生則返回-1。失敗原因存於errno 中。 fprintf是C/C++中的一個格式化寫—庫函式,位於標頭檔案<stdio.h>中,其作用是格式化輸出到一個流/檔案中; 函式原型為int fprintf( FILE *stream, const char *format, [ argument ]...),fprintf()函式根據指定的格式(format)向輸出流(stream)寫入資料(argument)。 */ int main() { pid_t pc; pc =fork(); int status; FILE* wp = fopen("out.txt","a"); if(wp == NULL) perror("wp error"); if(pc <0) perror("fork error"); else if(pc == 0) { printf("this is child process\n"); printf("child process is doing\n"); FILE* fp =NULL; int count = 0; fp = fopen("in.txt","r"); int c; while((c =getc(fp)) != EOF) { if(c>='A' && c<='Z') count++; } fclose(fp); printf("Upper count:%d\n",count); fprintf(wp,"Upper:%d\n",count); exit(0); } else { printf("this is parent process\n"); if(wait(&status)) { printf("parent process is doing\n"); FILE* fp =NULL; int count = 0; fp = fopen("in.txt","r"); int c; while((c = getc(fp))!=EOF ) { if(c>='a' && c<='z') count++; } fclose(fp); printf("lower count:%d\n",count); fprintf(wp,"Lower:%d\n",count); fclose(wp); } } FILE* rp = fopen("out.txt","r"); if(rp == NULL) perror("rp error"); int c; while((c = getc(rp))!= EOF) { fputc(c,stdout); } return 0; }