問題タブ [strncmp]
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 - Strncmp: 異常なセグメンテーション エラー
私は C の初心者ですが、しばらく C++ を書いてきました。クライアントサーバーのチャットプログラムを書いています。ユーザー名を入力した後、セッションの開始時にいくつかの異なるオプションをユーザーに表示する必要があります。最初は getchar() 関数を使用しようとしていましたが、何らかの理由で、次のパターンのステートメントでは期待どおりの結果が得られませんでした。
ユーザーが 2 を入力した場合、「doSomething」エリアには移動しません。そこで、代わりに fgets と strncmp を使用しようとしました。しかし今、strncmp でセグメンテーション違反が発生し続けています。これは、コードの最も関連性の高い部分です。getchar を使用しようとしたときにコメント アウトされたセクションがいくつかあります。確かに、これはちょっと面倒です。テストとしてまとめただけなので。文字列に余分なスペースを割り当てると、セグフォルトを防ぐのに役立つのではないかと思いましたが、もちろんそうではありませんでした。
残りのコメントで、減算を使用して char を int にキャストするなどの試みの跡を見ることができます。これは私がインターネットで見つけたものから来ています。getchar が入力バッファに \n を残すということもインターネットで聞きました。
したがって、これがクライアントのコード全体です。コンテキストに入れることができます。
}
c - 構造体フィールドの strcpy / strncmp セグメンテーション違反
char* フィールド (単語) を持つ構造体に新しいノードを追加しようとしています
listT の定義:
add_word_node 関数は main によって次のように呼び出されadd_word_node(read_word, list_head)
てread_word
います。Word は文字列として渡されますが、strncpy の後には終端バイトがありません。
この問題に関する他のトピックをいくつか読み、char* の代わりに word[] を使用するように関数を変更しましたが、それでも機能しません。さらに情報が必要な場合は教えてください。また、strndup を使用すると、エラーなしで動作することがあります。
c - C プログラムでの strncmp の問題
このコミュニティの助けを借りて、必要な入力 xvg ファイルからスニペットを取り出すためのコードを書くことができました。それは私にとってはほとんど機能していますが、strncmp にわずかな問題があります。この入力ファイルの一部を @ と # で始まる行で 1000 から 2000 と言うようにしたいので、これらの値を starting_point と starting_point.Problem という文字列に保存します。開始点と停止点を認識しないということです。いくつかのランダムな出力が出力ファイルに保存されます。
小さな入力ファイルでも問題なく動作します。
ただし、表示されている入力ファイルでは機能しません。
入力ファイルはこれのように見えます
c - プレフィックスで始まるファイルの行を取得する
平文のどの行が「linePrefix」で始まるかを検出しようとしています。上記のコードを使用すると、偶然があったとしても、strcmp
0 が返されることはありません。
c - strncmp と fgets を正しい方法で使用していますか?
私は C を学ぼうとしている初心者のプログラマーです。現在、私はクラスを受講していて、割り当てられたプロジェクトを持っていて、少なくともその主要部分をかなり早く終わらせることができました。ただし、いくつかの新しい関数 (つまり、fgets と strncmp) を使い始めたため、main() if 関数の周りでコーディングに問題がありました。現在、コードはコンパイラで動作しますが、どのオンライン コンパイラでも動作しません。それで、私はそれで何か間違ったことをしたのだろうか、それともそれを改善できる方法があるのだろうかと思っています.
どんな助けや貢献も大歓迎です、ありがとう!
以下はコードです。暗号化関数と復号化関数は、メインの前の最初の 2 つの関数であり、ほとんどの厄介なショートカット コードがあると思われます。