关于字符串中取出某些字符的操作

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

1个回答

首先说一说你这么写,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);

第一次回答问题如果不对欢迎各位大佬指正

TRYBYE
trybye short *a=NULL; *a=5; int *b=(int *)a;把指向short的a强制转换成指向int,值会变化吗
2 年多之前 回复
baij1230
baij1230 学习了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问