首页 > 用户发贴区 > 编程问题提问区 > c语言多文件问题
2010
09-09

我在source files中建立了2个.c文件,分别为main.c和machdize.c

在main.c中#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include”common.h”
#include”machdize.c”


void showMenu();


void main()
{
 int nSelect;


 while(1)
 {
  showMenu();
  printf(“请选择操作(0-7):”);
  scanf(“%d”,&nSelect);
  
  switch(nSelect)
  {
  case 1:
   main_Machandize();
   break;
    case 0:
   printf(“程序退出!\n”);
   break;
  default:
   printf(“错误输入,请重试!\n”);
  }
 }
 printf(“程序退出,按任意键继续”);
 getch();
}
  

void showMenu()
{
 printf(“——————————————————–\n”);
 printf(“*                   商品库存管理系统                   *\n”);
 printf(“——————————————————–\n”);
 printf(“*                   1.商品信息维护                     *\n”);
 printf(“*                   2.客户信息维护                     *\n”);
 printf(“*                   3.供应商信息维护                   *\n”);
 printf(“*                   4.入库管理                         *\n”);
 printf(“*                   5.出库管理                         *\n”);
 printf(“*                   6.查询与统计                       *\n”);
 printf(“*                   7.用户管理                         *\n”);
 printf(“*                   0.退出                             *\n”);
 printf(“——————————————————–\n”);
}

 

在machdize.c中

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

  struct stMerchandize
{
 char num[10];
 char name[20];
 char supply[10];
 int num_of_inventory;
 int price;
};


int len=0;

 


void viewMachandize(struct stMerchandize *a);
void showMcMenu();
void addMachandize(struct stMerchandize *a);
void modify(struct stMerchandize *a,int n,char ID[]);
void delMachandize(struct stMerchandize *a);

void main_Machandize()
{
 int nSelect;
char ID[10];
struct stMerchandize b[10],*a;
a=b;
system(“cls”);
while(1)
{
 showMcMenu();
 printf(“请选择操作(0-4)”);
 scanf(“%d”,&nSelect);
  switch(nSelect)
  {
  case 2:
   addMachandize(b);
   break;
  case 1:
  viewMachandize(b);
   break;
  case 3:
  delMachandize(b);
   break;
  case 4:
   printf(“输入要修改商品的编号”);
            scanf(“%s”,&ID);
  modify(a,len,ID);
   break;
  case 0:
   printf(“程序退出!\n”);
   break;
  default:
   printf(“错误输入,请重试!\n”);
  }
  printf(“程序退出,按任意键继续”);
  getch();
  system(“cls”);
 }
 
}


