• ベストアンサー

Cのコンソールアプリ2

表示したいファイルの日付を入力してください。 表示したい日:_  ※形式はYYMMDDです(2006年1月24日なら060124) 上記のように表示させたい場合、どうすればよいでしょうか? 2行目でsscanf()等で入力を待った後に3行目の表示ではなく、 3行目も表示した状態で2行目の入力を待つようにしたいのです。 何か良い方法があれば教えていただけませんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

APIを利用すると容易にできますよ。 以下にプログラムを記述します。 ---------------------------------------------------------------- #include <stdio.h> #include <windows.h> void main() {  char input[ 64 ];  HANDLE hStdOut;  COORD Pos;  // 出力先のハンドルを取得  hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );  // 表示  printf(   "表示したいファイルの日付を入力してください。\n"   "表示したい日:\n"   " ※形式はYYMMDDです(2006年1月24日なら060124)\n"  );  // カーソルを入力位置に移動  Pos.X = 14;  Pos.Y = 1;  SetConsoleCursorPosition( hStdOut, Pos );  // 入力  scanf("%s", input );  // カーソルを通常位置に戻す  Pos.X = 0;  Pos.Y = 3;  SetConsoleCursorPosition( hStdOut, Pos );  // ハンドルを閉じる  CloseHandle( hStdOut ); } ---------------------------------------------------------------- これで、やりたいことは実現できるはずですよ(^_^)

t_turbo
質問者

お礼

ありがとうございました。 おかげ様でうまくいきました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.1

環境依存です。 一般的な解放はありません。 もしかすると、エスケープシーケンスを利用できるかもしれません。

