
C言語の勉強をしている者です。エラーが解消されなくて困っています。差し支えなければ、どなたかエラーの解消方法を教えていただけませんか。
環境は、Visual Studio2017,Windows 10です。
(問題)
キーボードから2つの字列を入力し、その2つを結合した文字列を表示するプログラムを作成しなさい。ただし、最終的に出力する文字列は、strcpy()および、strcat()関数を用いて、2つの文字列を1つに統合したものにすること。
(期待される実行結果)
文字列1:ABC ← キーボードから入力
文字列2:DEF ← キーボードから入力
結合した結果:
ABCDEF
(私が作成したプログラム)
#include<stdio.h>
#include<string.h>
void main() {
char s1[10],s2[10],ans[10];
printf("文字列:");
scanf_s("%s", &s1);
printf("文字列:");
scanf_s("%s", &s2);
strcpy(ans, s1);
strcat(ans, s2);
printf("結合した結果:\n%s", ans);
}
(エラー、実行結果)
1>------ ビルド開始: プロジェクト: Project16, 構成: Debug Win32 ------
1>probex5-1.c
1>c:\users\watan\source\repos\project16\probex5-1.c(7): warning C4473: 'scanf_s': 書式文字列として渡された引数が不足しています
1>c:\users\watan\source\repos\project16\probex5-1.c(7): note: プレースホルダーとそのパラメーターには 2 の可変個引数が必要ですが、1 が指定されています。
1>c:\users\watan\source\repos\project16\probex5-1.c(7): note: 不足している可変個引数 2 が書式文字列 '%s' に必要です
1>c:\users\watan\source\repos\project16\probex5-1.c(7): note: この引数はバッファー サイズとして使用されます
1>c:\users\watan\source\repos\project16\probex5-1.c(9): warning C4473: 'scanf_s': 書式文字列として渡された引数が不足しています
1>c:\users\watan\source\repos\project16\probex5-1.c(9): note: プレースホルダーとそのパラメーターには 2 の可変個引数が必要ですが、1 が指定されています。
1>c:\users\watan\source\repos\project16\probex5-1.c(9): note: 不足している可変個引数 2 が書式文字列 '%s' に必要です
1>c:\users\watan\source\repos\project16\probex5-1.c(9): note: この引数はバッファー サイズとして使用されます
1>c:\users\watan\source\repos\project16\probex5-1.c(10): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\string.h(136): note: 'strcpy' の宣言を確認してください
1>c:\users\watan\source\repos\project16\probex5-1.c(11): error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\string.h(93): note: 'strcat' の宣言を確認してください
1>プロジェクト "Project16.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
No.1ベストアンサー
- 回答日時:
scanf_s は、scanfとは使い方が違います。
scanf_s を使うなら、引数もそれに合わせてください。
または、 scanf を使ってください。
詳しくは
error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
とある通りです。
error C4996 で検索するとよいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
Excelで3E8を3.00E+8にしない方...
-
EXCELで=より左の文字を一括で...
-
最も多い文字列を検索するには
-
Excelで指数表現しないようにす...
-
Msgboxの×が押されたとき
-
【Excel VBA】複数ある特定の文...
-
VBScriptでEUC文字列をSJIS文字...
-
Left関数とRight関数を合わせた...
-
エクセルで文字列の最大値を抽...
-
VBAを使って選択した範囲の数字...
-
VBAで、セルの一部の文字色を変...
-
PDFのファイル名をリネームをし...
-
エクセル 数値データを桁をそ...
-
“丸(〇/○/◯)”に似た文字…
-
CStringの文字列検索&抜き出し...
-
ACCESSのSQLでのカンマ’認識に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列をtxtファイル...
-
エクセルで文字列の最大値を抽...
-
Excelで3E8を3.00E+8にしない方...
-
Left関数とRight関数を合わせた...
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
-
MS SQLServer のSQLで文字列の...
-
Excelで指数表現しないようにす...
-
ORCLEでの小数の表示方法の変更...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
SQL の Update文(?) と ...
-
VBの「As String * 128」とは?
-
aaa.bbb.ccc という、「ドット...
-
同一セル内に関数と文字列を同...
おすすめ情報