我是C编程的新手。我一直在尝试运行这个程序,它在在线编译器上运行得很好。我试过改变C语言的语言版本。当我运行程序并写一个字符串时,它什么也不打印,只是停止了程序。然后我试着调试它,看看有什么问题,它显示了“在0x00007FFB3EEB2181抛出异常(ucrtbased.dll)。我正在使用最新的Visual Studio(社区版)。如果有人能帮助我解决这个问题,我将非常感激。有时我甚至会因为一个错误而得到一些无用的错误。(例如,我忘记放置结束括号,编译器抛出了许多错误,包括结束括号之一)我的应用程序是curropted或有一些设置丢失?
#include <stdio.h>
int main()
{
char str[20];
printf("Enter something\n");
// Here \n indicates that take the input
// until newline is encountered
scanf_s("%[^\n]s", str);
printf("%s", str);
return 0;
}
1条答案
按热度按时间aor9mmx11#
而不是调用scanf
你需要写
或
来自C标准(K.3.5.3.2 fscanf_s函数)
4fscanf_s函数等效于fscanf,不同之处在于c、s和[转换说明符应用于一对参数(除非用 * 表示隐藏赋值)。这些参数中的第一个与fscanf相同。在参数列表中,该参数后面紧跟第二个参数,它的类型为rsize_t,给出了数组中第一个参数所指向的元素个数。如果第一个参数指向一个标量对象,则它被认为是一个元素数组。3
这同样适用于函数
scanf_s
。您可以使用
scanf
代替scanf_s
,例如