問題タブ [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 - 私の場合は strncpy または strlcpy
コピーsrc_str
先dst_arr
とその理由
追伸:良いか悪いかについて多くのことを読んだ後、私の頭は私のコンピューターのディスクよりも速く回転していstrncpy
ますstrlcpy
。
注:strlcpy
どこでも利用できるわけではありません。それはここでは問題ではありません。
c - 関数から可変サイズの文字列を返すにはどうすればよいですか?
ランダムな長さのランダムな文字列を返す関数の作業コードが必要です。
私がやりたいことは、次のコードでより適切に記述されます。
このため、 stdio.h以外のインクルードを使用することは固く禁じられています。編集:このプロジェクトはPICマイクロコントローラー用にコンパイルされるように調整されるため、malloc()などは使用できません。ここでstdio.hを使用する理由は、 GCCを使用して出力を検査できるようにするためです。
現在、このコードはこのエラーを出します。-
「警告:関数はローカル変数のアドレスを返します[デフォルトで有効]」</ p>
それで、これでうまくいくと思いました。-
しかし、それは意味のない文字の束を印刷するだけです。
c++ - 関数から動的な C スタイルの文字列を返しますか?
基本的に、私は大まかにこのような関数を持っており、戻る必要があります。
明らかに、戻るときに out が逆参照されます。私のオプションは何ですか?この関数をそのように呼び出すことができる必要があります。私は絶対にスタックにとどまりたいです。
c++ - c ++でchar *を適切に割り当てるにはどうすればよいですか?
私の C++ コードは次のようになります。
x = '0';
最初にコンパイラが不平を言うため、これを機能させる方法がわかりません:
そして2番目x = "1";
に、コンパイラは次のように不平を言います:
ここで何をすべきですか?私はこれについて完全に間違っていますか?
c - 文字列を逆にする
基本的に、10進数を別の基数(基数2など)の数値に変換するメソッドがあります。配列の位置0の要素が最も重要で、たとえば$ 100、1が最も重要です。
ACを出力するはずの文字列を入力すると、CA(Decからhex)が得られます。Cでこのchar配列を逆にするにはどうすればよいですか?
c - Cの関数から文字列を返す
これのどこが間違っているのか誰か教えてもらえますか? テスト実行を試みましたが、呼び出そうとしても何も出力されません。
c - char* 内の char を編集できないのはなぜですか?
以下は非常に単純な例です。Mac OS X (Snow Leopard) では gcc を使用して正常にコンパイルされます。実行時に Bus error: 10 を出力します。
c - 文字列から 2 つの整数を C に格納する
文字列から 2 つの数値を出力するプログラムを作成しようとしています。
たとえば、string = '20,66' '20' と '66' を 2 つの別々の変数に格納できるように、この文字列を分割しようとしています。
ここに私が取り組んでいるコードがあります:
これまでのところ、1 桁の変数しか格納できず、何らかの理由で余分な行が出力されます。
提案やアドバイスをいただければ幸いです。
c++ - C++ での C 文字列と文字列リテラルの理解
文字列リテラルと C 文字列についていくつか質問があります。
したがって、次のようなものがある場合:
私が理解しているように、文字列リテラルは、たとえばアドレス 0xA0 から始まり 0xA9 で終わるなど、終端の null バイトを使用してメモリ内に作成され、そこからアドレスが返されるか、型 char [ ] にキャストされます。住所・アドレス。
これを実行することは合法です:
この意味で、型 char [ ] にキャストされている限り、文字列リテラルを変更できますか?
しかし、通常のポインターでは、メモリ内の文字列リテラルを指すと、ほとんどのコンパイラが割り当てられたメモリを定数の下限アドレス空間で「読み取り専用」としてマークするため、内容を変更できないことがわかりました。
私が理解しようとしているのは、配列のように char * 型が文字列リテラルを指して定数を変更できないのはなぜですか? 文字列リテラルが char [ ] のように char * にキャストされないのはなぜですか? ここで間違った考えを持っている場合、または完全に間違っている場合は、お気軽に修正してください。