を読んで私は、コマンドライン Cに入力された場合。それをスキャンしなければならないのですか、それをアクセスする任意の方法がありますか?コマンドライン引数は、ファイル
私の質問は、自分のプログラムでmyfile.txtを使用する方法です。
int
main(){
/* So in this area how do I access the myfile.txt
to then be able to read from it./*
を読んで私は、コマンドライン Cに入力された場合。それをスキャンしなければならないのですか、それをアクセスする任意の方法がありますか?コマンドライン引数は、ファイル
私の質問は、自分のプログラムで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
- すべての入力引数へのポインタになります。
argc
は2argv[0]
myprogram
になりますようになります。 だから、あなたはあなたのプログラムを実行するためにC:\myprogram myfile.txt
を入力した場合。
argv[1]
はmyfile.txt
となります。 read this、他のモードでファイルを開くためのFILE *f = fopen(argv[1], "r"); // "r" for read
:
は、ファイルを読むために。
'txt'ファイル名を' main'ではなく別の関数に渡すには? – Sigur
コマンドライン引数は単なるC文字列です。あなたは彼らと一緒にしたいことをすることができます。あなたの場合は、ファイルを開き、そこから何かを読んで閉じたいと思うかもしれません。
このquestion(および回答)が役に立つ場合があります。
あなた
int main(int argc, char* argv [])
このようなメインのargcは引数の数(引数が渡されていない場合、それはプログラムの名前を1に等しいです)
argvは文字列の配列へのポインタです(少なくとも1つのメンバ - プログラムの名前を含みます)
あなたがそうのようなコマンドラインからファイルを読んでいました:
:読書のためFile* file_handle;
オープンfile_handle:C:\my_program input_file.txt
は、ファイルハンドルを設定
file_handle = fopen(argv[1], "r");
fopenはファイルへのポインタを返します。ファイルが存在しない場合はNULL
を返します。 ARGV 1、あなたが引数として読み込みたいファイルが含まれている
「r」は、あなたが使用して内容を読む
(もっと他のモードhereに)読み込むためのファイルを開くことを意味し例fgets:
fgets (buffer_to_store_data_in , 50 , file_handle);
char *
バッファを必要とします(そのような文字の配列など)にデータを格納する、第二の引数は、読み取りにどれだけ指定し、第三の最後に、ハンドル fclose(file_handle);
へのポインタであります
コマンドラインを使用することについて受け取っすべて行わ:)
すべての提案は正しいですが、 それはあなたにもTYを使用するように考えることができます私に聞こえますファイルの代わりにstdin
と読まれた模様のパターンを作成し、配管でアプリを駆動してください。例えば、myfile > yourpgm
です。 その後、scanf
を使用して標準入力から読み取ることができます。 同様の方法で、stdout/stderr
を使用して出力を生成することができます。
これはプログラミング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 */
}
'fopen()'または 'open()'で開きます。 – Barmar
ファイルを読む方法、または引数リストからファイル名を取得する方法についての質問はありますか? – Barmar
UNIX系のシステムでは、プログラムを 'myprogram