转自:http://blog.csdn.net/q553716434/archive/2011/04/23/6343119.aspx
android手机,触屏的居多,掉电也很快,新买的手机 编辑联系人数目多了也真累,还难得那么频繁的充电
使用 通讯录自带的“导出联系人“ --》 ”导出到SD卡“
我把导出来的 00001.vcf 文件搬到了 fedora系统环境下
用vim打开它,有发现,绝对有发现:
它的内容如下:
BEGIN:VCARD -------> 这一行是标准格式 起始处
VERSION:2.1 -------->版本号 如果把gmail的联系人导出到本地,这里版本号是 3.1
EMAIL;PREF:csdn****@126.com -------->前面的 EMAIL;PREF: 是固定格式
END:VCARD -------->标志一个联系人项目的结束
BEGIN:VCARD
VERSION:2.1
N:我;;;; --------> 联系人的不同 ”我“ 字发生改变
FN: ----------> first name
TEL;CELL:1-595-&&&-&&&& -------> TEL;CELL: 是固定格式,gmail上导出来的略有不同
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:爸;;;;
FN:
TEL;CELL:1-&&&-&&&-&&&&
END:VCARD
既然格式这么固定,那自然可以进行 ”格式化“ 输入,因此,我写了个 c 语言程序,实验一下:
#include <stdio.h>
int main( int argc, char **argv){
//char qname[10];
char name[30];
char num[20];
int exe = 1;
FILE *fp;
if( ( fp = fopen("0000.vcf","w") ) == NULL ){
printf( "open file failure !/n" );
exit( 0 );
}
printf("please input like: lqx李奇兴 1820101&&&&/n");
printf("input ( # # ) to quit/n");
fscanf(stdin,"%s%s",&name,&num);
if ( name[0] != '#' ){
exe = 1;
}else exe = 0;
// printf("%d/n",exe);
while ( exe ){
fputs( "BEGIN:VCARD/nVERSION:2.1/nN:" , fp );
fputs( name , fp );
fputs( ";;;;/n", fp );
fputs( "FN:" , fp );
// fputs(name,fp);
fputs( "/nTEL;CELL:" , fp );
fputs( num , fp );
fputs( "/nEND:VCARD/n" , fp );
fscanf( stdin , "%s%s", &name , &num );
if( name[0] != '#' ){
exe = 1;
}else
exe = 0;
}
fclose( fp );
return 0;
}
我把它编译指定输出为 : android_pb
然后 我直接 gedit一个文本,这里我名其为 in.txt
内容格式如下:
李奇兴lqx 1820101&&&& ------>习惯了名字后面加英文,便于查找(用惯了黑莓,呵呵)
csdn博客 1820101&&&&
# # ----->标志结束
在终端输入:
./android_pb < in.txt
执行完以后,在当前目录下生成了一个 0000.vcf文件,导入android手机测试,成功!!!
在这里,我实现的只是" 姓名 电话 "的输入格式,邮箱地址等我就没试了
另外,代码里面有个 qname 被注释掉了,因为之前打算是:
BEGIN:VCARD
VERSION:2.1
N:我;;;; --------> 这里汉字
FN: ----------> 这里英文
TEL;CELL:1-595-&&&-&&&& -----------> TEL;CELL: 是固定格式
但是生成的vcf导入手机以后,英文出来了,汉字不见了,额,没多想,直接用”姓名 电话“来输入了,有兴趣的朋友可以试一下
之所以这么整,是因为 在gmail上建联系人在导入手机,不仅需要上网同步,而且这个创建过程一只在点击鼠标,不爽
创建 vcf在本地直接导入多好,建一个 txt文本总比 繁琐点击鼠标强吧,呵呵
我是在fedora下试的,没在win下编写,之前想编写一个,然后生成一个 通用版的exe供网友方便使用,由于重装了win7.vc环境没了,懒得装了,反正是在linux下学习c的,故这一步工作没有做了,一字一字先敲这么些,哪位朋友要是做了一个,发我一个喽