【C語言】C語言實現檔案內容的複製
需求: fgetc fputc練習
/program檔案下面存在一個檔案 檔名為:addoverflowDemo.c 現在需要在該目錄下複製一個相同的檔案,檔名為test:
程式碼如下:
#include <stdio.h> #include <stdlib.h> int main() { FILE * sourcefile; FILE * desfile; char c; sourcefile = fopen("/program/addoverflowDemo.c","r"); desfile = fopen("/program/test","w"); while((c = fgetc(sourcefile)) != EOF) { fputc(fgetc(sourcefile),desfile); } fclose(sourcefile); fclose(desfile); return EXIT_SUCCESS; }
編譯執行,結果如下:
[[email protected] program]# cat test
icue<ti.>#nld sdi.>
n an){ca u;itoeao1=47;/47 0101| 0011 eaeia 30 sm=oeao1
/iuto u 0101;cttehge is1
/iuto u 0011;cttelwrbt:Apit(sm=%\"sm;
這是嗎?完全和預想的不一樣,什麼原因呢?
仔細分析程式執行結果:輸出的時候好像都是隔了一個字元,
於是回過頭去看原始碼
可能是這裡 fgetc每次都運行了兩次,使得檔案指標,每次都多移動了一位。while((c = fgetc(sourcefile)) != EOF) { fputc(fgetc(sourcefile),desfile); }
修改程式碼如下:
#include <stdio.h> #include <stdlib.h> int main() { FILE * sourcefile; FILE * desfile; char c; sourcefile = fopen("/program/addoverflowDemo.c","r"); desfile = fopen("/program/test","w"); while((c = fgetc(sourcefile)) != EOF) { fputc(c,desfile); } fclose(sourcefile); fclose(desfile); return EXIT_SUCCESS; }
這是就OK了。
這時我注意到了,在我第二次向檔案test中輸出的時候,test檔案裡面的原有值,那麼,如何追加呢?
答:許可權部分使用引數“a+”,即開啟test檔案的時候,將開啟的許可權設為 “a+”
desfile = fopen("/program/test","a+");
OK!
敲定。
相關推薦
【RHEL 7】Samba服務實現檔案共享
1987年,微軟公司和英特爾公司共同制定了SMB(Server Messages Block,伺服器訊息塊)協議,旨在解決區域網內的檔案或印表機等資源的共享問題,這也使得在多個主機之間共享檔案變得越來越簡單。到了1991年,當時還在讀大學的Tridgwell為了解決Linux系統與Windo
【C語言】C語言實現檔案內容的複製
需求: fgetc fputc練習 /program檔案下面存在一個檔案 檔名為:addoverflowDemo.c 現在需要在該目錄下複製一個相同的檔案,檔名為test: 程式碼如下: #include <stdio.h> #include <std
【C語言】編寫函式實現庫函式atoi,把字串轉換成整形
//編寫函式實現庫函式atoi,把字串轉換成整形 #include <stdio.h> #include <string.h> int my_atoi(const char *
【c語言】遞迴實現n的k次方
問題描述: 如題。 分析: 1.n的k次=n*n*n*……*n(k個n),用遞迴的思想來講,就等於2.n的k次=n*(n的(k-1)次方) 程式碼如下: #include<stdi
【C語言】編寫函式實現:100-200素數的輸出
這裡面,先要理解素數如何求得,可用自己除以2到自己的前一位,根據餘數情況判斷是素數還是合數。優化:(1)從101開始,每次自加2,這樣提高效率一倍。(2)一直除以自己的平方根也可。#include<stdio.h> #include<math.h&g
【c語言】C語言配置檔案解析庫——iniparser
C語言配置檔案解析庫——iniparser 前言:在對專案的優化時,發現Linux下沒有專門的供給C語言使用的配置檔案函式,於是搜尋到了inipar
【資料結構】C語言最基礎練習:棧的初始化,壓棧,出棧,遍歷,清空
隨手練習一下,詳細程式碼解釋都在程式碼片裡請仔細看看 如果有什麼不對的地方,請在下方留言 先建立標頭檔案: #define _CRT_SECURE_NO_WARNINGS 1 #ifndef _TEST_H #define _TEST_H //棧的鏈式儲存結構;
【學習總結】C語言的const到底修飾誰
不足之處還請指正。 const修飾的誰? 要在程式設計中多正確的使用const來使程式變得更加健壯。 《高質量C++/C程式設計指南》 const是修飾誰? #include <stdio.h
【入門指導】C語言難嗎?最難啃的三塊硬骨頭
先來看一個網友的對話: C語言說難也不難,開始接觸就是學習基礎,資料型別,函式格式,指標等等。越學越深入,越學視野越寬闊,只要認真看書,聽講,下來多練習,不難。 記憶體佈局 指標公認最難理解的概念,也是讓很多初學者選擇放棄的直接原因 指標之所以難理解,因為指標本身就是一個變數
【易錯】C語言結構體記憶體對齊問題
對於一個結構體的位元組數大家有沒有遇到什麼疑問呢? 先看一個結構體: typedef struct Test { char a1; int a2; char a3; short a4; }Test_T; 在32位編譯系統下這一個結構體的位元組數是多少呢?是1+4
C語言(遞迴遍歷資料夾)實現檔案批量複製
大專案時時常需要抽出屬於自己編寫的那部分程式碼,從SVN下載後,往往需要一個個的進入資料夾下拿取相應的檔案。這樣很浪費時間,雖然使用bat編寫確實更快,但是我覺得使用C語言可能在檔案過多時會快一點,也是為了 練習練習。如果那裡存在問題,或是不足,歡迎指出。程式碼如下: #includ
【程式語言】C# 從菜鳥到高手
1 Overview 1.1 CLI common language infrastructure The .NET Framework, .NET Core, Mono, DotGNU and Portable.NET are implementations
【c語言】C語言楊輝三角
楊輝三角是我們從初中就知道的,現在,讓我們用C語言將它在計算機上顯示出來。 在初中,我們就知道,楊輝三角的兩個腰邊的數都是 1,其它位置的數都是上頂上兩個數之和。這就是我們用C語言寫楊輝三角的關鍵之一。 在高中的時候我們又知道,楊輝三角的任意一行都是的二項式係數,n 為行數減 1。也就是
【程式語言】C++繼承和派生類、虛基類
從已有的物件型別出發建立一種新的物件型別,使它部分或全部繼承原物件的特點和功能,這是面向物件設計方法中的基本特性之一。繼承不僅簡化了程式設計方法,顯著提高了軟體的重用性,而且還使得軟體更加容易維護。派生則是繼承的直接產物,它通過繼承已有的一個或多個類來產生一個新的類,通過派生
【C/C++筆記】 C語言運算子優先順序
文章作者:姜南(Slyar) 文章來源:Slyar Home (www.slyar.com) 轉載請註明,謝謝合作。單目運算子優先順序運算子名稱或含義使用形式結合方向說明1[]陣列下標陣列名[常量表達式]左到右()圓括號(表示式)/函式名(形參表).成員選擇(物件)物件.成員
【掃盲點】——C語言enum列舉型別、union共用體
一、列舉型別 enum: 在實際應用中,有的變數只有幾種可能取值。如人的性別只有兩種可能取值,星期只有七種可能取值。在 C 語言中對這樣取值比較特殊的變數可以定義為列舉型別。所謂列舉是指將變
【C語言】C語言的const與C++的const區別
C++中,const預設使用內部連線.而C中使用外部連線.內連線:編譯器只對正被編譯的檔案建立儲存空間,別的檔案可以使用相同的表示符或全域性變數.C/C++中內連線使用static關鍵字指定.外連線:所有被編譯過的檔案建立一片單獨儲存空間.一旦空間被建立,聯結器必須解決對這片儲存空間的引用.全域性變數和函式使
【C語言】C語言中格式化字元的具體用法(C語言中%的那些事)
格式字元格式字元用以指定輸出項的資料型別和輸出格式。 格式字元控制: 說明:的sprintf(格式化後的字元,“%(長度)格式符”,格式化前的字元); 1,d格式符用來輸出十進位制數有以下幾種用法。: (1),%d按整數的實際長度輸出。 (2),%M
利用C語言中的函式實現檔案的Copy
2.讀寫 (1).按字元進行讀寫操作 fgetc int fgetc(FILE *stream); 引數: @stream 流指標
【作業系統01】C語言利用CerateProcess建立程序
一個環境塊存在於一個由以NULL結尾的字串組成的塊中,這個塊也是以NULL結尾的。每個字串都是name=value的形式。因為相等標誌被當做分隔符,所以它不能被環境變數當做變數名。與其使用應用程式提供的環境塊,不如直接把這個引數設為空,系統驅動器上的當前目錄資訊不會被自動傳遞給新建立的程序。對於這個情況的探