技能大賽,要求將6g的txt文件進行拆分,而且不能截斷一行的數據。本身沒有作出來,如下是別人的代碼:linux
#include<iostream> #include <fstream> #include<string> #include<stdio.h> #include<stdlib.h> using namespace std; int main( ) { double num; double lengthnum; double linesize; string filepath; char strsys[100]; char buffer[512]; cout << "請輸入拆分文件個數:" << endl; cin >> num; cout << "請輸入拆分文件名稱:" << endl; cin >> filepath; ifstream in(filepath.c_str(), ios::in); if(!in) { cout << "文件打開錯誤!" << endl; return -1; } in.getline (buffer,512); linesize = strlen(buffer); //cout << linesize << endl; in.seekg(0,ios::end); double size_t = in.tellg(); lengthnum = size_t/num/linesize; cout << "拆文件開始!" << endl; sprintf(strsys,"split -l %0.0lf %s outfile",lengthnum,filepath.c_str()); //cout << strsys << endl; system(strsys); cout << "拆文件結束!" << endl; in.close(); return 0; }
能夠看到最終仍是用到了linux下的split命令。ios
還有大神直接用shell寫了一個腳本:shell
#!/bin/sh if [ -z "$1" ] || [ -z "$2" ] ; then echo "Ussage:fg.sh 文件名 個數" else lines=$(awk '{print NR}' $1 | tail -n 1) mod=$[$lines % $2] if [ $mod>0 ]; then line=$[$lines/$2+1] else line=$[$lines/$2] fi split -$line $1 fi
在想是否有windows版。windows