天国にいけるC言語入門 ヘキサ構造体 ver5.2130
🌞scanf関数を使って空白を含んだ文字列データ"Hello nyannko"を配列にとりこむことはできませんがgets関数(get_s関数)をもちいればそれが可能となります🌞
🌞scanf関数を使って空白を含んだ文字列データ"Hello nyannko"を配列にとりこむことはできませんがgets関数(get_s関数)をもちいればそれが可能となります🌞
🌞scanf関数を使って空白を含んだ文字列データ"Hello nyannko"を配列にとりこむことはできませんがgets関数(get_s関数)をもちいればそれが可能となります🌞
😊つ🍎づ🍎き😊です🍎
🐤_ 🐤_
#pragma warning(disable: 4996)
#include <stdio.h>
int main(void)
{
char hairetu[10000];
scanf("%s",hairetu);
printf("%s\n",hairetu);
return 0;
}
このプログラムを実行して
アンダーバー
_
が表示される
入力待機中のコマンドプロンプト画面で
Hello nyannko
とうちこむと・・・・・
プログラムの実行結果
Hello nyannko (と入力すると)
Hello (だけが表示されます)
ソーラー「つまり
scanf関数では
空白部分を含んだ文字列データ"Hello nyannko"を
一塊の文字列データとして
char型の配列にそのまま格納することはできないんだ。
どうやったら文字列データ"Hello nyannko"を
char型の配列に空白スペースを含んだそのままの形で
格納することができるのか?
👉
そんな 貴女にチャレンジ ジョイ
この台所洗剤をつかえば
しつこい油汚れもすっきりと落ちます。
👉
アレサ「ソーラーさん
この場合ではgets関数をもちいれば
文字列データ"Hello nyannko"を
そのまま
char型の配列に格納することができます。
次のプログラムをご覧ください。
#include <stdio.h>
int main(void)
{
char hairetu[10000];
gets(hairetu);
printf("%s\n",hairetu);
return 0;
}
プログラムの実行結果
(EAZY IDECの場合)
Hello nyannko(と入力すると)
Hello nyannko(と表示されます)
プログラムの実行結果
(Visual Studioの場合)
エラー (アクティブ) E0020 識別子 "gets" が定義されていません
エラー C3861 'gets': 識別子が見つかりませんでした
ソーラー「?
Visual Studioではgets関数を使用することはできないんだね」
アレサ「はい
gets関数はVisual Studioでは使用できないのです
(gets関数はセキュリティの問題があるため(後述されます😊)
2011年に改訂されたC11規格以降の標準Cライブラリでは廃止されているので
最新のVisual Studioでは使用できません
ということは
EAZY IDECは2011年より前に作製された統合開発環境ということになります)
そこで
Visual Studioでは
Visual Studio専用に開発された
gets_s関数を使用することになります
#include <stdio.h>
int main(void)
{
char hairetu[10000];
gets_s(hairetu);
printf("%s\n",hairetu);
return 0;
}
プログラムの実行結果
(EAZY IDECの場合)
コンパイラに内部エラーが発生しました。
undefined symbol 'gets_s'
プログラムの実行結果
(Visual Studioの場合)
Hello nyannko(と入力すると)
Hello nyannko(と表示されます)
ソーラー「今度は
統合開発環境EAZY IDECでは
gets_s関数は定義されていませんと
エラーが表示されたね。
面白いな・・
ところで
gets_s関数の仕組みはどうなっているのかな?」
アレサ「gets_s関数のgetsは
get sentense(文字列)
の略で
文字列データを
char型の配列に格納する働きがあります。
gets_sの右側のsはsecurity のsです
char型の配列に文字列データを格納したい場合は
gets_s(hairetu)
のように
データを格納したい配列の配列名を
gets_s関数の引数として書き込んで使用します。」
ソーラー「それだけ? とっても簡単だね」
アレサ「はい😊 この gets_s関数
gets_s(hairetu);
が実行されると
コマンドプロンプト画面に
アンダーバー_が表示されます
キーボードからの文字入力をうけつけているのですね
文字は1文字だけでなく複数の文字を入力することができます
文字列を入力した後
Enterキーをおせば文字列データ入力は終了し
配列hairetuに文字列データが入力されることになります
Hello nyannko
や
apple lemon beatless
のように
文字列データの1部に空白を含んでいても
そのまま
文字列データを
char型の配列に格納することができます。
次のプログラムをご覧ください」
#include <stdio.h>
int main(void)
{
char hairetu[10000];
gets_s(hairetu);
printf("%s\n",hairetu);
return 0;
}
プログラムの実行結果
(Visual Studioの場合)
apple lemon beatless(と入力すると)
apple lemon beatless(と表示されます)
アレサ「
apple lemon beatless
と入力してEnterキーをおすと
文字列データ"apple lemon beatless"
は
空白スペースとともに
char型の配列hairetuに格納され
コマンドプロンプト画面には
文字列に空白スペースがふくまれている
apple lemon beatless
が表示されます」
ソーラー「これは便利な関数だね
文字列に空白スペースを含んでいるものは多いから
gets_s関数はこれからたくさん使用しそうだね。」
💖ここでコマーシャル!💖
新未来型面白アニメ
『Beatless』
よろしくね!
アレサの友達もたくさん出てきます
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます