Прежде чем я перейду к функции push, обратите внимание, что ваше определение структуры должно заканчиваться точкой с запятой.Код не скомпилируется, пока вы его не установите.Также хорошо добавить спецификатор класса хранения в объявлении.
typedef struct carList
{
char input[12];
char make[12];
char model[12];
char size[12];
char color[12];
char power[12];
float daily_rate;
char rented;
struct carList *next;
}carList;
Что касается вашего вопроса, функция печати не является проблемой;Это ваша функция толчка!Прямо сейчас вы просто присваиваете позиции [12] в массиве первый символ строки.Проверьте это:
newPtr->make[12] = input;
Мы должны скопировать строку в newPtr-> make, используя strcpy.Это можно сделать следующим образом:
strcpy(newPtr->make, input);
Кроме того, объявление вашей функции должно передавать массив символов вместо одного символа.
void push(StackNodePtr *topPtr, char *input)
Соединение этих элементов приводит меня к рабочей версиивашего кода:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct carList
{
char input[12];
char make[12];
char model[12];
char size[12];
char color[12];
char power[12];
float daily_rate;
char rented;
struct carList *next;
}carList;
typedef struct carList StackNode;
typedef StackNode *StackNodePtr;
void push(StackNodePtr *topPtr, char *input) {
StackNodePtr newPtr = malloc(sizeof(StackNode));
if(newPtr != NULL) {
strcpy(newPtr->make, input);
newPtr->next = *topPtr;
*topPtr = newPtr;
} else {
printf("Not inserted.");
}
}
int pop(StackNodePtr *topPtr) {
StackNodePtr tempPtr = *topPtr;
int popValue = (*topPtr)->make[12];
*topPtr = (*topPtr)->next;
free(tempPtr);
return popValue;
}
void printStack(StackNodePtr currentPtr) {
if(currentPtr == NULL) {
puts("The stack is empty.");
} else {
puts("The stack is:");
while(currentPtr != NULL) {
printf("%s --> ", currentPtr->make);
currentPtr = currentPtr->next;
}
puts("NULL\n");
}
}
int main()
{
StackNodePtr stackPtr = NULL;
push(&stackPtr, "Test");
push(&stackPtr, "test");
push(&stackPtr, "Test");
printStack(stackPtr);
}