プロが教える店舗&オフィスのセキュリティ対策術

ファイルから入力した文字数をカウントしてファイルに出力するプログラムを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

A 回答 (2件)

    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2010/11/13 22:50

fopen()で警告が出るのはstdio.hを見れば解ると思うのですが、通常


fopen(const char *, const char *);
となっており、宣言とコードが食い違うためと考えられます。

また現在ではfopen_s()を使用することがMicrosoftで推奨されています。
詳細は以下のサイトを御覧ください。

http://msdn.microsoft.com/ja-jp/library/z5hh6ee9 …
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2010/11/13 22:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!