Reputation: 371
I have defined functions in multiple files. I want to write some text to the same file according to their execution same as below. I have found the way to write execution flow in different in file as below.
function1.h
#ifndef FUNCTION1_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int Sum(int a, int b);
#endif
function1.c
#include "function1.h"
int Sum(int a, int b)
{
FILE *fp;
fp = fopen("E:\\tmp\\test.txt", "a");
fputs("Inside Sum function...\n", fp);
fclose(fp);
return a+b;
}
main.c
#include "stdio.h"
#include "function1.h"
int main() {
int a=10, b=12;
FILE *fp;
fp = fopen("E:\\tmp\\test.txt", "a");
fputs("Before Sum function...\n", fp);
fclose(fp);
printf("%d + %d = %d", a, b, Sum(a, b));
fp = fopen("E:\\tmp\\test.txt", "a");
fputs("After Sum function...\n", fp);
fclose(fp);
}
Above solution is very difficult to handle when there are more multiple files. Is there direct way to write test.txt in multiple *.c files?
Upvotes: 0
Views: 568
Reputation: 402
#include <stdio.h>
#include <stdlib.h>
/* Define SHOW_WHERE to turn on show_where() */
#define SHOW_WHERE
#ifdef SHOW_WHERE
#define show_where(fp) \
fprintf(fp, "FILE=%s\tLINE=%d\tFUNC=%s\tDATE=%s\tTIME=%s\n", __FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__); \
fflush(fp);
#else
#define show_where(fp)
#endif
int main(int argc, char *argv[])
{
show_where(stdout);
return 0;
}
Upvotes: 0
Reputation: 2479
Pass file pointer as argument int Sum(int a, int b, File *F)
then (at the end) you can lseek to SEEK_SET to go back at beginning of file.
Upvotes: 2
Reputation: 193
You may open a file and pass its descriptor like an argument:
function1.h
#include <stdio.h>
#ifndef FUNCTION1_H_INCLUDED
#define FUNCTIONS_H_INCLUDED
int Sum(int a, int b, FILE *f);
#endif
function1.c
#include "function1.h"
int Sum(int a, int b, FILE *f)
{
fputs("Inside Sum function...\n", f);
return a+b;
}
main.c
#include "function1.h"
int main() {
int a=10, b=12;
FILE *fp;
fp = fopen("E:\\tmp\\test.txt", "a");
fputs("Before Sum function...\n", fp);
printf("%d + %d = %d", a, b, Sum(a, b, fp));
fputs("After Sum function...\n", fp);
fclose(fp);
return 0;
}
Upvotes: 2