我有stringchar * buff并想研究它的susbtring(从buff + xbuff + y)。
我需要把这个刺复制到其他变量吗?或者有更好的方法可以到达吗?
现在我只想把这个子字符串写到一个文件中。

最佳答案

不,直接按你的意愿写:

fwrite(buff + x, y - x + 1, 1, my_file);

顺便说一句,上面的假设是一个封闭的时间间隔,如果你是说半开的话,你需要删除+ 1。例如,使用const char *buff = "hello, world";时,如果"world"x = 7,上面的命令将写入y = 12
写入将从缓冲区的“切片”完成,因为这就是您对fwrite()所说的全部。当然,它不知道它接收到的数据是更大数据的一部分。
作为注释中的指针,上面将切片视为二进制数据,如果它真的是一个字符串,那么它可能是不好的。在这种情况下,为了能够与fprintf()一起使用,您应该使用动态格式字符串(需要%s,其中N是%.Ns):
static int substring_print(const char *s, size_t start, size_t end)
{
  char fmt[16];

  snprintf(fmt, sizeof fmt, "%%.%us", end - start + 1);
  fprintf(stdout, fmt, s + start);
}

关于c - 使用子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20215099/

10-13 07:13