新手用vs2017 输入数据报错 c语言

图片说明图片说明图片说明

 #include <stdio.h>
#include <stdlib.h>
struct student
{
    int number;
    int de;
    int cai;
    int grade;
    int sum=de+cai;
};
typedef struct student* man;
int com(const void *a, const void *b)
{
    man s1 = *(man *)a;
    man s2 = *(man *)b;
    if (s1->grade != s2->grade) return s2->grade - s1->grade;
    else if (s1->sum != s2->sum)   return s1->sum - s2->sum;
    else if (s1->de != s2->de)     return s1->de - s2->de;
    else if (s1->number != s2->number)   return s2->number - s1->number;
    else                        return 0;

}
int judge(man s, int c, int d)
{
    if (s->cai < c || s->de < c) return 0;
    else if (s->cai < d&&s->de < d)  return 1;
    else if (s->cai >= d && s->de < d) return 2;
    else if (s->de >= d && s->cai < d) return 3;
    else if (s->cai >= d && s->de >=d) return 4;
}
int main()
{

     man a[100];
     int b, c, d;
     scanf_s("%d %d %d", &b, &c, &d,8888);
     int i;
     int flag = 0;
     for (i = 0; i < b; i++)
     {   
         man s = (man)malloc(sizeof(struct student));
         scanf_s("%d %d %d", s->number, s->de, s->cai,8888);
         if (s->grade=judge(a[i], b, c) )
         {
             a[flag] = s;
             flag++;
         }
         free(s);
     }
     qsort(a, flag, sizeof( man), com);
     printf("%d\n", flag);
     for (int i = flag - 1; i >= 0; i--)
         printf("%d %d %d\n",a[i]->number, a[i]->de, a[i]->cai);
     system("pause");
     return 0;

}


大佬们咋回事
p://img.ask.csdn.net/upload/201801/29/1517210935_834748.png)
0

5个回答

你后面的if (s->grade = judge(a[i], b, c));首先.数组a里面全是野指针...然后你调用judge方法...让一个指针去指向了这个野指针,然后想要去得到这片区域的值...不报错才怪..

1

scanf_s("%d %d %d", &b, &c, &d,8888);
8888是什么?肯定是无效的地址啊。

1
qq_38646470
龙跃十二 回复xuezha009: 不要用scanf_s,直接用scanf 忽略掉警告
一年多之前 回复
xuezha009
xuezha009 回复caozhy: scanf_s("%d %d %d", &b, &c, &d); 这样也是报错啊
一年多之前 回复
caozhy
weixin_45841714 回复xuezha009: 不需要啊,又不是字符串
一年多之前 回复
xuezha009
xuezha009 我最开始设的sizeof(int);还是报错
一年多之前 回复
xuezha009
xuezha009 咋改呢
一年多之前 回复
xuezha009
xuezha009 scnaf_s不是要保留字节长度吗 防止越界吗 设大点为啥错了呢
一年多之前 回复

老哥...你调用scanf_s的时候,后面的参数切记是地址啊...而不是整数类型的... scanf_s("%d %d %d", &s->number, &s->de, &s->cai,8888);

1

man是结构体指针类型,则a就是结构体指针的数组,他们只是保存了数据结构块的地址,
所以free(s);不应该放在循环内释放,应该放在程序最后,循环释放前面申请的空间

0
shihengzhen101
AlbertS 回复youchenfeng: 为什么变成了这样的问题,那些衣服都是模型啊!
一年多之前 回复
youchenfeng
youchenfeng 您好,请问,炫舞qq秀之类的里面的人物,五官衣服之类的都是怎么弄的啊,怎么制作的啊,
一年多之前 回复

