gpt4 book ai didi

c - 在节点中传递 ')' token 之前预期为 '*'

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:24 25 4
gpt4 key购买 nike

我已经搜索过这个问题,之前的问题似乎与我的问题无关。我似乎在将节点传递给函数时断开连接,出于某种原因,我在尝试编译时不断收到此错误。

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
char c;
int titleCount;
int authorCount;
char bookTitle[35];
char author[35];

/* Create Struct */
typedef struct bookData {
char bookTitle[35];
char author[35];
int book_stock;
float retail_price;
int wholesale_purchased;
int customer_purchased;
struct bookData *book;
} new_book;

/*Create Node */

typedef struct Node {
new_book books;
struct Node *next;
} node_t;

/* We are GUARANTEED at least 1 input value, so go ahead and initialize the head */

node_t *head = NULL; /*Initalize head to NULL since it is empty */
head = malloc(sizeof(node_t));
if(head == NULL) {
printf("allocation failed");
return 0;
}
head -> next = NULL;
/*Memory allocation successful */

/*Might as well populate the head with data from the user */

titleCount = 0;
authorCount = 0;

printf("Enter Title\n");
while(( c = getchar()) != '\n') {
bookTitle[titleCount++] = c;

}
bookTitle[titleCount] = '\0';

printf("%s\n", bookTitle);
strcpy(head -> books.bookTitle, bookTitle);

printf("Enter Author\n");
while(( c = getchar()) != '\n') {
author[authorCount++] = c;
}
author[authorCount] = '\0';
strcpy(head -> books.author, author);

printf("Bookstock #:\n");
scanf("%d", &(head -> books).book_stock);

printf("Enter retail price $:\n");
scanf("%f", &(head -> books).retail_price);

printf("Enter Wholesale purchased quanity:\n");
scanf("%d", &(head -> books).wholesale_purchased);

printf("Enter quantity sold:\n");
scanf("%d", &(head -> books).customer_purchased);

printf("%s\n", head -> books.bookTitle);

printf("%s\n", head -> books.author);

printf("%d\n", head -> books.book_stock);

printf("%.2f\n", head -> books.retail_price);

printf("%d\n", head -> books.wholesale_purchased);

printf("%d\n", head -> books.customer_purchased);

takeUserInput(head);
}

/*Now populate all other nodes, until user enters END_DATA */

void takeUserInput(node **head) {
int titleCount;
int authorCount;
char bookTitle[35];
char author[35];

int flag = 0;

while(1) {
titleCount = 0;
authorCount = 0;
node_t *temp = NULL;
temp = malloc(sizeof(node_t));
temp -> next = NULL;
printf("Enter Title\n");
while(( c = getchar()) != '\n') {
bookTitle[titleCount++] = c;
}
bookTitle[titleCount] = '\0'
if(bookTitle == "END_DATA") {
flag = 1;
break;
}
strcpy(temp -> books.bookTitle, bookTitle);

printf("Enter Author\n");
while(( c = getchar()) != '\n') {
author[authorCount++] = c;
}
author[authorCount++] = '\0';
strcpy(temp -> books.author, author);


printf("Bookstock #\n");
scanf("%d", &(temp - > books).book_stock);

printf("Enter retail Price in $\n:");
scanf("%.2f", &(temp -> books).retail_price);

printf("Enter wholesale purchased\n:");
scanf("%d", &(temp -> books).wholesale_purchased);

printf("Enter customer purchased\n:");
scanf("%d", &(temp -> books).customer_purchased);

if(temp -> books.book_stock < head -> books.book_stock) {
void pushToFront(head, temp);
} else {
void insert(head,temp);
}
}
if(flag == 1) {
free(temp);
}

}

void pushToFront(node_t **head, node_t *temp) {
temp -> next = *head;
*head -> temp;
}

void insert(node_t *head, node_t *temp) {
node_t *current = head;
while(current -> next -> new_book.book_stock < temp -> new_book.book_stock || current -> != NULL) {
current = current -> next;
}
if(current -> next = NULL) {
current -> next = temp;
}
node_t *xtraNode = current -> next
current -> next = temp;
temp -> next = xtraNode;
}

错误:

lab3p1.c:114: error: expected ‘)’ before ‘*’ token
lab3p1.c:180: error: expected ‘)’ before ‘*’ token
lab3p1.c:188: error: expected ‘)’ before ‘*’ token

据我了解,我只需要在调整head指向哪个节点时传入一个双指针pushToFront。所以在 insert() 上,我实际上并没有调整头指针,只是调整了特定节点的 next pointer 和正在插入的节点。所以我对为什么会出现这个错误感到有点困惑。

最佳答案

我花了一些时间尝试编译您的代码,但错误数量惊人。您的代码需要您的认真关注。

先从简单的事情开始。首先将结构的声明移到 main 之前:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Create Struct */
typedef struct bookData{
char bookTitle[35];
char author[35];
int book_stock;
float retail_price;
int wholesale_purchased;
int customer_purchased;
struct bookData *book;
}new_book;

/*Create Node */

typedef struct Node{
new_book books;
struct Node *next;
}node_t;

void takeUserInput(node_t **head);
void pushToFront(node_t **head, node_t *temp);
void insert(node_t *head, node_t *temp);

int main(){
//...
}

并将您的函数原型(prototype)也放在 main 之前。

void takeUserInput(node **head){

应该是:

   void takeUserInput(node_t **head){

   takeUserInput(head); 

应该是:

   takeUserInput(&head);

void takeUserInput(node_t **head){ // node_t not node sg7
int titleCount;
int authorCount;
char bookTitle[35];
char author[35];
int c; // declaration was missing sg7!

稍后

bookTitle[titleCount] = '\0'   // missing ;
if(bookTitle == "END_DATA"){ // this is NOT the way to compare strings

我还注意到您还没有接受一个答案。

我到这里就结束了,我让你自己继续。祝你好运。每个人都必须背着自己的十字架。

关于c - 在节点中传递 ')' token 之前预期为 '*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49098139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com