• 締切済み

標準出力について

双方向リストを使って、htmlのtable要素をtexのtabular環境に置き換えるプログラムを作っています。その中で回数を数える関数を作ったのですが、標準出力をされるような記述は一つもないのに、リストの中身がコンソール画面に出力されます。 下が回数を数える関数です。プログラム全体は長かったので載せませんでした。 int counter(Deque *deq){ ElementType s; int hantei = 2, c = 0; /* counting <td> and <th> between <tr> and </tr> */ while(1){ s = getFront(deq); /* <tr> appeared */ if(strncmp(s, "<tr", 3) == 0) hantei = 1; if(hantei == 1){ if(strncmp(s, "<td", 3) == 0) c++; else if (strncmp(s, "<th", 3) == 0) c++; /* </tr> appeared */ else if (strcmp(s, "</tr>") == 0) hantei = 0; } putRear(deq, s); if(hantei == 0) break; } /* Reset Deque */ while(strcmp(s, "<$>") != 0){ s = getRear(deq); if(strcmp(s, "<$>") == 0) putRear(deq, s); else putFront(deq, s); } return c; } なぜでしょうか?教えていただければありがたいです。 環境:vine-linux3.2 Cコンパイラ:gcc

みんなの回答

noname#21104
noname#21104
回答No.1

「putなんとか」という関数が出力していませんか?

