今天写了一个关于C语言读写的小程序,代码如下:
int main(int argc, char *argv[])
{
FILE *file;
FILE *fw;
if( (file = fopen("main.cpp", "r")) == NULL)
return -1;
if( (fw = fopen("text.txt", "wt")) == NULL)
return -1;
char ch;
while( (ch=fgetc(file)) != EOF )
{
fputc(ch, fw);
printf("%c", ch);
}
fclose(file);
fclose(fw);
return 0;
}
//char ch[LEN] = {0};
//while( !feof(file) )
//{
// fread(ch, sizeof(char), LEN-1, file);
// printf("%s", ch);
// fwrite(ch, sizeof(char), LEN-1, fw);
// memset(ch, 0, sizeof(char)*LEN);
//}
这是用通过调用c语言的库文件来实现。
以下是用C++的中的stream来实现的,但是在处理中文的时候,会出现一些乱码。
//fstream fs;
// fs.open(_T("文本.txt"));
//
// char arr[LEN] = {0};
// wchar_t temp[2*LEN+1] = {0};
// int length;
// if(!fs)
// {
// cout << "Error" << endl;
// return -1;
// }
//while(!fs.eof())
//{
// fs.read(arr, sizeof(arr)-1);
// length = MultiByteToWideChar(CP_ACP, 0, arr, -1, NULL, NULL);
// MultiByteToWideChar(CP_ACP, 0, arr, -1, temp, length);
// wcout.imbue(locale("chs"));
// wcout << temp;
//}
但是通过char类型进行读写却不出现乱码,感觉很奇怪。
int main(int argc, char *argv[])
{
fstream fs;
fs.open(_T("文本.txt"));
fstream fw;
fw.open("text.txt");
char arr[LEN] = {0};
wchar_t temp[2*LEN+1] = {0};
int length;
if(!fs || !fw)
{
cout << "Error" << endl;
return -1;
}
while(!fs.eof())
{
fs.read(arr, sizeof(arr)-1);
cout << arr;
fw.write(arr, sizeof(arr)-1);
memset(arr, 0, sizeof(arr));
}
cout << endl;
fs.close();
fw.close();
return 0;
}