1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C实现从指定位置开始截取字符串指定长度

C实现从指定位置开始截取字符串指定长度

时间:2019-08-08 04:42:40

相关推荐

C实现从指定位置开始截取字符串指定长度

C标准库中没有从某位置开始指定长度子字符串的函数,但可用函数 strncpy 实现。

1. strncpy介绍

strncpy原型:char *strncpy(char *dest, const char *src, size_t n)

功能:C库函数strncpy 把 src 所指向的字符串复制到 dest,最多复制 n 个字符。

当 src 的长度小于 n 时,dest 的剩余部分将用空字节(NUL字节 / \0)填充(NUL即‘\0’)。

当 strlen(src)的值>=n时,那么只有len个字符被复制到dst中,注意!它的结果将不会以NUL字节结尾(容易造成数组越界)。

int GetFixedIntervalTime(){unsigned int day = 0;unsigned int hour = 0;unsigned int min = 0;char time_buff[16]="";char stmp[8];fv_dev_manager_cfg_get(FIXED_REBOOT_UPTIME_DAY,time_buff); day = atoi(time_buff);memset(time_buff, 0, sizeof(time_buff));fv_dev_manager_cfg_get(FIXED_REBOOT_TIME,time_buff);/* 0907;1010 */memset(stmp, 0, sizeof(stmp));strncpy(stmp, time_buff, 2);//从time_buff开始位置截取2个字符长度,到stmpstmp[7] = '\0';//即使赋值满8个字节,也要将最后一位置为\0,防止访问越界。hour = atoi(stmp);//atoi(09)=9;memset(stmp, 0, sizeof(stmp));strncpy(stmp, time_buff+2, 2);//从time_buff第3个字符位置开启截取2个字符长度,到stmpstmp[7] = '\0';//即使赋值满8个字节,也要将最后一位置为\0,防止访问越界。min = atoi(stmp);//atoi(07)=7;return (day*24*60*60 + hour*60*60 + min*60);}

注意:

1)char stmp[8]="";

2)char stmp[8]; memset(stmp, 0, sizeof(stmp));

区别:相同点都是初始化

不同点:2)memset会将每个字符位置均初始化为\0, 操作:strncpy(stmp, time_buff, 2); stmp[7] = '\0'; 之后stmp下标从3-6 均不会 产生随机数。

1)操作:strncpy(stmp, time_buff, 2); stmp[7] = '\0'; 之后stmp下标从3-6 可能 会产生随机数

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。