生活随笔
收集整理的這篇文章主要介紹了
《C语言课程设计》一3.1 文件复制
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
3.1 文件復制
【例3.1】編寫文本文件復制程序,命令行格式為:mycopy filename1 filename2。
題目分析
每個C語言程序必須定義一個main函數(shù)作為程序的入口。程序啟動從main函數(shù)開始執(zhí)行,main函數(shù)返回時程序終止,若main函數(shù)末尾沒有返回語句,則默認執(zhí)行return 0語句。
標準C語言的main函數(shù)有兩種形式:接受0個參數(shù)的int main(void),即int main();接受2個參數(shù)的int main(int argc, char *argv[])。對于后者,形參argc表示傳遞給程序的參數(shù)個數(shù);形參argv是指針數(shù)組,其每個指針分別指向傳遞給程序的字符串參數(shù),第一個字符串a(chǎn)rgv[0]是程序的名稱。
文件的打開和關閉可調用fopen和fclose函數(shù)。文件的讀取和寫入可通過三種方式實現(xiàn):1)fgetc和fputc函數(shù)配合,每次讀寫一個字符,見參考程序mycopyV1.c;2)fscanf和fprintf函數(shù)配合,每次讀寫一個字符,見參考程序mycopyV2.c;3)fread和fwrite函數(shù)配合,每次讀寫B(tài)UFSIZE個字符,見參考程序mycopyV3.c。方式3)通過增設緩沖區(qū)buffer[BUFSIZE],減少I/O操作的次數(shù),提高程序運行速度,可用于讀寫量較大的程序。
檢測到異常時,用exit標準庫函數(shù)退出。void exit(int status) 函數(shù)可正常終止一個程序并執(zhí)行清理操作,形參status值為0表示程序成功退出,非零值可表示各類異常終止。從main函數(shù)通過return語句返回一個整數(shù)值相當于用這個整數(shù)值調用exit函數(shù)。exit函數(shù)在頭文件stdlib.h中聲明。
參考程序
/** 文件名: mycopyV1.c * 描述: 編寫文件復制命令行程序,命令行格式為:mycopy filename1 filename2* 作者: 劉博*/#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{FILE *fpSrc, *fpDes;char ch;/* 檢查命令行參數(shù)個數(shù) */ if (argc != 3) {printf("Usage: mycopy SourceFile DestinationFile\n");exit(1);} /* 打開文件 */ if ((fpSrc = fopen(argv[1], "r")) == NULL) {printf("open file error!\n");exit(1);}if ((fpDes = fopen(argv[2], "w")) == NULL) {printf("creat file error!\n");exit(1); }/* 復制文件 */ while ((ch = fgetc(fpSrc)) != EOF) {fputc(ch, fpDes);}/* 關閉文件 */ fclose(fpSrc);fclose(fpDes);
}/** 文件名: mycopyV2.c * 描述: 編寫文件復制命令行程序,命令行格式為:mycopy filename1 filename2* 作者: 劉博*/#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{FILE *fpSrc, *fpDes;char ch;/* 檢查命令行參數(shù)個數(shù) */ if (argc != 3) {printf("Usage: mycopy SourceFile DestinationFile\n");exit(1);} /* 打開文件 */ if ((fpSrc = fopen(argv[1], "r")) == NULL) {printf("open file error!\n");exit(1);}if ((fpDes = fopen(argv[2], "w")) == NULL) {printf("creat file error!\n");exit(1); }/* 復制文件 */while (fscanf(fpSrc, "%c", &ch) != EOF) {fprintf(fpDes, "%c", ch);} /* 關閉文件 */ fclose(fpSrc);fclose(fpDes);
}/** 文件名: mycopyV3.c * 描述: 編寫文件復制命令行程序,命令行格式為:mycopy filename1 filename2* 作者: 劉博*/#include <stdio.h>
#include <stdlib.h>#define BUFSIZE 1024int main(int argc, char *argv[])
{FILE *fpSrc, *fpDes;char buffer[BUFSIZE];int in, out; /* 檢查命令行參數(shù)個數(shù) */ if (argc != 3) {printf("Usage: mycopy SourceFile DestinationFile\n");exit(1);} /* 打開文件 */ if ((fpSrc = fopen(argv[1], "r")) == NULL) {printf("open file error!\n");exit(1);}if ((fpDes = fopen(argv[2], "w")) == NULL) {printf("creat file error!\n");exit(1); }/* 復制文件 */while ((in = fread(buffer, 1, BUFSIZE, fpSrc)) > 0) { out = fwrite(buffer, 1, in, fpDes);/* 判斷讀出和寫入元素個數(shù)是否一致 */if (in != out) {printf("copy error!\n");exit(1);}}/* 關閉文件 */ fclose(fpSrc);fclose(fpDes);
}
總結
以上是生活随笔為你收集整理的《C语言课程设计》一3.1 文件复制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。