Chinaunix首页 | 论坛 | 博客
  • 博客访问: 346374
  • 博文数量: 168
  • 博客积分: 6895
  • 博客等级: 准将
  • 技术积分: 1726
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 23:01
文章分类

全部博文(168)

文章存档

2011年(6)

2010年(162)

我的朋友

分类: LINUX

2010-08-13 15:26:24

大家好:
       最近有个同学问了我一个问题,问题是这样,
一个文件中有这样的一些文字:
一发送打算大苏打似的,
帆阿似的阿所打算第三,
风阿似阿似的阿似的所,
顺阿所打算打算到了似。
注意这些文字在文件中如上,不要都连在一起,然后把每一行的第一个汉子,写到另一个文件,那么另一个文件中就会是:一帆风顺。我感觉问题的重点在汉子的编码方式,他在硬盘和内存中存储为一个字,但是我就是这样的思想,可以从文件中读出,但是写到另一个文件中就会出现乱码。
还是有些问题,贴上我的源码大家都互相参考一下,帮我解决一下,谢谢。
编码方式:
UCS 通用字符集(Universal Character Set,UCS)
Unicode(统一码、万国码、单一码、标准万国码)
UTF Unicode转换格式(Unicode Translation Format,简称为UTF)
还有相关的gbk,gb18030,big5,mbcs,utf8,utf16,utf32的区别


最终的源码如下:
//
从该代码发现了一个完整的汉字字符在C中需要三个字节才能正确表示,如果你把 ch[2] = buf[2];注释掉,会出现错误!

#include
#include
#include
#define        N    1000

int main( void )
{
    FILE    *fpf;
    FILE    *fps;


    int    i;
    int    Int_counter = 0;
    char buf[100];
    char ch[4];
    int flag = 0;

    if( NULL != ( fpf = fopen( "2", "at+" ) ) && NULL != ( fps = fopen( "3", "wt" ) ) )  //文件2中存有所有汉子。
    {
        while( 0 == feof( fpf ) )
        {
            flag = 0;
             fscanf(fpf,"%s\n",buf);
            printf("%s\n",buf);
            /*buf[3] = '\0';
            fprintf(fps,"%s",buf);*/   
            ch[0] = buf[0];
            ch[1] = buf[1];
            ch[2] = buf[2];
            fprintf(fps,"%s",ch);         //红颜色代码和蓝颜色代码功能一样,使用其一即可!
            printf("aaaaa\n");


        }
        printf( "\n" );


    }
    else
    {
        printf( "error!!!\n" );

        exit( EXIT_FAILURE );
    }

    putchar( '\n' );
    fclose( fpf );
    fclose( fps );
    return( false );
}

阅读(541) | 评论(0) | 转发(0) |
0

上一篇:redhat下如何搭建yum源

下一篇:栈再次理解

给主人留下些什么吧!~~