Я пытаюсь добавить Process
-структуры в связанный список. Их определения заключаются в следующем.Добавление структуры к связанному списку в c
typedef struct {
char name[2];
int duration;
int priority;
int arrival;
} Process;
typedef struct {
Process p;
struct LinklistNode* next;
} LinklistNode;
Функция, которую я использую для создания процесса, выглядит следующим образом.
Process makeProcess(char nameIn[2], int durationIn, int priorityIn, int arrivalIn){
Process p = (Process*) malloc(sizeof(Process)); //getting an error
p->name = nameIn;
p->duration = durationIn;
p->arrival = arrivalIn;
p->priority = priorityIn;
}
Я не уверен, что я делаю, что часть права, и я также не уверен, что я должен возвращать процесс или иметь его недействительным, так как этот процесс «должен» идти в связанный список.
Мой код для создания связанного списка узла выглядит следующим образом:
LinklistNode* create_linklist_node(Process pIn) {
LinklistNode* node = (LinklistNode*) malloc(sizeof(LinklistNode));
node->p = pIn;
node->next = NULL;
return node;
}
Для бита больше контекста я буду называть эти функции в main()
где я лексемы строки из файла, который я нахожусь считывание из. Мне интересно, как создать структуру Process
. Сейчас у меня есть следующее:
while(!feof(fPointer)){
//the i counter is for the first line in the text file which I want to skip
while ((fgets(singleLine, 1500, fPointer) != NULL) && !(i == 0)){
char *token = strtok (singleLine, delimit);
while(token != NULL){
printf(" %s\n", token);
token = strtok(NULL, delimit);
}
}
i++;
}
Немного длинного вопроса, но любые ссылки или дополнительная информация всегда приветствуются. Дайте мне знать, если у вас есть дополнительные вопросы или вам нужна дополнительная информация о том, что я делаю, или почему я что-то делаю. Или, если вы можете найти пример чего-то подобного, это было бы очень признательно, поскольку мне пока не повезло.
Thanks
В 'Process p = (Process *) malloc (...' переменная 'p' является структурой, а не указателем. Поэтому он не может принимать возвращаемое значение из 'malloc'. –
Я не читал больше, но вижу, что вы используете 'feof', поэтому, пожалуйста, прочитайте [почему' feof' обычно ошибается] (http://stackoverflow.com/questions/5431941/why-is-while-feof- файл-всегда-неправильно). Просто зайдите в 'while (fgets (...)! = NULL)' –
Что касается того, что сказал Weather Vane, вы должны объявить 'p' следующим образом:' Process * p = (Process *) malloc (sizeof (Process)); ' –