• 締切済み

ブラウザ上でsprintf関数の表示がうまくいかないのですが・・・。

ysk6406の回答

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.1

HTML では、複数の(半角)空白が続いても1個の空白と見なされてしまうので、 普通に書くとくっついてたように見えます。 一つの方法として、ループの前に <PRE>、後ろに </PRE> を出力するようにすれば、固定ピッチで表示されるので、うまくいくと思いますが… print "<PRE>\n"; 数値を表示する処理 print "</PRE>\n"; のような感じです。

関連するQ&A

  • sprintf関数について教えて下さい。

    sprintf関数について教えて下さい。 #include <stdio.h> int main(void) { int i; char ns[20][6]; for (i = 0; i < 20; i++) sprintf(ns[i], "No.%02d", i + 1); for (i = 0; i < 2; i++) printf("%s\n", ns[i]); return 0; } 上のプログラムでは結果が No.01 No.02 (中略) No.19 No.20 ですが、sprintf関数内の書式指定を"No.%02d\n"に変更した場合、 結果が No.01 No.02 (中略) No.19 No.20 No.02 No.03 (中略) No.19 No.20 No.03 No.04 (中略) No.19 No.20 (中略) No.19 No.20 No.20 になります。 どうしてこのようなことが起きてしまうのか自分では説明できません。 sprintf関数の説明も読んで納得はしたのですが 上のようになることがわかりません。 長々と書いてしまいましたが よろしくお願い致します。

  • sprintfで0埋め表示

    char型に入っている数字を規定桁数で0埋めしたいのですが...。 sprintf(char1, "%03s", char2); ↑このようにしているのですが、そうすると ・「1」→「1..」と左詰めで表示されます。 もうひとつ、DBでNUMBER(実数)型に入っている数値の整数部分だけを char型に格納したい(「123.45」→「123」のように)のですが、sprintfではできないのでしょうか? 初めてのC開発でまったくわかりません。 教えてください。 よろしくお願いします。

  • sprintf関数での文字列変換について

    マイコンにて、 C言語で浮動小数点の数値を表示するプログラムを作成しているのですが、 PRINT_OUT("123.456"); のように、文字列を直接指定した場合は正しく表示されるのですが、 sprintf()関数を用いて、浮動小数点を文字列に変換した場合、 buf char[10]; sprintf(buf,"%lf",123.456); PRINT_OUT(buf); とした場合はプログラムが暴走?(恐らく配列破壊を起こしていると 思われますが、)してしまい、上手く動作しません。 (但し、整数の場合は正常に動作します。) そこで、質問させていただきたいのですが、 "123.456"のように直接文字列を指定した場合と、浮動小数点123.456 をsprintf()関数を用いて文字列に変換した"123.456"の書式に何か 違いはあるのでしょうか?よろしくお願い致します。

  • sprintfを用いたフォーマット文字列攻撃

    sprintfを用いたフォーマット文字列攻撃に関する質問です。 main文の中で --------------------- int main(void){ char str[50]; sprintf(str,"%s"); puts(str); } --------------------- を実行すると(null)で帰ってきます。 しかし関数呼び出しを行うと結果が変わってきます。 --------------------- void f(){ char str[50]; sprintf(str,"%s"); puts(str); } int main(void){ f(); } --------------------- これを実行すると" ・L "のような文字化けしたものに変わりました。 sprintf(str,"%s%s");と記述することによって" ・L (null) "と、本来呼び出される箇所のものが格納されています。 なぜ関数呼び出しにすると変なところを参照してしまうのか(第3引数があると勘違いしてしまうのか)教えてください。 また、これによりどのような悪影響があるのか教えてください。 自分はプログラマが意図しない箇所を参照するため攻撃者のプログラムアドレスを格納してしまう恐れがあると考えています。

  • 2の補数計算でのsprintf関数の使い方で

    現在Microsoft Visual C++ 2010 Expressでプログラミングの勉強中なのですが、 2の補数計算で ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF” この数値の加算後の2の補数を行った際に 最終的にiToal = 3756 となり、最後に次のプログラムを実行しました。 iHosu = ~iTotal; // 1の補数 iHosu++; // +1 sprintf( cAns, "%s%02X%c", cOrg, iHosu, 0x22 ); 最終的には結果が ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF54” と出てほしいのですが、 ”100000004466FFFFFFFFFFFFFFFFFFFFFFFFFFFF154” とでます。 iHosuの下2桁の文字だけを文字列につけるようにしたいのですが、どうしたらよいでしょうか?

  • ブラウザに表示できません。

    私はWebDBに挑戦してみようと思いMySQLを勉強しています。 そこで参考書を見ながら見よう見真似でCGIを作ったのですがブラウザーに表示できません。 環境的には ■□参照1□■□■□■□■□■□■□ Apache1.3.12(WIN32) c:home/htdocs/public_html MySQL3.23.32-win ActivePerl5.60 □■□■□■□■□■□■□■□■□■ です。 perlを使っていますがブラウザにて 表示すると ■□参照2■□■□■□■□■□■□■□■□ Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. -------------------------------------------------------------------------------- Apache/1.3.12 Server at localhost Port 80 ■□■□■□■□■□■□■□■□■□■□■□ と出ています。 実際に作ったperlソースは ■□参照3■□■□■□■□■□■□■□■□■□ #!perl #DBIモジュールを使用する use DBI; my($dns) = "DBI:mysql:webdatabase:localhost"; my($username) = "root"; my($password) = "654321"; #データベースへアクセスする値 my($dbh, $sth); #データベースから得た情報を格納する値 my(@ary); #データベースへアクセスする $dbh = DBI -> connect ($dns, $username, $password) or &Error("データベースにアクセスできません1"); #データベースへMysqlコマンドを送る準備をする------------------------------- $sth = $dbh->prepare("SELECT * FROM mytable"); #準備したコマンドを実行する $sth -> execute() or &Error("MySQLを実行できません。2"); #実行したコマンドから取り出した情報を表示する print<<"__start_html"; Content-type: text/html\; charset=shift_jis <PRE> __start_html while (@ary = $sth -> fetchrow_array()) { print join ("\t", @ary), "\n"; } print "</PRE>\n"; #コマンドの実行を終了する $sth -> finish(); $dbh -> disconnect(); exit; #エラー部分のsubメニュー------------------------------------------------------ sub Error { print<<"__html"; Content-type: text/html\; charset=shift_jis $_[0] __html exit; } ■□■□■□■□■□■□■□■□■□■□■□ となっています。 どこか原因なのか参考書を読み漁りましたがわかりませんでした。 どうか教えていただけないでしょうか それとデータベースは入っています。

    • 締切済み
    • CGI
  • ヒアドキュメントが表示されない

    perl初心者です・・ perlを本で学習してる最中なのですが、print文だとブラウザに表示されるのに、ヒアドキュメントで記述するとブラウザに表示されません。 (AN HTTPDサーバーを使用して、起動させています。) 例えば、 #!/usr/bin/perl print "content-type: text/html\n\n"; print "<html><body>"; print "ああ"; print "<br>"; print ("いい","うう","ええ","です"); print "<br>"; print "</body></html>"; ↑この記述だとブラウザに表示されますが、 #!/usr/bin/perl print <<HTML_DOCUMENT; content-type: text/html <html> <body> ああいいううええです </body> </html> HTML_DOCUMENT ↑このようにヒアドキュメントに書き換えてブラウザで表示させると、 サーバーが見つかりませんと表示されます。 ちなみに、本に添付してあるCD-ROMの回答ソースをコピペして表示させてみましたが、同様にサーバーが見つかりませんと表示されます。 ですので、文法には間違いはないと思うので、ANHTTPDサーバーに原因があるのではないかと思われるのですが、何か、ANHTTPDサーバーに設定をする必要があるのでしょうか? 教えてください。 ちなみに、環境windowsXPです。

    • ベストアンサー
    • Perl
  • テキストファイルのHTMLタグを文字として表示させるには?

    テキストファイルのHTMLタグを文字として表示させるにはどうすればよいのでしょうか? <HTML>の"<"をJIS文字コードに置き換えれば良いというようなことを聞きましたが、 $_ =~ tr/</&lt);/s; この文字を置き換える式では駄目でした。 多分表記の仕方が間違っていると思うので正しいのをよろしくお願いします。 (上の置き換え文だと&HTML>になってしまいます。) #!/usr/bin/perl main:{ require "jcode.pl"; $file = 'file01.txt'; print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<TITLE>表\示</TITLE>\n"; open( FH, $file) or die "Can't open"; foreach( <FH> ){ $_ =~ tr/</&lt);/s; print $_ ."<br>"; } close(FH); print "<br>_<br><"; print "</BODY></HTML>\n"; }

    • ベストアンサー
    • Perl
  • Oracleデータベースに接続

    いつもお世話になります。 DBD-Oracleモジュールを使用して接続を試みているのですが、以下のエラーになります。 「プロシージャエントリポイントPL_memory_wrapがperl58.dllからみつかりません」 とダイアログが表示され、 install_driver(Oracle) failed: Can't load 'C:/Perl/site/lib/auto/DBD/Oracle/Oracle.dll' for module DBD::Oracle: load_file:指定されたプロシージャが見つかりません。 at C:/Perl/lib/DynaLoader.pm line 230. at (eval 1) line 3 Compilation failed in require at (eval 1) line 3. Perhaps a required shared library or dll isn't installed where expected at test.pl line 16 とメッセージがでます。 スクリプトは以下です。 $hDB = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $passwd); $hSt = $hDB->prepare("SELECT * FROM emp"); $nRes = $hSt->execute; while(@aRes = $hSt->fetchrow) { print join("\t", @aRes), "\n"; } $hSt->finish; $hDB->disconnect; 環境: Windows2000Server ActivePerl 5.8.6 Oracle8i どなたかわかる方おりましたら、ご教示下さい。。宜しくお願い致します。

    • ベストアンサー
    • Perl
  • エラー表示の意味を解説してください

    CGI初心者です。自分の端末でサーバ設定し、テスト中の段階です。htmlファイルはブラウザからきちんと表示されました。が、CGIファイルを表示させようとすると、 CGI エラー - Content-Type ヘッダが正しくありません。 CGI 出力メッセージ: Can't open perl script "C:\www\hiro\ISO": No such file or directory とエラーがでます。ちなみに、スクリプトには #!/usr/bin/perl print"Content-type: text/html\n\n"; print"<HTML>\n"; print"<HEAD>\n"; print"<TITLE>CGI No1</TITLE>\n"; print"</HEAD>"; print"<BODY>\n"; print"CGIプログラム No.1,テスト成功!\n"; print"</BODY>\n"; print"</HEAD>\n"; と記述しました。なにがいけないのか教えてください。

    • ベストアンサー
    • CGI