無題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
zino
記事: 10
登録日時: 14年前

無題

#1

投稿記事 by zino » 14年前

visual studioで
gcc ~.c -g -W -Wall
./a.out < test.html

のようなことをしたいのですがどうすればいいでしょうか

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 無題

#2

投稿記事 by さかまき » 14年前

cl %1 %2 %3 %4 %5 %6 %7 %8 %9 -o a.out.exe
とりあえず、↑の内容のバッチファイルを 「gcc.bat」という名前で作れば
gcc hoge.c で、a.out.exe が作成できます。コンパイルオプションは調べて下さい。
あと実行時は、./a.out は無理ですので、.\a.outあるいはa.out にして下さい。

実際、何を知りたいのですか?人にやりたい事が伝わる質問内容でしょうか?

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#3

投稿記事 by zino » 14年前

さかさき様返信ありがとうございます

説明不足ですね すみません
プログラムに~.html形式のファイルを読み込ませたいのです

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#4

投稿記事 by zino » 14年前

学校ではlinuxを使っているので最初に述べたようなコマンドいけるのですが、
visual studioではどうすればいいという質問です。

コード:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

#define BSIZE 4096
char buff[BSIZE];
char *bp;

enum tokentype
{
	BEGIN_HTML, END_HTML,	BEGIN_BODY, END_BODY,
	BEGIN_TABLE, END_TABLE, BEGIN_TR, END_TR, BEGIN_TD, END_TD,
	BR,	HR,	STRING,	END
};

enum tokentype token;

void error(char *msg);
void scan();
void prog();
void body();
void line();
void table();
void tr();
void td();

void error(char *msg)
{
	if (msg == NULL)
		puts("error");
	else
		puts(msg);
	exit(1);
}

void scan()
{

	while (isspace(*bp)) {
		bp++;
	}
	if (*bp == '\0') {
		token = END;
		return;
	}
	if (strncmp(bp, "<HTML>", 6) == 0) {
		token = BEGIN_HTML;
		bp += 6;
		return;
	}
	if (strncmp(bp, "</HTML>", 7) == 0) {
		token = END_HTML;
		bp += 7;
		return;
	}
	if (strncmp(bp, "<BODY>", 6) == 0) {
		token = BEGIN_BODY;
		bp += 6;
		return;
	}
	if (strncmp(bp, "</BODY>", 7) == 0) {
		token = END_BODY;
		bp += 7;
		return;
	}
	if (strncmp(bp, "<TABLE>", 7) == 0) {
		token = BEGIN_TABLE;
		bp += 7;
		return;
	}
	if (strncmp(bp, "</TABLE>", 8) == 0) {
		token = END_TABLE;
		bp += 8;
		return;
	}
	if (strncmp(bp, "<TR>", 4) == 0) {
		token = BEGIN_TR;
		bp += 4;
		return;
	}
	if (strncmp(bp, "</TR>", 5) == 0) {
		token = END_TR;
		bp += 5;
		return;
	}
	if (strncmp(bp, "<TD>", 4) == 0) {
		token = BEGIN_TD;
		bp += 4;
		return;
	}
	if (strncmp(bp, "</TD>", 5) == 0) {
		token = END_TD;
		bp += 5;
		return;
	}
	if (strncmp(bp, "<HR>", 4) == 0) {
		token = HR;
		bp += 4;
		return;
	}
	if (strncmp(bp, "<BR>", 4) == 0) {
		token = BR;
		bp += 4;
		return;
	}
	if(*bp=='<'){
	  while(*bp!='>'){
	    bp++;
	}
	  return;
	} 
	if (isprint(*bp) || isspace(*bp)) {
		token = STRING;
		bp++;
		while ((*bp != '<') && (*bp != '>') && (*bp != '\0')) {
			bp++;
		}
		return;
	}
	error("unknown token\n");
}
void prog()
{
	if (token != BEGIN_HTML)
		error("BEGIN_HTML reject");
	scan();
	body();
	if (token != END_HTML)
		error("END_HTML reject");
	scan();
}
void body()
{
	if (token != BEGIN_BODY)
		error("BEGIN_BODY reject");
	scan();
	while (token != END_BODY) {
		line();
	}
	scan();
}
void line()
{
  if(token==BEGIN_TABLE){
    table();
  }else if(token==STRING || token==HR || token==BR){
    scan();
  }
}
void table()
{
  if(token!=BEGIN_TABLE)
    error("BEGIN_TABLE reject");
  scan();
  while(token!=END_TABLE){
    tr();
  }
  scan();
}
void tr()
{
  if(token!=BEGIN_TR)
    error("BEGIN_TR reject");
  scan();
  while(token!=END_TD){
    td();
  }
  scan();
}
void td()
{
	if (token != BEGIN_TD)
		error("BEGIN_TD reject");
	scan();
	if (token == STRING) {
		scan();
	}else if (token == BEGIN_TABLE){
		table();
	}
	if (token != END_TD)
		error("END_TD reject");
	scan();
}
int main()
{
	bp = buff;
	while (fgets(bp, BSIZE, stdin) != NULL) {
		bp += strlen(bp);
	}
	bp = buff;
	scan();
	prog();
	if (token != END)
		error("END reject!");
	puts("accept!");
	return 0;
}

コード:

<!-- Institute of Tech.
     Test HTML for htmlchecker -->
