短縮版
string をサイズ 2048 の char の配列として宣言しました:
char string[2048];
ポインターである char* を割り当てるため、この行は問題を引き起こしています。
string = "aaa 111\nsas 23 d\nds";
char* を反復処理し、文字列の末尾に到達するまで要素をコピーする次のコマンドを試してください。
strcpy(string, "aaa 111\nsas 23 d\nds");
この char[] に初期値を与えるだけの場合は、次を使用します。
char string[2048] = "aaa 111\nsas 23 d\nds";
ロングバージョン
この場合、何をしても問題ありませんが、実際には、固定サイズの文字配列を使用するのは危険な場合があります。2048 文字を超える文字列をコピーしようとすると、この変数に割り当てられたスペースの後に書き込むことになります。
単に割り当てることができない理由は、それらが char の配列であり、C で実際に定義された操作ではないためです2048*sizeof(char)
。2 番目の引数を反復処理し、文字列の末尾を示す文字がstrcpy()
見つかるまで文字をコピーします。0
strncpy()
バッファよりも大きな文字列がある場合は、より安全であるため、確認することをお勧めします。マニュアルページから:
stpncpy() および strncpy() 関数は、最大 n 文字を s2 から s1 にコピーします。s2 の長さが n 文字未満の場合、s1 の残りは `\0' 文字で埋められます。それ以外の場合、s1 は終了しません。