首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C語言關於開啟資料夾 讀取和儲存

2013-11-09 
求助 C語言關於開啟資料夾 讀取和儲存我的編程出現錯誤在case 4和case 5這兩個地方case 4 是儲存檔案在資

求助 C語言關於開啟資料夾 讀取和儲存
我的編程出現錯誤   在case '4 '   和   case '5 '     這兩個地方
case '4 '是儲存檔案在資料夾     case '5 '是讀取檔案從資料夾
不知道哪位高手幫幫忙
謝謝

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


int   main(int   argc,   char   *argv[])
{

int   i;
struct   Info   info;
char   selection;
FILE   *fptr;
int   size;


printf( "Welcome   to   the   storage   room.\n\n ");


      do
        {

         
            printf( "Please   select   an   option   that   you   wish. ");
            printf( "\n*************************************\n ");
            printf( "Press   1   to   add   a   record.\n ");
            printf( "Press   2   to   delete   a   record.\n ");
            printf( "Press   3   to   view   all   records.\n ");
            printf( "Press   4   to   saving   records   to   a   disk   file.\n ");
            printf( "Press   5   to   restoring   records   from   a   disk   file.\n ");
            printf( "Press   'ESC '   to   exit. ");
            printf( "\n*************************************\n ");
            printf( "\n ");

            selection   =   getch();

     
                        switch(   selection   )
                          {  
                           
                              case   '1 ':

                             
                                  if   (isEmptyList())
                                  {
                                  printf( "The   list   is   empty.\n ");
                                  }

                                 
                                  for   (i=0;   i <50;   i++)


                                  {
                               
                                  printf( "record   number:   ");

                               
                                  scanf( "   %d ",   &info.record);

                                  printf( "Name   of   compenent   type:   ");
                                  fflush(stdin);

                             
                                  gets(info.type);

                             
                                  printf( "The   value   of   component:   ");
                                  fflush(stdin);

                                  gets(info.value);

                           
                                  printf( "How   many   in   the   stock:   ");

                   
                                  scanf( "   %d ",   &info.number);

                                  insertNode(&info);
                                  }
                                  break;

                       
                              case   '2 ':  
             
                                    if   (isEmptyList())
                                    {
                                    printf( "The   list   is   empty.\n ");


                                    }
                   
                              while(traversalList());
                       
                              deleteNode();
                              break;  

                             
                              case   '3 ':

                             
                                  if   (isEmptyList())
                                  {
                                  printf( "The   list   is   empty.\n ");
                                  break;
                                  }

                         
                                rewindList();

                         
                                do
                                {
                           
                                  retrieveNode(&info);

                           
                                  printf( "record   number\t%d\n ",   info.record);
                                  printf( "compenent   type:\t%s\n ",   info.type);
                                  printf( "component   value:\t%s\n ",   info.value);
                                  printf( "stock:\t%3d\n ",   info.number);
                                  }   while   (traversalList());


                                break;
                               
                              case   '4 '
                         
                            fptr   =   fopen( "comp.dat ", "wb ");//open   the   file   for   writing
                         
                            while(!isEmptyList())
                            {
                              rewindList();
                              retrieveNode(&info);
                              fwrite(&info,sizeof(info),1,   fptr);
                              deleteNode();
                            }
                     
                   
                            fclose(fptr);

                               
                                break;
                           
                            case   '5 '
               
                          fptr   =   fopen( "MyData.dat ", "rb ");     //open   the   file   for  

reading
                         
                          //read   from   the   file
                          while(1)
                        {
                        size   =   fread(&info,sizeof(info),1,fptr);
                        if   (size   <=   0)
                        {
                                break;


                        }
                       
                     
                        insertNode(&info);
                                           
                          fclose(fptr);

                            case   27:
                            printf( "Bye.\n\n ");
                            break;
   
                          default:
                          printf( "Your   selection   is   not   valid.\n ");
                          printf( "Please   try   again\n ");
                          printf( "\n ");
                          break;
                        }

            }while   (selection   !=   27);
system( "PAUSE ");
return   0;
}


以下是linkedlist.c   的部分(應該是沒錯)
#include   <stdio.h>
#include   <stdlib.h>
#include   "linkedlist.h "

//internal   function   prototypes
void   insert();
void   create();
void   assign(struct   Info   *info);


struct   Node   *head=NULL,   *current=NULL,   *temp=NULL;


int   isEmptyList()
{
        return   (head==NULL);
}


void   rewindList()
{
          current   =   head;
}


int   traversalList()
{
        if   (current==NULL)   return   0;
        if   (current-> link==NULL)   return   0;
        current   =   current-> link;
        return   1;
}


void   insert()          
{
          if   (head   ==   NULL)
          {
                head   =   temp;
                current   =   head;
          }
          else
          {
                  temp-> link   =   current-> link;
                  current-> link   =   temp;


                  current   =   current-> link;
          }
}


void   deleteNode()
{
          if   (head==NULL)   return;
          if   (current==head)
          {
                    head   =   current-> link;
                    free(current);
                    current   =   head;
          }
          else
          {
                  temp   =   head;
                  while(1)
                  {
                            if   (temp-> link==current)   break;
                            temp   =   temp-> link;
                  }
                  temp-> link   =   current-> link;
                  free(current);
                  current   =   temp-> link;
                  if   (current==NULL)   current   =   head;
          }
}


void   create()
{
          temp   =   (struct   Node   *)malloc(sizeof(struct   Node));
          temp-> link   =   NULL;
}


void   assign(struct   Info   *info)
{
          if   (temp==NULL)   return;
          memcpy(&temp-> info,info,sizeof(struct   Info));
}


void   retrieveNode(struct   Info   *info)
{
          if   (head==NULL   ||   current==NULL)   return;
          memcpy(info,&current-> info,sizeof(struct   Info));
}


void   insertNode(struct   Info   *info)
{
          create();
          assign(info);
          insert();
}


以下是linkedlist.h   的部分(應該是沒錯)
#ifndef   LINKEDLIST_H
#define   LINKEDLIST_H
 
//declare   struct   for   data
struct   Info
{
              int   number;
              int   record;
              char   type[25];
              char   value[25];
};

struct   Node
{
              struct   Info   info;
              struct   Node   *link;


};

//function   prototypes
int     isEmptyList();
void   rewindList();
int     traversalList();
         
void   insertNode(struct   Info   *info);      
       
void   deleteNode();            
     
void   retrieveNode(struct   Info   *info);  
       

#endif



[解决办法]
3

case '5 ':
fptr = fopen( "MyData.dat ", "rb "); //open the file for reading

//read from the file
while(1)
{
size = fread(&info,sizeof(info),1,fptr);
if (size <= 0)
{
break;
}
insertNode(&info);
} //!! while 应该是到这里吧?少了大括号
fclose(fptr);
break; //break 跳出该 case分支

case 27:
printf( "Bye.\n\n ");
break;

热点排行