这可能有点毫无意义,但我很好奇你们对此有何看法。我正在使用指针迭代一个字符串,并希望从中提取一个短子字符串(将子字符串放入预先分配的临时数组中)。是否有任何理由在 strncopy 上使用赋值,反之亦然?IE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{ char orig[] = "Hello. I am looking for Molly.";
/* Strings to store the copies
* Pretend that strings had some prior value, ensure null-termination */
char cpy1[4] = "huh\0";
char cpy2[4] = "huh\0";
/* Pointer to simulate iteration over a string */
char *startptr = orig + 2;
int length = 3;
int i;
/* Using strncopy */
strncpy(cpy1, startptr, length);
/* Using assignment operator */
for (i = 0; i < length; i++)
{ cpy2[i] = *(startptr + i);
}
/* Display Results */
printf("strncpy result:\n");
printf("%s\n\n", cpy1);
printf("loop result:\n");
printf("%s\n", cpy2);
}
在我看来, strncopy 的输入更少而且更容易阅读,但我看到人们提倡使用循环。有区别吗?这还重要吗?假设这是针对 i (0 < i < 5) 的小值,并且保证了空终止。
参考:c 中的字符串,如何获取子字符串,如何获取 C 中的子字符串, strncpy 和 memcpy 之间的区别?