我有stringchar * buff
并想研究它的susbtring(从buff + x
到buff + 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/