問題タブ [strcat]
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 - AIX 5.3 対 Solaris 5.10 - C strcat 実装
なぜこれが起こるのか誰にも分かりますか?
私は AIX 5.3 に C プログラムを持っています。それを SPARC Solaris 10 マシンで実行するように依頼されましたが、実際に実行したところ、多くの無謀な strcat の使用の 1 つでバッファ オーバーフローが発生していることに気付きました。私の目標は、コードをサニタイズすることではなく、AIX ではなく、Solaris でこのオーバーフローが発生する理由について、具体的かつ十分に根拠のある答えを提供することです。
これが次の原因で発生する可能性があるかどうかについて少し読んでいます。
AIX と Solaris ではエンディアンが異なります。strcat 関数の実行 (AIX は右から左に、Solaris は左から右にコピーします) が、これに関するドキュメントを見つけることができませんでした。
- この問題が AIX で発生しないという単純な幸運です。
あなたがこれに当てることができるどんな光も高く評価されます.
編集:これは、solaris の noexec_user_stack フラグで回避できますか?
編集 2: 両方の OS が実際のバイト コピーを行う方法について誰か情報を持っていますか? 上記のオプション 2 のような状況では?
編集 3: コードのチャンクは次のとおりです。
/*global*/
char bufferA[101];
/*inside function*/
bufferA[0]='\0';
strcpy(bufferA,"1");
if (atoi(something)==0) {
strcat(bufferA,pieces_of_data);
count ++ ;
}
明らかにそれ以上のものがありますが、これはbufferAが使用されている唯一の部分であり、bufferAに追加された最後の文字列の最後の部分で破損するbufferAの後に2つの変数がグローバルに宣言されています.
前に言ったように、宣言を 101 から 201 に変更すると、破損は発生しません。
編集 4: solaris の -misalign および -misalign2 コンパイラ オプションについて何か知っている人はいますか? これらのオプションに光が当たる可能性はありますか? 実際には、AIX powerPC と Solaris SPARC のアライメントに関して違いはありますか? これはおそらくserverfaultの質問ですが、何か知っている場合は共有してください.
c - strcat() でポインタの戻りはどのように機能しますか?
こんにちは、strcat() によってポインターがどのように返されるかを理解しようとしているので、独自の strcat() を実装して、それがどのように機能するかを確認してみました。以下は、実際の strcat() のように機能する mystrcat() の私のコードです。
だから私のmain()で言ってみましょう、私は持っています
出力は次のようになります
予想通り。私が得られないのは、ローカル変数 str のアドレスを返すと、魔法のように変数文字列がそれを指すようになる方法と、関数が終了したときに変数 str が削除されない理由です。
c - strcat セグメンテーション違反
ここへの 2 番目の呼び出しstrcat
は、セグメンテーション違反を生成しています。なぜですか?
c - bash システム コールとして使用される strcat の結果がアンパサンドを好まない
bash の代わりに ash を使用して組み込みシステムに取り組んでおり、クロスコンパイルされた C プログラムからスクリプトを呼び出そうとしています。
それは機能していますが、私が求めているようなバックグラウンド プロセスではありません。実際、strcat コマンドが機能していないように見えますが、その理由はわかりません。
私はCでかなり新しいので、それは明らかなものでなければなりません。
コード:
画面表示:
なぜこれを行うのですか?
c++ - g++ + strncat: 宛先バッファがオーバーフローする可能性があります
C++ プログラムに C 関数を含める必要があります。コードを g++ でコンパイルすると、次の警告が表示されます。
コード:
この警告を取り除くにはどうすればよいですか?
c - 連結+ itoaの問題
次のコードがあります。
hour
、minute
およびsecond
すべて int です。
私がやりたいのは、HH:MM:SS のように時刻を表示することです。
変数は、0 から 59 の間であることが保証されています (hout を除く、0 から 24)。
drawTextは正しいです。
このコード ブロックによってプログラムがクラッシュしますが、問題は見つかりません。あなたはできる?
御時間ありがとうございます!
c - 私はちょうどstrcatを理解することはできません
私はその機能を使うべきではないことを知っています、そして私は気にしません。前回、strcat の仕様を確認したところ、最初の値を更新し、同じ値を返すという行に沿って何かが述べられていました。
さて、これは本当にばかげた質問です。本当にばかげた人に話しているように説明してほしいです。
なぜこれがうまくいかないのですか?
編集: char[] と char* の違いがわかりません。255 文字の文字列を割り当てるにはどうすればよいですか?
編集 2: OK、OK、では char[number] はそのバイト数の文字列を割り当てますか? 理にかなっています。ありがとう。
編集 3: また、宣言せずに文字配列を使用するにはどうすればよいですか? char[255] として型キャストしますか?
編集 4: strcat((char[256])"foo","bar") はエラーを返します。私はCにうんざりしています。
編集 5: strcat((char[256])"foo",(char[])"bar") も同様です。
編集5:
本当にスムーズ。「識別子が必要です」
c - strcatはcharを文字列に連結しますか?
GDBを使用して、この操作を実行しようとすると、セグメンテーション違反が発生することがわかりました。
文字列が次のように初期化されると仮定します
そしてcurrentCharは
なぜこれがセグメンテーション違反になるのですか?
strcatをこれに使用できない場合、他にどのように文字を文字列に連結できますか?
c - C で文字列を適切に操作するにはどうすればよいですか?
Java、Python、およびその他の同類が私を台無しにしました。サーバー コードに応答して FTP クライアントを自動化しようとしています。
例えば:
これを試してみると、USER では機能しますが、PASS では文字化けしたテキストが表示されます。
私より賢明で経験豊富な人が、C 文字列ポインタを教えてくれませんか? 明らかに、これは私にとってはうまくいきません。
c - 文字列の任意のポイントから文字を削除します
C言語で文字列のオプションポイントから文字を削除したい..ポインタとstrcat()関数を介してこのプログラムを書きたい. 案内してください
皆さんありがとう