c語言讀取 unicode文件操作(去掉2個文件重複的部分)

非常感謝這位博主,轉載地址:http://blog.csdn.net/tanlijun37/article/details/6723625

 

因爲要給一個人寫個去重的東西,我就想着最方便的原則,沒有任何優化就去寫了,唯一遇到的麻煩就是unicode 編碼的讀寫問題,c#貌似是默認是 utf-16的,那塊的文件操作我沒有接觸過,然後又想c++寫一個,所以就參考了上面的那個博客裏面的內容,以下是我的代碼。

 

 

#include <iostream>
#include <fstream>
#include <cstring>
#include <stdlib.h>
#include <cstdio>
#define SIZE1 50
using namespace std;
wchar_t s[30000][SIZE1];
int main()
{
	int i,len;
    FILE* file = _wfopen(L"a.txt", L"rb");
	FILE* file2 = _wfopen(L"b.txt",L"rb");
	FILE* file3 = _wfopen(L"c.txt",L"rb+");
	fseek(file,2,0);//這樣處理是因爲前2個位置是標明是什麼編碼(查到的資料貌似是這麼說滴)
	fseek(file2,2,0);
	fseek(file3,2,0);//這樣最後輸出的時候好像會在第一個位置多一個空格
    wchar_t line[SIZE1];
	i=0;
    while(fgetws(line, SIZE1, file) != NULL)
    {
		wcscpy (s[i++],line);
    }
	len=i;
	while(fgetws(line,SIZE1,file2)!=NULL)
	{
		for(i=0;i<len;i++)
		{
			if(wcscmp(line,s[i])==0)
				break;
		}
		if(i==len)
		{
			fputws(line,file3);
		}
	}
	system("pause");
    fclose(file);fclose(file2);fclose(file3);
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章