void showMcMenu()
{
 printf(“——————————————————–\n”);
 printf(“*                   商品信息维护子系统                 *\n”);
 printf(“——————————————————–\n”);
 printf(“*                   1.显示所有商品信息                 *\n”);
 printf(“*                   2.添加商品                         *\n”);
 printf(“*                   3.删除商品                         *\n”);
 printf(“*                   4.修改商品信息                     *\n”);
 printf(“*                   0.退出                             *\n”);
 printf(“——————————————————–\n”);

}
void addMachandize(struct stMerchandize *a)
{
fflush(stdin);
 printf(“输入商品的名称:”);
 scanf(“%s”,(a+len)->name);
 printf(“输入商品的编号:”);
 scanf(“%s”,(a+len)->num);
 printf(“输入商品的供应商:”);
 scanf(“%s”,(a+len)->supply);
 printf(“输入商品的库存:”);
 scanf(“%d”,&(a+len)->num_of_inventory);
 printf(“输入商品的单价:”);
 scanf(“%d”,&(a+len)->price);
 len++;
}
void viewMachandize(struct stMerchandize *a)
{
 int i;
 printf(“商品的名称、编号、供应商、库存、单价\n”);
 for(i=0;i<len;i++)
 {
  printf(“%s “,(a+i)->name);
  printf(“%s “,(a+i)->num);
  printf(“%s “,(a+i)->supply);
  printf(“%d “,(a+i)->num_of_inventory);
  printf(“%d\n”,(a+i)->price);
 }
 a++;
}
void modify(struct stMerchandize *a,int n,char ID[])
{
 int i;
 int index = -1;
 for (i=0;i<n;i++)
 {  
  if(strcmp((a+i)->num,ID)==0)
  {
   printf(“商品的名称修改为:”);
   scanf(“%s”,(a+i)->name);
   printf(“商品的编号修改为:”);
   scanf(“%s”,(a+i)->num);
   printf(“商品的供应商修改为:”);
   scanf(“%s”,(a+i)->supply);
   printf(“商品的库存修改为:”);
   scanf(“%d”,&(a+i)->num_of_inventory);
   printf(“商品的单价修改为:”);
   scanf(“%d”,&(a+i)->price);
   break;
  }  
 }
 if(i>=n)
 {
  printf(“没有找到数据!\n”);
 }
}
void delMachandize(struct stMerchandize *a)
{
 char b[10];
 int i,j;
 printf(“输入要删除商品的编号”);
 scanf(“%s”,&b);
 for (i=0;i<len;i++)
 {  
  if(strcmp((a+i)->num,b)==0)
  {
   for(j=i+1;j<len;j++,i++)
   {
    strcpy((a+i)->name,(a+j)->name);
    strcpy((a+i)->num,(a+j)->num);
    strcpy((a+i)->supply,(a+j)->supply);
    (a+i)->num_of_inventory=(a+j)->num_of_inventory;
    (a+i)->price=(a+j)->price;

   }
   len=len-1;
   break;
  }  
 }
}

在common.h中我定义了各种结构体,可是就是运行不了,machdize.c单独运行改一点就能正常运行,可是想进行主函数的调用,就不好使了,问题在哪啊,大家能帮着改改吗,就是main的case1调用machdize.c的函数,调用不了啊,怎么回事啊

 


