これはやや無意味かもしれませんが、皆さんがそれについてどう思うか興味があります。ポインターを使用して文字列を反復処理していて、そこから短い部分文字列を引き出したい(部分文字列を事前に割り当てられた一時配列に配置する)。strncopyよりも割り当てを使用する理由はありますか?またはその逆ですか?つまり
#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)であり、ヌル終了が保証されていると想定します。