質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

990閲覧

html ある変数を表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/11/19 10:04

編集2018/11/19 11:59

ある変数Xがあります。
X = 3ですこれはC言語です。
この3をHTMLの方で出力させたいのですが、HTML初心者なのでやり方がわかりません。
やり方を教えてほしいです。

HTMLtoc

1#include <ESP8266WiFi.h> 2#include <WiFiClient.h> 3#include <ESP8266WebServer.h> 4#include <ESP8266mDNS.h> 5#include <Servo.h> 6 const char* ssid = "NE6"; 7 const char* password = "q"; 8 Servo sv1; 9 Servo sv2; 10 Servo sv3; 11 // 文字列ではなく、数値配列です。 12 IPAddress ip(192, 168, 0, 1); 13 IPAddress gateway(192, 178, 0, 204); 14 IPAddress netmask(255, 255, 255, 0); 15 16 const int PIN_LED = 13; 17 int data = 0; 18 double value; 19 String html = ""; 20 21 ESP8266WebServer server(80); 22 23 void setup(void){ 24 char output[10240]; 25 26 html = "<!DOCTYPE html>\ 27 <html>\ 28 <head>\ 29 <meta charset=\"UTF-8\">\ 30 <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1\">\ 31 </head>\ 32 <body>\ 33 <br>\ 34 <br>\ 35 <br>\ 36 <input type=\"button\" value=\"サーボオン\" style=\"font-size:32px;\" onclick=\"location.href='/uho-ON';\">&nbsp;&nbsp;&nbsp;\ 37 <input type=\"button\" value=\"サーボオフ\" style=\"font-size:32px;\" onclick=\"location.href='/uho-OFF';\">\ 38 <input type=\"text\" ;\">\ 39 <p>printf("%d",value);</p>\ 40 </body>\ 41 </html>"; 42 sprintf(output, sizeof(output), html, value); 43 printf("%s\n", output); 44 sv1.attach(14, 800, 2300); 45 sv2.attach(13, 800, 2300); 46 sv3.attach(12, 800, 2300); 47 pinMode(PIN_LED, OUTPUT); 48 digitalWrite(PIN_LED, LOW); 49 sv1.write(0); 50 sv2.write(0); 51 sv3.write(0); 52 Serial.begin(9600); 53 54 // WIFI_AP, WIFI_STA, WIFI_AP_STA or WIFI_OFF 55 WiFi.mode(WIFI_STA); 56 WiFi.config(ip, gateway,netmask); 57 WiFi.begin(ssid, password); 58 Serial.println(""); 59 60 // Wifi接続ができるまで待機 61 while (WiFi.status() != WL_CONNECTED) { 62 delay(500); 63 Serial.print("."); 64 } 65 Serial.println(""); 66 Serial.print("IPアドレス: "); 67 Serial.println(WiFi.localIP()); 68 69 // ローカルネットワーク内のみ有効のmDNS(マルチキャストDNS)を開始 70 // bool MDNSResponder::begin(const char* hostname){} 71 if (MDNS.begin("petitmonte")) { 72 Serial.println("mDNSレスポンダーの開始"); 73 } 74 75 // トップページ 76 server.on("/", [](){ 77 // HTTPステータスコード(200) リクエストの成功 78 Serial.println(value); 79 server.send(200, "text/html", html); 80 }); 81 82 // LEDをオン 83 server.on("/uho-ON", [](){ 84 value = analogRead(2); 85 Serial.println(value); 86 digitalWrite(PIN_LED, HIGH); 87 sv1.write(35); 88 sv2.write(35); 89 sv3.write(35); 90 // HTTPステータスコード(200) リクエストの成功 91 server.send(200, "text/html", html); 92 }); 93 94 // LEDをオフ 95 server.on("/uho-OFF", [](){ 96 digitalWrite(PIN_LED, LOW); 97 sv1.write(0); 98 sv2.write(0); 99 sv3.write(0); 100 101 102 // HTTPステータスコード(200) リクエストの成功 103 server.send(200, "text/html", html); 104 }); 105 106 // 存在しないURLを指定した場合の動作を指定する 107 server.onNotFound([](){ 108 // HTTPステータスコード(404) 未検出(存在しないファイルにアクセス) 109 server.send(404, "text/plain", "404"); 110 }); 111 112 server.begin(); 113 Serial.println("Webサーバーの開始"); 114 } 115 116 void loop(void){ 117 // Webサーバの接続要求待ち 118 server.handleClient(); 119 } 120 121 122 123 124

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/11/19 10:08 編集

なぜ C 言語? とりあえず printf というものを調べてください。
退会済みユーザー

退会済みユーザー

2018/11/19 10:14

