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;
}


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