Welcome to Leon's Blog  
日历
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 30
  • 文章 - 0
  • 评论 - 51
  • 引用 - 0

导航

常用链接

留言簿(4)

随笔分类

随笔档案

ACM

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
今天写了一个关于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, 
0sizeof(arr));

    }
    cout 
<< endl;
    fs.close();
    fw.close();
    
return 0;
}


posted on 2009-04-10 11:02 Leon916 阅读(1578) 评论(1)  编辑 收藏 引用 所属分类: c++学习
评论:
  • # re: C语言文件读写  ablajan Posted @ 2009-07-28 13:25
    这是用通过调用c语言的库文件来实现。
    以下是用C++的中的stream来实现的,但是在处理中文的时候,会出现一些乱码。
      回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


 
Copyright © Leon916 Powered by: 博客园 模板提供:沪江博客