C / C ++でstrncpyが安全でないと想定するのはなぜですか?
関数strncpy()は、指定された文字数をソースから宛先にコピーするために使用されます。
以下はstrncpy()
の構文です。char *strncpy( char *destination, char *source, size_t n);
ここで、destinationは、ソース文字列がコピーされる宛先配列へのポインタ、sourceはコピーされる文字列、nはソース文字列からコピーされる最大文字数です。
strncpy()関数は安全ではありません。これは、ソース文字列の最初のn文字でNULL文字が使用できない場合、宛先文字列がNULLで終了しないためです。
C ++でstrncpy()を示すプログラムは次のとおりです。
例
#include <iostream> #include <cstring> using namespace std; int main () { char source[20] = "This is a string"; char dest[20]; strncpy(dest, source, 4); cout << "The destination string is: " << dest; return 0; }
出力
The destination string is: This
上記のプログラムを理解しましょう。
ソース文字列には、「これは文字列です」というデータが含まれています。次に、strncpy()を使用して、最初の4文字を宛先文字列にコピーします。次に、宛先文字列の内容が出力されます。これを示すコードスニペットは次のとおりです。
char source[20] = "This is a string"; char dest[20]; strncpy(dest, source, 4); cout << "The destination string is: " << dest;
-
C言語のstrncpy()関数とは何ですか?
Cライブラリ関数char* strncpy(char * dest、const char * src、size_t n) src が指す文字列から、最大n文字をコピーします 宛先へ 。 srcの長さがnの長さよりも短い場合、destの残りの部分はnullバイトで埋められます。 文字の配列は文字列と呼ばれます。 宣言 以下は配列の宣言です- char stringname [size]; 例-charstring[50];長さ50文字の文字列 初期化 単一文字定数の使用- char string[10] = { ‘H’, ‘e’, &l
-
C /C++で文字列を反転します
これはC言語で文字列を逆にする例です 例 #include<stdio.h> #include<string.h> int main() { char s[50], t; int i = 0, j = 0; printf("\nEnter the string to reverse :"); gets(s); j = strlen(s) - 1; while (i < j) { &n