• 締切済み

【再確認】C言語のcharとvarcharの扱い

すみません、前回も似たような質問をしましたが、再確認させてください。 例えば、変数1はサイズが256、型がvarchar、値がabcで、変数2はサイズが20、型がcharの場合、 変数1から変数2には値を直接代入できますか? また、代入できた場合、変数2の値はabc+スペース17桁になりますか? 逆に変数2の値がabcの場合、変数2から変数1には直接代入できますか? また、代入できた場合、変数2の値はabc(後ろにスペース等なし)になりますか?

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1599/2327)
回答No.3

他の回答者も書いているとおりC言語の標準にはvarcharなんてありません。どこかの誰かが作ったvarcharについて回答するには、その仕様書とかソースコードが必要です。 >変数1から変数2には値を直接代入できますか? >変数2から変数1には直接代入できますか? どちらもできません。型キャストを使って無理矢理代入したとしても、期待したとおりの動作はしないでしょう。 >代入できた場合、変数2の値はabc+スペース17桁になりますか? >代入できた場合、変数2の値はabc(後ろにスペース等なし)になりますか? そのような動作をするための関数を誰かが作る必要があります。 もし仕事などで「このvarchar型を使え」と指示されているのであれば、その指示者に質問してください。C言語の文字列とvarchar型の間の相互変換のやり方も決まったやり方が用意されているかもしれません。

回答No.2

C言語の標準の型にはvarcharってのは無い。 C言語では、文字列の代入ってのは出来ない。 strcpyとかmemcpyを使います。 強引にキャストするとかして、変数の指しているアドレスを代入する事は可能かも。 オンラインでお手軽にプログラム作れる環境とかもあるし、ちゃちゃっと試した方が、早いし納得できるのでは。 paiza.io https://paiza.io/ja/projects/new

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

C言語に varcharという(用意された)型はありませんし、 「サイズが20で、型がchar」というとcharのサイズが20のように思えますけど(sizeof(char)の値が20に思える)。 まぁC言語で直接代入可能なのは同じ型の場合なので、varcharとcharという時点で直接代入はできませんけど。

関連するQ&A