У меня пока нет ошибки, когда я пытаюсь получить значение из массива, из-за которого программа не работает. Программа содержит функцию для чтения продуктов из файла и хранения их в массиве типа typedef structure item
.c сбой программы при попытке распечатать значение с помощью указателя
Это как программа выглядит следующим образом:
item *displayProducts(int balance){
int row=0;
char line[MAX_LINE_SIZE + 1]; // ptr to the current input line
static item products[8];
FILE *fp;
fp = fopen("machinedata.txt", "r");
if (fp == NULL)
{
printf("Error while opening the file.\n");
exit(EXIT_FAILURE);
}
while (fgets(line, MAX_LINE_SIZE, fp)) {
char *next_ptr = NULL;
char *next_item = strtok_s(line, ",;", &next_ptr);
while (next_item != NULL){
char *item_ptr = NULL;
char *name = strtok_s(next_item, "-", &item_ptr);
if (name == NULL)
{
fprintf(stderr, "Failed to scan name out of [%s]\n", next_item);
break;
}
int price;
next_item = strtok_s(NULL, " ,", &item_ptr);
//assert(next_item != NULL);
if (strcmp(name," ")){
if (sscanf(next_item, "%d", &price) != 1)
fprintf(stderr, "Failed to convert [%s] to integer\n", next_item);
else if (balance > price){
products[row].name = name;
products[row].price = price;
products[row].product_code = row + 1;
printf("%d) %s:%d\n",products[row].product_code, products[row].name, products[row].price);
row++;
}
next_item = strtok_s(NULL, ",;", &next_ptr);
}
}
}
fclose(fp);
return products;
}
void main(int argc, char *argv[]){
int *ptr_to_balance;
int balance = atoi(argv[2]);
ptr_to_balance = &balance;
item *ptr_to_products;
Init(argv[1], balance);
ptr_to_products = displayProducts(balance);
printf("%s", *(ptr_to_products[2].name));
}
программа распечатает все продукты из файла, но по какой-то причине последней строки программы терпит неудачу. Любая идея почему?
Добро пожаловать в StackOverflow. Тем не менее, это очень много кода для нас! Можете ли вы отладить его, пока не найдете, где это происходит? Вы можете ответить на вопрос самостоятельно, но если нет, тогда вы сможете сказать нам, где это происходит. Но также расскажите нам о симптом, поскольку просто говорят, что «программа терпит неудачу» не говорит нам, что на самом деле происходит неправильно. Делайте все это, и вы можете получить ответы от людей. – GuyH
не могли бы Вы предоставить нам структуру позиции? это поможет нам –
'typedef struct item { \t char * name; \t int product_code; \t int price; } item; ' –