c语言程序一运行就出现exe错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言程序一运行就出现exe错误相关的知识,希望对你有一定的参考价值。

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int i;
struct student
char name[20];
float score[4];
float average;
int order;
int id;
;
void inputFromKeyboard(struct student stu[],int num)

for(i=0;i<num;i++)

printf("请输入第%d个同学的学号:\n",i+1);
scanf("%d",&stu[i].id);
printf("请输入第%d个同学的姓名:\n",i+1);
scanf("%s",&stu[i].name);
printf("请输入第%d个同学的英语成绩:\n",i+1);
scanf("%f", &stu[i].score[0]);
printf("请输入第%d个同学的数学成绩:\n",i+1);
scanf("%f",&stu[i].score[1]);
printf("请输入第%d个同学的物理成绩:\n",i+1);
scanf("%f",&stu[i].score[2]);
printf("请输入第%d个同学的计算机成绩:\n",i+1);
scanf("%f",&stu[i].score[3]);




void averageScore(struct student stu[], int num)

for(i=0;i<num;i++)

stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3])/4;



void sortScore(struct student stu[], int num)

int j;
for(i=0;i<num;i++)

int a=0;
for(j=0;j<num;j++)

if(stu[i].average>stu[j].average)

a++;



stu[i].order=num-a;


void outputToScreen(struct student stu[], int num)

for(i=0;i<num;i++)

printf("第%d个同学的的信息如下:\n",i+1);
printf("姓名:%s\n",stu[i].name);
printf("学号:%d\n",stu[i].id);
printf("英语成绩:%f\n",stu[i].score[0]);
printf("数学成绩:%f\n",stu[i].score[1]);
printf("物理成绩:%f\n",stu[i].score[2]);
printf("计算机成绩:%f\n\n",stu[i].score[3]);
printf("平均成绩:%f\n",stu[i].average);
printf("名次:%d\n",stu[i].order);



int main()

int i,k;
char s[20];
struct student stu[5];
inputFromKeyboard(stu,5);
averageScore(stu, 5);
sortScore(stu, 5);
printf("1.查找信息 2.所有信息");
scanf("%d",&k);
if(k==1)
printf("输入你要查找的名字");
scanf("%s",s);
for(i=0;i<4;i++)

if(strcmp(s,stu[i].name==0))
printf("第%d个同学的的信息如下:\n",i+1);
printf("姓名:%s\n",stu[i].name);
printf("学号:%d\n",stu[i].id);
printf("英语成绩:%f\n",stu[i].score[0]);
printf("数学成绩:%f\n",stu[i].score[1]);
printf("物理成绩:%f\n",stu[i].score[2]);
printf("计算机成绩:%f\n\n",stu[i].score[3]);
printf("平均成绩:%f\n",stu[i].average);
printf("名次:%d\n",stu[i].order);

printf("NO FIND!");
if(k==2)

outputToScreen(stu, 4);

return 0;

运行到查找信息就报错误,这是怎么回事?

if(strcmp(s,stu[i].name==0))这里有错误,

strcmp是比较两个字符串的大小,你这里应该是比较s和stu中成员变量name中的字符串是否相等,正确的做法如下
if(strcmp(s,stu[i].name)==0)
参考技术A if(strcmp(s,stu[i].name==0))
改为
if(strcmp(s,stu[i].name)==0)
括号的位置放错了本回答被提问者采纳
参考技术B (strcmp(s,stu[i].name)==0) 参考技术C 报错的内容是什么?追问

可以编译,程序运行到查找信息,程序就停止运行了。

追答

90行,确实括号位置错了,(strcmp(s,stu[i].name)==0)

Microsoft visual studio C 运行时库 在 xx.exe中检测到一个错误

之前多次出现这个问题,后来解决之后再出现就忘了怎么弄了,这次记录一下。

我这几次出现这种错误都是因为在Qt中将QString转const char* 时出现的。我的做法是有一个函数ToString()转为std::string

1 std::string MyProcessObject::ToString(QString strRaw)
2 {
3     return std::string((const char *)strRaw.toLocal8Bit());
4 }
ToString()

这么做是因为有时候会有中文路径问题。

然后每次在需要传入const char* 时我都是 ToString(QString).c_str(),这样直接传参就会出现错误。解决方法是:

string str=ToString(QString);

之后传入 str.c_str()就可以了,具体原因还不清楚。

以上是关于c语言程序一运行就出现exe错误的主要内容,如果未能解决你的问题,请参考以下文章

怎样让C语言编写的程序生成exe文件运行时不显示cmd黑窗口

C语言中运行时怎么一闪就过去了,看不到运行界面啊

vc++6.0一打开就出现MSDEV.EXE应用程序错误,无法正常启动0xc0000142

电脑出现在microsoft visual c ++ runtime library,怎么解决。。如下图

C语言常见问题总结

用c语言编的程序生成exe文件为啥一打开马上就自动关闭了啊