2つのCファイルがあります。1つは「function.c
」というタイトルの関数定義ファイルで、もう1つは「main.c
」というタイトルのメインファイルです。以下のように、ユーザーがコマンドライン引数として入力したテキストファイルを開こうとしています。
./program file.txt
次に、プログラムは「file.txt」を使用します。私のmain.c
コードは以下の通りです:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *readFile(char *filename);
int main(int arg_count, char *arg[]) {
FILE *fptr = fopen(arg[1] ,"r");
if(fptr == NULL) {
printf("Error! opening file");
exit(1);
}
readFile(arg[1]);
return 0;
}
main関数は、以下の「function.c」にある「readFile」と呼ばれる他のcファイル内の関数を呼び出します。
char *readFile(char *filename) {
fgets(arg[1], sizeof(arg[1]), stdin);
残りのコード
return 0;
}
私がファイルでやりたいことは、function.c
(readFile関数内の)内部に書き込まれます。コンパイルしようとすると「error: 'arg' undeclared」というエラーが出ましたが、宣言しようとすると別のエラーが出ます。関数プロトタイプを含むヘッダーファイルとともに、両方のファイルを一緒にコンパイルすることに注意してください。コマンドラインから入力した内容がfunction.c
ファイルに引き継がれ、そのファイルを使用できるようにするにはどうすればよいですか?
関数への引数は、その関数のスコープ内にのみ存在します。両方の関数が同じソースファイルにある場合でもchar *arg[]
、関数のスコープに存在しませんreadFile
。
readFile
;arg[1]
という引数でへのポインタを取得しますfilename
。代わりにでそれを使用してくださいreadFile
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加