定义一个这样的字符串 char * arr="中国ABC=你好HI",
可以这样操作吧‘中’字给提取出来吗
short *psh;
strncpy(psh,arr,2);能实现吗
如果要提取出来‘国’是不是可以这样strncpy(psh,arr+2,2);

关于字符串中取出某些字符的操作
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- long_long_later 2017-06-18 02:48关注
首先说一说你这么写,strncpy里面的第一个参数是char型的,所以你应该这样定义char * psh,
然后你直接用strncpy赋值这是不行的,因为你上面的psh指针并没有给它内存,你直接赋值之后
赋值的内容放在那里呢?你应该先动态分配内存psh = (char *)malloc(50);这样就给psh50个字节的内存
之后你再赋值,赋值的内容就会放到这个内存里面去,之后赋值之后因为并没有把结束符\0复制过来最后应该加一个
*(arr + 2) = '\0';这样就能实现你想要的效果了,提出国字和上面差不多,唯一的区别就是把strncpy里面的arr改成arr + 2最后加一个*(arr + 4)= '\0';记得最后释放内存,free(psh);具体程序如下
/* 打印中字 */
char * arr = "中国ABC=你好HI";
char * psh;
psh = (char *)malloc(50);
strncpy(psh, arr, 2);
*(arr + 2) = '\0';
printf("%s", psh);free(psh);
/* 打印国字 */
char * arr = "中国ABC=你好HI";
char * psh;
psh = (char *)malloc(50);
strncpy(psh, arr + 2, 2);
*(psh + 4) = '\0';
printf("%s", psh);free(psh);
第一次回答问题如果不对欢迎各位大佬指正
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报