0

私のプログラムは、入力データ ファイルの一部しか読み取っていないようです

これは私のコードです:

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

#include "BST_ADT.h"

// Structure
typedef struct
    {
        char* name;
        char* market;
        char* initial;
        float stock;
    }COMPANY;

// Prototype Delarations
void addComp    (BST_TREE* list);
void deleteComp (BST_TREE* list);
void findStu   (BST_TREE* list);
void printList (BST_TREE* list);
int  compareStu (void* stu1, void* stu2);
void processStu (void* dataPtr);


int main (void)
{
// Local Definitions
   BST_TREE* list;

// Statements
   list = BST_Create(compareStu);
   addComp(list);
   deleteComp(list);
   findStu (list);
   printList(list);

    return 0;
}


/*===================== addComp =========================*/

void addComp    (BST_TREE* list)
{
// Local Declarations
   COMPANY* stuPtr;
   FILE* fp;
   char fileName[25];
   char buffer [100];
// Statements

   stuPtr = (COMPANY*)malloc (sizeof (COMPANY));
   stuPtr->name = (char*) malloc(128 * sizeof(char));
   stuPtr->market = (char*) malloc(128 * sizeof(char));
   stuPtr->initial = (char*) malloc(128 * sizeof(char));

   printf("Enter the file name: ");
           gets(fileName);
           fp = fopen(fileName, "r");
           if(fp == NULL)
           {
              printf("Error cannot open the file!\n");
              exit(101);
           }
   while(fgets(buffer, 100, fp) != NULL)
        {
            if (!stuPtr)
                printf("MEmory overflow!\n"), exit(101);
            sscanf(buffer, "%s  %s  %s  %f ", stuPtr->name, stuPtr->market, stuPtr->initial, &(stuPtr->stock));
            BST_Insert(list, stuPtr);
        } // end while
} //addStu

/*===================== deleteComp =========================*/

void deleteComp (BST_TREE* list)
{
// local definitions
   char name[100];
   char* namePtr = (char*) malloc(128 * sizeof(char));
   namePtr = name;
// statements
   printf("Enter Company name: ");
   scanf ("%39s", namePtr);

   if (!BST_Delete (list, namePtr))
       printf("ERROR: No Company: %0\n", *namePtr);
} // deleteStu

これはテキストファイルからの私の入力データです:

Target Corporation;      NYSE   TGT     44.14B  
PriceSmart, Inc.;        NASDAQ PSMT    721.96M   
Eastman Kodak Company;   NYSE   EK      5.14B  
Concord Camera Corp.;    NASDAQ LENS    25.43M  
Siemens AG (ADR);        NYSE   SI      123.13B  
3M Company;              NYSE   MMM     56.47B  
Toshiba Corporation;     OTC    TOSBF   24.43B  
Tyco International Ltd.; NYSE   TYC     19.91B  
Textron Inc.;            NYSE   TXT     13.90B  
PHH Corporation;         NYSE   PHH     1.11B  
Activision, Inc.;        NASDAQ ATVI    8.07B 
The Walt Disney Company; NYSE   DIS     61.27B 

addComp 関数の最後に

name contain 'The'
market contain 'Walt
initial contain 'Disney
and stock contain 6.09

これは、関数が意図したことではありません

代わりに、この関数が正しく行われた場合:

name should contain 'The Walt Disney Company'
market contain 'NYSE'
initial contain 'DIS'
and stock contain '61.27B

'

addComp 関数で何が間違っていましたか? これらのデータを二分木に読み込むためにトークンを使用する必要がありましたか?

助けてくれてありがとう

4

1 に答える 1