
ファイルから入力した文字数をカウントしてファイルに出力するプログラムをVC++のC言語を使ってビルドしたのですが警告が出ます。
何処が拙いのでしょうか?
教えて下さい。
実行環境はOSがWindows Vistaで統合開発環境がVisual C++ 2008です。
C言語初心者なので分かりやすく教えて下さい。
/* count_char.c */
#include <stdio.h>
#include <stdlib.h>/* for exit(); */
int main(int argc, char *argv[])
{
FILE *fin, *fout;
int len;
int ch;
char ss[80];
if (argc != 3) {
printf("引数の数が違います、エラー。用法:count_char fromfile tofile\n");
exit(1);
}
if ((fin = fopen(argv[1], "r")) == NULL) {
printf("読み込みファイル%sがオープン出来ません。\n", argv[1]);
exit(1);
}
if ((fout = fopen(argv[2], "w")) == NULL) {
printf("書き込みファイル%sがオープン出来ません。\n", argv[2]);
exit(1);
}
len = 0;
while ((ch = fgetc(fin)) != EOF) {
len++;
}
sprintf(ss, "文字数=%d\n", len);
fputs(ss, fout);
fclose(fin);
fclose(fout);
return 0;
}
警告の内容は以下の通りです。
1>------ ビルド開始: プロジェクト: count_char, 構成: Debug Win32 ------
1>コンパイルしています...
1>count_char.c
1>c:\vc9\count_char\count_char\count_char.c(16) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' の宣言を確認してください。
1>c:\vc9\count_char\count_char\count_char.c(20) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' の宣言を確認してください。
1>c:\vc9\count_char\count_char\count_char.c(30) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366) : 'sprintf' の宣言を確認してください。
1>マニフェストをリソースにコンパイルしています...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Micros
No.2ベストアンサー
- 回答日時:
fopen()で警告が出るのはstdio.hを見れば解ると思うのですが、通常
fopen(const char *, const char *);
となっており、宣言とコードが食い違うためと考えられます。
また現在ではfopen_s()を使用することがMicrosoftで推奨されています。
詳細は以下のサイトを御覧ください。
http://msdn.microsoft.com/ja-jp/library/z5hh6ee9 …
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
strncpyと_tcsncpy_sのヌルの扱...
-
fgetsなどのときのstdinのバッ...
-
ASCII変換について
-
CStringをwchar_tに変換したい
-
下記のプログラムがコンパイラ...
-
文字列から空白を取り除きたい...
-
文字列の中のカンマを消したい
-
引数の渡し方と受け方(argv)
-
scanf()について教えてください
-
PROCのコンパイルエラーの取り...
-
charからLPTSTRへの変換方法
-
double型の値をchar配列に変換...
-
至急!C言語文字列置換
-
テキストデータをそのままバイ...
-
間接操作のレベルとは
-
switch文で文字を比較すること...
-
COBOL->C(++)コンバータ
-
英単語をアルファベット順に
-
ネットワークにつながっている...
-
型変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
テキストデータをそのままバイ...
-
ネットワークにつながっている...
-
fgetsなどのときのstdinのバッ...
-
double型の値をchar配列に変換...
-
atoi( ) の反対をやりたい
-
charからLPTSTRへの変換方法
-
'const char *' 型は 'char *' ...
-
間接操作のレベルとは
-
c言語プログラミング実行時エラ...
-
c++ 文字列を入力して、一文字...
-
【C言語】構造体内の領域解放(...
-
間接参照のレベルが異なっています
-
C言語の入力した文字を反転させ...
-
構造体のアライメント調整
-
strncpyと_tcsncpy_sのヌルの扱...
-
TCP/IP通信型大文字・小文字変...
-
char型からのバイト数取得
おすすめ情報