LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: top

错误提示:parse error at end of input

[复制链接]
 楼主| 发表于 2002-11-25 20:25:51 | 显示全部楼层
我用gdb调试时 运行到: 35 提示: SIGSEGV
NO STACK
但是我没有使用堆栈!
发表于 2002-11-25 21:13:04 | 显示全部楼层
虽然this和new在c中不是关键字,但应该从现在开始养成一个好习惯,不要用其它语言中的关键字作变量名。因为你总有一天会用其它语言写程序,或者你现在用c写的程序会被移植到其它语言下面。到那时候,这个习惯会让你感到很麻烦。
作为程序员,一定要有良好的程序设计风格,这是非常重要的。好的程序设计风格会让代码通俗易读,同时,也几乎可以保证其中的错误更少。有很多的学生,由于对算法和数据结构选择,程序结构设计和良好的编码风格等不得要领,一个十行程序就能解决的问题,要用几十上百行程序来做,甚至到最后自己也不知道做得对不对,他们最熟悉的就是座在计算机面前一次又一次的debug,最后成为玩弄编程工具的老手,而不能成为编程高手。我看了你写的程序,感到你也在步他们的后尘。就此而言,你写的程序确定需要你付出更多努力去改进。
 楼主| 发表于 2002-11-25 21:24:03 | 显示全部楼层
知道  了 !
谢谢赐教 !
请你调试以下 顺便运行 !
帮帮我好吗 !?
发表于 2002-11-25 21:29:57 | 显示全部楼层
你把你修改过的程序贴上来。同时要加上必要的说明,如这个程序是干什么用的,主要的变量起什么作用等等。
此外,我有一种感觉,你对于一些基础知识好象什么都不知道,你是不是计算机专业的学生?
 楼主| 发表于 2002-11-25 21:41:08 | 显示全部楼层
本程序的目的 是创建动态链队

然后执行队头 进程  我创建了 链队 num 表示优先级  

#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>

struct proc{
char name[2];   /*存放 进程名 */
int num;
struct proc *next;
};

int n;
struct proc *head, *this, *new, *current, *temp;

void new_record(void);
void sortlist(void);
void excutable(void);

pid_t pid;

main ()
{
int i, j;
for(i=0; i<=8; i++){
new_record();
}
sortlist();
excutable();
for(j=1; j<=7; j++){
current = head;
excutable();
if(n>2){
do{
this->num = this->num+1;
if(this->num > 32){
this->num = this->num%32;
sortlist();
}
this = this->next;
}while(this->next = NULL);
}
free(new);
}
} //lost a '}'


void new_record(void) /* 动态创建链表 */
{
int i;
new = (struct proc *)malloc(sizeof (struct proc));/*创建新的结点*/
if(head == NULL)
head = new;
else{
this = head;
while(this->next!=NULL)
this = this->next;
this->next = new;
}
this = new;
printf("\nenter name:"); //what did u mean of '\e'??
scanf("%s",this->name);
printf("\nenter num:"); //what did u mean of '\e'??
this->num = i;
printf("\n new over");
this->next = NULL;
}

void sortlist(void) /* 排序根据优先数num */ 二重 法
{
int i,j;
this = head;
for(i=1; i<=8; i++)
for(j=i+1; j<=8; j++){
if(this->num < this->next->num){ /*比较本结点和后一个结点num值的大小 */
temp = this;
this = this->next;
this->next = temp;
}
this = this->next;
}
}

void excutable(void) /*执行程序创建进程任务为延时 */
{
n = random()%4;
current = head;
pid=fork();
if ( pid>0 ){
sleep(n);
}
}
发表于 2002-11-25 21:45:07 | 显示全部楼层
可能要花费一点时间,请耐心等候。
 楼主| 发表于 2002-11-25 21:46:35 | 显示全部楼层
没关系 !
我 看看 英语书 !
谢了 !
发表于 2002-11-25 21:55:37 | 显示全部楼层
我怎么感觉这个程序好象是你前面问的操作系统作业?
发表于 2002-11-25 22:26:07 | 显示全部楼层
呵呵,有不少问题,基本概念都没有搞清楚。我希望你能认真回答这个问题:你究竟学习过C语言没有?如果没有,我可以把问题说得浅显一些。
 楼主| 发表于 2002-11-25 22:40:36 | 显示全部楼层
学了几天 !
对 pascal 熟悉  !
当时 只有几天了  所以 没学好 c 语言 !
这个程序 我调试 了 可以通过 !
就是运行 最后提示 : Segment default
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表