C语言学习笔记,备查:
希望在一个A.c文件中引用另一个B.c文件的方法,可以将B.c文件中的方法提取至B.h头文件,然后在B.c和A.c中分别用#include "XXX/B.h"引用。其中XXX/B.h可以是绝对路径也可以是相对路径。
举例:
FindPrime.c文件中,有个isPrime方法用于判断是否为素数,希望在Factorization.c文件中引用:
FindPrime.c代码如下:
1 #include2 3 int isPrime(int i); 4 void printFactorization(int number); 5 6 void findPrime(int begin, int end) { 7 if (begin > end) { 8 int temp = begin; 9 begin = end;10 end = temp;11 }12 for (int i = begin; i <= end; i++) {13 if (isPrime(i)) {14 printf("%d\n", i);15 }16 }17 }18 19 int isPrime(int i) {20 for (int j = 2; j < i; j++) {21 if (i % j == 0) {22 return 0;23 }24 }25 return 1;26 }27 28 int main() {29 findPrime(101, 200);30 }
先将main方法之外的方法提取到头文件FindPrime.h中:
FindPrime.h代码如下:
1 int isPrime(int i); 2 void printFactorization(int number); 3 4 void findPrime(int begin, int end) { 5 if (begin > end) { 6 int temp = begin; 7 begin = end; 8 end = temp; 9 }10 for (int i = begin; i <= end; i++) {11 if (isPrime(i)) {12 printf("%d\n", i);13 }14 }15 }16 17 int isPrime(int i) {18 for (int j = 2; j < i; j++) {19 if (i % j == 0) {20 return 0;21 }22 }23 return 1;24 }
然后在FindPrime.c中使用预处理指令引用如下(FindPrime.c和FindPrime.h在同一个文件夹):
1 #include2 #include "FindPrime.h"3 4 int main() {5 findPrime(101, 200);6 }
在Factorization.c中引用如下(Factorization.c在quest14文件夹,该文件夹和quest12在同一文件夹下,FindPrime.c和FindPrime.h在quest12文件夹下):
1 #include2 #include "../quest12/FindPrime.h" 3 4 void printFactorization(int number) { 5 6 int factor = 2; 7 for (int i = 2; i <= number; i++) { 8 if (number % i == 0 && isPrime(i)) { 9 if (i == number) {10 printf("%d", i);11 } else {12 printf("%d * ", i);13 }14 factor = i;15 break;16 }17 }18 printFactorization(number / factor);19 20 }21 22 void printE(int number) {23 printf("%d = ", number);24 printFactorization(number);25 }26 27 int main() {28 int number;29 printf("请输入要因式分解的数:\n");30 scanf("%d", &number);31 printE(number);32 }