我有字符串char * buff
,想要处理其字符串(从buff + x
到buff + y
。
我是否必须将此sting复制到其他变量?或者有没有更好的方法来达到它?
现在我只想将这个子字符串写入文件。
答案 0 :(得分:3)
不,只是按照你的意愿直接写:
fwrite(buff + x, y - x + 1, 1, my_file);
顺便说一句,上面假设是一个封闭的间隔,如果你的意思是半开,你需要删除+ 1
。例如,对于const char *buff = "hello, world";
,如果"world"
和x = 7
,则上面会写y = 12
。
写入将从缓冲区的“切片”完成,因为您只需要对fwrite()
说。当然,它不知道它收到的数据是更大的一部分。
作为注释中的指针,上面将切片视为二进制数据,如果它实际上是一个字符串,则可能是坏的。在那种情况下,能够使用例如使用fprintf()
的{{1}},您应该使用动态格式字符串(您需要%s
,其中N是%.Ns
):
y - x + 1