DEVC怎么建工程

1.DEVC建工程

1.1 新建项目

打开文件,选择新建-->项目-->ConsoleApplication(控制台程序),输入项目名,选择保存路径。(单独建一个文件夹存放)

项目建成功后,打开项目管理,看到自动生成的一个main文件。注意每个项目只能有一个main函数,是系统的入口。默认main.cpp已经包含main函数,其他文件不能再有main函数。

1.2 工程中新建c文件

项目管理中,右击项目名,选择New File,则可以在项目新建一个c或头文件。比如新建头文件,可以头文件写结构体定义、函数声明内容后,选择保存类型为*.h即可生成头文件

项目管理中多了自定义头文件student.h。其他c文件生成一样操作。

我们会生成了项目,但是如何把多个文件用项目管理一起呢,现在以学生管理系统为例。

2.多文件的C语言系统示例--学生成绩管理

示例功能比较简单,主要实现2个功能:

  • 读取学生文件数据
  • 控制台上展示学生数据

设计3个文件实现该系统。

  • 头文件student.h:封装结构体定义、函数声明
  • blog.c:函数具体实现,包括文件读取、数据展示等功能
  • main.c:实现菜单操作,功能函数调用

3个文件实现不同功能。函数定义和函数实现分2个文件实现。更好封装数据类型。

2.1 头文件student.h

头文件主要结构体定义、函数声明。不要在头文件定义变量,因为其他c文件也要包含头文件,如果多次包含,容易出现变量重定义。如学生系统头文件如下:

#include <stdio.h>
#include <stdlib.h>
typedef struct{
    char stuNum[13]; //学号 
    char stuName[8];//姓名 
    double score[8];//成绩 
}STU;//定义学生结构体类型 
int  ReadSTUFile(STU stu[]);//读学生文件 
void PrintSTU(STU stu[],int total);//展示数据,total表示学生数量 

建议:如果你的系统功能比较复杂,而且读取又是多个文件,每个文件代表不同类型数据,可以每种数据类型封装一个自定义头文件。这有点像面向对象类的概念,头文件就像类的接口,把函数具体实现封装了,只展示函数的接口。

2.2 函数实现文件blog.c

在头文件中定义函数,其实现尽量封装在一个独立c文件中,后续要修改,只要找对应c文件修改即可,这样避免我们的主文件main.c过长。如上述头文件2个函数,具体实现为:

  • ReadSTUFile
  • PrintSTU
#include "student.h"
int ReadSTUFile(STU stu[]) 
{
     FILE *fp;
     int i=0,j;
     if((fp=fopen("blog_score.txt","r+")) == NULL)
     {   
      printf("File open error!\n"); exit(0);
     }
     while(!feof(fp))
     {
       fscanf(fp,"%s%s",stu[i].stuNum,stu[i].stuName);
       for(j=0;j<3;j++) fscanf(fp,"%lf",&stu[i].score[j]);
       i++;
      }
     fclose(fp);
     return i;
}
void PrintSTU(STU stu[],int total)
{
    int i=0,j;
    for(i=0;i<total;i++)
    {
        printf("%s %s",stu[i].stuNum,stu[i].stuName);
        for(j=0;j<3;j++)    printf(" %lf ",stu[i].score[j]);
        printf("\n");
    }
}

这里注意就是:

扫描二维码关注公众号,回复: 4458677 查看本文章
  • blog.c文件中用到结构体类型及一些库函数,所以这个文件需要把自定义头文件包含进来。#include "student.h"
  • 文件读取,由于文件中数据类型多样,所以文件读取用fscanf,按数据格式读入结构体。

2.3 主函数文件main.c

主要实现分散在各个c文件中的函数调用及一些主要数组、全局变量定义。

#include "student.h" 
void Menu(); 
int main(void)
{
    int sel;
    STU students[100];
    int total;
    Menu();
    while(1)
         {
        printf("\n输入操作:"); 
                scanf("%d",&sel);
        if(sel==0) break;
               switch(sel)
        {
                case 1:  total=ReadSTUFile(students);break; /* 读取学生文件数据进结构体 */
                 case 2: PrintSTU(students,total); break;   /* 展示结构体数据 */
                }
      }
   return 0;
}

main文件一样要包含#include "student.h",数组不建议设为全局数组,虽然多个函数共享,但是由于多文件,容易出错。建议用数组地址做函数参数传递,效率更高。

至此,项目所有文件创建完毕,可以编译运行测试。

3.项目文件容易出现问题

  • 自定义头文件定义变量,其他文件又都包含头文件,导致变量多次定义,如:

  • 自定义头文件中声明的函数原型名称和main函数调用中函数名称不一样,或者main中要调用函数,没有函数实现,则会出现:undefined reference to 函数
  • 待补充。。

猜你喜欢

转载自www.cnblogs.com/linli069/p/10032889.html
今日推荐