問題タブ [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.
c++ - C 文字列をコピーする適切な方法
C文字列をコピーする簡単な方法はありますか?
があり、値を取得しconst char *stringA
たい( ではないchar *stringB
ことに注意)。を試してみましたが、それでも同じメモリ位置を指すようになるため、後で変更した場合も同様です。stringB
const
stringB=(char*) stringA
stringB
stringA
stringB
も試しましたが、十分な大きさの配列に初期化されていないstrcpy(stringB,stringA)
場合、セグメンテーション違反があるようです。stringB
私はC文字列の経験があまりありませんが、明らかな何かが欠けていますか?
stringB
として初期化するだけの場合char *stringB[23]
、文字列よりも長い文字列を持つことは決してないことがわかっているため22
(そして null ターミネータを許可する)、それは正しい方法ですか? stringB
が他の C 文字列と等しいかどうかチェックされた場合、余分なスペースは何かに影響しますか?
(また、オーバーヘッドを最小限に抑え、個々の文字に簡単にアクセスする必要があるため、文字列を使用するだけでは解決策にはなりません。)
c++ - コードでconstchar*とconstchar[]のタイプを識別する方法は?
s1が「char*」、s2が「char []」であることをメソッドに教えてもらいたいのですが、メソッドの書き方を教えてください。
c - c で文字列の部分文字列を検索し、そこから新しい文字列を作成する
C ではこれは簡単ではありません。私はすべてを見ましたが、何も見つかりませんでした。
「Sample:」で始まる部分文字列を C 文字列で検索し、その後の最初の改行までのすべての文字で構成される新しい C 文字列を作成する必要があります。
C++ では、これをハートビートで実行できます。経験豊富な C プログラマーが道を教えてくれますか?
手で書き出すことでこれを行うことができると確信していますが、確かに役立つ組み込み関数がいくつかありますか?
c++ - Cstring のコンソール入力を取得する
注: これは C++ ですが、C スタイルの文字列を使用しています
こんにちは。
私は割り当てに取り組んでおり、コンソールから入力を取得して cstring に保存する必要があります。すべてが正常にコンパイルされますが、プログラムを実行すると、ユーザーからの入力をスキップするだけです。したがって、「挿入する文字列を入力してください:」と出力され、cin.getline 関数をスキップして、次のコマンドを実行します。
これが私のヘッダー ファイル、cstring の宣言、および問題のあるコード行です。
注:「cin >> tempCString」は、最初のスペースまでの入力しか取得できないため、使用できません。改行までのすべての入力をコンソールから取得する必要があります。
ありがとうございました
c - 関数 C から入力された文字列配列を返す
初めて投稿するので、混乱させて申し訳ありません:
私はこのような関数を書いています:
私の関数の目的は、入力文字列 (基本的には任意のユーザー入力) のコピーを取得し、それを使用strtok
してトークンに変換し、配列ポインター ( ) を介して配列に入力することargV
です。が終了したらmyFunc
、うまくいけば、文字列から引数の数と文字列の配列が得られinputStr
ます。
これが私がそれを呼び出す方法の例です:
私の質問: 安全で一貫した方法でこれを行うにはどうすればよいですか? プロはこれをどのように行うのですか?
malloc
次の理由で使用しません。- 入力の引数の数またはそれぞれの長さがわかりません(スペースを動的に割り当てるため)。それが私がポインターを使用する理由だと思いました
- メイン関数で宣言しているので、スタック上にある場合でも、使用される/メモリへのポインタは問題なく/スコープ内に留まる
argCTemp
と思いました。argVTemp
myFunc
終了すると、作成されたスタック参照が無効になることがわかっているため、呼び出し元の関数からポインターを送信しました。ポインターなどを使用する必要がありますmalloc
か?最後に: 終了する前に、 and
/li>myfunc
の値を確認し、有効な内容を持っていることを確認します。私は次のように設定しています:argCTemp
argVTemp
argCtemp
argVtemp
関数が終了する前に問題なく動作しているようです。メモリ内の別の場所にポインターを設定しているため、参照が失敗する理由がわかりません。malloc
ポインターを設定するときにINSIDEを使用してみましたが、終了して呼び出し元の関数によって読み取られると、myFunc
まだゴミになります。myFunc
これが紛らわしい場合は申し訳ありませんが、事前に助けてくれてありがとう.
c++ - CStringに含まれる値の丸め
したがって、「45.05」などの数値を含むCStringがあり、この数値を小数点以下1桁に丸めたいと思います。
私はこの機能を使用します
値を丸めることができるフロートに入れます。ただし、45.05の場合、取得する数値は45.04999です...これは45.0に丸められ、45.1が期待されます。
CStringから正しい値を取得するにはどうすればよいですか?
TIA
objective-c - Objective Cで文字列が等しいかどうかを判断するにはどうすればよいですか?
JSONの結果から次のように文字列を読み取ります。
次に、文字列が値「N」に等しいかどうかを判断しようとします
結果が「N」であっても、ifステートメントは常にelse部分を返します。どちらも同じ値ですが、ステートメントは常にfalseを返します。
c++ - C++でcスタイルの文字列よりもstd::stringを使用する必要があるのはなぜですか?
「 cスタイルのstrings( )ではなくstd :: stringを常に使用する必要がありますchar *
」は、ここに投稿されたほぼすべてのソースコードに対して出てくるアドバイスです。アドバイスは間違いなく良いですが、実際に取り上げられている質問では、その理由を詳しく説明することはできません。詳細なアドバイスの側面。この質問は、同じもののプレースホルダーとして機能することです。
良い答えは、次の側面をカバーする必要があります(詳細):
- なぜ
std::string
C++でCスタイルの文字列を使用する必要があるのですか? - で言及されている慣行の不利な点(もしあれば)は何
#1
ですか? - で述べたアドバイスの反対が
#1
良い習慣であるシナリオは何ですか?
objective-c - 通常の文字にヌル文字を追加する
次のように、ヌル文字を通常の文字と連結したい:
問題は、文字列の長さが 4 のままであることです (そして のように見えます¿ABC
)。null 文字も文字列に追加されるように、このコードを編集するにはどうすればよいですか?
マークのコメントへの返信として
ここでやろうとしているのは、文字列の長さを文字列の先頭に追加することです。数値形式ではなく、ASCII 文字の形式 (ほぼ 256 進数のようなもの) で追加します。私はフォーマットを使用します、@"%04c%@",length,message
問題は、結果の文字列が になり000¿ABC
、ゼロにはASCII値(正確には10進数で48)が含まれるため、目的が無効になることです。10 進値 0 を持つ ASCII 文字はヌル文字 ( \0
) であるため、0 の代わりにそれを使用する必要があります。先頭のヌル文字が必要です。
私が達成しようとしている目的のために、次のコードが機能します
しかし、誰かがより短いものやより直感的なものに貢献できるなら、それは素晴らしいことです.
c++ - C ++:新しいC文字列入力を受け入れません
まず、ご協力いただきありがとうございます。この問題は私を悩ませています。
私はc-stringを受け入れ、母音と子音の数を数えることができるプログラムを持っています。これは問題なく機能します。ただし、ユーザーが新しい文字列を作成できるようにする関数も含める必要があります。ただし、問題は、ユーザーがメニューから「新しい文字列」を選択するnewString()
と、ユーザーの入力を待たずに、メソッドをループするだけであるということです。次に、新しい空白の画面を作成します。
これがプログラム全体です。newString()
メソッドは最後です。