方法一:利用遞迴
/*
功能:檔案以行為單位,逆順輸出到新檔案
示例:file1.txt為:
1234
56要求逆順後輸出到檔案file2.txt,結果為:
5634
12*/#include #include // 遞迴讀取檔案
void doread(file *fp1, file *fp2, int next)
; if(next && fgets(buf, 1024, fp1) != null)
doread(fp1, fp2, next);
else if(next)
next = 0; // 讀到檔案尾
fwrite(buf, strlen(buf), 1, fp2); // 寫入新檔案
}int run(char *infile, char *outfile)
int main()
方法二:利用鍊錶(頭插入法)
考慮到逆序的思想就是後進先出,這與棧的功能非常相似,於是產生了下面這種解法:
/*
功能:演示了將檔案中的內容以行為單位,逆順輸出到另一檔案
思路:考慮到後進先出,採用類似於棧的思想
*/#include #include #include typedef struct _tagnode
node;
node* insert(node *head, char *line) // 頭插法建立鍊錶
void display(node *head)
}// 將檔案中的內容以行為單位逆順輸出到另一檔案
void reverse(file *fp1, file *fp2)
; node *head = null, *t = null;
// 讀檔案,建立鍊錶
while(fgets(line, 1024, fp1) != null) // fgets缺省會將換行符讀入到line中
// display(head);
// 順序讀取鍊錶,輸出內容到檔案,並釋放結點
while(head) }
int main()
reverse(fp1, fp2); // 將檔案中的內容以行為單位逆順輸出到另一檔案
fclose(fp1);
fclose(fp2);
return 0;
}
方法三:利用記憶體對映
/*
功能:利用記憶體對映將檔案中的內容以行為單位,逆順輸出到另一檔案
說明:如果最後一行無換行符,在輸出檔案中會被新增上去(否則會與第二行連在一起)
*/#include /* for mmap and munmap */
#include /* for open */
#include /* for open */
#include /* for open */
#include /* for lseek and write */ }
int main(int argc, char **ar**)
fd = open(ar**[1], o_rdonly, s_irusr | s_iwusr);
fd_out = open(ar**[2], o_wronly | o_creat, s_irusr | s_iwusr);
if(fd == -1 || fd_out == -1)
flength = lseek(fd, 0, seek_end); // 求得檔案長度
map_private, //不允許其它程序訪問此記憶體區域
fd, 0);
close(fd);
close(fd_out);
return 0;
}
GitLab上傳更新檔案
gitlab提交 existingfolder 進入準備提交的資料夾裡面,執行下面 如果已經提交之後第二次提交,需要先執行gitpush u origin master將 提交到庫裡面,然後在執行下面的 user.name後面跟的是當前使用者的名字 user.email後面跟的是當親使用者的郵箱 h...
shell獲取最新檔案
背景 交易所每天發檔案給券商,但是字首一樣,名字字尾為月日,但是節假日不一定在交易日生成某些檔案,所以需要獲取同名字最新生成的檔案 引數說明 a 顯示所有檔案及目錄 開頭的隱藏檔案也會列出 l 除檔名稱外,亦將檔案型態 許可權 擁有者 檔案大小等資訊詳細列出 r 將檔案以相反次序顯示 原定依英文本母...
無重新整理檔案上傳
ajax level 2 標準 可以對檔案操作,但是只支援新的瀏覽器 不相容低版本的ie 是h5標準 注意事項 表單大小 單個檔案上傳大小 實操 寫乙個form表單,但是需要注意的是,不為form表單設定 enctype屬性 為上傳的按鈕繫結乙個點選事件,完成ajax提交上傳檔案 利用formdat...