這是乙個面試題,要求把類似下面的乙個檔案(a.txt)的行逆向複製到另乙個檔案(anew.txt)。如下,
a.txt:
------begin------ab
cdef
------end------
anew.txt
------end------fe
dcba
------begin------
下面是我寫的程式,利用了遞迴演算法。演算法描述在**後面
//c program
#include #include #include #define siz 1024
void reverse_line_copy(file *fp_in, file *fp_out)
; int first_line = (ftell(fp_in)==0l) ? 1 : 0; //the first_line
int last_line = 0; //the last_line
fgets(buf, siz, fp_in); //read a line to buf
last_line = feof(fp_in)!=0;
reverse_line_copy(fp_in, fp_out); //遞迴
if (first_line && !last_line && strlen(buf)!=0) //first_line
buf[strlen(buf)-1] = '\0';
else if (last_line && !first_line) //last_line
buf[strlen(buf)] = '\n';
fputs(buf, fp_out); }}
int main(void)
if ((file_out=fopen("anew.txt", "w+"))==null)
reverse_line_copy(file_in, file_out);
fclose(file_in);
fclose(file_out);
return 0;
}
演算法描述:
(1)本演算法的主體是函式reverse_line_copy依據這個遞迴演算法,也可以用c++程式實現,稍微簡單一點!雖說程式簡單,但下面這個程式也揭示了乙個大家不太關注的細節。(2)遞迴過程是:現在我要把1~n行字元逆向複製到別的檔案中,那麼我假定:如果能先把2~n行逆向複製到別的檔案中,然後再把第一行複製到檔案後,那麼這個任務就算完成了。同理,逆向複製2~n行用的辦法正是最開始的演算法,從而形成遞迴呼叫。
(3)reverser_line_copy函式,先讀取第一行,檔案指標fp_in隨即跳到第二行,然後遞迴呼叫reverser_line_copy函式,最後把第一行複製進檔案中。完成!
//c++ program
#include #include #include #include using namespace std;
void reverse_line_copy(ifstream &inf, ofstream &outf);
int main()
ofstream file_out("anew.txt");
if (!file_out)
reverse_line_copy(file_in, file_out);
file_in.close();
file_out.close();
return 0;
}void reverse_line_copy(ifstream &inf, ofstream &outf)
}
上面這段c++程式之所以簡單一些,是因為:
c程式裡的讀一行的函式fgets()返回的字串裡包含行末的換行符;而c++程式裡的getline()不返回行末的換行符。
又鑑於c++提供的方便的流操作和容量可擴充套件的容器,下面又提供了乙個c++程式的順序實現演算法。
//c++ program
#include #include #include #include using namespace std;
int main()
dequefile_deque;
string aline;
while (file_in.good())
file_in.close();
ofstream file_out("anew.txt");
if (!file_out)
while(!file_deque.empty())
file_out.close();
return 0;
}
複製乙個檔案或者從乙個資源獲取乙個檔案並複製
複製乙個檔案或者從乙個資源獲取乙個檔案並複製 param unknown type source 乙個檔名或者乙個資源,如 source param unknown type fname 另存為的檔名 function copy from source source,fname fwrite fil...
乙個簡單的逆向
首先執行程式觀察程式的提示資訊 可以看到程式首先 乙個字串提示 隨便輸乙個 出現另乙個字串u r wrong 然後 od引導程式,字串查詢 看到提示的字串,單擊進入f2 下段點,執行程式,斷在 單步 跟下來 讀取字元函式getch 隨便輸入乙個假碼,eax 的值正是輸入的假碼ascii的碼,可以看出...
讀tfrecords檔案,乙個乙個讀 按批次讀
import tensorflow as tf import matplotlib.pyplot as plt tfrecords file home lw workspace microvideolstm tfrecorddata videoframe.tfrecords filename que...