天国にいけるC言語入門 ヘキサ構造体 ver2.2126
strcpy関数 strcpy_s関数の基本について学んでみましょう strcpy_s関数を使えば生成された配列に後から文字列データを代入することができます
strcpy関数は生成された配列に文字列データを🌞後から🌞代入するために使用されます ここでstrcpy関数をマスターしちゃおう😊
strcpy関数 strcpy_s関数の基本について学んでみましょう strcpy_s関数を使えば生成された配列に後から文字列データを代入することができます
アレサ「
strcpy関数 strcpy_s関数の基本について学ぶ前に
文字列データを
配列(を用いてメモリ)に格納する方法と
文字列データを
ポインタ変数(を用いてメモリ)に格納する方法の
2つの方法について学んでみませんか?(^_^)
」
ソーラー「
文字列データを
配列(を用いてメモリ)に格納する方法か・・
確か・・
strのchar型の配列宣言
char str[100];
を
実行したとします
すると
このchar型の配列strは
str[100]と
[]の中の要素数が100と記述されているので
100バイト分の文字列データを格納することができます
半角英数字1文字は
1バイト分のデータ量を持つので
100バイト分の文字列データとは半角英数字100文字分に
相当します
ええと
とりあえず
文字列データ"nikonikoparadise"
を
このchar型の配列strに格納してみます
そのプログラムはこちらとなります
👇
#include <stdio.h>
int main(void) {
char str[100]="nikonikoparadise";
printf("%s\n", str);
return 0;
}
ビルド実行結果
nikonikoparadise
ソーラー「文字列データ"nikonikoparadise"を
char型の配列strに格納するには
char str[100]="nikonikoparadise";
のような命令文を実行すればよかったね。
そして
配列strに格納された文字列データをコマンドプロンプト画面に表示するには
配列strのアドレスを格納したポインタ変数
strを
printf関数の第2引数に用いた
printf("%s\n", str);
を
実行すればよいのでしたね」
アレサ「このプログラムの中の
文字列データ"nikonikoparadise"
を
char型の配列strに格納する命令文
char str[100]="nikonikoparadise";
を
char str[100];
str[100]="nikonikoparadise";
と
2つに分けて記述することはできません
そのときプログラムは次のようになります
#include <stdio.h>
int main(void) {
char str[100];
str[100]= "nikonikoparadise";
printf("%s\n", str);
return 0;
}
ビルド実行結果
エラー C3863 配列型 'char [100]' を割り当てることはできません。
エラー (アクティブ) E0513 型 "const char *" の値を型 "char" のエンティティに割り当てることはできません
ソーラー「確か、そうだったよね」
アレサ「
文字列データ"nikonikoparadise"
を
char型の配列strに格納する命令文
char str[100]="nikonikoparadise";
の代わりに
char str[100];
str="nikonikoparadise";
と記述することもできません
そのときのプログラムは
次のようになります
#include <stdio.h>
int main(void) {
char str[100];
str= "nikonikoparadise";
printf("%s\n", str);
return 0;
}
ビルド実行結果
エラー C3863 配列型 'char [100]' を割り当てることはできません。
エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります
ソーラー「なるほど
char型の配列strを
char str[100]="nikonikoparadise";
のように
ひとまとめにして記述して初期化するのは
配列に文字列データを格納するときの基本的なルールってわけだね」
アレサ「今度は
char str[100]="nikonikoparadise";
を
実行して
文字列データ"nikonikoparadise"
を
char型の配列strに格納するのではなく
strcpy関数、strcpy_s関数を用いて
文字列データ"nikonikoparadise"
を
char型の配列strに格納してみます」
(´▽`*)(´▽`*)(´▽`*)(´▽`*)(´▽`*)(´▽`*)/
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];
strcpy_s(str, "nikonikoparadise");
printf("%s\n", str);
return 0;
}
Visual studioの場合
ビルド実行結果
nikonikoparadise
ソーラー「 strcpy_s(str, "nikonikoparadise");
は何を意味しているのかな?」
アレサ「
strcpy_sは
配列に文字列データを代入することができる関数であり
strcpy_s関数の第1引数には
文字列データを格納したい配列のアドレスを格納したポインタ変数を
記述し
strcpy_s関数の第2引数には
配列に代入したい文字列データを
記述するというルールになっています
strcpy_s(str, "nikonikoparadise");
の
strcpy_s関数の第1引数として記述されている
strは
文字列データを格納したい配列strの名前strであり
strは配列strの先頭の配列変数str[0]のアドレスを格納したポインタ変数となっています
strcpy_s関数の第2引数として記述されている
"nikonikoparadise"
は
配列strに格納したい文字列データとなっていて
strcpy_s(str, "nikonikoparadise");
が実行されると
char型の配列str[100]に文字列データ"nikonikoparadise"
が代入されることになります」
アレサ「このように
strcpy_s関数を使えば
char型の配列に文字列データ
を代入することができます」
ソーラー「なんで
strcpy_s関数みたいなものがあるのかな?
strcpy_s(str, "nikonikoparadise");
を実行しなくても
char str[100]="nikonikoparadise";
を実行すれば
char型の配列strに
文字列データ
"nikonikoparadise"
を格納できるんじゃないかな?」
アレサ「そのようにみえます
ですが
strcpy_s関数さんは
プログラムを作製するとき
たびたび用いられることになります
ソーラーさん」
ソーラー「ええ? そうなの?」
アレサ「strcpy_s関数さんの
基本的な性質として
生成した配列に
後から
文字列データを代入できるというものがあります
次のプログラムをご覧ください
👇
#include <stdio.h>
#include <string.h>
int main(void) {
char str[100];
strcpy_s(str, "nikonikoparadise");
printf("%s\n", str);
return 0;
}
アレサ「このプログラムでは
char str[100];
により
char型の配列strを作製していますが
char str[100];
を実行して
配列strを作製しただけで
char str[100]="nikonikoparadise";
のように
文字列データ
"nikonikoparadise"
を
配列strに代入していません。
この後
str[100]="nikonikoparadise";
のように
文字列データ
"nikonikoparadise"
を
配列strに代入することはできません
ここで
strcpy_s関数を使えば
char str[100];
により生成された
char型の配列strに
後から
strcpy_s(str, "nikonikoparadise");
を実行することにより
文字列データ"nikonikoparadise"
を格納することができるのですの
char str[100];
strcpy_s(str, "nikonikoparadise");
と記述して
char型の配列strを作製した後から
strcpy_s(str, "nikonikoparadise");
を実行することにより
char型の配列strに
文字列データ"nikonikoparadise"
を格納することができるのですの」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます