ファイル操作

[戻る]
keiko 2003/02/23(日) 08:20:38
ファイル操作についてなんですが、
指定されたプログラム名と表示行数を
コマンドライン引数から、与えたいのですが
表示行数は与えられるのですが、プログラム名
を与えることができません。
どなたか指導お願いします。
例 プログラム名 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 );
}

ストラウストラップ 2003/02/23(日) 08:45:54
質問の意図がよくわからないのですが

>コマンドライン引数から、与えたいのですが
>表示行数は与えられるのですが、プログラム名
>を与えることができません。

プログラム名を与えないでどうやって実行してるのでしょう?

wood 2003/02/23(日) 09:05:10
>>smp -5 test.txt<<
このテキストの「smp」は「smp.exe」で提示されているソースプログラムを
コンパイルしたものではないのでしょうか?

「smp -5 test.txt」とコマンドラインをたたいて実行できているのではないのですか
質問の意図・意味が理解しにくいのですが

CreateProcessについて聞いていますか?

keiko 2003/02/23(日) 09:47:30
smp -5 test.txtと与えたら
argv[0]のファイル名だけが実行画面に表示されて、
指定した行数のテキストFが表示されないんです。
説明不足ですいません。

wood 2003/02/23(日) 10:03:04
>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] );
こんなのでだめですか?

しっぽ 2003/02/23(日) 11:59:09
> 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である
となってしまいます。

. 2003/02/23(日) 12:29:16
http://n76cd-01p05.ppp11.odn.ad.jp/cgi.cgi?07738

... 2003/02/23(日) 12:56:23
http://www.tachiki.com/cgi-bin/chatc/ealis.cgi?pick=2058

しっぽ 2003/02/23(日) 13:10:19
見て来ました。発信者が各スレッドを有機的に結び付ける
才能があるならば、私はマルチポストを否定しません。

今回はプロジェクト→設定→デバック→プログラムの引数に
abc -5 test.txt
と入力してあったというオチのようです。なかなか奥の深い
質問でした。

私は、現象からこのスレッドの質問になる過程を知りたかった
ので、これで目的は果たされました。.さん... さんありがとう
ございます。面白い質問をして下さったkeiko さんにも感謝。

ストラウストラップ 2003/02/23(日) 19:09:55
>argv[0]のファイル名だけが実行画面に表示されて、
じゃなくて
"Usage: smp -n file"
と表示されるはずですよね。
もうちょっと正確に表現してもらいたいものです・・・

επιστημη 2003/02/24(月) 10:18:47
> 見て来ました。発信者が各スレッドを有機的に結び付ける
> 才能があるならば、私はマルチポストを否定しません。

その才能はまず期待できんでしょう。
そんなフォローをできるヒトはそれが甚だしく面倒であることに
気づくでしょうから、やっぱりマルチポストは避けるでしょうね。

wood 2003/02/24(月) 10:24:24
マルチポストの討議になりそうなので「雑談掲示板」に行きませんか
このスレッドは質問者本人見てなさそうだし?

古いスレッドには追加発言できません。