在界面上需要显示系统时间,从系统读到的系统时间为英文格式,格式形如“2015-10-24 23:20:18 Saturday”,要把它转换成中文格式,形如“2015-10-24 23:20:18 星期六”,即要把星期的英文替换成中文,需要用到c库中的strlen,strncpy,strstr,strcat四个函数(包含string头文件),分别对应取串长、串拷贝、串比较、串合并。
需要注意的是:1)字符串的结尾要加‘\0’表示结束
2)字符数组可以每个元素赋值,字符串只能整体赋值
3)在字符串的比较中不能用switch---case结构,因为此结构只能作用于基本数据类型
//#include <linux/types.h>
//#include <fcntl.h>
//#include <unistd.h>
//#include <stdlib.h>
//#include <sys/types.h>
//#include <sys/ioctl.h>
//#include <errno.h>
//#include <assert.h>
#include <stdio.h>
#include <string.h>
char* str = "2015-10-20 11:25:18 Saturday";
int main()
{
char str1[30],str2[30];//
char* str3; //str1,str2,str3定义的区别
int n = 19;
strncpy(str1,str,n);
*(str1 + n) = '\0';//字符串结尾
strncpy(str2,str+n,strlen(str)-n+1);
*(str2 + strlen(str)-n) = '\0';
if( strstr(str2," Monday") ) //此处不能用switch case结构
{
str3 = " 星期一";
}
if( strstr(str2," Tuesday") )
{
str3 = " 星期二";
}
if( strstr(str2," Wenesday") )
{
str3 = " 星期三";
}
if( strstr(str2," Thruesday") )
{
str3 = " 星期四";
}
if( strstr(str2," Friday") )
{
str3 = " 星期五";
}
if( strstr(str2," Saturday") )
{
str3 = " 星期六";
}
if( strstr(str2," Sunday") )
{
str3 = " 星期天";
}
strcat(str1,str3);
printf("%s\n",str1);
}