scanf("%d %d %d", &b, &c, &d); scanf_s不是所有的编译器都可以用,建议你换会scanf输入
在源程序的开头加上 #define use _CRT_SECURE_NO_WARNINGS 1

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
新手用vs2017 输入数据报错 c语言
![图片说明](https://img-ask.csdn.net/upload/201801/29/1517211021_974877.png)![图片说明](https://img-ask.csdn.net/upload/201801/29/1517211013_40977.png)![图片说明](https://img-ask.csdn.net/upload/201801/29/1517210972_573276.png)rn```rn #include rn#include rnstruct studentrnrn int number;rn int de;rn int cai;rn int grade;rn int sum=de+cai;rn;rntypedef struct student* man;rnint com(const void *a, const void *b)rnrn man s1 = *(man *)a;rn man s2 = *(man *)b;rn if (s1->grade != s2->grade) return s2->grade - s1->grade;rn else if (s1->sum != s2->sum) return s1->sum - s2->sum;rn else if (s1->de != s2->de) return s1->de - s2->de;rn else if (s1->number != s2->number) return s2->number - s1->number;rn else return 0;rnrnrnint judge(man s, int c, int d)rnrn if (s->cai < c || s->de < c) return 0;rn else if (s->cai < d&&s->de < d) return 1;rn else if (s->cai >= d && s->de < d) return 2;rn else if (s->de >= d && s->cai < d) return 3;rn else if (s->cai >= d && s->de >=d) return 4;rnrnint main()rnrnrn man a[100];rn int b, c, d;rn scanf_s("%d %d %d", &b, &c, &d,8888);rn int i;rn int flag = 0;rn for (i = 0; i < b; i++)rn rn man s = (man)malloc(sizeof(struct student));rn scanf_s("%d %d %d", s->number, s->de, s->cai,8888);rn if (s->grade=judge(a[i], b, c) )rn rn a[flag] = s;rn flag++;rn rn free(s);rn rn qsort(a, flag, sizeof( man), com);rn printf("%d\n", flag);rn for (int i = flag - 1; i >= 0; i--)rn printf("%d %d %d\n",a[i]->number, a[i]->de, a[i]->cai);rn system("pause");rn return 0;rnrnrnrnrn大佬们咋回事rnp://img.ask.csdn.net/upload/201801/29/1517210935_834748.png)
VS2017 scanf报错的解决方法
1.项目→文件名 属性→C/C++→预处理器→预处理器定义→→第一空改为_CRE_SECURE_NO_WARNNINGS→重新生成解决方案 2.在项目属性→C/C++→命令行中添加:/D _CRT_SECURE_NO_WARNINGS→重新生成解决方案
Visual studio 2017写C语言调试报错:
报错:C4996,代码符号没错,错在scanf函数,在vs2017库中认为是不安全的,最简单的方法就是将scanf写为 scanf_s 就解决了。
新手初学VS2017
 毕业设计做的是基于双目视觉的三维重建,今后读研的方向也是做图像处理/机器视觉,不知道是不是入了个大坑(都说女生不适合搞软件),整个毕业设计做得很吃力,主要是编程的基础太差了,本科是自动化专业,只在大一接触过C语言,发现大多数都用的C++,决定在暑假恶补一下C++ 我选用了C++ primer作为入门书,编写了第一个小程序 #include &amp;lt;iostream&amp;gt; using na...
C语言简易版小游戏【flappy bird】(VS2017)
C语言简易版小游戏【flappy bird】,新手练手绝佳小程序,调试通过没有问题!
C语言集成开发环境vs2017的使用技巧之修改快捷键
首先这里是说编辑C语言内容,其次开发环境是vs2017(全称:visual studio 2017)。像这个开发环境体积大,但你安装的时候不要安装到C盘,然后安装的时候选择模块,比如你不开发网站,就先不要安装.net那些内容。 工欲善其事,必先利其器。对它的使用技巧熟练操作,不但会让你赏心悦目、同时会提高你编程兴趣。关于它的使用技巧其实有很多,这里讲述的是其中一个:修改默认的快捷键。 它提供的
C语言笔记2 --新手常常犯的错误之scanf()
接着上次的输出函数,这次我们来细细的讲一下输入函数: scnaf(); 同学们在第一节C语言课上,老师还没要求我们从键盘输入数据,只是单纯的声明变量,用一些基本运算符输出结果。而在C语言中,有着输出,必然有着输入,就像英语中有 you,那么肯定也有 I. 在用这个函数的时候同学们常常会出一些小毛病,而这些毛病,对于刚刚进入编程大门的同学来说,是很难发现的。 这里我稍微详细的介绍下这个与输出对应的...
C语言 趣问游戏
好玩的IQ游戏,我是新手用简单的C语言编写的数学趣味游戏
vs2017使用函数Scanf报错解决方法!
在VS2017使用Scanf函数时,出现如下错误: error 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 det...
VS2017中scanf报错的解决方法
1、程序最前面使用宏:#define _CRT_SECURE_NO_WARNINGS(这种方法是最简便有效的,本人常用的); 2、程序最前面使用:#pragma warning(disable:4996); 3、把scanf改为scanf_s(这种方法编译器已经有所提示,但为了兼容C语言的语法,并不推荐这种方法,要一个一个去改比较麻烦); 4、在新建项目时取消勾选“SDL检查”,如下图: 5、若...
VS2017建立C语言工程
VS2017建立C语言工程 VS2017建立C语言工程 选择空项目 这样之后就可以 写标准的C语言程序运行了~
C语言调试代码时免重复输入数据
#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; int main() { int a,b; char str[100]; //char *str; freopen(&quot;dat.dat&quot;,&quot;r&quot;,stdin); //在当前目录下新建个文件名为“dat.dat&quot;,里面存放待读入的数据 scanf(&quot;%d %d&quot;,&amp;amp;.
VS2017如何创建c语言项目
1.启动VS2017,左上角点“文件”→→→新建”→→→“项目” 或者用快捷键“Crtl+shift+N” 2.选择“Windows桌面”→→→“Windows桌面向导”,名称部分自己改 3.弹出对话框后,在“空项目”前打对勾,再点“确定” 4.右击“源文件” 5.点击“添加”→→→“新建项” 6.选择“C++文件(.cpp)”,把文件名改成自己想要的,后缀改成“....
详解VS2017使用scanf报错的解决方法
1、在程序最前面加: #define_CRT_SECURE_NO_DEPRECATE 2、在程序最前面加: #pragma warning(disable:4996) 3、把scanf改为scanf_s; 4、无需在程序最前面加那行代码,只需在新建项目时取消勾选“SDL检查”即可; 5、若项目已建立好,在项目属性里关闭SDL也行;我用的VS是中文版的
【C语言】找凶手
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯中的一个。以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说。 已知3个人说了真话,1个人说的是假话。请找出凶手。 #include "stdio.h" int main() { int i = 0; char liar = 0; int sum = 0; for (i =
C语言实现GPS汽车导航模拟系统
C语言编写的GPS汽车导航模拟系统,需要的同学可也下载来研究看看
VS2017 scanf无法使用的解决方法
项目→文件名 属性→C/C++→预处理器→预处理器定义→→第一空改为_CRE_SECURE_NO_WARNNINGS→重新生成解决方案
解决VS(Visual Studio)2017安全函数问题(C语言安全函数)
在 VS(Visual Studio)2017下编译C语言程序,如果使用了 scanf()、gets()、strcpy()、strcat() 等与字符串读取或操作有关的函数,有时候VS会报错,提示该函数可能不安全,并且建议替换为带有_s后缀的安全函数,如下图所示: 什么是安全函数(safe function) scanf()、gets()、fgets()、strcpy()、strcat...
COBOL 语言学习资料
COBOL 语言学习资料,新手用的资料,老鸟请绕
mq简单例子
简单的mq例子有利于新手用,简单的mq例子有利于新手用,简单的mq例子有利于新手用,简单的mq例子有利于新手用,
新手用c语言写的贪吃蛇)
本程序包含c语言中的大部分知识点,欢迎大家指教
关于VS2017使用scanf报错的问题(图文)
在用VS2017编译一个程序时,如果你在程序中使用了C语言的输入函数scanf,会发现这样的警告:大致意思是说scanf这个函数不安全,让程序员考虑使用scanf_s,并给出了一种停用这个警告的方式。下面给出三种解决方法方法一:在代码的最顶行写入#define _CRT_SECURE_NO_WARNINGS可以让之后使用scanf时不出现警告。方法二:修改文件属性也可以做到和方法①一样的效果,具体...
VS2017、2015等使用scanf()报错解决方案
VS2015、2017等使用scanf报错解决方案版权声明:本文为博主原创文章,未经博主允许不得转载。 方法一:在程序最前面加#define _CRT_SECURE_NO_DEPRECATE; 方法二:在程序最前面加#define _CRT_SECURE_NO_WARNINGS; 方法三:在程序最前面加#pragma warning(disable:4996); 方法四:把scanf改为scanf...
delphi对话框应用源码(新手用)
delphi对话框应用源码(新手用) delphi对话框应用源码(新手用) delphi对话框应用源码(新手用)
新手linux 推荐
对于新手使用Ubuntu,还是看一下这个比较好。
专为新手用的Python开发工具
Python开发工具很多,比较大有的重型武器有Pycharm,Anaconda,VS Code. 但是这些工具虽然非常强大,库很多,但是对于一个刚准备入门Python的小白来说太重了,学习成本比较高,有点复杂!最开始学 Python 的时候,因为没有去探索好用的工具,吃了很多 苦头。磕磕绊绊走过来之后才知道,好的工具给效率带来的提升不是从 1 到 1.1 倍速,而是从 1 到 10 倍速。在这里...
新手用网优入门参考 新手用网优入门参考
新手用网优入门参考 新手用网优入门参考 新手用网优入门参考
c语言:用scanf函数输入数据,举例并分析错误原因
用scanf函数输入数据,举例并分析错误原因用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入。程序:#includeint main(){ int a, b; float x, y; char c1, c2; scanf("a=%d b=%d",&a,&b); scanf("%f %e",&x,&y); scanf("%c
解决VS2017报错fopen、sprintf等函数安全的问题
VS2017中使用fopen、sprintf等函数会出现安全问题,如下: error C4996: ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help
C语言数据输入与输出
C语言数据输入与输出
在VS2017创建C语言项目
Step 1.文件-&amp;gt;新建-&amp;gt;项目    Step 2. 选择控制台应用程序,项目名称和存储路径可由自己定义。然后点击确定-&amp;gt;下一步     Step 3. 在弹出的对话框中,依次选择控制台应用程序和空项目,然后点击完成。   Step 4. 在生成的project中,右键点击源文件-&amp;gt;添加-&amp;gt;新建项,选择C++文件,重新命名文件名,并将文件后缀...
用python实现接口测试(七、查询快递单号)
一、查询yunda快递单号1.查询yunda快递单号:1202247993797 ,测试地址:http://www.kuaidi.com/ 快递查询API 2.使用fiddler抓取包,抓取单号查询请求的接口地址,如下图所示 抓取单号请求接口 3.抓包后获得请求接口:http://www.kuaid.com/index-ajarselect...
C语言合法标识符(多组输入)
C语言合法标识符 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入一个字符串,判断其是否是C的合法标识符。 Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。 Output 对于每组输入数据,输出一行。如果输入数据...
c语言:数据的输入
任务代码: 自然分割: #include #include int main() { int a,b,c; char op; scanf("%d%c%d",&a,&op,&b); if (op=='+') { c=a+b; printf("会算%c,结果是:%d\n",op,c); } else
安装使用VS2017调试C语言的几点注意事项
Visual Studio是微软公司出品的一款功能强大、全面的IDE和代码管理工具 然而,一开始使用它来编写C语言文件时,却遇到了一些问题,在解决这些问题之后,在此总结分享一些经验。 1.安装VS2017 官网:https://visualstudio.microsoft.com/zh-hans/ 对于一般的开发者、学生,只需下载免费的community版本即可,下载的安装包为在线安装...
windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作
(第一次写博客) 因为用的是wampserver,自带安装的mysql没有include的库 没有mysql.h文件 无法调用mysql的东西 也无法用C语言对MYSQL操作 引用某大佬的CSDN博客的做法(也找了很久试了很多方法) 去这个连接 https://downloads.mysql.com/archives/c-c/ 把这玩意.zip下载下来,解压。 把里面的i...
VS2017使用方法 编写你的第一个 C 语言程序
 本文介绍用Microsoft Visual Studio 2017建立一个C语言程序的具体步骤。 Step1:打开Microsoft Visual Studio 2017 Step2:新建Project ①文件→新建→项目 ②选择Visual C++ → 空项目 → 选择位置 →确定 Step3:新建源文件 ①在“源文件”上右键 → 添加 → 新建项 ②选择C++文...
C语言写的猜拳小游戏
一个学习C语言练手用的一个不错的小游戏,自己写的,全部C语言实现!
C程序在VS中 #define内容无法识别
#include &quot;stdafx.h&quot; #include &amp;lt;malloc.h&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &quot;string.h&quot; #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OVERFLOW -1 #define OK 1 #define ERROR 0 #defi...
关于C语言在VS2017上开头格式
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; int main() { system(&quot;pause&quot;); return 0; }
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 vs2017制作网页视频 新编程语言