trybye 2017-06-18 01:50 采纳率: 0%
浏览 1043
已采纳

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

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

  • 写回答

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);

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python