У меня есть вопрос. Я пытаюсь прочитать целочисленные значения из файла в связанный список, который затем будет использоваться для функций push и pop. Я выполнил свои функции push и pop, но я пытаюсь понять, правильно ли я прочитал. Пока с моим кодом я использовал fscanf, чтобы прочитать файл и распечатать его, и он печатает все значения. Когда я выполняю функцию push, это неправильно распечатывает. Любые советы о том, что я могу делать неправильно.
4
2
1
6
1
5
2
3
3
1
6
1
\\values to be read from file
код ниже:
//linked list with place to store values and nodes
struct stack_list {
int list_values;
struct stack_list *node;
};
struct stack_list *head_node = NULL; //empty list
void stack_print(struct stack_list *); //prototype to print list
struct stack_list * push(struct stack_list * n, struct stack_list * c); //prototype to push values
int main(int argc, char* argv[]) {
FILE * fp; //opening file
fp = fopen("filename", "r"); //gives name of file to open
struct stack_list * mock = (struct stack_list *)malloc(sizeof(struct stack_list));
//int values[12]; //array to be used to collect values to pass to my list
//int n, t;
if (fp == NULL){
printf("File not provided.");
}
else if (fp != NULL) {
printf("Printing values first: \n");
while (fscanf(fp,"%d", &mock->list_values) == 1) {
mock->node = head_node;
printf("%d\n", mock->list_values);
}
}
push(mock, constructor_stack(mock));
stack_print(mock);
}
struct stack_list * constructor_stack(int j){
struct stack_list * my_node = (struct stack_list *)malloc(sizeof(struct stack_list));
my_node->list_values = j;
my_node->node = NULL;
return my_node;
}
struct stack_list * push(struct stack_list * num_list, struct stack_list * check_nodes) {
printf("Added values to stack:\n");
printf("Push: %d\n", check_nodes->list_values);
check_nodes->list_values = num_list;
return check_nodes;
}
Это часть того, что я имею до сих пор. Я пытался использовать массив, чтобы просто сохранить значения и передать в мой список, но это тоже не сработало.
int values[12]; //array to be used to collect values to pass to my list
int n, t;
while (fscanf(fp,"%d", &values[n]) == 1) {
n++;
}
}
for (t = 0; t < 12; ++t) { //iterating over array where values are stored
head_node = values[t]; //inputting values into the empty list
printf("%d\n", head_node); //printing values passed to empty list for reference
}
Это вывод, который я получаю.
Printing values first:
4
2
1
6
1
5
2
3
3
1
6
1
Added values to stack:
Push: 136352
Printing stack:
1111111111111111111111
Это напечатало значения, но не работало и в моей функции push. Я ценю любой совет!