ポインタ変数を使ってメモリに格納された文字列データをstrcpy関数を使ってchar型の配列に代入(コピー)してみます
(´▽`*)(´▽`*)(´▽`*)(´▽`*)(´▽`*)(´▽`*)/
strcpy_s関数は統合開発環境Visual studio専用の関数となっており
他の統合開発環境ではお使いになれません
他の統合開発環境をお使いの方は
strcpy_s関数の代わりにstrcpy関数をお使いください。
またstrcpy関数はそのままでは
統合開発環境Visual studioでは使用できませんので
プログラムの冒頭で
#pragma warning(disable: 4996)を記述してください
strcpy_s関数
または
strcpy関数
を使用するには
プログラムの冒頭で
ヘッダファイル<string.h>をインクルードします
(^_-)-☆
ソーラー「こんにちは😊
今日も元気にすすんで行こうよ アレサ」
アレサ「はいですの ソーラーさん」
ソーラー「
まずは
char*型のポインタ変数aを使って
文字列データ
"快晴で~す"
をメモリに格納してみます
そのプログラムはこちらです
👇
#include <stdio.h>
#include <string.h>
int main(void) {
char* a = "快晴で~す";
printf("%s\n", a);
return 0;
}
Visual studioの場合
コンパイル結果
快晴で~す
ソーラー「このように
char*型のポインタ変数aを使って
文字列データ
"快晴で~す"
をメモリに格納することができました
このとき
char*型のポインタ変数aを使って
メモリに格納された
文字列データ
"快晴で~す"
を
strcpy_s関数をつかって
char型の配列に代入することができます
その様子を示すプログラムはこちらとなりま~す
👇
#include <stdio.h>
#include <string.h>
int main(void) {
char* a = "快晴で~す";
printf("%s\n", a);
char str[100];
strcpy_s(str,a);
printf("%s\n", str);
return 0;
}
Visual studioの場合
コンパイル結果
快晴で~す
快晴で~す
ソーラー「このプログラムでは
char* a = "快晴で~す";
を実行することにより
char*型のポインタ変数aを使って
メモリに
文字列データ
"快晴で~す"
が格納されています
そのことが
printf("%s\n", a);
の実行結果が
快晴で~す
となっていることからも分かります
次に
char型の配列宣言
char str[100];
の実行により
char型の配列strが生成されています。
そして
strcpy関数の第1引数に
char型の配列strのアドレスを格納したポインタ変数
str
を記述し
strcpy関数の第2引数に
文字列データ"快晴で~す"
をメモリに格納したときのポインタ変数a
を記述した
strcpy_s(str,a);
が
実行されると
char型の配列strに
文字列データ
"快晴で~す"
が格納されることになります
そのことが
strcpy_s(str,a);
の次の命令文
printf("%s\n", str);
の実行結果が
快晴で~す
となっていることからも分かります
printf("%s\n", str);
を実行すれば
配列strに格納されている文字列データ
"快晴で~す"
をコマンドプロンプト画面に
快晴で~す
として表示することができるのでした
このとき
char型の配列strに
char str[100]="みかんで~す";
と
文字列データ
"みかんで~す"
があらかじめ格納されていても
strcpy_s(str,a);
を実行することにより
文字列データ
"快晴で~す"
を
char型の配列strに上書きして
格納することができます
そのことを示すプログラムは
次のようになります
👇
#include <stdio.h>
#include <string.h>
int main(void) {
char* a = "快晴で~す";
printf("%s\n", a);
char str[100]="みかんで~す";
printf("%s\n", str);
strcpy_s(str, a);
printf("%s\n", str);
return 0;
}
ビルド実行結果
快晴で~す
みかんで~す
快晴で~す
ソーラー「
char型の配列strに
文字列データ "みかんで~す"
が格納されていますが
strcpy_s(str, a);
が実行されることにより
char型の配列strに
ポインタ変数aによってメモリに格納されている
文字列データ
"快晴で~す"
が
上書きして格納されます
printf("%s\n", str);
の実行結果が
strcpy_s(str, a);
の実行の前では
みかんで~す
だったのが
strcpy_s(str, a);
の実行の後では
快晴で~す
となっていることからも
char型の配列strに格納されている文字列データが
上書きされているのがわかります」
ソーラー「このとき
char* a = "快晴で~す";
を実行することにより
char*型のポインタ変数aを使って
メモリに
格納された文字列データ
"快晴で~す"
は
そのメモリに保存されたままとなっています
つまり
そのメモリにも
文字列データ
"快晴で~す"
が格納されていて
char型の配列strにも
文字列データ
"快晴で~す"
が格納されている状態となっています
そのメモリに格納されている
文字列データ
"快晴で~す"
が
char型の配列strに
コピー(copy)
されたというわけです
strcpy_s関数の名前通り
配列に
string(文字列)
が
copy
されたというわけです」
ソーラー「配列に文字列データを代入できるよう
C言語の作者は
便利なstrcpy_s関数をつくったんだね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます