ファイル操作についてなんですが、
指定されたプログラム名と表示行数を
コマンドライン引数から、与えたいのですが
表示行数は与えられるのですが、プログラム名
を与えることができません。
どなたか指導お願いします。
例 プログラム名 smp.exe
テキストファイル test.txt
表示行数 5行 なら
smp -5 test.txtのようにコマンドライン引数
から与えられるようなもの。
テキストファイルが5行以下ならすべて表示
------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv )
{
FILE *fp;
char fname[64];
int count;
int line;
char buf[1024];
if ( argc < 3 || argv[1][0] != '-' )
{
printf(Usage: %s -n file\n, argv[0] );
return( 10 );
}
line = atoi( &argv[1][1] );
fp = fopen( argv[2], r );
if ( fp == NULL )
{
printf([%s] open error.\n, argv[2] );
return( 20 );
}
for ( count = 0 ; count < line ; count++ )
{
if ( fgets(buf, sizeof(buf), fp) == NULL )
{
break;
}
fputs( buf, stdout );
}
fclose( fp );
return( 0 );
}
質問の意図がよくわからないのですが
>コマンドライン引数から、与えたいのですが
>表示行数は与えられるのですが、プログラム名
>を与えることができません。
プログラム名を与えないでどうやって実行してるのでしょう?
>>smp -5 test.txt<<
このテキストの「smp」は「smp.exe」で提示されているソースプログラムを
コンパイルしたものではないのでしょうか?
「smp -5 test.txt」とコマンドラインをたたいて実行できているのではないのですか
質問の意図・意味が理解しにくいのですが
CreateProcessについて聞いていますか?
smp -5 test.txtと与えたら
argv[0]のファイル名だけが実行画面に表示されて、
指定した行数のテキストFが表示されないんです。
説明不足ですいません。
>if ( argc < 3 || argv[1][0] != '-' )
>{
> printf(Usage: %s -n file\n, argv[0] );
> return( 10 );
>}
の
> printf(Usage: %s -n file\n, argv[0] );
ここのことですね
printf(Usage: %s -%d %s\n, argv[0],atoi( &argv[1][1] ),argv[2] );
こんなのでだめですか?
> smp -5 test.txtと与えたら
> argv[0]のファイル名だけが実行画面に表示されて、
> 指定した行数のテキストFが表示されないんです。
> 説明不足ですいません。
まだ説明になっていないように思えます。落着いて
正確に表現してはいかがですか。
あなたのコードにはargv[0]のファイル名だけを
出力するような個所はどこにも見当たりません。
keiko 2003/02/23(日) 08:20:38 のコードと
keiko 2003/02/23(日) 09:47:30 の状況説明から
得られる解は、test.txtファイルの中味がsmpである
となってしまいます。
見て来ました。発信者が各スレッドを有機的に結び付ける
才能があるならば、私はマルチポストを否定しません。
今回はプロジェクト→設定→デバック→プログラムの引数に
abc -5 test.txt
と入力してあったというオチのようです。なかなか奥の深い
質問でした。
私は、現象からこのスレッドの質問になる過程を知りたかった
ので、これで目的は果たされました。.さん... さんありがとう
ございます。面白い質問をして下さったkeiko さんにも感謝。
>argv[0]のファイル名だけが実行画面に表示されて、
じゃなくて
Usage: smp -n file
と表示されるはずですよね。
もうちょっと正確に表現してもらいたいものです・・・
> 見て来ました。発信者が各スレッドを有機的に結び付ける
> 才能があるならば、私はマルチポストを否定しません。
その才能はまず期待できんでしょう。
そんなフォローをできるヒトはそれが甚だしく面倒であることに
気づくでしょうから、やっぱりマルチポストは避けるでしょうね。
マルチポストの討議になりそうなので「雑談掲示板」に行きませんか
このスレッドは質問者本人見てなさそうだし?