68user's page 掲示板

Prev< No. 1905〜1921> Next  [最新発言に戻る] [過去ログ一覧]
No. 1905 # 68user 2001/04/22 (日) 01:39:33
>>1898 ふくし
samba を使っていませんか? よく知りませんが samba はファイルを
読み込み禁止でロックしっぱなし (?) にするようで、そのとき
ファイルを読もうとすると「Text file busy」となります。もし
そうなら http://www.samba.gr.jp で検索すると解決策が見つかると
思います。

もし NFS しか使っていないなら、解決策はわかりません。

>>1903 しの
print したデータを受け取る先のプロセスがいないと、print した
側には SIGPIPE が飛んできます。シグナルハンドラを設定して、
適切なエラー処理を行いましょう。

>>1904 くみ
> open 〜 close を2度記述してもダメなのでしょうか。
それでもよいですし、2箇所に送ったことが相手先に知られても
いいなら、
    print MAIL "To: foo@hoge, bar@fuga\n";
でもいいです。

No. 1906 # 68user 2001/04/22 (日) 04:05:42
「ネットワークプログラミングの基礎知識」
    http://X68000.startshop.co.jp/~68user/net/
を CVS に追加しました。
    http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/

$Id:$ を挿入しまくったので、もしソースと解説の行番号がずれて
いるかもしれません。見つけられた方はご指摘いただけると幸いです。

No. 1907 # くみ 2001/04/22 (日) 18:57:46
2カ所への送信はうまくいきました、有り難う御座いました。
ところが
またまたしつもんです。sendmailで指定する件名が送信先によって文字化けしてしまいます。日本語文字コードによるものでしょうが、対策は具体的にどのようにしたらよいのでしょうか。
$sb='あいうえお';
print MAIL "Subject: $sb\n";

No. 1908 # 68user 2001/04/22 (日) 19:28:28
>>1907 くみ
MIME encode する必要があります。
    http://X68000.startshop.co.jp/~68user/webcgi/mail-2.html#2
をどうぞ。

No. 1909 # hooma [E-mail] 2001/04/22 (日) 21:16:18
はじめまして

CGIを学んで1ヶ月の者です。
実は、仕事で少し面倒な依頼を受けて困っております。
内容はCSV形式のデータをPerlで読み取ってそれを
HTMLのテーブルに流し込むスクリプトなのですが、
慣れていないので思考停止をして進みません。

具体的なCSVデータの例ですが、

10,果物,りんご,ringo.html,ぶどう,budou.html,ばなな,banana.html,10,野菜,かぼちゃ,kabotya.html,なす,nasu.html,きゅうり,kyuri.html,魚,まぐろ,maguro.html,さけ,sake.html,10,肉,牛,usi.html,麺,ラーメン,ra-men.html,そば,soba.html,うどん,udon.html

まず、先頭に10があり、これは分類の区切りを示すヘッダーです。
次に果物でこれは、分類名です。
次にりんご、これは分類詳細名です。
つぎにringo.htmlでこれは分類詳細名のリンク先アドレスです。

このようなデータの並びですが、各分類と詳細項目は変動しますので
このテーブルのあるWEBページを毎回読み直す必要があります。

どうのようにしたらよいのでしょうか。
お助けください。

No. 1910 # 68user 2001/04/23 (月) 08:52:15
>>1909 hooma
どういう HTML を出力したいかが書いてないので、誰にも
正解は答えられないと思いますよ。CSV から読み込むだけなら、
「,」で split して、「10」が出てきたら新しいを配列を用意し、
次の「10」が出てくるまでその配列に push。そしたら1つの配列には
    「ヘッダ,分類名,分類詳細名1,リンク先1,分類詳細名2,リンク先2...」
という値が入るでしょうから、後は適当に処理すればよいでしょう。

No. 1911 # HELP [E-mail] 2001/04/25 (水) 13:40:30
fgetsとsscanfの使いかたがまったくわかりません。
誰か教えて下さい。
下のような問題をといています。
誰でもいいのでできれば解いてもらえませんか??

問題
1.ユーザーに1つの数の入力を求め、入力された数字を8進数表示、16進数表示するプログラムを作りなさい。

条件:main関数1つで作成する。
            gets(),scanf()は利用しないこと。
            扱う数字のさいだいは、int型で良い。
            printf()は用いてもよい。

No. 1912 # 68user 2001/04/25 (水) 15:42:38
>>1911 HELP
宿題なのでしょうから、自分でやりましょう。

「ここまで自分でやりましたが、〜がわかりません」なら
ともかく、「全くわかりません」では問題外です。

# 2ch に行けば、お姉さんやギコ猫が答えてくれますけどね。

No. 1913 # HELP [E-mail] 2001/04/25 (水) 23:27:14
確かに宿題みたいなものなんですが、ほんとに全然さっぱりなんです。
fgetsとsscanfがどういうものなのかだけでも教えてもらえませんか?
参考書など読んだのですが、どのように使えばいいのかわからないんです。
問題のプログラムは一応できたんですが、あっているのかもわからないし、
自分で作ったプログラムなのに理解できないんです^^;
誰かお願いしますm(_ _)m

