10

私は2つの文字列を持っているとしましょう

char str_cp[50],str[50];
str[]="how are you"  

2 番目の単語 ex "are" を str_cp という名前の別の文字列に入れたいので、

printf("%s ,%s",str,str_cp); 

のようになります

how are you 
are 

どうやってやるの?(strncpy関数を試しましたが、文字列の先頭から特定の文字のみをコピーできます)文字列の4番目の文字を指すポインターを使用し、それをstrncpy関数で使用して最初の3文字をコピーする方法はありますが、はじまりは4キャラ目?

4

1 に答える 1

21

strncpy 関数を試してみましたが、文字列の先頭から特定の文字だけをコピーできます

strcpy関数ファミリーは、コピーするように指示した時点からコピーします。たとえば、5 文字目からコピーするには、次のように使用できます。

strncpy(dest, &src[5], 3);

また

strncpy(dest, src+5, 3); // Same as above, using pointer arithmetic

ソース文字列の最後にヒットしない限り、文字列を null で終了しないstrncpyことに注意してください。

source が num よりも長い場合、destination の最後に null 文字が暗黙的に追加されることはありません (したがって、この場合、destination は null で終了する C 文字列ではない可能性があります)。

結果を自分で null で終了する必要があります。

strncpy(dest, &src[5], 3);
dest[3] = '\0';
于 2012-12-26T14:38:22.047 に答える