2016-12-06 7 views
1

だから私はこの問題を徹底的に調べていますが、解決策を特定できませんでした。gets_sエラーC2660「機能が1つの引数を取らない」 - 非常に混乱する

基本的に私は.txtファイルを読み込もうとしていますが、get_s関数でファイルの名前を入力するとすぐにエラーC2660が表示されます - "エラーC2660: 'gets_s':関数1つの議論を取っていない "。ここで

は私のコードの例である:外観を持つすべての人に

#define _CRT_SECURE_NO_WARNINGS 

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 


void main() 
{ 
FILE *fileread1; 
char file1[10]; 
char read_char1; 
char ch; 
{ 

    printf("Enter a filename : "); 
    gets_s("file1.txt"); 

    fileread1 = fopen("file1.txt", "r"); 

おかげで、私はしかし、私はプログラミングに非常に新しいです、問題は紛れも明らかに何かありそうです感謝しています。どうもありがとう!

答えて

0

gets_sは、1つではなく2つの引数をとります。参照先はhttp://en.cppreference.com/w/c/io/getsです。

この機能は使用しないでください。ではなく、fgetsを使用してください。 getsgets_sはどちらもバッファオーバーフローを防ぎません。

getsを使用するようにfgetsを使用するには、stdinを入力ファイルポインタとして渡します。ここでは使用例です:

ここ
char buffer[100]; 
fgets(buffer, 100, stdin); 

が詳細に入るfgetsのための優れたリソースです:https://www.freebsd.org/cgi/man.cgi?query=fgets&sektion=3

修正

いくつかの研究の後、gets_sは保護getsのバージョンのように見えますしかし、OSXマシンやFreeBSDサーバではstdio.hに見つかりませんでした。標準ではないようですので、fgetsを使用してアドバイスします。

関連する問題