将字符串的一部分拷贝到另一个字符串
主要3中实现方式:strncpy()、string类、memcpy()
通过string实现更方便。
1、strcpy()
无法实现将字符串的一部分拷贝给另一个字符串。
2、strncpy()
利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中。strncpy()函数有3个参数:第一个参数是目录字符串;第二个参 数是源字符串;第三个参数是一个整数,代表要从源字符串拷贝到目标字符串中的字符数。以下是一个用strncpy()函数拷贝字符串的一部分的例子:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char buf[20]="6.0 1257487794/n";
char da[5]={0};
char num[15]={0};
int i=0, j=0;
strncpy(da, buf, 3);
strncpy(num, buf+(strlen(buf)-11) , 10);
printf("buf= %s, da= %s, num= %s/n", buf, da, num);
return 1;
}
在上例中,第一次调用strncpy()函数时,它将源字符串的头3个字符拷贝到da中。第二次调用strncpy()函数时,它将源字符串的最后10个字符拷贝到num中,其实现过程为:
(1)用strlen()函数计算出buf字符串的长度,即strlen(buf)。
(2)将buf的长度减去11(10是将要拷贝的字符数再加中间的‘ ’字符),得出buf中剩余的字符数,即pstrlen(buf)-11。
(3)将strlen(buf)-11和buf的地址相加,得出指向buf中倒数第10个字符的地址的指针, 即buf+(strlen(buf)-11)。这个指针就是strncpy()函数的第二个参数。
(4)在strncpy()函数的第三个参数中指定要拷贝的字符是10。
打印输出如下所示:
wangwei@wangwei-desktop:~/work/data_check$ ./test
buf= 6.0 1257487794
, da= 6.0, num= 1257487794
3、memcpy()
4、string
string类的构造函数
string(const string &str,string size_type pos=0,size_type n=npos)
将一个string对象初始化为对象 str中从位置pos开始到结尾的字符, 或者从位置开始的n个字符。
int loc1 = im_name.find_last_of('\\');int nameLen = sizeof(im_name);string imgName(im_name,loc1+1);
im_name为某图片的绝对全路径, 通过string类的查找函数 找到最后一个文件夹的反斜杠,得到索引后,利用string类的 构造函数,即可实现
将 im_name的字符串中的图像文件名 提取到 新的字符串 imgName中。
将字符串的一部分拷贝到另一个字符串相关推荐
- 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个...
2019独角兽企业重金招聘Python工程师标准>>> 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如"我ABC ...
- Python统计一个字符串中所有字符在另一个字符串出现的总次数
代码功能:统计一个字符串中所有字符在另一个字符串中出现的总次数. 技术要点:函数式编程. 可能的应用:垃圾邮件分类.在大部分垃圾邮件中,为了防止被分类为垃圾邮件,会在一些关键字中间插入类似于[.].* ...
- 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串。 但是要保证汉字不被截半个。
题目: 编写一个截取字符串的函数,输入为一个字符串和字节数, 输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4, 应该截为"我AB",输入 ...
- 函数 —— strncpy() (内存重叠) memcpy() memmove() 一个字符串拷贝给另一个字符串
char *strncpy(char *dest, const char *src, size_t n) *strncpy(char *dest, const char *src, size_t n) ...
- python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串...
1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...
- c语言判断回文字符串递归,用递归实现判断一个字符串是否为回文串
//用递归实现判断一个字符串是否为回文串 import java.util.Scanner; public class Palindrome { //判断是否为回文串 in型参数代表字符串起止位置 p ...
- mysql 长度为1 的空字符串_MYSQL,如果定义了一个字符串的字段,长度为255,那么当我添加一个空字符串数据时占用空间吗?...
你的位置: 问答吧 -> PHP -> 问题详情 MYSQL,如果定义了一个字符串的字段,长度为255,那么当我添加一个空字符串数据时占用空间吗? MYSQL,如果定义了一个字符串的字段, ...
- aspx 判断字符串是否为decimal_python实现判断一个字符串是否是合法IP地址
一个刚结束的笔试题目,简单贴一下吧,下面是具体实现: #!usr/bin/env python#encoding:utf-8 '''__Author__:沂水寒城功能:判断一个字符串是否是合法IP地址 ...
- Java中找出s字符串的回文_给定一个字符串 s,找到 s 中最长的回文子串。
题目描述:给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路: 判断s[i..j]是否是回文字符串,依赖于s[i+1...j-1],这种一个问题的结果依赖于 ...
最新文章
- SVN更换修改用户名
- Eclipse上GIT插件EGIT使用手册
- Android MVP模式就是这么回事儿
- fotify php审计,代码安全审计(二)Fortify介绍及使用教程
- 顶级程序员的心得 Coders at Work (I)
- 应用数仓ODBC前,这些问题你需要先了解一下
- 在28岁这一年,我也成为了一名创业狗
- 解决Ubuntu16.04中文乱码问题
- 和is哪个好_眼霜哪个牌子好用?这些品牌的眼霜睡前涂一涂,黑眼圈细纹没有了...
- 计算机丢失lua51dll怎么修复,lua51.dll
- VS Code安装,配置keil安装,Proteus8.6
- 经纬度格式转换-(互转 度转度分秒 度分秒转度……)
- hbase数据库scan操作_HBase Scan 使用
- mysql 空闲链接超时时间_解决mysql 中共8小时空闲后连接超时的有关问题
- 计算机网络考研、招聘面试问题总结
- 采用busybox的嵌入式Linux根文件系统的的制作方法
- 华为鸿蒙系统建立生态链的环境,华为自研操作系统,怎么构建生态?感觉太难了?...
- 基于ssm+mysql的javaee微博博客系统,Java实现类似新浪微博网站、朋友圈分享系统
- 哪种护眼灯对眼睛比较好?眼科医生推荐的护眼灯
- 基于 jsp+servlet+mysql 开发旅游推介网站和后台管理系统(maven项目)
热门文章
- MySql 中 一次update更新多条数据
- AVM 环视拼接方法介绍
- Google最热门60款开源项目
- Latex出现错误:File ‘citesort.sty‘ not found.
- 大型网站数据库优化及浅析大型网站的架构
- 异常解决:java.lang.IllegalStateException: Failed to introspect Class
- hessian矩阵特征值
- 小帅一点资讯小程序源码
- UML时序图画法简介-sequenceDiagram
- mmap()、munmap()的用法、例子