2016-11-20 8 views
0

Kann jemand raten, warum Werte nicht in struct array gespeichert werden? Ich habe versucht, Werte im Puffer-Array zu speichern, und ich merke Werte, die 0 oder 1 gespeichert werden nicht Benutzereingabe.Struktur C: Speichern von Werten in einem Array

Dies ist das, was ich versuchte:

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

int menu(void); 
struct item 
{ 
    int i_SKU; 
    int i_QUANTITY; 
    int i_PRICE; 
}; 

int main() 
{ 
    int i,j = 0;; 
    int n; 
    int input; 
    //struct item item1[10] = { {0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0} }; 
    struct item item1[]={0}; 
    struct item buff[]={0}; 
    //printf("size of %d", sizeof(item1)/sizeof(item1[0])); 
    printf("Welcome to the Inventory\n"); 
    printf("===================\n"); 
B: printf("Please select from the following:\n"); 

A: menu(); 
    scanf("%d", &input); 

    switch (input) 
    { 
     case 1: 
      printf("Inventory\n"); 
      printf("=========================================\n"); 
      printf("ku  Price  Quant\n"); 
      for (i = 0; i < sizeof(buff)/sizeof(buff[0]); i++) 
      { 
       printf("%d  %d  %d\n", buff[i].i_SKU, buff[i].i_PRICE, buff[i].i_QUANTITY); 
      } 
      printf("=========================================\n"); 
      goto B; 

     case 2: 
      //n = sizeof(item1)/sizeof(item1[0]) + 1; 
      //for (i=n; i < ; i++) 
      printf("Please input a KU number:"); 
      buff[j].i_SKU=scanf("%d", &item1[j].i_SKU); 
      printf("Quantity:"); 
      buff[j].i_QUANTITY=scanf("%d", &item1[j].i_QUANTITY); 
      printf("Price:"); 
      buff[j].i_PRICE=scanf("%d", &item1[j].i_PRICE); 
      printf("The item added.\n"); 
      j=j+1; 
      goto B; 

     case 0: 
      printf("bye!"); 
      exit(1); 

     default: 
      printf("Invalid input, try again:\n"); 
      goto A; 
    } 

    return 0; 
} 

int menu(void) 
{ 
    printf("1) Display.\n"); 
    printf("2) Add to inventory.\n"); 
    printf("0) Leave.\n"); 
    printf("Select:"); 
    return 0; 
} 

ich versuchte Pufferarray zum Speichern von Werten in und ich feststellen, Werte, die 0 oder 1 nicht Benutzereingaben gespeichert zu werden.

+0

lesen der [klassische Essay] (http://www.u.arizona.edu/~rubinson/copyright_violations/Go_To_Considered_Harmful.html) auf goto-Aussagen als schädlich angesehen. – selbie

Antwort

0

scanf gibt den gelesenen Wert nicht zurück, es gibt die Anzahl der gelesenen Zeichen zurück.

Also diese Zeilen:

buff[j].i_SKU=scanf("%d", &item1[j].i_SKU); 
buff[j].i_SKU=scanf("%d", &item1[j].i_QUANTITY); 
buff[j].i_SKU=scanf("%d", &item1[j].i_PRICE); 

nicht tun, was Sie wollen. Sie setzen die Ganzzahl in item1[j].i_X, aber vergeben buff[j].i_X an die Anzahl der gelesenen Zeichen.

Auch ich vermute, Sie beabsichtigten die linke Seite dieser drei Gleichungen zu unterscheiden, beziehen sich nicht alle auf i_SKU.

Ein anderes mögliches Problem: Ihre Puffer haben keine Länge angegeben, so dass sie wahrscheinlich nur Speicher für ein Element haben.

EDIT:

Ich bin nicht sicher, welchen Zweck die items1 Array im Code dient, aber wenn Sie den Wert in beiden Feldern wollen, können Sie Folgendes versuchen:

int sku; 
printf("Please input a KU number:"); 
buff[j].i_SKU=scanf("%d", &sku); 
item1[j].i_SKU = sku; 
buff[j].i_SKU = sku; 
// etc. 
+0

Wie kann ich sonst Werte speichern? – John

+0

Die Methode, die Sie verwenden, um die Werte in "item1 [j] .i_X" zu speichern, sollte funktionieren. – andars

+0

Werte werden nicht in Buff immer noch gespeichert – John

Verwandte Themen