windows – scanf_s抛出异常
发布时间:2020-12-14 05:46:09 所属栏目:Windows 来源:网络整理
导读:为什么以下代码在输入要放入结构的数字后到达第二个scanf_s时会引发异常. 这绝不代表完整的链表实现. 输入值时,不确定如何进入下一个scanf_s?有任何想法吗? 编辑:使用建议的解决方案更新了代码,但在第一次scanf_s后仍然获得AccessViolationException 码:
为什么以下代码在输入要放入结构的数字后到达第二个scanf_s时会引发异常.
这绝不代表完整的链表实现. 输入值时,不确定如何进入下一个scanf_s?有任何想法吗? 编辑:使用建议的解决方案更新了代码,但在第一次scanf_s后仍然获得AccessViolationException 码: struct node { char name[20]; int age; float height; node *nxt; }; int FillInLinkedList(node* temp) { int result; temp = new node; printf("Please enter name of the person"); result = scanf_s("%s",temp->name); printf("Please enter persons age"); result = scanf_s("%d",&temp->age); // Exception here... printf("Please enter persons height"); result = scanf_s("%f",&temp->height); temp->nxt = NULL; if (result >0) return 1; else return 0; } // calling code int main(array<System::String ^> ^args) { node temp; FillInLinkedList(&temp); ... 解决方法
你需要
result = scanf_s("%d",&temp->age); 和 result = scanf_s("%f",&temp->height); 原因是sscanf(和朋友)需要一个指向输出变量的指针,因此它可以将结果存储在那里. 顺便说一句,你的函数参数temp也有类似的问题.由于您正在更改指针(而不仅仅是指向它的内容),因此您需要传递一个双指针,以便在您的函数外部显示更改: int FillInLinkedList(node** temp) 当然,你必须在函数内部进行必要的更改. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xaml – Windows 8主题颜色 – 以编程方式访问它
- windows – 如何防止Print-Screen捕获单个窗口?
- Windows10 下安装 Apache2.4+PHP7.1+MySQL5.7
- windows-xp – Windows XP:远程监控CPU负载
- Windows – Symantec Endpoint Protection(SEP / SEPM)流量
- winapi – 如何检测应用程序所需的DLL?
- windows-server-2003 – 如何找出哪些远程桌面会话处于活动
- wix – 更新时实例转换不正确
- windows – 在Web服务器上安装防病毒软件,这是一个好主意吗
- 如何编程防止Windows从硬盘驱动器旋转?
推荐文章
站长推荐
热点阅读