<HTML>
  <!-- unsupported tag
      <HEAD>
	<TITLE>
	  Test Page
	</TITLE>
      </HEAD>
    -->
  <BODY>
    Sudacci Ponz!!
    <HR>
    <BR>Institute<BR>of<BR>Technology
    <HR>
    <TABLE>
      <TR><TD>PostScript</TD><TD>UNIX</TD><TD>Mr.President</TD></TR>
      <TR><TD>Lenny</TD><TD>Squeeze</TD></TR>
      <TR><TD></TD><TD>(*_*)</TD><TD></TD><TD>(^_^)</TD></TR>
    </TABLE>
    <HR>
    <TABLE></TABLE>
    GNU/Octave, OctaveForge
    <!-- http://www.gnu.org/software/octave/ -->
    <TABLE>
      <TR>
	<TD>Face</TD>
	<TD><TABLE><TR><TD>(o_o)</TD></TR><TR><TD>(T_T)</TD></TR></TABLE></TD>
	<TD><TABLE><TR><TD>(._.)</TD><TD>(?_?)</TD></TR></TABLE></TD>
      </TR>
      <TR>
	<TD>H/W</TD><TD>S/W</TD><TD>Mr.President</TD>
      </TR>
      <TR>
	<TD>My Favorite Things</TD>
      </TR>
    </TABLE>
  </BODY>
</HTML>

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 無題

#5

投稿記事 by さかまき » 14年前

特殊な事はしていない様ですので、WINDOWSでもコンパイルできました。
visual studioでバージョンが不明ですので、私の持っている visual studio6.0での話です。

手順は
コマンドプロンプト(DOS窓)から「VCVARS32」とタイプ。
ソース hoge.c に対して、「cl hoge.c」 でコンパイル・リンクを実行。プログラム「hoge.exe」 が生成されます。

実行は
hoge < test.html でOK牧場です。

ちなみに私の所では
C:\>hoge < test.html
BEGIN_BODY reject

という結果に終わりました。

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#6

投稿記事 by zino » 14年前

さかまき様
C:\program files(x86)\microsoft visual studio 10.0 \vc\bin\vcvars32
Setting environment for using Microsoft visual studio 2010 x86 tools.
という結果になってしましました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 無題

#7

投稿記事 by softya(ソフト屋) » 14年前

VC++なら、構成プロパティのデバッグでコマンド引数に
< test.html
と入力すれば良いと思います。
test.htmlは拡張子.vcprojと同じ場所においてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#8

投稿記事 by zino » 14年前

softya様

コード:

'htmlch.exe': 'C:\Windows\SysWOW64\ntdll.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\kernel32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\KernelBase.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\msvcr100d.dll' を読み込みました。シンボルが読み込まれました。
'htmlch.exe': 'C:\Windows\SysWOW64\apphelp.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\AppPatch\AcLayers.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\sspicli.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\msvcrt.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\rpcrt4.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\cryptbase.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\sechost.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\user32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\gdi32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\lpk.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\usp10.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\advapi32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\shell32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\shlwapi.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\ole32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\oleaut32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\userenv.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\profapi.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\winspool.drv' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\mpr.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\imm32.dll' を読み込みました。Cannot find or open the PDB file
'htmlch.exe': 'C:\Windows\SysWOW64\msctf.dll' を読み込みました。Cannot find or open the PDB file
プログラム '[3396] htmlch.exe: ネイティブ' はコード 1 (0x1) で終了しました。
このようなエラーを吐きました

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 無題

#9

投稿記事 by softya(ソフト屋) » 14年前

CTRL+F5で実行してみてください。
なにかコンソール画面に出てませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#10

投稿記事 by zino » 14年前

softya様
開いてすぐ閉じてしまいますが、かすかにBEGIN_BODY rejectと出ているので
読み込めてはいるみたいです

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 無題

#11

投稿記事 by softya(ソフト屋) » 14年前

zino さんが書きました:softya様
開いてすぐ閉じてしまいますが、かすかにBEGIN_BODY rejectと出ているので
読み込めてはいるみたいです
であれば構文解析に失敗している可能性が高いので、デバッグしてみる必要があります。

こちらを参考に。
http://cvwww.ee.ous.ac.jp/vc10prog.html#7
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#12

投稿記事 by zino » 14年前

softya様
結果がBEGIN_BODY rejectとプログラム自体が間違っているみたいです。

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

アバター
さかまき
記事: 92
登録日時: 14年前

Re: 無題

#13

投稿記事 by さかまき » 14年前

知りたい事はLINUXでやっていた事(コンパイル・リンク・実行)を
WINDOWS(visual studio)で行う方法だったと思ったのですが

>さかまき様
>C:\program files(x86)\microsoft visual studio 10.0 \vc\bin\vcvars32
>Setting environment for using Microsoft visual studio 2010 x86 tools.
>という結果になってしましました。

その後、CL HOGE.c でコンパイルリンク。
できあがったHOGE.EXE で
HOGE < test.html
を行わなきゃ動きません。

アバター
zino
記事: 10
登録日時: 14年前

Re: 無題

#14

投稿記事 by zino » 14年前

さかまき様
softya様のようなやり方を知らなかったのであのような質問になってしまいました。
動いてくれさえすればよかったと考えていたので

質問に答えてくださりありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る