問題タブ [c-strings]

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.

0 投票する
2 に答える
459 参照

c++ - C++文字配列割り当てエラー

ファイルの内容を取得するように設計された関数があります。

この関数を実行すると、ファイルの長さは常に正確に取得されます。ただし、ファイルを使用して関数を1回呼び出し、存在しないファイルを使用して再度呼び出してから、元のファイルを使用してもう一度呼び出すと、文字列「buffer」がint「length」よりも大きくなります。

まあ、それは正確ではないかもしれません-文字列'buffer'が文字列'code'にコピーされるとき、'code'は'length'より長くなります。'code'は、いずれの場合も、'getFileContents'の呼び出しの直前にインスタンス化されるため、前の値の問題ではありません。

これは、ファイルの内容を取得し、その後ファイルにテキストを追加または削除して、同じファイルの内容を再度取得した場合にも発生するようです。

私は文字列の経験がほとんどなく、正しく使用していないことがわかりますが、使用しているコードは例からのものであり、私は一生の間、文字列に問題があることを見つけることができません。

助けてくれてありがとう、ワイアット

0 投票する
3 に答える
1081 参照

cocoa-touch - Xcode/Cocoa の複合/複合 C 文字列

SQLite3 プログラムを作成しています。コード内でデータベースを作成しています。約15列あります。以下の例:

コンパイルすると、「missing terminating character」エラーが発生します。いくつかの調査を行ったところ、これは C-String であるため、CR\LF を継続文字として処理することがわかりました。そのようなコード行を作成したくありません。 SQL で何かを行う必要があるたびに、画面の右端をスクロールします.このエラーを発生させずに、別の行に分割できる文字列を作成する方法はありますか?

0 投票する
1 に答える
5955 参照

ios - NSString cString は非推奨です。代替手段は何ですか?

私は別の初心者の質問があります。

webService の結果をシミュレートするために、NSString を NSMutableData に変換するコードを作成しました。

ただし、cString は非推奨であることが判明しました。交換を手伝ってもらえますか?これが私のコードです。

0 投票する
3 に答える
11225 参照

c - C の join() または implode()

私が Python と PHP で気に入っている点の 1 つは、配列から簡単に文字列を作成できることです。

しかし、これを C で実装するための直感的で明確な方法を誰かが持っているかどうか疑問に思っていました。ありがとう!

0 投票する
4 に答える
372 参照

c - Cでは、関数に渡されたchar *にテキストを入力するにはどうすればよいですか?

intを返すC関数を作成しようとしていますが、その過程で変数として渡されたchar*が入力されます。私が試していることの基本的な例は次のとおりです。

main.c:

実行すると、整数が画面に表示されますが、テキストは表示されません。

outMaxLen変数は、char *パラメーターをチェックして、出力文字列を収容するのに十分な大きさであることを確認することを目的としています。

strcat()と同様に、私はstrcpy()とstrncpy()を試しましたが、まったく役に立ちませんでした。strcat()はコンソールにテキストを表示せず、strcpy()とstrncpy()はメッセージEXC_BAD_ACCESSでデバッガーを呼び出します。

strcpy_s関数を使用してWindowsAPIでこれを正常に管理できましたが、現在UNIXボックスで試しています。私はおそらく非常に基本的なものが欠けています!

0 投票する
4 に答える
37438 参照

c - 文字列の一部をCで出力する

文字列の一部のみを印刷する方法はありますか?

たとえば、私が持っている場合

"hello"印刷したい部分文字列は可変長であり、必ずしも5文字ではないことを念頭に置いて、単に印刷する方法はありますか?

forループを使用できること、または配列をコピーしてからnullターミネータを追加できることは知っていputcharますが、もっとエレガントな方法があるかどうか疑問に思っていますか?

0 投票する
4 に答える
4447 参照

c++ - MFCCString形式は奇妙な動作をします

CString予期しない結果をもたらす次のコードがあり、奇妙な問題が発生しています。

結果の文字列はを示しますPath = (null)

内部で何が起こっているのかわかりません。にキャストしsourcePathLPCTSTR有効なポインタを取得しました。MSVCのメモリビューウィンドウでそのメモリアドレスの内容を表示すると、すべてが有効であるように見えます。

以前のプロジェクトで同じ方法を試したので、これは私を苛立たせます、そしてそれはかなりうまくいきました。

ありがとう。

CStringPSお願いします、私の以前の投稿で起こったように、人々がここで何であるかについてコメントし始める前に、まずここをチェックしてください: MSDN CString

編集:スラッシュについて申し訳ありません..そしてはい、元のコードには二重スラッシュがあります..

0 投票する
1 に答える
1672 参照

winapi - App Verifier の出力の解釈: ヒープが破損しているか、スタック アドレスがヒープ アドレスと誤って解釈されていますか?

大規模な MFC ベースのアプリをヒープ破損エラーでクラッシュさせるテスト ケースがあります。

問題の DLL に対して App Verifier を使用してページ ヒープを有効にしました (プロセス全体でヒープを有効にすることは、残念ながら他の理由で実行できません)。元のクラッシュと同じ時点でトリガーされました。

現在、私は2つの競合する理論を持っています。どちらの理論が正しい可能性が高いと思いますか?次のステップは何ですか?

  1. これは確かにヒープの破損です。別の DLL で発生しているため、ベリファイアは元の損傷を検出していません。より多くの DLL に対してベリファイアをアクティブ化し、どのコードがヒープを損傷しているかを特定する必要があります。
  2. ヒープは問題ありません。問題は、スタック アドレスをヒープ アドレスとして扱っていることです。このコールスタックのコードをさらに調べて、何が問題なのかを突き止める必要があります。

free() へのパラメーターがスタック アドレスのように見えるため、私は #2 に傾いていますが、これがどのように可能であるかについて、これまでのところ誰も説明を提案していません。

コール スタックのスニペットを次に示します。MyString は、CString の単純なラッパーです。MyAppDll は、ページ ヒープを使用するように設定された DLL です。

free() スタック フレーム内のレジスタは次のとおりです。

アプリ検証メッセージは次のとおりです。

0 投票する
4 に答える
323 参照

c - Cでは、ある配列に存在するすべての文字を別の配列から削除する方法は?

Cでは、ある配列に存在するすべての文字を別の配列から削除する方法は?

0 投票する
1 に答える
1946 参照

c - Cで文字を比較する方法

ストリームの最初のバイトを比較する必要がある小さなプロジェクトがあります。問題は、そのバイトが 0xe5 またはその他の印刷不可能な文字である可能性があるため、その特定のデータが不良であることを示している (一度に 32 ビットを読み取る) ことです。許可できる有効な文字は、AZ、az、0-9、'.' です。とスペース。

現在のコードは次のとおりです。

だから問題は、私が次のことをしようとしたときです:

うまくいきません。中にクエスチョン マークが付いた黒い 6 面のひし形を示すような文字が表示されます...理論的には次の文字のみを許可する必要がありましたSpace (32), 0-9 (48-57), A-Z (65-90), a-z (97-122):

ctype.h -> iscntrl、isalnum、ispunct の関数を使用してみましたが、これも機能しませんでした。

単純な C の問題であると私が想定していることで、仲間の C 初心者を助けることができる人はいますか? それは大歓迎です!

ありがとう。マーティン