No. 1914 # 68user 2001/04/26 (木) 18:51:33
>>1913 HELP
では、自分の書いたプログラムを見せて、「こことここがわからん」
「ここは、こういう意味だろうか?」と質問してみてはどうでしょうか。

課題のプログラムについて、知るべきポイントや勉強すべきポイントは
たくさんあります。だから世の中にはたくさん C の参考書が出回って
いる。それら全てを回答者に解説させようとせず、自分がどこまで
理解しているかを明らかにした上で、ポイントをしぼって質問する
のが「うまい質問の仕方」というものです。

No. 1915 # HELP 2001/04/27 (金) 01:07:37
次の問題のプログラムを作ってみましたが、コンパイルできません。
どこが間違っているのか教えて下さい。

入力された数字を2進数表示するプログラムを作成しなさい。
条件:main関数、2進数の文字列を返す関数の2つの関数で作成する。
            扱う数の最大は、int型でよい。

#include <stdio.h>

int sinnkeisann(int k);

main ()
{
    char buff[32+1];
    int k ,kotae;

    printf("整数値を入力して下さい>>>");
    fgets(buff,sizeof(buff),stdin);
    sscanf(buff,"%d",&k);
    
    kotae = sinnkeisann( k );
        
        printf("2進数表記>>>%d",kotae);

}

int sinnkeisann(int k)
{
    int a,i,answer;
    char retu[32+1];

    a=k;
        retu[32] = '\0';
    
    for(i = 0; i < 32; i++){
        if(i != 0 && a == 0){
            break;
        }

        if(a %2 == 0){
            retu[(32-1) - i] = '0';
        }
        else{
            retu[(32-1) - i] = '1';
        }
        a = a / 2 ;
    }
    answer = retu[0]+(32-1)-i+1 ;

    return answer ;
    
}
    

No. 1916 # 68user 2001/04/27 (金) 03:38:19
>>1915 HELP
FreeBSD 4.2-RELEASE ではコンパイルできましたよ。コンパイル
できない場合は、どういうエラーメッセージが出たかを書きましょう。

ところで、条件では「文字列を返す関数」となっているので、
    char *sinnkeisann(int k)
とすべきですね。

ただし、インデントだけはきっちりつけましょう。そのソースを
見る他人のためでもあり、3日後にソースを見直すかもしれない
自分のためでもあります。

No. 1917 # すな 2001/04/27 (金) 05:25:31
元質問
>>1861 すな
>>1870 で hsjさんに教えてもらった件ですがやはりそのようですね。
http://homepage1.nifty.com/yito/namazu/gbook/20010423.0840.html
といった記事を見つけました。よって、
>>1864 でのレンタルホスト管理者からのメールで
>クライアントがURL欄に「http://www.intel.com/http://www.intel.com/
> と誤って記入すると、そのようなログが記録されます。
はやはり間違いですね。

参考までに…(参考にもならないかな?)
# しかし最近不正な(と思われる)アクセス増えたなぁ…

No. 1918 # 紅の猫 [E-mail] 2001/04/27 (金) 19:24:05
>>1915HELP
文法的には間違ってないし、アルゴリズムも基本的には正しいです。(だけどね(^_^)ニヤリ
あとはintの符号有り、符号無しの違いに注意したほうがいいです。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 1919 # HELP 2001/04/27 (金) 22:04:17
プログラムを以下の様に直してみました。しかしコンパイルができません。

#include <stdio.h>

char *sinnkeisann(int k);

main ()
{
    char buff[32+1];
    int k ,kotae;
    
    printf("整数値を入力して下さい>>>");
    fgets(buff,sizeof(buff),stdin);
    sscanf(buff,"%d",&k);
    
    kotae = *sinnkeisann( k );
    
    printf("2進数表記>>>%d",kotae);
    
}

char *sinnkeisann(int k)
{
    int a,i,answer;
    char retu[32+1];
    
    a=k;
    retu[32] = '\0';
    
    for(i = 0; i < 32; i++){
        if(i != 0 && a == 0){
            break;
        }
        
        if(a %2 == 0){
            retu[(32-1) - i] = '0';
        }
        else{
            retu[(32-1) - i] = '1';
        }
        a = a / 2 ;
    }
    answer = &retu[0]+1 ;
    
    return answer ;
    
}

エラーメッセージ
2sinn.c: In function `sinnkeisann':
2sinn.c:46: warning: assignment makes integer from pointer without a cast
2sinn.c:48: warning: return makes pointer from integer without a cast

No. 1920 # 紅の猫 [E-mail] 2001/04/28 (土) 10:00:44
>>1919HELP

answerがint型なのにchar型を渡してるって事ですね。

答えの返し方は、関数を
void function(int n,char* s)
というように、返してほしい配列のポインタを引数にすればいいですよ。

No. 1921 # 68user 2001/04/28 (土) 17:35:14
>>1919 HELP
コンパイルは成功していますよ。Warning がどれだけ起ころうが、
Error が出ない限り実行ファイルが生成されているはずです。

ところで、戻り値の返し方について
>>1916 68user
> char *sinnkeisann(int k)
とすべき、と言いましたが、
>>1920 紅の猫
> void function(int n,char* s)
の方がよいですね。

Prev< No. 1905〜1921> Next  [最新発言に戻る] [過去ログ一覧]