今天写了一个关于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;
}