t_turbo
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Visual C++ コンソールアプリ

    YYMMDDHHMMSS.txtという形式の日時ファイル名のtxtが 実行ファイル直下のtxtフォルダに複数個あり、 getsとsscanfでYYYYMMDD形式で入力を待ち、 日付が該当したらfopenで開きたいのですが どのように指定すればいいのでしょうか? 060125234805.txt 060126101240.txt 060126181124.txt と複数のファイルがあり、20060126と入力した場合に 該当する日付の2つのファイルの中身を画面に表示させたいのです。 時間の早いものから表示して、矢印キーで画面を切り替えようと考えています。 Visual C++ 6.0 コンソールアプリです。

  • Cコンソールアプリ3

    yymmddhhmmss.txt(例.060125162541.txt)という形式のテキストファイルが 実行ファイルの直下の「txt」フォルダにたくさんあり、 txtファイルには下記のように情報があります。 172.20.1.31,2879,207.46.248.109,80 ...GET /cgi-bin/~ref+ HTTP/1.1..Accept: */*..Referer: http:w ww.j-motto.info/~.html...Accept-Langua: ja..Accept-Encording: gzip, de flate..User-Agent: Mozila/4.00 (compatible~NT5.0)..Host: ad.jp.ap.vali ecommerce~......... 1行目には「自IP」「自ポート」「相手IP」「相手ポート」がカンマ区切りで、 下の行にはパケット情報が書き込まれています。 YYYYMMDDの形で日付入力を待ち、それに該当する日付のファイルがあれば読み込んで、 (06/01/25) [Get]  /cgi-bin//cgi-bin/~ref+ HTTP/1.1   [Referer]  http:www.j-motto.info/~.html [User-Agent]  Mozila/4.00 (compatible~NT5.0) [Host]  ad.jp.ap.valiecommerce~ のように表示させたいのです。 fscanf()等で読み込んで範囲を指定して一部だけを 表示させることは可能でしょうか?

  • Cコンソールで助言お願いします。

    Win2KSP4 VC6.0 あるデータの書かれたテキストファイルが、 060207200712.txt(06年02月07日20時07分12秒)のように YYMMDDHHMMSS形式で実行ファイル直下のtxtフォルダ(..\txt\)に多数あります。 不必要な情報も多くあるデータの中から 「..ABCDE:」で始まり「..」で終わる文字列のみを表示したいのです。 不要な情報も必要な「..ABCDE~..」の文字列も1ファイルに何度もあります。 そこで StrSpirit() char* strsplit(char* str,const char* delimstr) 文字配列str中からdelimstrと一致する部分を探し、 存在すればそこに文字列終了子を埋め込む。 http://sometime.minidns.net/~ccgi/ref/strsplit.html 上記の「文字列を区切りとして文字を切り出す」関数を利用し、 「..」を区切りとして、切り分けた後 表示する時に「ABCDE」の分だけ8文字分アドレスを進めようと考えています。 日付を入力し、その日付ファイルを全て(060207*.txt)読み込み 必要なデータのみを表示させ、十字キーなどで切り替え表示をしたいのです。 しかし1度表示させるのは出来たのですが、 while(1)などでループさせようとするとたちまちわからなくなります。 どなたか助言をお願いします。 int i = 0; int j = 0; int iHeadCnt = 0; char *p; str[512] = {0}; char elem[10][256]; char* e_head = str; // 最初は文字列の先頭を代入しておく // 1行目取得 fgets(str, 512, fp); // 1行目を".."で分割 for(i=0; (next=StrSplit(e_head,"..")) != NULL ; i++) { sprintf(elem[i],"%s",e_head); e_head = next; iHeadCnt++; } sprintf(elem[i],"%s",e_head); // ABCDE表示 printf("[ABCDE]\n"); for(j=0; j<iHeadCnt; j++) { p = strstr(elem[j], "..ABCDE"); if (p != NULL) { printf("%s\n\n",p+8); // 8文字右にずらして表示 break; } }

  • Excelの日付がスラッシュ表示になり困ります

    こんにちは。Excelの日付入力について質問です。 入力した日付の表示が勝手にスラッシュ形式に変わってしまいます。 Excelの知識が足りず、困っています。治す方法を教えて頂けませんか。 まず日付をセルに「2012年11月21日」と入力しています。 この形をそのままにしたいのです。 しかし後から曜日を付けくわえたり訂正するために セルを選択(ダブルクリックで入力しようと)すると 表示が急に2012/11/21に変わってしまいます。 セル選択をはずすと、入力した時の2---年-月-日状態に戻ります。 スラッシュ形式のまま書き加えると、スラッシュ形式のままで確定されてしまいます。 ここで調べて、日付の入力形式はセル書式から変更出来るとしりましたが セル書式で変更をしても全く変わりません。 変更後も何も変わらず困っています。 どなたか、入力した日付形式をそのままにする方法を 教えて頂けませんか。

  • EXCELで特定範囲の最大値のみを表示

    EXCELで、どのような関数を使えばスマートに表示できるか、悩んでいます。 毎週日曜に集金する金額を入力し、自動で日ごとの合計値と月ごとの合計値が出るようにしたいです。 行2:日曜日の日付が入っている(2013/1/6,2013/1/13,・・・)。表示形式は"m" 行3:日曜日の日付が入っている(2013/1/6,2013/1/13,・・・)。表示形式は"d" 行4~行49:実データ、金額が入っている 行50:各列の行4~行49の合計値(sum関数) で、行51に、各月ごとの合計を表示したいのです。ただし表示するのは、行2の日付がその月の最終日曜日の列だけ。他の列は何も表示しないようにしたいです。 お知恵をお借りできれば幸いです。

  • Excel(エクセル)自動入力と入力前非表示

    4月~12月を前年、1月~3月を今年とするために、 年セル=IF(MONTH(日付セル)<4,2017,2016) とした場合、日付セルが空欄の場合に表示させないようにする方法はありますか? また、後から行を挿入した場合に、年セル=IF(MONTH(日付セル)<4,2017,2016)と自動に入力される方法はありますか? ※ マクロやVBAは使えません。初心者です。 例 :   年   日付 A1 2017 1月20日  A2 2016 5月25日 A3    7月18日 ←後から挿入したセルに自動的に数式を入力したい。 A4 2017      ←まだ日付を入力していないのに、2017と表示される。非表示にしたい。 ※ 日付は、1/20というように、スラッシュで入力しています。自動的に月日になるので。 宜しくお願いいたします。

  • エクセルで日付の表示書式を設定する方法

     Excel2000を使っています。ある方法でテキストファイルとして入力された日付を表す文字列の書式が、 2007/1/21 2006/1/5 2006/11/15 などとなるのですが、これを、 2007-01-21 2006-01-05 2006-11-15 のように、 ・区切り記号を「/」から「-」に。 ・月、日が一桁の場合は、「0」をつける。 というように変えたいのです。 (ISOで推奨された日付の表示形式なのです) [書式]→[セル]→[表示形式]→[ユーザー定義]のところで変えられると思うのですが、どう変えればよいのか分かりません。ヘルプを少し見てみましたが、よく分かりません。できないのでしょうか。できるのであれば、変え方をご教示頂きたく、お願いいたします。

  • 一行おきに日付をすばやく入力したいのですが。

    いつもお世話になっております。EXCEL2003で例えばA列に9月1日から30日までを入力するには9/1、9/2と入力して後はこの2つのセルをドラッグすれば連続で9月1日から30日まで表示されますが、一行目に9月1日三行目に9月2日、五行目に9月3日、七行目に9月4日という風に一行おきに日付けをすばやく入力する方法があれば教えていただきたいのですが。 連続で入力して、後から行の挿入とかしかないのでしょうか。 簡単に関数で入力できる方法はあるのでしょうか。OSはXPでソフトはEXCEL2003を使用しています。よろしくお願いします。

  • 日付を入力したセルをファイル名にして保存するには

    こんにちは。VBA 初心者です。 あるセルに日付を入力しています。 そのセルは書式設定の表示形式・日付で「2001/3/14」と入力した時に、「2001年3月14日」と表示される様に設定しています。 そしてこのファイルをマクロで名前をつけて保存するとき、上記のセル(の値)をファイル名したいのですが、2001\3\14と認識され、エラーが出ます。 セルに日付を入力する時に、出来るだけかな入力はせず、日付をファイル名にして保存するにはどういう方法があるでしょうか。 わかりにくい説明で申し訳ありません。ウィンドウズXP・エクセル2003です。よろしくお願いします。

  • 日付の計算

    VB6で開発をしています。 YYMMDD形式で日付をあらわした2つの文字列に、日単位で何日差があるのかを調べるいい方法はないでしょうか? うるう年があったりして、いい方法がみつからなくてこまっています。

このQ&Aのポイント
  • 給湯器のトラブルでお湯が出なくなった場合、タイトルは「給湯器トラブルでお湯が出ない!どうすればいい??」などとすると良いでしょう。
  • 給湯器のトラブルによりお湯が出なくなった場合、家賃の支払いや費用について問題が生じます。この場合、管理会社に相談し、家賃の交渉や費用の補償を依頼することができます。
  • 給湯器のトラブルでお湯が出なくなった場合、温水器の設置までの間はIHやバケツを使用して身体を洗うことができます。しかし、家賃の支払いについては管理会社との交渉が必要です。
回答を見る