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;
运行到查找信息就报错误,这是怎么回事?
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 }
这么做是因为有时候会有中文路径问题。
然后每次在需要传入const char* 时我都是 ToString(QString).c_str(),这样直接传参就会出现错误。解决方法是:
string str=ToString(QString);
之后传入 str.c_str()就可以了,具体原因还不清楚。
以上是关于c语言程序一运行就出现exe错误的主要内容,如果未能解决你的问题,请参考以下文章
怎样让C语言编写的程序生成exe文件运行时不显示cmd黑窗口
vc++6.0一打开就出现MSDEV.EXE应用程序错误,无法正常启动0xc0000142