strcpy関数を使って文字列データを配列にコピーしてみよう



(´▽`*)(´▽`*)(´▽`*)(´▽`*)(´▽`*)(´▽`*)/

strcpy_s関数は統合開発環境Visual studio専用の関数となっており


他の統合開発環境ではお使いになれません


他の統合開発環境をお使いの方は


strcpy_s関数の代わりにstrcpy関数をお使いください。


またstrcpy関数はそのままでは


統合開発環境Visual studioでは使用できませんので


プログラムの冒頭で


#pragma warning(disable: 4996)を記述してください


strcpy_s関数

または

strcpy関数


を使用するには


プログラムの冒頭で


ヘッダファイル<string.h>をインクルードします


(^_-)-☆


#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


が記述されているね


strcpy_s(str, ars);



配列arsの文字列データ


"mappyで~す"



配列strにコピーしているんだ


つまり


配列arsには文字列データ


"mappyで~す"


を格納したまま


配列strに


文字列データ


"mappyで~す"


を格納しているんだね。


printf("%s\n", ars);


の実行結果を見ても


配列arsに格納されているのは


文字列データ


"mappyで~す"


となっているのがわかるね(^_-)-☆」




アレサ「


ソーラーさん


今までのプログラムでは


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つ


引数を持つことができるんだよ」


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます