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