問題タブ [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.
c - Cサブストリングの作成:代入演算子VS strncopyを使用したループ、どちらが良いですか?
これはやや無意味かもしれませんが、皆さんがそれについてどう思うか興味があります。ポインターを使用して文字列を反復処理していて、そこから短い部分文字列を引き出したい(部分文字列を事前に割り当てられた一時配列に配置する)。strncopyよりも割り当てを使用する理由はありますか?またはその逆ですか?つまり
strncopyはタイピングが少なく、読みやすいように思えますが、代わりにループを提唱する人を見てきました。違いはありますか?それも重要ですか?これはiの値が小さい場合(0 <i <5)であり、ヌル終了が保証されていると想定します。
c++ - strncpy() を WCHAR に変換する方法
マルチバイト文字セットで動作するコードを入手しました。ただし、このコードを UNICODE に変換したいと考えています。だから私はたくさんのものを修正しましたが、strncpy() 行で失敗しました。これは私が変更したい行です:
これを修正するために多くの関数を使用しましたが、すべて失敗しました。
エラーは次のとおりです。
c - C:strncpy がポインターに問題を引き起こす
文字列内の単語を置き換えたい。ここにコードがあります
これはうまくいきますが、
これにより、セグメンテーション違反が発生します。
最初の例では、「テキスト」は配列であり、データはその場所にコピーされます。2番目の「テキスト」はポインターです。問題とは何ですか?
c - Cのコマンドラインを使用して引数を検出し、引数の最初または2番目の文字を出力します
コマンドラインで2つ以上6つ以下の引数を受け入れ、1番目または2番目の文字を出力するプログラムを作成する必要があります。例:asdf asdf asdf asdfは次のように出力します:asas
配列の初期設定と動作があります。以下のforループは、入力のスペースで文字列を切り取り、新しい文字列にコピーすることを目的としていますが、正しく動作していません。私はCとこのサイトに不慣れです。どんな助けでも大歓迎です。
c - C の文字列の末尾をコピー
strncpy を使用して、文字列の一部のみを C の別の文字列にコピーしようとしています。
そのような:
"do this"
次に、次のように他の文字列にコピーします。
助けていただければ幸いです。
c - Cでのstrncpyのバスエラー
私はこの質問と同じプロジェクトに取り組んでいますが、typedefが少し異なります。
文字列を個々の単語に分割し、それをdata_t構造体に貼り付けてから、バイナリ検索ツリーに挿入しようとしています。入力文字列をループしているときに、その文字が単語の終わりを示す文字であることがわかった場合、単語の最初と最後の間の文字数が文字列にコピーされるという考え方です。以下を使用して実行しようとしました:
どこ:
ただし、その特定の回線が呼び出されると、gccはバスエラーを発生させます。このバスエラーをどのように修正し、現在の解決策を維持することができますか、それとも別の解決策を探す方が賢明ですか?
私がこれまでに考えた唯一のアイデアは、一度に1文字ずつ、単語の終わりに達するまで文字を文字列に入れることです。
c - strncpy を使用します。Valgrind が無効な読み取りをスローする
私はこの機能を作りました:
t_proceso が何であるかは関係ありません。問題は、この関数が文字の配列を受け取ることです。
関数が常に「何か()」を受け取る文字の配列。私がやろうとしているのは、最後の2文字「()」を削除してから、関数push_stack()を呼び出すことです。
問題は、Valgrind を実行すると、次のようになることです。
私は何が間違っているのかわからないので、どんな助けも感謝します。
c - strncpyの動作はsprintfの動作とは異なります
次のコードを使用して、ハッシュテーブルのテストに使用する「キー」を作成しています(特に、アイテムの削除に必要な時間をテストしています)。
コメントでマークした行には、奇妙な動作があります。sprintfを使用して「temp_key」の内容を「key」にコピーしています。その前に、strncpyを使用して「temp_key」の内容を「key」にコピーしましたが、この操作から得られた結果は次のとおりです(XCodeのデバッガーから出力)。
一方、「temp_key」は次の出力を生成します。
ハッシュテーブルはmemcmpを使用して、htable_item_search関数のキーを比較します。ただし、strncpyを使用すると、sprintfの使用中に見つからないアイテム(「Key:10」など)がいくつかあり、完全に機能します。では、なぜこの違いがあるのでしょうか。
c - この strncpy() 実装が 2 回目の実行でクラッシュするのはなぜですか?
この strncpy() の実装が 2 回目の実行でクラッシュするのに、最初の実行では問題なく動作するのはなぜですか?
strncpy
文字列から文字をコピー
n
ソースの最初の文字をコピー先にコピーします。文字がコピーされる前にソース C 文字列 (ヌル文字によって示される) の末尾が見つかった場合、合計文字数が書き込まれるn
まで、destination はゼロで埋められます。n
source がこれよりも長い場合、destination の末尾に null 文字は暗黙的に追加されません
n
(したがって、この場合、destination は null で終了する C 文字列ではない可能性があります)。
c++ - strncpyが期待どおりに機能していません
私の出力は次のとおりsome random string
です。しかし、私はそれが次のようになることを期待していますsome
。なぜこのように振る舞うのか、誰か説明してもらえますか?