No.1ベストアンサー
- 回答日時:
こんにちは。
strcpy()関数は第1引数で与えられたメモリへ第2引数で与えられたメモリから、文字列の終わりを示す印'\0'(ヌル文字)を見つけるまでコピーする関数です。
"ABCDE"ではヌル文字'\0'を定義していませんが、文字列の最後には自動的にコンパイラがヌル文字'\0'を付加しています。
さて2つ目の質問ですが、残念ながら配列とポインタについて、理解が不足しているようです…。
まず、strcpy()の第1引数は、文字列を格納する配列変数の頭を指すポインタを渡さなければなりません。ですから、strcpy(s[10],"ABCDE");をコンパイルすると、エラーになると思います。s[10]はchar型として認識されるので、ポインタ(char*)ではないからです。
また、(char*)s[10]としてキャスト(型変換)すると、コンパイルは通りますがバッファオーバーフローします(実行時にエラーになるかは、環境しだいですが、正しく実行されないと思います)。これは、変数sの先頭から数えて10バイト目から文字列"ABCDE"のコピーが行われるためで、もともと10バイトしか確保していない変数へ15バイトのデータを書き込むのと同じです。なお、0~9バイト分には何もコピーされないので、おかしな値が入ると思います。
C言語においてポインタは避けては通れない部分になりますので、あせらず確実に理解できるよう、がんばってください。
No.2
- 回答日時:
>char s[10];
>strcpy(s,"ABCDE");
>は、sにABCDEを代入でいいのでしょうか?
代入じゃないですね。コピーです。
>ちなみにs[10]だと文字数があうのはわかるのですが、
いえ合ってないですけど。
"ABCDE"は5文字+\0で6バイトです。
s[10]は10バイトですね。
>strcpy(s[10],"ABCDE");だとだめなのでしょうか?
だめですね。コンパイルエラーします。
strcpy(s[10]
はどういう意味になるか書いてみてください。
この回答へのお礼
お礼日時:2009/05/16 12:34
いや~勉強不足です。
strcpy(s[10]だとおかしな値が出てしまいますね。
もう一度文法の本でstrcpyのこと調べてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- その他(ソフトウェア) ソースネクストアプリをインストールし、製品登録で半角英数字が入力できない 5 2022/07/03 22:44
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- 高校 順列、組み合わせの宿題を教えていただきたいです。 ABCDEの5人を2人グループに分けます ①Aが3 4 2023/02/24 14:16
- PHP substrの使い方について教えて下さい。 4 2023/02/17 15:59
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- 数学 中3 円周角の定理の問題です 3 2022/06/29 22:21
- 数学 正五角形の頂点を反時計回りにabcdeとする。二つの動点r、wが、rは頂点aを、w頂点cを出発して次 3 2022/07/22 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
大量のデータを読み込んで表示...
-
システムエンジニアの適正について
-
C言語 配列と関数の練習問題
-
[C言語]fputsとfprintfの違い
-
どちのほうがすきですか?
-
関数ポインタの高速化のメリット
-
C++のcase文の書き方
-
S-JIS → JIS コード変換するには
-
こんなことてしますか??
-
VisualStudio2022でC言語プログ...
-
gcc13.2のバグ?
-
Cのdoubleの浮動小数点表示につ...
-
win10で、正確な待ち時間の作り方
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 列挙型(enum型)変数について
-
C言語について。
-
double型が正常に認識されてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
-
質問失礼します。 プログラム言...
-
double型が正常に認識されてい...
-
Notepad++の関数リスト表示でC...
-
どちのほうがすきですか?
-
Stuck
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
C言語の関数と配列に関する質問
-
C言語って古いですか?
-
Linuxでの開発環境構築や設定の...
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
c言語
-
大量のデータを読み込んで表示...
-
こんなことてしますか??
おすすめ情報