C语言 安卓生成utf8.txt字库
安卓根目录-绝对路径
需要声明头文件 #include<stdio.h>
FILE *fpWrite=fopen("/storage/emulated/0/366/data.txt","a+");//创建一个文件类型的指针,对文件以可写的权限打开
if(fpWrite==NULL) { //判断文件指针是否存在,不存在就退出
printf("路径错误!");
return 0;
}
fprintf(fpWrite,"%c",utf8_bin[0]); //把utf8_bin[0])中的变量写入文件
操作模式 | 解释 |
---|---|
r | 打开一个已有的文本文件,允许读取文件。 |
w | 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会从文件的开头写入内容。如果文件存在,则该会被截断为零长度,重新写入。 |
a | 打开一个文本文件,以追加模式写入文件。如果文件不存在,则会创建一个新文件。在这里,您的程序会在已有的文件内容中追加内容。 |
r+ | 打开一个文本文件,允许读写文件。 |
w+ | 打开一个文本文件,允许读写文件。如果文件已存在,则文件会被截断为零长度,如果文件不存在,则会创建一个新文件。 |
a+ | 打开一个文本文件,允许读写文件。如果文件不存在,则会创建一个新文件。读取会从文件的开头开始,写入则只能是追加模式。 |
#include<stdio.h>
#include<string.h>
unsigned char utf8_bin[4]; //申明一个字节 char类型的数组
unsigned int txt[11];
unsigned char utf8_bin_temp_u8;//申明一个字节的缓存变量
unsigned short utf8_bin_temp_u16; //申明2字节的缓存变量 更具操作系统选择变量类型
void utf8_to_bin(unsigned int byte) { //输入四个字节的整数 将转换后的结果储存在utf8_bin[4]数组中
if(byte<=127) { //转换长度为一个字节的整数
utf8_bin[0]=byte;
};//1字节
if(128<=byte && byte<=2047) { //转换长度为2字节的整数
utf8_bin[0]=utf8_bin[0]|0xc0;
utf8_bin[0]=utf8_bin[0]|byte>>6;
utf8_bin_temp_u8=byte;
utf8_bin_temp_u8=utf8_bin_temp_u8<<2;
utf8_bin_temp_u8=utf8_bin_temp_u8>>2;
utf8_bin[1]=utf8_bin[1]|0x80;
utf8_bin[1]=utf8_bin[1]|utf8_bin_temp_u8;
}
if(2048<=byte && byte<=65535) { //转换长度为3字节的整数
utf8_bin[0]=utf8_bin[0]|0xe0;
utf8_bin[0]=utf8_bin[0]|(byte>>12);
utf8_bin_temp_u16=byte;
utf8_bin_temp_u16=utf8_bin_temp_u16<<4;
utf8_bin_temp_u16=utf8_bin_temp_u16>>10;
utf8_bin[1]=utf8_bin[1]|0x80;
utf8_bin[1]=utf8_bin[1]|utf8_bin_temp_u16;
utf8_bin_temp_u8=byte;
utf8_bin_temp_u8=utf8_bin_temp_u8<<2;
utf8_bin_temp_u8=utf8_bin_temp_u8>>2;
utf8_bin[2]=utf8_bin[2]|0x80;
utf8_bin[2]=utf8_bin[2]|utf8_bin_temp_u8;
}
//if(65536<=byte && byte<=1114111){}//转换长度为四字节的整数
}
int main()
{
txt[0]=26149;
txt[1]=30496;
txt[2]=19981;
txt[3]=35273;
txt[4]=26195;
txt[5]=65292;
txt[6]=22788;
txt[7]=22788;
txt[8]=38395;
txt[9]=21884;
txt[10]=40479;
char str1[100];//这个数组是用于输入文件
FILE *fpWrite=fopen("/storage/emulated/0/366/data.txt","a+");//创建一个文件类型的指针,对文件以可写的权限打开
if(fpWrite==NULL) {
printf("路径错误!");
return 0;
}
//
printf("请输入你要写进data文件的内容:");
//gets(str1);//输入对应数据
for(int i=33; i<128; i++) {
utf8_to_bin(i);
fprintf(fpWrite,"%c",utf8_bin[0]);//打印显示出刚刚写入的文件
}
for(int i=128; i<2048; i++) {
utf8_to_bin(i);
for(int ii=0; ii<2; ii++) {
fprintf(fpWrite,"%c",utf8_bin[ii]);//打印显示出刚刚写入的文件
}
}
for(int i=2048; i<65536; i++) {
utf8_to_bin(i);
for(int ii=0; ii<3; ii++) {
fprintf(fpWrite,"%c",utf8_bin[ii]);//打印显示出刚刚写入的文件
}
}
fclose(fpWrite);//将创建的指针删除
}