関連するQ&A

  • PHP+MySQLの間違い探し

    PHP+MySQLのプログラムなのですが Parse error: syntax error, unexpected ')' in C:****.php on line 47 が出ました。47行目を含むif文を見ても()の数は合ってて何所が間違ってるのかわかりません>< よろしくお願いします。 <?php function delta($c,$a){ if(((strcmp($c,'c0') == 0) && ($a == 0)) || ((strcmp($c,'c50') == 0) && ($a == 100)) || ((strcmp($c,'c100') == 0) && ($a == 50)) || ((strcmp($c,'c100') == 0) && ($a == 100))) return 'c0'; else if(((strcmp($c,'c0') == 0) && ($a == 50)) || ((strcmp($c,'c50') == 0) && ($a == 0))) return 'c50'; else // else if(((strcmp($c,'c0') == 0) && ($a == 100)) || ((strcmp($c,'c50') == 0) && ($a == 50)) || ((strcmp($c,'c100') == 0) && ($a == 0)) return 'c100'; } function lambda($c,$a){ if(((strcmp($c,'c0') == 0) && ($a == 0)) || ((strcmp($c,'c0') == 0) && ($a == 50)) || ((strcmp($c,'c0') == 0) && ($a == 100)) || ((strcmp($c,'c50') == 0) && ($a == 0)) || ((strcmp($c,'c50') == 0) && ($a == 50)) || ((strcmp($c,'c100') == 0) && ($a == 0))) return 'null'; else if(((strcmp($c,'c50') == 0) && ($a == 100)) || ((strcmp($c,'c100') == 0) && ($a == 50))) return 'juice'; else // else if((strcmp($c,'c0') == 100) && ($a == 100)) return 'juice_50'; } $input=$_GET['input']; $mylink=mysql_connect("localhost", "student", "student"); mysql_select_db("mydb", $mylink); $myresult=mysql_query("select * from at3",$mylink); while($myrow=mysql_fetch_array($myresult)){ $i=$myrow[0]; $state=$myrow[3]; } $del = delta($state, $input); $lam = lambda($state, $input); $i++; mysql_query("insert into at3 values($i,$input,'$lam','$del')",$mylink); //mysql_query("insert into at3 values($input,'$lam','$del')",$mylink); print "<table border=4>"; print "<caption class='capbig'>Vending machine</caption>"; print "<tr><th>id</th><th class='left'>input</th><th class='center'>output</th><th class='right'>state</th></tr>"; $myresult=mysql_query("select * from at3",$mylink); //$myresult=mysql_query("select * from grade order by id asc",$mylink); while($myrow=mysql_fetch_array($myresult)){ print "<tr><td align=right>".$myrow[0]."</td><td align=right class='left'>".$myrow[1]."</td><td align=right class='center'>".$myrow[2]."</td><td align=right class='right'>".$myrow[3]."</td></tr>"; } print "</table>"; $myresult=mysql_query("select sum(input) from at3",$mylink); while($myrow=mysql_fetch_array($myresult)){ $sales=$myrow[0]; } $myresult=mysql_query("select count(input) from at3 where input='50'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $coin50=$myrow[0]; } $myresult=mysql_query("select count(input) from at3 where input='100'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $coin100=$myrow[0]; } $myresult=mysql_query("select count(output) from at3 where output='juice_50'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $output50=$myrow[0]; } $myresult=mysql_query("select count(output) from at3 where output='juice'",$mylink); while($myrow=mysql_fetch_array($myresult)){ $juices=$myrow[0]; } $coin50=$coin50-$output50; $sales=$sales-$output50*50; $juices=$output50+$juices; print "Total sales: ".$sales."<br>"; print "Number of sold juices: ".$juices."<br>"; print "Number of 50 coin: ".$coin50."<br>"; print "Number of 100 coin: ".$coin100."<br>"; //$myresult=mysql_query("select max(score), name from grade",$mylink); //while($myrow=mysql_fetch_array($myresult)){ // print "<tr><th class='left'>Max.</th><td align=right class='center'>".$myrow[0]."</td><td class='right'>".$myrow[1]."</td></tr>"; //} mysql_free_result($myresult); mysql_close($mylink); ?>

    • 締切済み
    • PHP
  • 連想配列から<th>を含むテーブルを作成する関数

    連想配列からテーブル(<th>テーブルヘッダ項目を含む)を作成する関数を作ろうと思っています。 配列と関数をどのように書けばHTMLのソースのようになるでしょうか? 値によって、<td>と<th>を振り分けるようになど良い方法を教えてください。 (1.できれば配列で<td> </td>は省略したいと思います。) (2.<th> </th>の指定場所は下のhtmlのように縦とか横とかにに変えられた方が良いです。) //----- 関数 ----- function table($v) { } //----- 配列 ----- $s = array(); $s[0] = array( 'A-1' , 'B-1' , 'C-1' , 'D-1' , 'E-1' ); $s[1] = array( 'A-2' , 'B-2' , 'C-2' , 'D-2' , 'E-2' ); $s[2] = array( 'A-3' , 'B-3' , 'C-3' , 'D-3' , 'E-3' ); $s[3] = array( 'A-4' , 'B-4' , 'C-4' , 'D-4' , 'E-4' ); $s[4] = array( 'A-5' , 'B-5' , 'C-5' , 'D-5' , 'E-5' ); table($s); //----- 生成されるhtml ----- <table> <tr><th>A-1</th><th>B-1</th><th>C-1</th><th>D-1</th><th>E-1</th></tr> <tr><td>A-2</td><td>B-2</td><td>C-2</td><td>D-2</td><td>E-2</td></tr> <tr><td>A-3</td><td>B-3</td><td>C-3</td><td>D-3</td><td>E-3</td></tr> <tr><td>A-4</td><td>B-4</td><td>C-4</td><td>D-4</td><td>E-4</td></tr> <tr><td>A-5</td><td>B-5</td><td>C-5</td><td>D-5</td><td>E-5</td></tr> </table> <table> <tr><th>A-1</th><td>B-1</td><td>C-1</td><td>D-1</td><td>E-1</td></tr> <tr><th>A-2</th><td>B-2</td><td>C-2</td><td>D-2</td><td>E-2</td></tr> <tr><th>A-3</th><td>B-3</td><td>C-3</td><td>D-3</td><td>E-3</td></tr> <tr><th>A-4</th><td>B-4</td><td>C-4</td><td>D-4</td><td>E-4</td></tr> <tr><th>A-5</th><td>B-5</td><td>C-5</td><td>D-5</td><td>E-5</td></tr> </table> //----- 考え中??の配列 ----- $s = array(); $s[0] = array( '<th>A-1</th>' , '<th>B-1</th>' , '<th>C-1</th>' , '<th>D-1</th>' , '<th>E-1</th>' ); $s[1] = array( 'A-2' , 'B-2' , 'C-2' , 'D-2' , 'E-2' ); $s[2] = array( 'A-3' , 'B-3' , 'C-3' , 'D-3' , 'E-3' ); $s[3] = array( 'A-4' , 'B-4' , 'C-4' , 'D-4' , 'E-4' ); $s[4] = array( 'A-5' , 'B-5' , 'C-5' , 'D-5' , 'E-5' ); table($s); $s = array(); $s[0] = array( 'th' => 'A-1' , 'B-1' , 'C-1' , 'D-1' , 'E-1' ); $s[1] = array( 'th' => 'A-2' , 'B-2' , 'C-2' , 'D-2' , 'E-2' ); $s[2] = array( 'th' => 'A-3' , 'B-3' , 'C-3' , 'D-3' , 'E-3' ); $s[3] = array( 'th' => 'A-4' , 'B-4' , 'C-4' , 'D-4' , 'E-4' ); $s[4] = array( 'th' => 'A-5' , 'B-5' , 'C-5' , 'D-5' , 'E-5' ); table($s); //----- 参考中のソース ----- //-- http://okwave.jp/qa/q8107250.html function table($v) { echo '<table>'; foreach ($v as $t1) { echo '<tr>'; foreach ($t1 as $t2) { echo '<td>' . $t2 . '</td>'; } echo '</tr>'; } echo '</table>'; }

    • ベストアンサー
    • PHP
  • mysql php ループ列の行の値を比べたい

    php、mysqlを見よう見まねでやっている 初心者です。 以下のような表をphpで作りました。 これでできた表の d列の行の値(文字)を全て比べて 値がその他の行と一行でも違っていたら (他の行と揃って同じでなかったら) errorを出したいと思っています。 どのような式を書いたらd列の全ての行の 値(文字)を調べ、errorを出すことが できるのでしょうか? <tr> <th>a</th> <th>b</th> <th>c</th> <th>d</th> </tr> <? while ( $row = mysql_fetch_array( $result )){ ?> <tr> <td><?= $row['a'] ?></td> <td><?= $row['b'] ?></td> <td><?= $row['c'] ?></td> <td><?= $row['d'] ?></td> </tr> <? ; } ?> 結果 a   b  c    d aaa bbb ccc ddd aaa bbb ccc ddd aaa bbb ccc dde→(errorを出したい) errorを出せれば下記のようなif文にしたいと思っています。 <? if($d==error){XXX;} else{ooo;} ?> 上記式も見ようまねでよくわかっていなく、 質問が理解して頂けるかどうかですが、 どうかご教授の程よろしくお願い致します。

    • ベストアンサー
    • PHP
  • HTMLの質問なのかJAVAサーブレットの質問なのか微妙なのですがテー

    HTMLの質問なのかJAVAサーブレットの質問なのか微妙なのですがテーブルを一行に二つ表示したいのですが表示はできるんですが表示位置を中央にすることができなくて困ってます どうすれば中央にすることができますか? while(rs2.next()){ String name = rs2.getString("st.staff_name"); String kana = rs2.getString("st.staff_kana"); String birthday = rs2.getString("st.birthday"); String sex = rs2.getString("sm.sex"); String blood = rs2.getString("bm.blood_type"); String hight = rs2.getString("st.hight"); String weight = rs2.getString("st.weight"); String reration = rs2.getString("st.reration"); String mobile = rs2.getString("st.mobile_tel"); String tel = rs2.getString("st.tel"); out.println("<br></br><TABLE border=0 align=\"center\"><table border=1 align=\"left\"><tr><th width=150>氏名</th>"); out.println("<td width=200>"+name+"</td></tr><tr>"); out.println("<th>ヨミガナ</th>"); out.println("<td>"+kana+"</td></tr><tr>"); out.println("<th>生年月日</th>"); out.println("<td>"+birthday.replace("-", "/")+"</td></tr><tr>"); out.println("<th>性別</th>"); out.println("<td>"+sex+"</td></tr><tr>"); out.println("<tr><th>身長</th>"); out.println("<td>"+hight+"</td></tr>"); out.println("<tr><th>体重</th>"); out.println("<td>"+weight+"</td></tr>"); out.println("<tr><th>血液型</th>"); out.println("<td>"+blood+"</td></tr>"); out.println("<tr><th>携帯電話番号</th>"); String mtel=""; if(mobile!=null&&mobile.length()>0){ for (int i = 0; i < mobile.length(); i++) { char ch = mobile.charAt(i); if(i==3){ mtel+="-"; } if(i==7){ mtel+="-"; } mtel+=ch; if(mobile.length()==0){ mtel="-"; } } }else{ mtel="不所持"; } out.println("<td>"+mtel+"</td></tr>"); out.println("<tr><th>自宅電話番号</th>"); String ttel=""; for (int i = 0; i < tel.length(); i++) { char ch = tel.charAt(i); if(i==4){ ttel+="-"; } if(i==6){ ttel+="-"; } ttel+=ch; } out.println("<td>"+ttel+"</td></tr>"); out.println("<tr><th>続柄</th>"); out.println("<td>"+reration+"</td>"); out.println("</tr></table>");

  • jqueryで表に連番No.を追加したい

    こんにちは。 詳しい方教えてください。 先程タイトル通りtableに自動連番を追加したく、下記のページを参考にしました。 http://www.webopixel.net/javascript/328.html しかし私の知識が乏しくうまくいきません。 何を追加すればうまく連番になりますでしょうか。 ==================================================================== <script type="text/javascript"> $(function() { $('.sample tr').each(function(i) { if(i != 0) { $(this).prepend('<td>'+ i +'</td>'); } else { $(this).prepend('<th>No.</th>'); } }); }); </script> ==================================================================== <table class="sample"> <tr> <th rowspan="2">hoge</th> <th rowspan="2">hoge</th> <th colspan="4">hoge</th> </tr> <tr> <th>a</th> <th>b</th> <th>c</th> <th>d</th> </tr> <tr> ※ここに1からの連番を入れたいのです。 <td>hoge</td> <td>hoge</td> <td>hoge</td> <td>hoge</td> <td>hoge</td> <td>hoge</td> </tr> <tr> ※連番2 <td>hoge</td> <td>hoge</td> <td>hoge</td> <td>hoge</td> <td>hoge</td> <td>hoge</td> </tr> ・ ・ ・ ==================================================================== 説明が下手でわかりにくくすみません・・・・。 是非詳しい方ご教示ください。 よろしくお願いいたします。

  • javascriptのテーブル作成についてif文で

    javascriptのテーブル作成についてif文で作成しましたが思うように表示されませんでした。 var inner=""; var wrong=0; inner="<table border='2'><caption>成績発表</caption><tr><th>問題</th><th>成績</th></tr>"; for (var mondai_index=0;mondai_index<mondai_max;mondai_index++) { inner+="<tr>"; inner+="<td>"+"問題"+(mondai_index+1)+"</td>"; var user_answer=this.user_answer[mondai_index]; if (user_answer !== undefined) { if (user_answer==this.mondai_data[mondai_index].c) { inner+="<td>正解</td>"; }else{ inner+="<td>不正解</td>"; wrong++; } }else{ inner+="<td>解説文hogehoge</td>"; } inner+="</tr>"; } inner+="</table>"; よろしくお願いします。

  • エラーの原因がわかりません。

    #include <stdio.h> int bonus(int year,char rank); main() { int a; char s[2]; while(1) { printf("勤続年数:"); scanf("%d",&a); printf("ランク:"); scanf("%s",s); if(bonus(a,s[0])==-1){ exit(1); } if(bonus(a,s[0])==0){ printf("入力エラー\n"); } printf("ボーナス支給額=%d\n",bonus(a,s[0])); } } int bonus(int year,char rank) { int bonus; if(strcmp(rank,'a')==0) if(year<=5) bonus=80000*2.3+80000*3+10000; else if(year<=10) bonus=100000*2.3+100000*3+12000; else if(year<=15) bonus=120000*2.3+120000*3+15000; else if(year>=16) bonus=150000*2.3+150000*3+18000; else return -1; else if(strcmp(rank,'e')==0) return -1; else return -1; return bonus; } 勤続年数とランクを入力したらボーナス支給額を表示させるというプログラムです。 ランクがA,B,C,Dとありましたが、800字以上になるので省略しました。 とりあえずコンパイルできたものの、実行してランクを入力したらエラーが出て終了してしまいます。 そのエラーの原因がわかりません。 多分メモリーら辺がおかしいみたいなんですけど・・・。 よろしくお願いします。

  • PHP 余分に出来たタグを消したい

    PHP初心者です。 ただ今カレンダーを作成しております。 コードは以下です。 <?php $d=isset($_GET['d'])? $_GET['d']:date("Y-n-d"); list($year,$month,$day)=explode("-",$d); $prev=date("Y-n-d",mktime(0,0,0,$month-1,1,$year)); $next=date("Y-n-d",mktime(0,0,0,$month+1,1,$year)); $timestamp = mktime(0,0,0,$month,1,$year); $fd=date("w",$timestamp); $ld=date("t",$timestamp); ?> <table> <tr> <th><a href="?d=<?php echo$prev; ?>">←</a></th> <th colspan="5"><?php echo ("<h1>".$year."年".$month."月</h1>"); ?></th>   <th><a href="?d=<?php echo$next; ?>">→</a></th> </tr> <tr> <th class="sun">日</th> <th>月</th> <th>火</th> <th>水</th> <th>木</th> <th>金</th> <th class="sat">土</th> </tr> <tr> <?php $offset = $fd; // while($fd--){ //$y ++; // 空セル文曜日を増やす $s .= "<td></td>\n"; } for($i=1; $i<=$ld; $i++){ $tmp = $offset + $i; //$tmpを$offset(1日までの空セル) と $i(31日)を足したものにする $s.="<td>$i</td>\n"; //$sに日数とセルを追加 if($tmp % 7 ==0){ //$tmp(空セル+その月の日数)を7で割りあまりが0すなわち土曜日まできたら $s.= "</tr>\n<tr>\n"; //</tr>で改行をいれる } } $y=0; for($i=1; $i<=$tmp; $i++){ //$tmp(空セル+その月の日数)になるまで if($y % 7 == 0){ //7倍数になったら0にリセットする $y = 0; } $y++; //リセットされた残りの曜日 } $r=7-$y; $y=0; while($r--){ $s.='<td></td>'; } for($i=1; $i<=$tmp; $i++){ if($tmp % 7 == 0){ $s.="</table>\n"; break; }else{ $s.="</tr></table>\n"; break; } } echo $s; ?> 一見出来ているようですが、最終日が土曜日になると余分な<tr>が入ってしまいます。 原因として、 if($tmp % 7 ==0){ $s.= "</tr>\n<tr>\n";} と入れてあり、土曜日に7がくる(7で割り切れる数字で終わる)であるとは理解しているのですが、どうすれば、「最終セルに最後の日が来たときに<tr>をいれない」といった命令の仕方がわかりません。 素人ですので、分かりやすく解説していただけると嬉しいです。 よろしくお願い致します。

  • テーブルを壊さない方法を

    知れたいのですが教えてください <table> <tr><th>a</th><th>b</th><th>c</th><th>d</th></tr> <tr><td>A</td><td>B</td><td>C</td><td>D</td></tr> </table> a,b,c,d,A,B,C,Dの部分が少し長いだけでセル内で折り返されてしまいます 折り返されない方法を教えてください

    • ベストアンサー
    • HTML
  • うまく出力できません

    下記のプログラムは、英語の文章をEOFが現れるまで繰り返し標準入力から読み込み、文字数(空白、コンマ・ピリオドなどの記号を含む)、「th」または「Th」の出現回数を出力し、テキスト中の「th」または「Th」をすべて「++」で書き換えたものを出力するプログラムです。(動作確認の際にはリダイレクションを用いてファイルから読み込むようにする) #include <stdlib.h> #include <stdio.h> #include <string.h>      void chomp(char *buf) {   int len = strlen(buf);   if (len > 0 && buf[len - 1] == '\n')   buf[len - 1] = '\0'; } int main(void) {   char buf[256], *p;   int len, count, count2;   count = count2 = 0;   printf("英文を入力して下さい.\n");   while(fgets(buf, 256, stdin)) {    chomp(buf);    len = strlen(buf);    count += len;    p = buf;    while(*p) {     if (strncmp(p, "th", 2) == 0 ||     strncmp(p, "Th", 2) == 0)     {      p[0] = p[1] = '+';      p++;      count2++;     }     p++;    }    printf("%s\n", buf);   }   printf("文字数:%d\n", count);  printf("thの出現回数:%d\n", count2);  return 0; } 下記は実行例です。 英文を入力してください。 We have seen o++er ++ings matter. But, ++at is ++e ++ing ++at matters. 文字数;69 thの出現回数:6 といったようになるのですが、これを下記のような実行例にしたいのですがどうすれば良いのかわかりません。どなたか教えていただけないでしょうか? 英文を入力してください。 We have seen other things matter. But, that is the thing that matters. ^D We have seen o++er ++ings matter. But, ++at is ++e ++ing ++at matters. 文字数;69 thの出現回数:6 (*注:「^D」はEOFのキーボードからの入力を意味し、「Ctrl」キーを押しながら「D」キーを押すことで入力される。)

専門家に質問してみよう