请教,如何一个字符一个字符的读取中英文混合文本

请问,怎么一个字符一个字符的读取中英文混合文本?
本帖最后由 zhou007jie 于 2015-10-09 15:37:04 编辑
要一个字符一个字符的读取中英文混合的文本文件,要怎么写代码呢?
比如:
文本内容:d大家好,我是Tom!
如何逐个字符读取,第一次读取d,
第二次读取”大“,
第三次读取”家“,
……
纯C语言实现,最好读取utf8格式,谢谢!
------解决思路----------------------

#include <stdio.h>  
#include <string.h>  
    
int main()  
{  
    FILE* fp = fopen("test.txt", "wt+,ccs=UTF-8");  
    
    char* s = "hello, 你好!";  
    
    fwrite(s, sizeof(char), strlen(s), fp);  
    
    fclose(fp);  
    
    return 0;  
}  
------解决思路----------------------
运行情况见http://ideone.com/vq7WVD
代码

    #include <stdio.h>
    #define GetBit(num, n) ((num) >> (n) & 1)
    int GetByteType(int c) // 0表示附属字节,1表示1字节字符,2表示2字节字符的头部
    {
            if (GetBit(c, 7) == 0) return 1;
            else if (GetBit(c, 6) == 0) return 0;
            else if (GetBit(c, 5) == 0) return 2;
            else if (GetBit(c, 4) == 0) return 3;
            else if (GetBit(c, 3) == 0) return 4;
            else if (GetBit(c, 2) == 0) return 5;
            else if (GetBit(c, 1) == 0) return 6;
            else return -1;
    }
    int main()
    {
        int c;
        int count, max;
        for (; (c = fgetc(stdin)) != EOF;)
        {
            switch (GetByteType(c))
            {
            case 0: putchar(c); ++count; if (count == max) putchar('\n');break;
            case 1: putchar(c); putchar('\n'); break;
            default: putchar(c); count = 1; max = GetByteType(c); break;
            }
        }
        return 0;
    }