gpt4 book ai didi

c - 从主程序中分离出多个功能

转载 作者:行者123 更新时间:2023-11-30 19:13:07 25 4
gpt4 key购买 nike

这是我在互联网上找到的代码

/*program to add and subtract elements of two arrays.*/

#include<stdio.h>
#define MAX 20

/* function : readArray()
to read array elements.
*/

void readArray(int a[],int size)
{
int i;
for(i=0;i< size;i++)
{
printf("Enter %d element :",i+1);
scanf("%d",&a[i]);
}
}

/* function : printArray()
to print array elements.
*/
void printArray(int a[],int size)
{
int i;
for(i=0;i < size; i++)
printf("%5d",a[i]);
}

/* function : addArray(),
to add elements of two arrays.
*/
void addArray(int a[],int b[],int c[],int size)
{
int i;
for(i=0; i< size;i++)
c[i]=a[i]+b[i];
}

/* function : subArray(),
to subtract elements of two arrays.
*/
void subArray(int a[],int b[],int c[],int size)
{
int i;
for(i=0; i< size;i++)
c[i]=a[i]-b[i];
}

int main()
{
int A[MAX],B[MAX],ADD[MAX],SUB[MAX];
int i,n;


printf("\nEnter size of an Array :");
scanf("%d",&n);

printf("\nEnter elements of Array 1:\n");
readArray(A,n);
printf("\nEnter elements of Array 2:\n");
readArray(B,n);

/* add Arrays*/
addArray(A,B,ADD,n);
/* subtract two Arrays*/
subArray(A,B,SUB,n);

printf("\nArray elements after adding :\n");
printArray(ADD,n);

printf("\nArray elements after subtracting :\n");
printArray(SUB,n);

printf("\n\n");
return 0;
}

我想将函数与主文件分开。

void    readArray(int a[],int size) 
{
int i;
for(i=0;i< size;i++)
{
printf("Enter %d element :",i+1);
scanf("%d",&a[i]);
}
}


void printArray(int a[],int size)
{
int i;
for(i=0;i < size; i++)
printf("%5d",a[i]);
}


void addArray(int a[],int b[],int c[],int size)
{
int i;
for(i=0; i< size;i++)
c[i]=a[i]+b[i];
}


void subArray(int a[],int b[],int c[],int size)
{
int i;
for(i=0; i< size;i++)
c[i]=a[i]-b[i];
}

我知道我需要制作一个头文件,但我该怎么做呢?我所知道的关于头文件的一切都是当我使用 #define 或常量时。

顺便说一句,我刚刚从互联网上复制了代码作为示例,因为我下周有期末考试。

谢谢大家的回答。我要尝试一下如何做到这一点

main.c
#include<stdio.h>
#include"func.h"


int main()
{
int A[MAX],B[MAX],ADD[MAX],SUB[MAX];
int i,n;


printf("\nEnter size of an Array :");
scanf("%d",&n);

printf("\nEnter elements of Array 1:\n");
readArray(A,n);
printf("\nEnter elements of Array 2:\n");
readArray(B,n);


addArray(A,B,ADD,n);
subArray(A,B,SUB,n);


printf("\nArray elements after adding :\n");
printArray(ADD,n);

printf("\nArray elements after subtracting :\n");
printArray(SUB,n);

printf("\n\n");
return 0;
}


func.h
#pragma once
#define MAX 20
void readArray(int a[],int n);


void printArray(int a[],int n);



void addArray(int a[],int b[],int c[],int n);



void subArray(int a[],int b[],int c[],int n);






func.c
#include "func.h"
void readArray(int a[],int n)
{
int i;
for(i=0;i< n;i++)
{
printf("Enter %d element :",i+1);
scanf("%d",&a[i]);

}
}


void printArray(int a[],int n)
{
int i;
for(i=0;i < n; i++)
printf("%5d",a[i]);

}


void addArray(int a[],int b[],int c[],int n)
{
int i;
for(i=0; i< n;i++)
c[i]=a[i]+b[i];

}


void subArray(int a[],int b[],int c[],int n)
{
int i;
for(i=0; i< n;i++)
c[i]=a[i]-b[i];

}

我不知道这是对还是错

编辑:已解决...因为它是一个多次使用的文件,您应该始终返回;!

最佳答案

我在 MikeCAT 的答案中添加了一些信息,这是完全正确的,但由于您是 C 新手,您可能需要更多解释。

迈克通过他的“包含防护”展示了如何防止包含文件被多次包含。例如,当 .c 文件包含 .h 文件 (#include "myfile.h") 并且 .h 文件也包含它时(收集所有包含的包含文件,例如示例)。

在这种情况下,它不会造成任何损害,但在其他情况下,它可能会造成损害,必须防止多重包含。仅当符号尚未定义时,#ifdef block 才会包含在编译中。

为了告诉其他编译单元(c 文件)您的模块 (myfile.c) 可用哪些类型、函数和变量,您现在可以指定它们。这些函数是函数名称、返回类型和参数的列表,每个函数都以分号结尾,如 Mike 的示例所示。

变量是用关键字 extern 声明的,例如

extern int a_size;

这告诉编译器变量存在,但不在这个编译单元中。链接器稍后将解析该变量或报告它丢失。

类型按原样声明,没有特殊关键字,例如游戏板:

typedef struct MY_BOARD {
int n_pieces;
int board[8][8];
} t_board;

类型通常首先声明,因此您可以声明它的(外部)变量。在类型之前是常量,但您已经知道它们了。

Mike 最终关闭了多重包含防护的条件编译 block 。

您现在已经编写了一个好的 .h 文件。

关于c - 从主程序中分离出多个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com