Scanf_s 警告?跳过用户输入(主题:Runge-Kutta、流行病模拟)

2023-11-29

这是我的第一篇文章,我不得不承认,我在编程方面很糟糕。我是班上那个拼命工作的人,但似乎永远无法像我的其他同学那样掌握编程。所以请保持友善,我将在下面尝试解释我的问题。

我有以下代码(已删除注释),但是当我运行它时,我收到类似于下面列出的警告。另外,当我运行程序时,允许第一个用户输入的值,但突然间,它跳到程序的末尾,不允许我输入其他变量的值(例如变量“beta”) )。我有输出的图像(https://i.stack.imgur.com/yc3jq.jpg),你可以看到我输入了 alpha,但是程序运行到了最后。有什么想法吗?

非常感谢您的帮助! -斯宾塞

- - - - - - - - - - - - - - -代码 - - - - - - - -

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

float alpha, beta, h; 
float slope_k (float, float, float, float); 
float slope_q (float, float, float, float); 
float slope_p (float, float, float, float); 

int main (void)
{

float t0=0, tf, h, S0, I0, R0, k1, k2, k3, k4, q1, q2, q3, q4, p1, p2, p3, p4;
int N;
char sim_file[1000];  
FILE *out_file;
float *time_out, *s_out, *i_out, *r_out;

printf("Enter the value of the rate constant for infection (alpha) \n");
scanf("&f", &alpha);

printf("Enter the value of the rate constant for recovery or death (beta) \n");
scanf("&f", &beta);

printf("Enter the value of number of persons susceptible to the given contagion [S] at the initial  time zero [i.e. S(t)=S(0) = ? ] \n");
scanf("&f", &S0);

printf("Enter the value of the number of persons infected [I] at the intial time zero [i.e. I(t) = I(0) = ?] \n");
scanf("&f", &I0);

printf("Enter the value of the number of persons that have already been infected but have recovered [or died] [R] at the initial time zero [i.e. R(t) = R(0) = ?] \n");
scanf("&f", &R0); 

printf("Enter the final time for solution \n");
scanf("&f", &tf);

printf("Enter the solution step size (H) \n");
scanf("&f", &h);

N = (int)(tf/h);

printf("Enter file solution to store solution to simulation \n");
scanf("&s", sim_file);

out_file = fopen(sim_file, "w");

time_out = (float *)calloc(sizeof(float), N);
s_out = (float *)calloc(sizeof(float), N);
i_out = (float *)calloc(sizeof(float), N);
r_out = (float *)calloc(sizeof(float), N);


time_out[0]= 0; 
s_out[0] = S0;
i_out[0] = I0;
r_out[0] = R0;

for(int i = 0; i < N; ++i);
{
int i = 0;
time_out[i+1] = (i+1)*h;

k1 = h*slope_k(time_out[i], s_out[i], i_out[i], r_out[i]);
q1 = h*slope_q(time_out[i], s_out[i], i_out[i], r_out[i]);
p1 = h*slope_p(time_out[i], s_out[i], i_out[i], r_out[i]);

k2 = h*slope_k(time_out[i]+(h/2), s_out[i]+(k1/2), i_out[i]+(q1/2), r_out[i]+(p1/2));
q2 = h*slope_q(time_out[i]+(h/2), s_out[i]+(k1/2), i_out[i]+(q1/2), r_out[i]+(p1/2));
p2 = h*slope_p(time_out[i]+(h/2), s_out[i]+(k1/2), i_out[i]+(q1/2), r_out[i]+(p1/2));

k3 = h*slope_k(time_out[i]+(h/2), s_out[i]+(k2/2), i_out[i]+(q2/2), r_out[i]+(p2/2));
q3 = h*slope_q(time_out[i]+(h/2), s_out[i]+(k2/2), i_out[i]+(q2/2), r_out[i]+(p2/2));
p3 = h*slope_p(time_out[i]+(h/2), s_out[i]+(k2/2), i_out[i]+(q2/2), r_out[i]+(p2/2));

k4 = h*slope_k((time_out[i] + h), (s_out[i]+k3), (i_out[i]+q3), (r_out[i]+p3));
q4 = h*slope_q((time_out[i] + h), (s_out[i]+k3), (i_out[i]+q3), (r_out[i]+p3));
p4 = h*slope_p((time_out[i] + h), (s_out[i]+k3), (i_out[i]+q3), (r_out[i]+p3));

s_out[i+1] = s_out[i] + (1.0/6)*(k1 + (2*k2) + (2*k3) + k4);
i_out[i+1] = i_out[i] + (1.0/6)*(q1 + (2*q2) + (2*q3) + q4);
r_out[i+1] = r_out[i] + (1.0/6)*(p1 + (2*p2) + (2*p3) + p4);

}

return 0;
}

float slope_k(float t, float s, float i, float r)
{
float slope_k_out;
slope_k_out = -alpha*s*i;
return slope_k_out;
}

float slope_q(float t, float s, float i, float r)
{
float slope_q_out;
slope_q_out = (alpha*s*i)-(beta*i);
return slope_q_out;
}

float slope_p(float t, float s, float i, float r)
{
float slope_p_out;
slope_p_out = beta*i;
return slope_p_out;
}

警告示例:

warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

编译器告诉你的是微软认为 that scanf不安全。

The scanf功能can如果您小心的话,可以安全使用。scanf数字输入确实有问题(溢出有未定义的行为),但是scanf_s 并不能解决这些问题.

scanf_s最初是 Microsoft 特定的扩展;它作为可选功能添加到 2011 ISO C 标准中(N1570附录K)。许多 C 实现仍然不提供scanf_s.

引用C草案标准:

K.3.5.3.4p4:

The scanf_s函数相当于fscanf_s与论证stdin插入到参数之前scanf_s.

K.3.5.3.2p4:

The fscanf_s函数相当于fscanf除了c, s, and [转换说明符适用于一对参数(除非 分配抑制由a指示*)。这些参数中的第一个与fscanf。在参数列表中,该参数紧随其后的是第二个参数 参数,其类型为rsize_t并给出元素的数量 该对的第一个参数指向的数组。如果第一个 参数指向一个标量对象,它被认为是一个数组 一个元素。

Using scanf_s而不是scanf因为这个特定的程序并没有使它更安全,而是导致它的可移植性较差。

Use _CRT_SECURE_NO_WARNINGS并忽略警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scanf_s 警告?跳过用户输入(主题:Runge-Kutta、流行病模拟) 的相关文章

  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 根据用户输入使用 Jquery 显示/隐藏字段

    li class numeric optional li
  • ng-model 和值组合不适用于输入文本框

    我有两个输入文本框 我需要组合在两个文本框中输入的值并将其显示在第三个文本框中 如果我只使用value在第三个文本框中 Box 1
  • 表单输入框不显示

    我正在尝试使用 Django 显示一个简单的表单输入文本框 我正在亚马逊 AWS 上部署 该网站在不同的服务器 pythonanywhere 上运行良好 但在 AWS 上存在主要问题 具体来说 输入框没有被显示 我使用的模板如下 首页 ht
  • 在两个向量之间交换元素(交叉)

    假设我有 chromosome 1 lt c 0010000001010000 chromosome 2 lt c 0100000001001010 我该如何实施step 3 5 Evaluate NC1 否 中 1 个chromosome
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 将键码转换为相关的显示字符

    在 C Windows Forms 项目中 我有一个不提供 KeyPressed 事件的控件 它是一个 COM 控件 ESRI 映射 它仅提供 KeyUp 和 KeyDown 事件 包含关键事件参数 http msdn microsoft
  • fopen_s 怎么会比 fopen 更安全呢?

    我正在处理遗留代码Windows平台 当我编译代码时VS2013 它给出以下警告 错误 C4996 fopen 该函数或变量可能不安全 考虑使用fopen s反而 要禁用弃用 请使用 CRT SECURE NO WARNINGS 详情请参见
  • intfmt: db "%d", 10, 0 在汇编中的含义

    我最近在我的一个汇编文件的顶部看到了这个 并意识到我在打印整数的过程中花了很长时间使用它 而没有真正意识到它最初来自哪里 在我的基本汇编模板中使用 或 10 0 是什么结尾的意思是 section data intfmt db d 10 0
  • 使用 Javascript 从 HTML 表格输入单元格获取值

    我使用 Javascript 动态创建了一个 HTML 表 其中第一列由文本字段组成 第二列由输入字段组成 第三列由文本字段组成 效果很好 nrOfRows document getElementById myId value get nr
  • 当键盘出现时滚动布局

    当键盘出现并隐藏工具栏 FrameLayout 时 我的屏幕大小调整到顶部 我只需将聊天项目滚动到顶部并将框架布局保持在顶部 我尝试了谷歌和SO的一些例子 但对我没有任何帮助
  • Golang:从文本文件中替换字符串中的换行符时出现问题

    我一直在尝试读取一个文件 然后将读取的材料放入字符串中 然后字符串将按行分割成多个字符串 absPath filepath Abs Go input txt data err ioutil ReadFile absPath if err n
  • PHP fscanf 与 fgets

    我可以使用读取一行中的整个字符串fgets but fscanf 没有这样做 根据PHP手册 fscanf 根据格式解析文件的输入 功能fscanf 类似于sscanf 但它从与句柄关联的文件中获取输入 并根据指定的格式解释输入 这在文档中
  • 如何使输入字段的宽度为 100% 减去提交按钮的宽度?

    我有一个非常基本的单一输入字段 旁边有一个 提交 按钮 搜索按钮的固定宽度为 104 像素 两者都包裹在一起 总宽度占浏览器视口的 50 我的计划是允许输入字段随着浏览器窗口的扩大而扩大 目前 对于我的特定浏览器窗口 我必须修复输入字段的宽
  • 如何将 UIWebView 中的输入的键盘按钮“返回”更改为“搜索”?

    我有一个简单的 HTML 文件 它将显示在 UIWebView 中 p p
  • 类型错误:在自定义 python 函数中找到预期字节、str

    我正在使用一种名为 Giggle 的新生物信息学工具 并且我已经在我的系统上安装了 python 包装器 尽管场景非常具体 但我认为问题非常普遍 这个功能 index Giggle create index HMEC hg19 BroadH
  • C scanf() 问题?

    在这个简单的猜数字游戏中 scanf 在 main 中第二次不起作用 如果有人能解释为什么不起作用以及如何修复它 我将非常感激 关于如何清理这段代码有什么建议吗 谢谢你 include
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • 显示仅允许数字和小数点的输入?

    有什么方法可以定义一个
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输

随机推荐

  • 如何防止直接访问 Azure 应用服务中托管的 API

    我有一个托管在 Azure 应用服务中的后端 API 我想使用 Azure API 管理作为此后端 API 的前端 并已在 Azure 中成功配置它 我已将 API 管理配置为在访问此后端 API 时使用 OAuth 这在客户端通过 Azu
  • 如何使用 Mockito 在 java 中模拟 new Date()

    我有一个使用当前时间进行一些计算的函数 我想用mockito来模拟它 我想测试的类的一个例子 public class ClassToTest public long getDoubleTime return new Date getTim
  • 是否有 Java 库可以访问本机 Windows API?

    是否有 Java 库可以访问本机 Windows API 使用 COM 或 JNI 你可以尝试这两个 我已经看到这两个都成功了 http jawinproject sourceforge net Java Win32 集成项目 Jawin
  • phpunit dbunit @dataProvider 不起作用

    我花了很多时间寻找问题出在哪里 但我没有找到任何东西 它说 testAdd 导致错误 缺少参数 当我运行测试时 只是没有执行 dataProvider 我尝试将 die 放入 dataProvider 中 但它还没有死 这是我的代码 cla
  • 为什么nslookup.exe可以解析指定的DNS服务器,但dnsapi.dll中没有相应的API?

    nslookup exe www google com 127 0 0 1 该命令可以使用 DNS 服务器 127 0 0 1 进行解析 不可能在 75 0 KB 的 nslookup exe 中实现全栈 DNS 协议解析器 因此它必须使用
  • 当自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件

    我的工作区中有一个插件和一个功能项目 当我通过 文件 gt 导出为 gt 功能 手动导出功能时 一切正常 我正在尝试编写一个自动插件构建和导出脚本来摆脱这种苦差事 我将功能项目转换为 Maven 项目 并用以下内容填充 pom xml
  • 如何使用多个命令运行 NSTask

    我正在尝试让 NSTask 运行如下命令 ps clx grep 查找器 awk 打印 2 这是我的方法 void processByName NSString name NSTask task1 NSTask alloc init NSP
  • Angular:添加指令时控制器未定义

    向我的网站添加指令时出现以下错误 Error ng areq Argument MainController is not a function got undefined 仅当我在网站中包含welcome directive welcom
  • PouchDB + 冲突解决

    我有一个关于难题的非常简单的问题 PouchDB 中的冲突解决如何工作 我查看了文档 并快速谷歌搜索 但没有帮助 那么 如何在使用 PouchDB 的应用程序中处理冲突管理 以下是在 CouchDB 中的操作方法 您可以直接将其转换为 Po
  • Spring Boot - 从属性文件注入映射[重复]

    这个问题在这里已经有答案了 属性文件如下所示 url1 path to binary1 url2 path to binary2 根据this我尝试了以下方法 Component EnableConfigurationProperties
  • 如何更改 WooCommerce 缩略图裁剪位置?

    我正在尝试更改 WooCommerce 缩略图裁剪位置 我发现这段代码可以帮助更改大小 add action init yourtheme woocommerce image dimensions 1 Define image sizes
  • 在 iFrame 中应用 CSS

    我正在尝试将广告图像的宽度从像素更改为百分比 我正在使用 Google DoubleClick 或 DFP 它会自动将您的广告图像放入 iframe 中 从而很难更改图像的实际尺寸 因此 我将图像宽度从像素更改为百分比的方法是 我在图像广告
  • 在 vhdl 中计算(并验证)以太网 FCS (crc32)

    我正在使用Spartan 3E 入门套件我正在尝试通过 100MBit 链路接收以太网帧 对于那些不知道的人 该板具有 PHY 芯片 暴露了 25MHz 的接收时钟 我 几乎 已经通过缓冲接收到的帧并通过串行链路重新发送它们来验证接收工作正
  • 如何从master上找到jenkins节点的ip地址

    从主节点脚本控制台或从系统 groovy 脚本 也在主节点上运行 运行 如何获取从节点的 IP 地址 我希望这个简单的脚本就足够了 import java net for slave in Jenkins instance slaves h
  • 列表追加正在覆盖我以前的值[重复]

    这个问题在这里已经有答案了 我正在尝试动态构建 ElasticSearch 的查询 这是我的代码 import json query string person human query query query query query boo
  • 如何允许用户在 ChicagoBoss 中下载文件

    我生成一个 xml 并将其存储到某个位置 比如myproject media doc xml因为我是 erlang 的新手开发人员 我所知道的是我必须设置请求标头 例如 Content Disposition attachment file
  • 如何从 Postman/WebSocket King 调用 SignalR Core hub 方法

    我有一个 SignalR Core 集线器 我可以使用 Postman 或 WebSocket King 等客户端连接到同一个集线器 但是 我无法调用需要参数的集线器方法 可以从 SignalR JS 客户端轻松调用相同的方法 我检查了浏览
  • Maven 类路径顺序问题

    有谁知道在 Maven2 中设置特定类路径顺序的方法 而不是我目前遇到的随机顺序 想要这样做有很多合理的理由 供应商提供了一个补丁 jar 其中包含先前发布的 jar 的重写类 因此该补丁 jar 必须出现在类路径排序中的第一个位置 通过遍
  • 如何将 PDF 文件中的特定 RGB 颜色更改为特定 CMYK 颜色?

    如果我有一个 PDF 文件 其中包含特定 RGB 颜色的对象 文本 艺术线条 并且我想将这些对象转换为具有特定的 CMYK 颜色 有哪些可用的库可以让我做到这一点 请注意 我不需要从任意 RGB 值 映射 到 合适的 CMYK 值的能力 这
  • Scanf_s 警告?跳过用户输入(主题:Runge-Kutta、流行病模拟)

    这是我的第一篇文章 我不得不承认 我在编程方面很糟糕 我是班上那个拼命工作的人 但似乎永远无法像我的其他同学那样掌握编程 所以请保持友善 我将在下面尝试解释我的问题 我有以下代码 已删除注释 但是当我运行它时 我收到类似于下面列出的警告 另