問題タブ [strlen]
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の質問で皆さんを悩ませるようになりました。
次のコードを使用します。
2つの質問。なぜそれらは異なり、なぜy 6なのですか?みんなありがとう。
編集:申し訳ありませんが、私はそれを修正するものを知っています、私はちょっと何が起こっているのかを理解したかっただけです。では、strlenは、\ 0が見つかるまでポイントを転送し続けるのでしょうか?また、get_len関数ではなくmain関数でstrlenを実行したとき、両方とも4でした。それは単なる偶然でしたか?
php - 私のjQueryとPHPは、同じもので異なる結果をもたらしますか?
厄介な脳の麻痺の問題。
文字列の長さをチェックする2つの関数があります(主に、jsも切り捨てられます)。Javascriptの関数は次のとおりです。
そして、これが私のPHPを再確認するためのものです。
テキストエリアから値を投稿するためにjQueryAjaxを使用しています。しかし、私のphp検証では、strlen()は私のjsが本質的に言っているよりも長いと言っています。たとえば、実線の文字列を入力して、255までに0または3文字残っていると表示された場合、[保存]をクリックすると、phpによって長さが261と表示されます。
何か案は?
jsが異なる方法で読み取る、または見逃す特殊文字、ビットサイズと関係がありますか?それとも何か他のものと関係がありますか?多分今日は病気です!...:P
更新:何が渡されたかを確認するため
に追加var_dump($_POST['description'])
しました。エスケープスラッシュが返されていました。たとえば、何が起こっているのでしょうか。stripslashes();を追加してみました。役に立たない...彼らはどこから来ているのですか?
更新2-解決された問題:
基本的に、サーバーで魔法の引用符がオンになっていることに気付いたと思います... grrだから、今処理する前にスラッシュを削除しました。少し面倒ですが、やらなければなりません!!
ご協力いただきありがとうございます!
ありがとう、ステファン
c - C: sprintf は strlen を介して SIGSEGV コアにつながります
私の C アプリケーションには、次の 2 行があります。
アプリケーションは、次の方法で散発的に SIGSEGV でクラッシュします。
どこで/何が問題なのかについてのヒントを誰でも渡すことができますか?
どうもありがとう、
c - この segfault の原因は snprintf の strlen 呼び出しですか?
長さはわかっていvoid *
ますdata
が、null で終了していません。私は既知の長さsnprintf(line, sizeof(line), "%*s", n, (const char*)data)
であるこのような呼び出しを行います。n
ほとんどの場合、これは機能しますが、セグメンテーション違反が発生することがあります。
segfault が発生するたびに、バック トレースは問題が strlen 内にあることを示します。そして、data
gdb内で印刷すると、次のように表示されます
data
確かに 88 文字ですが、null で終了していません。実際、セグメントにぴったり合っているようです。私の推測では、snprintf は常にデータに対して strlen と呼ばれ、data
null で終了していなくても\0
、セグメントにヒットする前に a があり、時々不運になることがあります。そうですか?もしそうなら、回避策は何ですか?
スタックトレースはこんな感じ
編集回避策に関する私自身の質問に答えるには、strncpy を呼び出すのがより適切な関数です。癖でsnprintfを使っていました。
c - Cストリング、strlenおよびValgrind
Valgrindが吐き出している理由を理解しようとしています:
動的に割り当てられた文字列にstrlenを適用するときはいつでも?
ここに短いテストケースがあります:
そして、これがValgrindからの結果出力です:
これらの警告を回避する正しい方法は何ですか?それらは本当の警告ですか?
php - PHP:strlenでリモートファイルサイズを取得しますか?(html)
私はfsockopenなどのPHPドキュメントを見ていましたが、ftellなどでクレイジーなことをしなければリモートファイルでfilesize()を使用できないと言われています(正確に何を言っているのかわかりません)が、私はよく考えましたどうやってするの:
これは良い方法でしょうか?当時はとてもシンプルで使い勝手が良かったようです。問題が発生したり、実際のファイルサイズにならない場合は、考えてみてください。
ちなみに、これはバイナリではなく、テキスト(Webサイト)でのみ使用したいと思います。
c - strlen()structhostentからの文字列の読み取りを拒否します*
Linux用の基本的なパケットスニファを構築する方法についての小さなチュートリアルを進めてきました。すべてが機能するようになりました。次に、IPからホストへのマッピングを追加したいと思います。
この関数を追加する前は、すべてが機能していました。
これは基本的に文字列IPアドレス( "192.168.28.18")ipaddressを取り、そのIPのホスト名( "who.cares.com")をホスト名に入力します。
何が起こるかというと、strlen は私に何かを与えることを拒否し(strdupがどのように機能するかを知っており、これを自分でテストしました)、segfaultsです。GDBを使用しましたが、文字列がnull文字で終わり、NULLではありません。
また、静的構造体で生の文字列代入を使用してテストしました。
そして、まだサイコロはありません。
では、strlenはどうしたのですか?
c - ループ条件でstrlen()を使用すると、ヌル文字をチェックするよりも遅くなりますか?
strlen
私は、の使用はこのようなテストよりも費用がかかることを読みました:
x
100文字の文字列があります。
私はそれを思います
このコードよりも高価です:
それは本当ですか?状況によっては2番目のコードが機能しない可能性があるため、最初のコードを使用する方がよいでしょうか。
以下の方がいいのでしょうか?
php - Content-Lengthヘッダーが間違っているのはなぜですか?
PHP 5.2のstrlen()を使用して、文字列の正確な長さを調べようとしています。文字列($ data)には、「\t」と「\n」が含まれています。
コード:
これは正確な長さ(実際の長さよりも短い)を返しません。ご意見をお聞かせください。
c - コンパイル時に #defined 文字列の長さを決定する
ソケットを介して 0 で終わる文字列を処理するC プログラム(Apache モジュール、つまりプログラムが頻繁に実行される) があるため、その長さを知る必要があります。write()
文字列は次のように#定義されます:
strlen(POLICY)+1
実行時に使用する(したがって、長さを何度も計算する)よりも良い方法はありますか?
POLICY_LENGTH
コンパイル時にすでに設定できるプリプロセッサ ディレクティブはありますか?