Я нашел эту программу сравнения файлов в Интернете, она компилируется и работает отлично. Я пытаюсь нарезать его на куски заголовок / источник, чтобы я мог повторно использовать функцию. Я получаю ошибку в основном драйвере по какой-то причине. На потерянном уже 2 дня. Ненавижу это говорить, но помогите, плз: D
ИНФОРМАЦИЯ: Я использую win 10. Последняя версия CodeBlocks имеет значение.
// THIS IS ORIGINAL CODES
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void compareFiles(FILE*, FILE*);
// Driver Code
int main()
{
// opening both file in read only mode
FILE *fp1 = fopen("sssp.debug_out", "r");
FILE *fp2 = fopen("sssp_temp.out", "r");
if (fp1 == NULL || fp2 == NULL)
{
printf("Error : Files not open");
exit(0);
}
compareFiles(fp1, fp2);
// closing both file
fclose(fp1);
fclose(fp2);
return 0;
}
void compareFiles(FILE *fp1, FILE *fp2)
{
// fetching character of two file
// in two variable ch1 and ch2
char ch1 = getc(fp1);
char ch2 = getc(fp2);
// error keeps track of number of errors
// pos keeps track of position of errors
// line keeps track of error line
int error = 0, pos = 0, line = 1;
// iterate loop till end of file
while (ch1 != EOF && ch2 != EOF)
{
pos++;
// if both variable encounters new
// line then line variable is incremented
// and pos variable is set to 0
if (ch1 == '\n' && ch2 == '\n')
{
line++;
pos = 0;
}
// if fetched data is not equal then
// error is incremented
if (ch1 != ch2)
{
error++;
printf("Line Number : %d \tError"
" Position : %d \n", line, pos);
}
// fetching character until end of file
ch1 = getc(fp1);
ch2 = getc(fp2);
}
printf("Total Errors : %d\t", error);
}
Я копирую прототип функции и вставляю в заголовок,это работает до сих пор. Затем я копирую тело и делаю его исходным кодом. Выдает ошибку, говоря «неопределенная ссылка», при вызове функции в главном шутке введите описание изображения здесь ction.
//MAIN FUNCTION
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "compareFiles.h"
// Driver Code
int main()
{
// opening both file in read only mode
FILE *fp1 = fopen("sssp.debug_out", "r");
FILE *fp2 = fopen("sssp_temp.out", "r");
if (fp1 == NULL || fp2 == NULL)
{
printf("Error : Files not open");
exit(0);
}
//THIS IS WHERE IT ERROR OUT
compareFiles(fp1, fp2);
// closing both file
fclose(fp1);
fclose(fp2);
return 0;
}
ФАЙЛ ГОЛОВКИ
#ifndef COMPAREFILES_H_INCLUDED
#define COMPAREFILES_H_INCLUDED
void compareFiles(FILE*, FILE*);
#endif // COMPAREFILES_H_INCLUDED
ТЕЛО
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "compareFiles.h"
void compareFiles(FILE *fp1, FILE *fp2)
{
// fetching character of two file
// in two variable ch1 and ch2
char ch1 = getc(fp1);
char ch2 = getc(fp2);
// error keeps track of number of errors
// pos keeps track of position of errors
// line keeps track of error line
int error = 0, pos = 0, line = 1;
// iterate loop till end of file
while (ch1 != EOF && ch2 != EOF)
{
pos++;
// if both variable encounters new
// line then line variable is incremented
// and pos variable is set to 0
if (ch1 == '\n' && ch2 == '\n')
{
line++;
pos = 0;
}
// if fetched data is not equal then
// error is incremented
if (ch1 != ch2)
{
error++;
printf("Line Number : %d \tError"
" Position : %d \n", line, pos);
}
// fetching character until end of file
ch1 = getc(fp1);
ch2 = getc(fp2);
}
printf("Total Errors : %d\t", error);
}