C语言输入一个数之后,无法继续往下执行代码,void initial那里,可以帮忙改一下么

#include
int n=0,time=0;
struct PCB {
char pname[5]; //进程名
int arrivalTime[5]; //进程提交时间
int pstart[5]; //进程开始运行时间
int pend[5]; //进程完成时间
int runningTime[5]; //进程运行所需时间
int turnaroundTime[5]; //进程周转时间
}*p;

void initial(){
int i;
printf("请输入进程数:");
scanf("%d\n",&n);
for(i=0;i printf("请输入进程名,提交时间,运行所需时间(用逗号分隔):");
scanf("%s,%d, %d\n",p->pname[i],p->arrivalTime[i],p->runningTime[i]);
}
}

void fcfs(){
int j;
for(j=0;j int i;
for(i=0;p->arrivalTime[i]>p->arrivalTime[i+1];i++);
printf("执行进程%c\n",&p->pname);
p->pend[i]=p->arrivalTime[i]+p->runningTime[i];
printf("进程%c结束时间:%d",&p->pend);
time=p->pend[i];
}
}

int main(){
initial();
fcfs();
}

你代码显示上有点问题,有些代码没显示出来,看不出来哪里有问题,你把代码插入代码片,这样看起来好看点

好象是函数 scanf 的问题,代码好乱,看不明白。。。

代码有点乱,不太能看清。感觉至少以下地方是有问题的:

1. struct 里面,char pname[5] 代表一个长度为5的字符数组,只能保存一个长度为4(因为要留一个\0)的字符串,这与楼主下面的代码意图不符。

2. scanf的格式实参应该是地址而不是变量名,而p->arrivalTime[i] 这种写法写出来是个int值,而不是该int值的地址

fcfs()太乱,没太看懂

用gdb在线单步调试,一步步查问题即可

for(i=0;i printf("请输入进程名,提交时间,运行所需时间(用逗号分隔):");
for语句后面不要跟分号,还有你的代码应该编译不了吧,感觉错误挺多的✧(≖ ◡ ≖✿)

后面的for循环没有终止条件吧,所以一直输入了

几个问题:
1.scanf里不要加\n
2.printf里不需要加上取地址符&
3.需要为指针p分配空间
4.pname应该设计成二维数组
PS:fcfs逻辑有点混乱,现在帮楼主把前面的调好了,有问题再发上来

 #include <stdio.h>
#include <stdlib.h>
int n=0,time=0;
struct PCB {
    char pname[5][5];  //进程名
    int arrivalTime[5];  //进程提交时间
    int pstart[5];    //进程开始运行时间
    int pend[5];      //进程完成时间
    int runningTime[5];   //进程运行所需时间
    int turnaroundTime[5];   //进程周转时间
}*p;

void initial(){
    int i; 
    printf("请输入进程数:");
    scanf("%d",&n);
    p = (struct PCB *)malloc(sizeof(struct PCB));
    for(i=0;i<n;i++){
        printf("请输入进程名,提交时间,运行所需时间(用逗号分隔):");
        scanf("%s,%d,%d",p->pname[i],p->arrivalTime[i],p->runningTime[i]); 
    }
}

void fcfs(){
    int j;
    for(j=0;j<n;j++){
        int i;
        for(i=0;p->arrivalTime[i]>p->arrivalTime[i+1];i++);
        printf("执行进程%s\n",p->pname[i]);
        p->pend[i]=p->arrivalTime[i]+p->runningTime[i];
        printf("进程%s结束时间:%d",p->pname[i], p->pend);
        time=p->pend[i];
    }




}

int main(){
    initial();
    fcfs();
}

图片说明