質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Q&A

解決済

1回答

4879閲覧

C言語でgets_s関数を使い出力したい

yuuki_ha

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

0グッド

0クリップ

投稿2021/05/05 14:01

前提・実現したいこと

C言語初学者です。
gets_s関数を用いた出力をしたいのですが、stdio.hをインクルードしていてもエラーが出てしまいます。

発生している問題・エラーメッセージ

error: implicit declaration of function 'gets_s' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gets_s(str, 100);

使用言語 C

該当のソースコード

#include<stdio.h>

int main(void)
{
char str[100];

printf("文字列を入力してください。\n"); gets_s(str, 100); printf("入力した文字列は%sです。\n", str); return 0;

}

//include冒頭のバックスラッシュは含みません

試したこと

・コンパイラのアップデート(12.0.5)
・stdio.hの内容確認(関連ありそうな記述はchar *gets(char *);しか確認できませんでした)

補足情報(FW/ツールのバージョンなど)

統合開発環境・・・Visual Studio Code
端末・・・MacBook Air

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

gets_sはいちおうC11以上の規格にはありますが、コンパイラによっては存在しないこともありえますcppref)。

C

1#if defined(__STDC_LIB_EXT1__) 2#define __STDC_WANT_LIB_EXT1__ 1 3#include <stdio.h> 4#else 5#error "__STDC_LIB_EXT1__ not defined" 6#endif

上のコードを使うと、「gets_sを環境で使えれば読み込む、使えなければコンパイルエラーにする」という挙動になります。


fgetsは確実にありますので、汎用性を求めるならそちらを使いましょう。

投稿2021/05/05 14:09

maisumakun

総合スコア146544

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuuki_ha

2021/05/05 14:23

ご回答ありがとうございます! 回答いただいたコードで確認した結果、存在しないことが分かりました。 また、ご助言いただいたfgetsの方で無事出力できました。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問