ESPモジュールを扱っておりまして、arudinoで書いておりますので、、、。今やりたいこととしては、ESPモジュールを使ってエアコンをつけることなのですがESPの電池の残量を知りたいのでESPからのアナログ値を取得しそれをhtmlで書いたページに出力することでバッテリーの状態を知ることができます。
Zuishin

2018/11/19 10:17

HTTP サーバーを立てて CGI が動く状態にはなっているんですか?
退会済みユーザー

退会済みユーザー

2018/11/19 10:22

そこら辺度は、初心者の僕にはわかりませんが、実際にボタンは二つ作れていて押せば、モーターが動きます
guest

回答2

0

ベストアンサー

Cの文法ではない気がして仕方ないですが

C

1#include <stdio.h> 2 3int main(void) 4{ 5 int X = 3; 6 char output[10240]; 7 char* html = "<!DOCTYPEhtml>\ 8 <html>\ 9 <head>\ 10 <meta charset=\"UTF-8\">\ 11 <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1\">\ 12 </head>\ 13 <body>\ 14 %d\ 15 <br>\ 16 <br>\ 17 <br>\ 18 <input type=\"button\" value=\"サーボオン\" style=\"font-size:32px;\" onclick=\"location.href='/uho-ON';\">&nbsp;&nbsp;&nbsp;\ 19 <input type=\"button\" value=\"サーボオフ\" style=\"font-size:32px;\" onclick=\"location.href='/uho-OFF';\">\ 20 <input type=\"text\" ;\">\ 21 </body>\ 22 </html>"; 23 24 snprintf(output, sizeof(output), html, X); 25 printf("%s\n", output); 26 27 return(0); 28}

こういうこと?

投稿2018/11/19 10:33

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

sprintf で文字列を書き換えてください。
これは HTML の問題でなく C 言語の問題だと思いますが、どこに変数の結果を入れていいかわからない状態なら <body></body> の中の適当なところに <p>%d</p> とでも入れて試してみてください。

投稿2018/11/19 10:27

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/19 10:33

やってみましたが、%dとしか出ません sprintfの使用理由がわかりません
Zuishin

2018/11/19 10:36

どうやったんですか? 使用理由ではなく使用法はわかりますか?
退会済みユーザー

退会済みユーザー

2018/11/19 10:46

html = "<!DOCTYPE html>\ <html>\ <head>\ <meta charset=\"UTF-8\">\ <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,minimum-scale=1\">\ </head>\ <body>\ <br>\ <br>\ <br>\ <input type=\"button\" value=\"サーボオン\" style=\"font-size:32px;\" onclick=\"location.href='/uho-ON';\">&nbsp;&nbsp;&nbsp;\ <input type=\"button\" value=\"サーボオフ\" style=\"font-size:32px;\" onclick=\"location.href='/uho-OFF';\">\ <input type=\"text\" ;\">\ <p>%d</p>\ </body>\ </html>"; こんな感じです
Zuishin

2018/11/19 10:48

sprintf はどこですか?
退会済みユーザー

退会済みユーザー

2018/11/19 10:48

sprintfは、printfの進化版で色々な設定ができると考えております 普段は、coutを使っているので少々理解しかねますが
退会済みユーザー

退会済みユーザー

2018/11/19 10:49

sprintfも使うということですね どのように扱えばよいか教えてほしいです
Zuishin

2018/11/19 10:50

違います。リンク先を読んでください。
Zuishin

2018/11/19 10:51

sprintf は文字列を標準出力ではなくメモリに出力します。
Zuishin

2018/11/19 10:58

と言うより cout で出力してるんですか? それならそこでフォーマットしてもいいです。
退会済みユーザー

退会済みユーザー

2018/11/19 11:21

すみません余計な話をしたせいで、こんがらってしまいました 僕は、HTMLで作られた場所にx=3の3を出力したくて、でも今まではprintfやcoutやsprintfで出力して、見てきたのですがHTMLで出力するにはHTML独特なコードが必要なんじゃないかと思っています
Zuishin

2018/11/19 11:22

何を言っているのかわかりません。もうちょっと詳しく説明してください。
退会済みユーザー

退会済みユーザー

2018/11/19 11:24

すみません
Zuishin

2018/11/19 11:24 編集

<html><body><p>3</p></body></html> これが出せればいいんですよね? printf("<html><body><p>%d</p></body></html>\n", 3); これで出ます。
Zuishin

2018/11/19 11:28

printf の説明が必要ですか?
Zuishin

2018/11/19 11:30

それとも、出力自体は問題なく理解していて、HTML の文法がわからないということですか?
退会済みユーザー

退会済みユーザー

2018/11/19 11:32

