【问题标题】:how to get substring from a bigger string in c? [duplicate]如何从c中的较大字符串中获取子字符串? [复制]
【发布时间】:2014-02-13 01:53:33
【问题描述】:

在java中我们可以使用

sting_name.substring(start, end); 

获取一个新的子串

    String full_line = "this is a simple line.";
    String part_line;
    System.out.println(full_line);
    part_line = full_line.substring(10, 16);
    System.out.println(part_line);

如何在 c 中做同样的事情?有没有类似substring的函数?

char full_line[] = "this is a simple line" ;
char part_line[20];
printf("\n%s\n",full_line);
//part_line ;

【问题讨论】:

  • 指针算术和memcpy()Example.
  • 使用strncpy 作为子字符串

标签: c string substring


【解决方案1】:

使用strncpy

例子

#include <stdio.h>
#include <string.h>

int main()
{
   char src[40];
   char dest[12];

   memset(dest, '\0', sizeof(dest));
   strcpy(src, "This is tutorialspoint.com");
   strncpy(dest, src+2, 10);

   printf("Final copied string : %s\n", dest);

   return(0);
}

【讨论】:

  • 为什么大家都投malloc()的返回值...!?
  • 这个答案是非常错误的。 (事实上​​:几乎每次使用 strncpy() 都是错误的)
  • @H2CO3 - 这只是我抓到的第一个例子。我把它改成了一个更直接的例子
  • 另外,原始版本是否抄袭了其他答案,反之亦然?直到最近,他们的内容都是一样的。
  • @wildplasser - 发布您的解决方案作为答案。不止一种给猫剥皮的方法。
【解决方案2】:

Get a substring of a char*

查看上面的链接后,我尝试了这个: 只是想确定这是否是正确的方法还是有缺点?

char full_line[] = "this is a simple line" ;
char part_line[20];
printf("\n%s\n",full_line);
memcpy( part_line, &full_line[10], 6);
part_line[6+1] = '\0';
printf("\n%s\n",part_line); 

【讨论】:

    猜你喜欢
    • 2014-07-11
    • 2022-08-19
    • 1970-01-01
    • 2011-11-30
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多