2014-02-14 42 views
2

我改變了我的代碼,這個文件指針應該包含我的log.txt文件的地址:需要的方式對源文件之間共享文件指針用C

FILE *log

該地址取決於argv[1]從我main.c中的功能,它可能是這樣的:

char address[200]; 
strcpy(address, argv[1]); 
FILE *log; 
log = fopen(address, "w"); 

我需要*log指向的地址,我給所有的.c源文件是可見的,因爲他們有這樣的句子:

fprintf(log, "Comment to be printed on log.txt"); 

我知道這是製作日誌文件的壞方法,但我的程序足夠大,因此更改所有日誌打印行將花費相當長的時間。

該文件的地址必須使用argv [1]進行定義。在我的函數可以使用它之前如何定義它(以及如何讓它們識別它)?

+0

對不起,但我不買更改所有源文件花費太多時間。瞭解您的IDE或使用其他工具來執行此操作。 Visual Studio可以很輕鬆地處理,在Linux上你可以使用sed。 –

回答

1

log定義爲全局變量,並在您使用它的其他地方將其聲明爲外部符號extern FILE *log;

+0

因此,我將在main.c中聲明它爲全局變量,然後,我將在其他源代碼上寫'extern FILE * log'。 – user3203734

+0

@ user3203734是的,那正是我的意思。 –

+0

@ user3203734是的,請記住,這種方法會使線程環境中的編程任務變得更加困難。相反,你可以聲明'static'變量並編程一個邏輯,從'setters'和'getters'從外部訪問它們 – yeyo