問題タブ [strcpy]
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++はstd::stringをnull終了なしでchar配列にコピーします
char[32]を含むだけの構造体を使用してバイナリファイルに書き込んでいます。基本的に、文字列配列に対してさまざまな計算を実行し、結果を連結して、データの各ブロックをフォーマットする必要があります。std::stringをnullで終了しないchar配列にコピーしようとしています。これを読めば読むほど、混乱します。私が行った場合:
c_str()でnullターミネータを追加すると、文字列の長さが33になるため、エラーが発生します。文字列から1文字を引くと機能しますが、nullターミネータがあります。私は次のことをうまく行うことができます:
しかし、さまざまな配列からのさまざまな文字列を連結する必要があることが多いため、最初に文字列を作成したいと思います。たとえば、std :: string:を使用してこれを行うことができます。
しかし、それから私は再びヌルターミネータを持っています。ヌルターミネータなしでstd::stringの文字を正確にコピーしたいだけです。
VC++6.0を使用しています。
c - strcpyエラーの理由は何ですか
このプログラムを実行しようとすると、セグメンテーション違反が発生します。その理由は何ですか?
c - ファイルから動的配列に行を保存して印刷する方法は?
ANSI C では、ファイルを開き、そのすべての行を動的に割り当てられた文字列の配列に読み込み、最初の 4 行を出力する必要があります。ファイルは 2^31-1 バイトまでの任意のサイズで、各行は最大 16 文字です。私は以下を持っていますが、うまくいかないようです:
arr_lines
これに書き込み、その要素に簡単にアクセスするために定義する方法に問題があります。
c - read()を使用して、バッファを文字列に入れます
この問題のために最初の質問に問題があったので、これは私の2番目の質問です。read()ステートメントを使用して読み取らなければならないファイルがあります。fget()やfread()などはありません。この行を使用します。
ご存知のように、fileReadは私のファイル記述子であり、bufferはunsigned charであり、blocksizeはbufferのサイズです(私は32を選択しました)。私の問題は、ファイルが終了するまで実行され、ファイルのバッファー(32)を取得するループがあり、それを文字列に入れる必要があることです。
だから私はあなたがバッファを取り、それを文字列に追加するコードの行を手伝ってくれるかどうか疑問に思っていました(2D配列ではなく、これは良くありません)私は試しました
しかし、構造体に配置するためにstrtokしようとすると、これは機能しません。read()を使用してそのファイルを1つの文字列にする必要がありますか?
その後のstrtokのコードは次のようになる必要があります
ありがとうございました
c++ - 'strcpy':パラメータ2を'WCHAR*'から'constchar*に変換できません
strcpyに問題があります...
このエラーの取得:
strcpy' : cannot convert parameter 2 from 'WCHAR *' to 'const char *
これがコードです...
そしてまた:
c++ - strcpy と strcmp、何が間違っていますか?
ユーザーはいくつかの文字列を入力し、完了したら文字列としてスペースを入力する必要があります。コードは、入力された最長および最短の単語を返す必要があります。
strcmp は常に -1 を返します...何が間違っていますか?
c - strcpy でセグメンテーション違反がないのはなぜですか?
重複の可能性:
未定義、未指定、および実装定義の動作
これはセグメンテーション フォールトです。なぜだろう。
次のコマンドで gcc バージョン 4.4.3 を使用しています。
また、最適化を o (-O0) に設定してみました。
c - 割り当てられた文字配列を「通常の」文字配列にコピーします
教えてください、割り当てられたchar配列を「通常の」char配列にコピーする正しい方法は何ですか? 私は次のことを試みましたが、失敗します:
c - strcpy() はエラーを作成します
次のコードを使用して初期化しようとしているこの構造があります。「finger_print」を初期化しようとすると実行時エラーが発生します
それの何が問題なのですか?
関数:
strncpy() と同じです
c - C: strncpy 割り当てられた文字数より多くの文字が出力されます... 予期しない出力ですか?
教授によって与えられたいくつかのサンプルコードでは:
最初にコンパイルして実行すると、プログラムは segfaults が原因で、Google で数分間調べたところによると、バッファ オーバーフローに対する gcc 保護メカニズム ( printf( "%s\n", x );
x がアルファから 26 バイトで埋められたことが原因) が原因でした。これは私が理解していると思います。
ただし、gcc -fno-stack-protector で保護メカニズムを無効にすると、出力は次のようになります。
strncpy は文字列を null で終了しないため、が出力されると、X
実際には - の完全な値が出力される可能性があると思いalpha
ましたが、実際には、 のすべてを出力しalpha
、さらにalpha
!
誰かがここで洞察を提供できますか?