[英]Copy a section of a string into buffer in C
我有一個char buffer[ 32 ];
並且有一個sourceString
,我不確定它是如何定義的,但我認為這並不重要。
sourceString
是"abcdefgh"
要將"cdef"
復制到緩沖區中,我使用了snprintf
:
snprintf( buffer, 4 + 1, "%s", sourceString + 2 );
其中 4 是復制部分的大小,2 是該部分中第一個字符的索引
它有效,但我擔心一些導致問題的事情:
sourceString + 2
不會修改sourceString
或者是嗎? 我不明白這到底是如何工作的。#define BUFFER_LEN 32
#define SOURCE_SUBSTR_LEN 4
#define SOURCE_OFFSET 2
char buffer[BUFFER_LEN];
...
不,它只是從字符串的開頭計算一個 2 個元素的地址。 如果您願意,也可以將其表示為&sourceSring[2]
。
No. Memory 泄漏通常意味着堆分配的 memory(malloc、realloc、calloc)和buffer[32]
在編譯時分配(在堆棧上)。
考慮使用strncpy
(或memcpy
)而不是snprintf
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.