問題タブ [strcpy]
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 - strtok の結果を C の 2 つの文字列にコピーする
わかりました、それで私はコードを持っています
そして、実行するとEXC_BAD_ACCESSが表示されます。はい、コマンドと引数は既に定義されています。
c - Strcpy() は Solaris ではコピーされた文字列を破損しますが、Linux では破損しません
クラスのCコードを書いています。このクラスでは、コードをコンパイルして学校のサーバー (sparc solaris マシン) で実行する必要があります。Linux x64 を実行しています。
解析する次の行があります (これは実際のコードではありませんが、プログラムへの入力です):
「while」と「cond1」を別々の文字列にキャプチャする必要があります。私はこれstrtok()
を行うために使用してきました。Linux では、次の行:
ただし、solaris マシンでこれを実行すると、文字列「cone1」が得られます。
私のプログラム内の他の多くのケースでは、文字列が正しくコピーされていることに注意してください。(たとえば、「while」) が正しくキャプチャされました。
ここで何が起こっているか知っている人はいますか?
c++ - C++ strcpy() に参照による呼び出しが必要ないのはなぜですか?
いくつかの質問を含む宿題があります。1 つは、strcpy() 関数が CString の参照演算子による呼び出しを必要としない理由を尋ねることです。私はこの本を何度も読み返しましたが、一生答えを見つけることができません。誰かが私にこれを説明するのを助けることができますか?
これは並べ替えの配列なので、参照による呼び出しが必要になると思います。
c - strcpyとmemcpy
memcpy()
との違いは何strcpy()
ですか?私はプログラムの助けを借りてそれを見つけようとしましたが、両方とも同じ出力を与えています。
出力
c - 新しい文字列値を正しく割り当てるにはどうすればよいですか?
この些細な問題を C で解決する方法を、最もクリーンで安全な方法で理解しようとしています。これが私の例です:
コンパイラのエラーは次のとおりです。
main.c: 関数 'main' 内: main.c:18: エラー: 型 'char *' から型 'char[20]' に代入するときに互換性のない型です</p>
C (C++ ではない) には String 型がなく、代わりに s の配列を使用することを理解しています。そのため、これを行う別の方法は、例の構造体をs のchar
ポインターを保持するように変更することでした。char
これは期待どおりに機能しますが、これを行うより良い方法があるかどうか疑問に思います。
c - strcpy() 戻り値
標準 C ライブラリの多くの関数、特に文字列操作用の関数、特に strcpy() は、次のプロトタイプを共有しています。
これらの関数の戻り値は、実際には提供された と同じdestination
です。冗長なものの戻り値を無駄にするのはなぜですか? このような関数は、無効にするか、何か有用なものを返す方が理にかなっています。
これがなぜなのかについての私の唯一の推測は、関数呼び出しを別の式でネストする方が簡単で便利だということです。たとえば、次のようになります。
このイディオムを正当化する他の合理的な理由はありますか?
c++ - 従来のstrcpy()で健全性チェックが行われないのはなぜですか
以下は、従来のシステムで最も一般的なstrcpyの実装です。destとsrcが最初にNULLについてチェックされないのはなぜですか?昔はメモリが限られていたので、ショートコードが常に好まれていたと聞いたことがあります。今日の開始時にNULLポインターチェックを使用してstrcpyおよびその他の同様の関数を実装しますか?なぜだめですか?
c - 構造体のstrcpyはSIGABRTを与えます
私は現在Cで書かれたFTPクライアントに取り組んでおり、それはかなりうまく機能しています。FTPサーバーに接続し、ユーザー名とパスワードでログインする関数を作成することに成功しましたが、エラーを返すのに問題があります。私はstruct FTPError {};
3つのフィールドでを設定しました:
int
エラーコードint
FTPエラードメイン(私の機能に固有)char[256]
ユーザーが読める説明
関数の呼び出し元は、関数を参照して構造体を渡し、データを入力します。しかし、私はユーザーが読み取り可能な文字列(char[256]
)を入力するのに苦労しています。文字列を。で埋めますがstrcpy
、それを呼び出すと、プログラムがSIGABRTに信号を送ります。私はあなたに私のコードの簡略化された部分を提示します:
PS:これはXcodeがエラーコンソールで私に与えるものです:
PPS:関数を呼び出すコードを表示するように求められました:
c - strcpy()と文字列の配列
ユーザーからの入力を文字列の配列に格納する必要があります。
ターミナルで実行すると、セグメンテーション違反が発生し、NetBeansではmain.c:11:エラー:割り当てに互換性のないタイプが発生します。また、すべての履歴をシフトして、最新の入力を最初の位置(history [0])に格納しようとしました。
しかし、これはこのような出力を引き起こします。
入力が「入力」の場合
履歴0:入力履歴1:nullなど。
その場合、入力は「新規」です
履歴0:新しい履歴1:新しい履歴2:nullなど。
新しい入力が入力されるたびに、文字列シフトへのポインタが移動しますが、これにより、最新の値のみが履歴配列に保存されます。
c++ - strcpyとその2番目の引数のエラー
このプログラムをコンパイルしようとすると、strcpyの2番目の引数に関するエラー(コードの下に含まれています)が表示されます。私はそれを修正するために何をすべきか正直に困惑しています。そして、私のコードが効率的でないか、見栄えが悪い場合は申し訳ありません。私はCSの初心者です。