詳しく話すと、僕はCやc++をメインに書いてきました。出力に関しては、cout,printfを使えば簡単にコマンドプロンプトに表示させることができました。でも今回は表示させる場所が、違います。HTMLで書いたウェブページに出力させるのです。HTML言語の中にprintfを入れとけば表示してくれる。などと、そんなに簡単にできると思っていません。HTMLの言語を使わないと、出力できないと思っております
Zuishin

2018/11/19 11:36

cout で出力できてるんですよね?
Zuishin

2018/11/19 11:37

もしこれができてないなら話がひっくり返ります。
退会済みユーザー

退会済みユーザー

2018/11/19 11:41

私が今やっている動画です
退会済みユーザー

退会済みユーザー

2018/11/19 11:43

冒頭でもおっしゃいましたが、arudinoの開発環境でプログラムを書いているので、出力の際はSerial.println(x)を使用しております
Zuishin

2018/11/19 11:44

声が全然聞こえないのでよくわからないんですが、この HTML は cout で出力されているんですか?
Zuishin

2018/11/19 11:45

行違いました。 Serial.println(x) ということなので、やはり sprintf を使ってください。 使用法はわかりましたか?
退会済みユーザー

退会済みユーザー

2018/11/19 11:45

違います <input type=\"button\" value=\"サーボオン\" style=\"font-size:32px;\" onclick=\"location.href='/uho-ON';\">&nbsp;&nbsp;&nbsp;\ <input type=\"button\" value=\"サーボオフ\" style=\"font-size:32px;\" onclick=\"location.href='/uho-OFF';\">\ この文です
退会済みユーザー

退会済みユーザー

2018/11/19 11:46

全く分かりません、教えてほしいです
Zuishin

2018/11/19 11:46

その文を Serial.println(x) で出力していることはわかりました。 sprintf の使い方はわかりましたか?
Zuishin

2018/11/19 11:47

リンク先を読みましたか? サンプルコードもありますが。
退会済みユーザー

退会済みユーザー

2018/11/19 11:48

Serial.println(x)はシリアルモニターに出力しております 今回のウェブページには全く関係ありません
退会済みユーザー

退会済みユーザー

2018/11/19 11:48

すみません
Zuishin

2018/11/19 11:50

全く関係ないなら出さないでください。余計わからなくなります。 その HTML はどうやって出力しているんでしょうか? ちょっと現在のコードをもう少し詳しく追記してください。 コメント欄ではなく、質問を編集し、コードブロックを使ってください
退会済みユーザー

退会済みユーザー

2018/11/19 11:51

ですので <input type=\"button\" value=\"サーボオン\" style=\"font-size:32px;\" onclick=\"location.href='/uho-ON';\">&nbsp;&nbsp;&nbsp;\ <input type=\"button\" value=\"サーボオフ\" style=\"font-size:32px;\" onclick=\"location.href='/uho-OFF';\">\ この文がウェブページへの出力もとになっております ですがこの文は、ボタンの出力です 変数の中にある数字を出力させるためのやり方がわからないのです
退会済みユーザー

退会済みユーザー

2018/11/19 11:51

了解です。
Zuishin

2018/11/19 11:52

だから、その文が HTML です。 それをどこにどうやって出力しているのかを聞いているんですが。
退会済みユーザー

退会済みユーザー

2018/11/19 11:53

全体の文を表示しました、見てほしいです
Zuishin

2018/11/19 11:59

double value; ↓ double value = 3; <p>printf("%d",value);</p>\ ↓ <p>%d</p>\ printf("%s\n", output); ↓ Serial.println(output); このようにしてください。 そうすれば %d の部分が 3 になるはずです。
退会済みユーザー

退会済みユーザー

2018/11/19 12:00

やってみます
Zuishin

2018/11/19 12:07

間違えました。 int のはずだったのが double になっているのを見逃していました。 double value = 3; → int value = 3; こうするか、 %d ではなく %f を使ってください。
退会済みユーザー

退会済みユーザー

2018/11/19 12:10 編集

'f' was not declared in this scope
退会済みユーザー

退会済みユーザー

2018/11/19 12:10

フォーマット出力指定子の認識に問題が出てしまいます
退会済みユーザー

退会済みユーザー

2018/11/19 12:11

<p>printf("%d",value);</p>\ この文ですが
Zuishin

2018/11/19 12:32 編集

ダブルクォーテーションがあるので文字列が終わってます。 <p>printf("%d",value);</p>\ ↓ <p>printf(\"%d\",value);</p>\ これでできると思います。 でもここは printf 要りません。 次のようにしてください。 <p>printf("%d",value);</p>\ ↓ <p>%f</p>\
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問