コマンドラインCに入力した場合:myprogram myfile.txt
プログラムでmyfileを使用するにはどうすればよいですか。それをスキャンする必要がありますか、それともアクセスする任意の方法がありますか?.
私の質問は、プログラムでmyfile.txtを使用する方法です。
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
int main(int argc, char **argv)
をメイン関数として使用できます。
argc
-プログラムへの入力引数の数になります。argv
-すべての入力引数へのポインターになります。
したがって、プログラムを実行するために_C:\myprogram myfile.txt
_と入力した場合:
argc
は2になりますargv[0]
_はmyprogram
になります。argv[1]
_は_myfile.txt
_になります。詳細 ここにあります
ファイルを読むには:FILE *f = fopen(argv[1], "r"); // "r" for read
他のモードでファイルを開くには、 これを読んでください 。
メインをこのように宣言します
int main(int argc, char* argv [])
argcは引数の数を指定しました(引数が渡されない場合、プログラムの名前は1になります)
argvは文字列の配列へのポインターです(少なくとも1つのメンバー-プログラムの名前を含む)
次のようにコマンドラインからファイルを読み取ります:_C:\my_program input_file.txt
_
ファイルハンドルを設定します。
_File* file_handle;
_
読み取り用にfile_handleを開きます。
file_handle = fopen(argv[1], "r");
たとえば fgets を使用して内容を読み取ります。
fgets (buffer_to_store_data_in , 50 , file_handle);
char *
_バッファ(charsの配列など)が必要です。2番目の引数は読み込む量を指定し、3番目はファイルへのポインタです最後にハンドルを閉じます
fclose(file_handle);
全部できた :)
これがプログラミング101の方法です。当然のことですが、エラーチェックは一切行われません。しかし、それはあなたを始めさせます。
/* this has declarations for fopen(), printf(), etc. */
#include <stdio.h>
/* Arbitrary, just to set the size of the buffer (see below).
Can be bigger or smaller */
#define BUFSIZE 1000
int main(int argc, char *argv[])
{
/* the first command-line parameter is in argv[1]
(arg[0] is the name of the program) */
FILE *fp = fopen(argv[1], "r"); /* "r" = open for reading */
char buff[BUFSIZE]; /* a buffer to hold what you read in */
/* read in one line, up to BUFSIZE-1 in length */
while(fgets(buff, BUFSIZE - 1, fp) != NULL)
{
/* buff has one line of the file, do with it what you will... */
printf ("%s\n", buff); /* ...such as show it on the screen */
}
fclose(fp); /* close the file */
}
コマンドライン引数は単なるC文字列です。あなたは彼らとあなたがやりたいことができます。あなたの場合、ファイルを開き、そこから何かを読んで、それを閉じたいかもしれません。
あなたはこれを見つけるかもしれません 質問 (そして答え)便利です。
コマンドラインの使用に関して受け取った提案はすべて正しいですが、ファイルの代わりにstdin
を読み取る典型的なパターンを使用し、パイプでアプリを駆動することを検討することもできます例cat myfile > yourpgm
。その後、scanf
を使用してstdinから読み取ることができます。同様の方法で、stdout/stderr
を使用して出力を生成できます。