这是我在互联网上找到的代码
/*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
或常量。
btw我刚从互联网上复制了代码,作为一个例子,因为我下周将进行实际的期末考试。
感谢所有答案。试试用这个怎么做
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];
}
我不知道这是对还是错
编辑:已解决...因为它是一个多用途文件,你应该总是返回;!
答案 0 :(得分:1)
我向MikeCAT的答案添加了一些信息,这是完全正确的,但由于你是C的新手,你可能会想要更多的解释。
通过他的“包含守卫”,迈克展示了如何防止多次包含包含文件。例如,当.c文件包含.h文件(#include "myfile.h"
)并且.h文件也包含它(例如,收集所有包含的包含文件)时,这可能会有所不同。
在这种情况下,它不会造成伤害,但在其他情况下,它可能会造成伤害,必须防止多重包含。只有当(尚未)定义符号时,#ifdef
bock才会包含在编译中。
要告诉其他编译单元(c文件)模块(myfile.c
)可用的类型,函数和变量,现在指定它们。这些函数是一个函数名列表,它们的返回类型和它们的参数,每个都以分号结尾,如Mike的例子所示。
变量在它们之前用关键字extern
声明,例如
extern int a_size;
这告诉编译器变量存在,但不在此编译单元中。链接器稍后将解析该变量或报告它丢失。
类型按原样声明,没有特殊关键字,例如游戏板:
typedef struct MY_BOARD {
int n_pieces;
int board[8][8];
} t_board;
通常首先声明类型,因此您可以声明(外部)变量。在类型是常量之前,你已经了解它们。
迈克最后关闭了他的多重包含守卫的条件编译块。你现在写了一个好的.h文件。
答案 1 :(得分:0)
您应该在标题中的其他文件中编写要使用的函数的原型。
示例:
/* "include guard": prevent problems which come from this file included multiple times */
#ifndef ARRAY_UTIL_H_GUARD_0F1BCF9D_9429_4D9B_A05A_07BE3D527F84
#define ARRAY_UTIL_H_GUARD_0F1BCF9D_9429_4D9B_A05A_07BE3D527F84
/* declarations of your functions */
void readArray(int a[],int size);
void printArray(int a[],int size);
void addArray(int a[],int b[],int c[],int size);
void subArray(int a[],int b[],int c[],int size);
/* end of "include guard" */
#endif