c语言多文件问题》有 0 条评论

  1. 闪电侠 说:

    我在source files中建立了2个.c文件,分别为main.c和machdize.c

    在main.c中#include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<stdlib.h>
    #include”common.h”
    #include”machdize.c”
    void showMenu();
    void main()
    {
     int nSelect;
     while(1)
     {
      showMenu();
      printf(“请选择操作(0-7):”);
      scanf(“%d”,&nSelect);
      
      switch(nSelect)
      {
      case 1:
       main_Machandize();
       break;
        case 0:
       printf(“程序退出!\n”);
       break;
      default:
       printf(“错误输入,请重试!\n”);
      }
     }
     printf(“程序退出,按任意键继续”);
     getch();
    }
      
    void showMenu()
    {
     printf(“——————————————————–\n”);
     printf(“*                   商品库存管理系统                   *\n”);
     printf(“——————————————————–\n”);
     printf(“*                   1.商品信息维护                     *\n”);
     printf(“*                   2.客户信息维护                     *\n”);
     printf(“*                   3.供应商信息维护                   *\n”);
     printf(“*                   4.入库管理                         *\n”);
     printf(“*                   5.出库管理                         *\n”);
     printf(“*                   6.查询与统计                       *\n”);
     printf(“*                   7.用户管理                         *\n”);
     printf(“*                   0.退出                             *\n”);
     printf(“——————————————————–\n”);
    }
     
    在machdize.c中
    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<stdlib.h>
      struct stMerchandize
    {
     char num[10];
     char name[20];
     char supply[10];
     int num_of_inventory;
     int price;
    };
    int len=0;
     
    void viewMachandize(struct stMerchandize *a);
    void showMcMenu();
    void addMachandize(struct stMerchandize *a);
    void modify(struct stMerchandize *a,int n,char ID[]);
    void delMachandize(struct stMerchandize *a);
    void main_Machandize()
    {
     int nSelect;
    char ID[10];
    struct stMerchandize b[10],*a;
    a=b;
    system(“cls”);
    while(1)
    {
     showMcMenu();
     printf(“请选择操作(0-4)”);
     scanf(“%d”,&nSelect);
      switch(nSelect)
      {
      case 2:
       addMachandize(b);
       break;
      case 1:
      viewMachandize(b);
       break;
      case 3:
      delMachandize(b);
       break;
      case 4:
       printf(“输入要修改商品的编号”);
                scanf(“%s”,&ID);
      modify(a,len,ID);
       break;
      case 0:
       printf(“程序退出!\n”);
       break;
      default:
       printf(“错误输入,请重试!\n”);
      }
      printf(“程序退出,按任意键继续”);
      getch();
      system(“cls”);
     }
     
    }
    void showMcMenu()
    {
     printf(“——————————————————–\n”);
     printf(“*                   商品信息维护子系统                 *\n”);
     printf(“——————————————————–\n”);
     printf(“*                   1.显示所有商品信息                 *\n”);
     printf(“*                   2.添加商品                         *\n”);
     printf(“*                   3.删除商品                         *\n”);
     printf(“*                   4.修改商品信息                     *\n”);
     printf(“*                   0.退出                             *\n”);
     printf(“——————————————————–\n”);
    }
    void addMachandize(struct stMerchandize *a)
    {
    fflush(stdin);
     printf(“输入商品的名称:”);
     scanf(“%s”,(a+len)->name);
     printf(“输入商品的编号:”);
     scanf(“%s”,(a+len)->num);
     printf(“输入商品的供应商:”);
     scanf(“%s”,(a+len)->supply);
     printf(“输入商品的库存:”);
     scanf(“%d”,&(a+len)->num_of_inventory);
     printf(“输入商品的单价:”);
     scanf(“%d”,&(a+len)->price);
     len++;
    }
    void viewMachandize(struct stMerchandize *a)
    {
     int i;
     printf(“商品的名称、编号、供应商、库存、单价\n”);
     for(i=0;i<len;i++)
     {
      printf(“%s “,(a+i)->name);
      printf(“%s “,(a+i)->num);
      printf(“%s “,(a+i)->supply);
      printf(“%d “,(a+i)->num_of_inventory);
      printf(“%d\n”,(a+i)->price);
     }
     a++;
    }
    void modify(struct stMerchandize *a,int n,char ID[])
    {
     int i;
     int index = -1;
     for (i=0;i<n;i++)
     {  
      if(strcmp((a+i)->num,ID)==0)
      {
       printf(“商品的名称修改为:”);
       scanf(“%s”,(a+i)->name);
       printf(“商品的编号修改为:”);
       scanf(“%s”,(a+i)->num);
       printf(“商品的供应商修改为:”);
       scanf(“%s”,(a+i)->supply);
       printf(“商品的库存修改为:”);
       scanf(“%d”,&(a+i)->num_of_inventory);
       printf(“商品的单价修改为:”);
       scanf(“%d”,&(a+i)->price);
       break;
      }  
     }
     if(i>=n)
     {
      printf(“没有找到数据!\n”);
     }
    }
    void delMachandize(struct stMerchandize *a)
    {
     char b[10];
     int i,j;
     printf(“输入要删除商品的编号”);
     scanf(“%s”,&b);
     for (i=0;i<len;i++)
     {  
      if(strcmp((a+i)->num,b)==0)
      {
       for(j=i+1;j<len;j++,i++)
       {
        strcpy((a+i)->name,(a+j)->name);
        strcpy((a+i)->num,(a+j)->num);
        strcpy((a+i)->supply,(a+j)->supply);
        (a+i)->num_of_inventory=(a+j)->num_of_inventory;
        (a+i)->price=(a+j)->price;
       }
       len=len-1;
       break;
      }  
     }
    }
    在common.h中我定义了各种结构体,可是就是运行不了,machdize.c单独运行改一点就能正常运行,可是想进行主函数的调用,就不好使了,问题在哪啊,大家能帮着改改吗,就是main的case1调用machdize.c的函数,调用不了啊,怎么回事啊
     

留下一个回复