致命错误:在搜索预编译头文件时遇到意外的文件结尾的指令。错误在哪儿 啊?大神们

#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
int n;
struct student *creat(void) /*建立链表*/
{
struct student *head;
struct student *p1,*p2;
n=0;
p1=p2=(struct student *)malloc(LEN);
scanf("%ld,%f",&p1->num,p1->score);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LEN);
scanf("%ld,%f",&p1->num ,&p2->score);
}
p2->next=NULL;
return(head);
}
void print(struct student *head) /*输出链表*/
{
struct student *p;
printf("\nNow,These %d records are:\n",n);
p=head;
if(head!=NULL)
do
{
printf("%ld %5.1f\n",p->num,p->score);
p=p->next;
}
while(p!=NULL);
}
struct student *del(struct student *head,long num) /*删除结点*/
{
struct student *p1,*p2;
if(head==NULL)
{
printf("\nlist null! \n");
return head;
}
p1=head;
while(num!p1->num&&p1->next==NULL)
{
p2=p1;p1=p1->next;
}
if(num==p1->num)
{
if(p1==head)
head=p1->next;
else
p2->next=p1->next;
printf('delete:%ld\n",num);
n=n-1;
}
else
printf("%ld not been found! \n",num);
return(head);
}
struct student *insert(struct student *head,struct student *stud) /*插入结点*/
{
struct student *p0,*p1,*p2;
p1=head;
p0=stud;
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
while((p0->num>p1->num)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num<=p1->num)
{
if(head==p1)
head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
n=n+1;
return(head);
}
}
void main()/*主函数*/
{
struct student *head,stu;
long del_num;
printf("input records:\n");
head=creat();/*建立链表返回头指针*/
print(head);/*输出全部节点*/
printf("\ninput the deleted number:");
sxanf("%ld",&del_num);/*输入要删除的学号*/
head=del(head,del_num);/*删除后链表的头地址*/
print(head);/*输出全部结点*/
printf("\ninput the inserted record:");/*输入要插入的结点*/
scanf("%ld,%f",&stu.num ,&stu.score);
head=insert(head,&stu);/*插入一个结点,返回头结点地址*/
print(head);/*输出全部结点*/
}

第1个回答  2013-11-21
4个错误
0.NULL不需要你来define
1.printf('delete:%ld\n",num); //左边用了单引号
2.while(num!p1->num&&p1->next==NULL); //应该是num != p1->num
3.sxanf("%ld",&del_num);/*输入要删除的学号*/ // 是scanf
另外
main函数最好声明为int型,这是标准C对main函数的要求
声明为void的main函数在标准C编译器上是通不过编译的追问

但是调试运行的时候,输入89回车就成这样了呢?

追答

我给你找的是4个编译错误,

你这个是运行时错误啊,也就是常说的runtime error,这种错误只有靠你自己一行行地检查代码了,因为别人读你的代码真的很不好读,

看情况应该是内存没有管理好,我可以给你提几个查错方向

   0.检查是不是数组越界了

    对于某一个指针,你在使用它之前是否给它赋值了呢?

    对于已经赋值的指针,你是不是给它所指向的元素分配空间了呢?

应该就是以上三个方向了,自己找找吧,

编程 = debug,

第2个回答  2013-11-21
printf('delete:%ld\n",num); ==> printf("delete:%ld\n",num);

...遇到意外的文件结尾的指令。错误在哪儿 啊?大神们
1.printf('delete:%ld\\n",num); \/\/左边用了单引号 2.while(num!p1->num&&p1->next==NULL); \/\/应该是num != p1->num 3.sxanf("%ld",&del_num);\/*输入要删除的学号*\/ \/\/ 是scanf 另外 main函数最好声明为int型,这是标准C对main函数的要求 声明为void的main函数在标准C编译器上...

...C1010: 在查找预编译头时遇到意外的文件结尾...
fatal error C1010: 在查找预编译头时遇到意外的文件结尾是因为没选择“不使用预编译头”。解决步骤如下:1、首先第一步就是要进行使用预编译头文件“stdafx.h”,这时候注意的是加入第三方c\/cpp文件没有#include "stdafx.h" ,就会报此错误。2、接着就是要进行右键单击cpp文件,选择属性,设置c\/...

fatal error C1010: unexpected end of file while looking for precomp...
致命错误C1010:在寻找预编译指示头文件时,文件未预期结束。就是没有找到预编译指示信息的头文件。问题一般发生在:通过添加文件的方式,添加了一些cpp文件到一个MFC的程序,但该cpp文件并不是MFC,而是标准的C++。解决方案1: 右键单击项目工程中的cpp文件,在菜单Project->Settings->C\/C++->Precompile...

C ++ 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#i...
第三:把这句直接删掉一般不会有问题,果断删了吧

致命错误C1010:意外的文件结束而寻找预编译头指令
\/\/在用int定义变量的时候,你那个是不合法的自定义标志符,空格是不合\/\/法\/\/\/的,应用字母、数字、下划线、中的一种或几种来组成,且字母不能是第\/\/一个,include<iostream.h> const float PI=3.1416;void main(){ int graphicType;float radius,a,b,perimeter;cout<<"选择图形的类型(1-圆...

在C++中在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加...
在cpp第一行添加#include "StdAfx.h"如果说有cin cout endl这种是未声明的标识符的提示,则在头文件包含语句下添加using namespace std;

VC++6.0中出现这样的错误提示“意外的文件结尾而寻找预编译头指令”
设置一下即可,打开VC->选中Project->Setting->C\/C++,在下拉列表中选中预编译->不使用预编译头。

在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include...
你建立的工程使用了预编译功能, cpp最前边要留一行这样的内容:include "StdAfx.h"

C ++ 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#i...
将#include “stdafx.h “放在程序的最开始部分 试一下!我开始也出现这个问题 后面这样弄了下就可以了!

致命错误C1010:意外的文件结束而寻找预编译头指令
在#include<iostream>之前 加上 include"stdafx.h"

相似回答