問題タブ [strncpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
3697 参照

c - C:sprintfとstrncpyを使用して、ポインターの配列にデータを挿入します

ポインタの配列を持つ構造体があります。「1」、「2」などの文字列形式で配列の数字を挿入したいと思います。

ただし、sprintfとstrncpyのどちらを使用するかに違いはありますか?

私のコードに大きな間違いはありますか?私は無料で電話しなければならないことを知っています、私は私のコードの別の部分でそれをします。

アドバイスありがとうございます!

0 投票する
5 に答える
56947 参照

c++ - strncpyが安全でないのはなぜですか?

strncpyが安全でないと見なされる理由を調べています。誰かがこれまたはそれを使用したエクスプロイトの例に関する何らかのドキュメントを持っていますか?

0 投票する
7 に答える
17372 参照

c - strncpyおよびsizeofを使用して最大文字数をコピーする

私は以下のコードを使用しています

ソースが宛先よりも大きい場合に備えて、オーバーフローを保護するために、常に宛先にsizeofを使用します。このようにして、宛先が処理できる量だけコピーするため、バッファオーバーフローを防ぐことができます。

しかし、私は今、それが宛先をヌル終了するかどうか疑問に思っています。

いくつかのケース。

1)ソースが大きい場合。私はこれを行うことができます:

2)送信元が宛先よりも小さい場合。呼び出しは64バイトで、ソースのサイズである50バイトをコピーします。51要素に自動的にnullを入れますか?

情報をありがとう、

0 投票する
10 に答える
199014 参照

c - strcpy の代わりに strncpy を使用する必要があるのはなぜですか?

編集:例のソースを追加しました。

私はこの例に出くわしました:

この出力を生成したもの:

これは、なぜ誰もがこの効果を望んでいるのか疑問に思います. 混乱しそうです。このプログラムは、Tom Bro763 で誰かの名前 (Tom Brokaw など) を基本的にコピーできると思います。

strncpy() over を使用する利点は何strcpy()ですか?

0 投票する
11 に答える
104026 参照

c - strncpy が null で終了しないのはなぜですか?

strncpy()おそらくバッファオーバーフローから保護します。ただし、null で終了せずにオーバーフローを防ぐと、後続の文字列操作がオーバーフローする可能性が高くなります。したがって、これを防ぐために、次のことを行っています。


man strncpy与えます:

のバイト以下がコピーさstrncpy()れることを除いて、機能は似ています。したがって、 の最初のバイトにnull バイトがない場合、結果は null で終了しません。nsrcnsrc

次のように一見無害に見えるものをnullで終了することなく:

...クラッシュする可能性があります。


より安全で優れた代替手段はありstrncpy()ますか?

0 投票する
8 に答える
65296 参照

c - strlcpy と strlcat が安全でないと見なされるのはなぜですか?

と がとの安全な代替品として設計されたことを理解してstrlcpyいます。しかし、一部の人々は、自分は安全ではなく、単に別の種類の問題を引き起こすだけだと考えています。strlcatstrncpystrncat

strlcpyまたはstrlcat(つまり、常に文字列を null で終了する関数) を使用してセキュリティ上の問題が発生する可能性がある例を誰かが挙げることができますか?

Ulrich Drepper と James Antill は、これは正しいと述べていますが、例を提供したり、この点を明確にしたりすることはありません。

0 投票する
3 に答える
14507 参照

c - 初期化されていない値がヒープ割り当てによって作成されました

私はこのバグを追いかけてきましたが、うまくいきません。基本的なCか何かを忘れましたか?

96行目はパラメーター"char* input"を正常に出力しますが(DEBUG_ON == 1)、105行目はvalgrindエラーを吐き出します(コンソールでは正常に出力されます)。「char*input」は、getline()が入力行を取得することで発生します。この関数の場合、引用符なしの「path / test/path」のようになります。前の関数でうまく印刷して操作できます。「char*inputCopy」について初期化されていないものは何ですか?何か案は?前もって感謝します!

0 投票する
6 に答える
3607 参照

c - strncpyを使用してファイルを1行ずつchar配列にコピーする

だから、テキストファイルを1行ずつ読み込んで、各行をchar配列に保存しようとしています。

ループ内のプリントアウトから、行数と行ごとの文字数が適切にカウントされていることがわかりますが、strncpy. データ配列を印刷しようとすると、奇妙な文字が 2 つしか表示されません。私は一度も働いたことがないstrncpyので、私の問題はヌル終了に関係していると思います。

0 投票する
4 に答える
2702 参照

c - 静的配列の変更

ファイルで宣言された静的変数があります。

クラスのメソッドの1つの中で、私はこれをやっています:

strncopy を実行すると、プログラムがクラッシュします。何が間違っているのかわかりません