获取“U s错误C2660”;函数不接受1个参数";-非常困惑

获取“U s错误C2660”;函数不接受1个参数";-非常困惑,c,visual-studio,C,Visual Studio,因此,我已经尽可能彻底地研究了这个问题,但是我无法找到一个解决方案(对于编程来说是非常新的) 基本上,我正在尝试读取一个.txt文件,但是当我要求用户使用get_s函数输入文件名时,我得到了错误C2660—“错误C2660:'get_s':函数不接受1个参数” 下面是我的代码示例: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h>

因此,我已经尽可能彻底地研究了这个问题,但是我无法找到一个解决方案(对于编程来说是非常新的)

基本上,我正在尝试读取一个.txt文件,但是当我要求用户使用get_s函数输入文件名时,我得到了错误C2660—“错误C2660:'get_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");
\define\u CRT\u SECURE\u NO\u警告
#包括
#包括
#包括
void main()
{
文件*fileread1;
char file1[10];
char read_char1;
char ch;
{
printf(“输入文件名:”);
获取_s(“file1.txt”);
fileread1=fopen(“file1.txt”,“r”);

感谢大家的关注,我理解这个问题很可能是显而易见的,但是我对编程还很陌生。非常感谢!

gets\u s
接受两个参数,而不是一个。这里有一个参考:

您不应该使用此函数。相反,您应该使用
fgets
。我的理解是
gets
gets\s
都不能防止缓冲区溢出

要像使用
gets
一样使用fgets,只需将
stdin
作为输入文件指针传递即可。下面是一个使用示例:

char buffer[100];
fgets(buffer, 100, stdin);
下面是一个很好的fgets参考资料,详细介绍如下:

校正
经过一些研究,
gets\u s
似乎是防止缓冲区溢出的
gets
版本,但是我在我的OSX机器或FreeBSD服务器上的
stdio.h
中找不到它。它似乎不是标准的,所以我建议使用
fgets
gets\u\code>接受两个参数,not one。这里有一个参考:

您不应该使用此函数。相反,您应该使用
fgets
。我的理解是
gets
gets\s
都不能防止缓冲区溢出

要像使用
gets
一样使用fgets,只需将
stdin
作为输入文件指针传递即可。下面是一个使用示例:

char buffer[100];
fgets(buffer, 100, stdin);
下面是一个很好的fgets参考资料,详细介绍如下:

校正 经过一些研究,
gets\u s
似乎是防止缓冲区溢出的
gets
版本,但是我在我的OSX机器或FreeBSD服务器上的
stdio.h
中找不到它。它似乎不是标准的,所以我建议使用
fgets