5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

プログラミング質問すれ Part1

1 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:29:34
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

過去スレ(プログラム技術板)
Part6 http://pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 http://pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 http://pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 http://pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 http://pc2.2ch.net/tech/kako/992/992057422.html

Part3ミラー http://makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2ミラー http://makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その14 (UNIX板)
http://pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
http://pc8.2ch.net/test/read.cgi/win/1090131123/

関連板
Linux板 http://pc8.2ch.net/linux/
プログラム技術板 http://pc8.2ch.net/tech/

2 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:30:08
【POSiX】
The Open Group Base Specifications Issue 6
IEEE Std 1003.1, 2004 Edition
http://www.opengroup.org/onlinepubs/009695399/toc.htm


【必読書】
Advanced Programming in the UNIX(R) Environment
http://www.amazon.com/exec/obidos/tg/detail/-/0201563177/

Unix Network Programming
Vol. 1: The Sockets Networking API, Third Edition
http://www.amazon.com/exec/obidos/tg/detail/-/0131411551/

UNIX Network Programming
Volume 2: Interprocess Communications (2nd Edition)
http://www.amazon.com/exec/obidos/tg/detail/-/0130810819/


3 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:31:06
man on www
http://www.linux.or.jp/JM/#Search

GNU Make 日本語リファレンス
http://www.ecoop.net/coop/translated/GNUMake3.77/make_toc.jp.html

Unix Programming Frequently Asked Questions 日本語訳
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_toc.html


4 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:37:41
プログラム板→UNIX板移動の経緯につきましては以下をご参照ください。

UNIXプログラミング質問すれ Part7
http://pc8.2ch.net/test/read.cgi/tech/1127373405/

プログラム板自治スレッド その2
http://pc8.2ch.net/test/read.cgi/tech/1051039126/

5 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:42:41
>>1
乙です。
移動には賛成です。

6 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:55:45
なんだ?ム板でUNIXを叩いて暴れてる奴が勝手に立てただけのようだが?

7 :名無しさん@お腹いっぱい。:2005/09/22(木) 20:59:37
そうですが何か?

8 :名無しさん@お腹いっぱい。:2005/09/22(木) 21:04:38
それなら一人でここで遊んでてよ

9 :名無しさん@お腹いっぱい。:2005/09/22(木) 21:11:25
移動したんですね。乙。

10 :名無しさん@お腹いっぱい。:2005/09/22(木) 21:13:58
まぁ底のほうにどうでもいいスレたくさんあるし、
ちゃんと機能するなら別にいいんでない?

nutshellのライオン本あたりが範疇かね。

11 :名無しさん@お腹いっぱい。:2005/09/22(木) 21:48:25
こんなスレがこの板に立つとは。
自治スレ覗いてみたけどなんだありゃ。

12 :名無しさん@お腹いっぱい。:2005/09/22(木) 22:16:04
exit(111);

13 :名無しさん:2005/09/22(木) 23:18:18
塾ウザイス(;゚д゚)

14 :名無しさん:2005/09/22(木) 23:19:08
電車男最終回おわったねー



15 :名無しさん@お腹いっぱい。:2005/09/23(金) 03:24:23
タイトルに「質問スレ」と付けるのは糞スレ化への第一歩だな

16 :名無しさん@お腹いっぱい。:2005/09/23(金) 03:33:03
なんでこっちにもってきたの?

17 :名無しさん@お腹いっぱい。:2005/09/23(金) 03:48:32
>>1
何のためにプログラム板があるのか考えような

18 :名無しさん@お腹いっぱい。:2005/09/23(金) 08:02:38
むしろこっちでいいよ


19 :名無しさん@お腹いっぱい。:2005/09/23(金) 13:42:37
From: [20] デフォルトの名無しさん <sage>
Date: 2005/09/22(木) 17:24:31

WindowsでのプログラミングはWindows板で。となるのか?

From: [21] デフォルトの名無しさん <sage>
Date: 2005/09/22(木) 17:26:19

Windowsはデファクトスタンダードですから。
UNIXはダメ!

From: [22] デフォルトの名無しさん <sage>
Date: 2005/09/22(木) 17:28:41

なんだ、要するにUNIXを目の仇にしている奴ってことか。

20 :名無しさん@お腹いっぱい。:2005/09/23(金) 13:48:17
けっきょくマトモなネタ出ないのな。

21 :名無しさん@お腹いっぱい。:2005/09/24(土) 02:30:22
C言語で、テキストファイルから変数の値を

variable1 = "hoge";
variable2 = 3;

などと読み込むようにしたいのですが、何か例えば glibc のような標準的なライブラリで
こういうのを読み込んでくれる便利なものはないでしょうか。

それともみんな fopen して fgetc して切り取っていくルーチンを書いてるんでしょうか

22 :名無しさん@お腹いっぱい。:2005/09/24(土) 09:18:47
MXが・・・氏んだ・・・。
助けてくれ・・・。

23 :名無しさん@お腹いっぱい。:2005/09/24(土) 09:37:34
なんかnyが繋がらないんですけど?
どうすればいいですか?

24 :名無しさん@お腹いっぱい。:2005/09/24(土) 10:06:38
>>21
yacc

25 :蹴球男:2005/09/24(土) 10:37:40
どうも、新人です。仲良くしてください


26 :21:2005/09/24(土) 13:12:36
>>24
critical hit しました。ありがとうございました!


27 :名無しさん@お腹いっぱい。:2005/09/24(土) 23:39:58
ほんとかよw

28 :age:2005/09/26(月) 21:04:48
日本語のファイル名をGTKで表示しようとしています。
でも環境によってファイル名がEUCだったりUTF8だったりです。
環境のファイル名のcharset調べるのはどうやるのでしょう?


29 :名無しさん@お腹いっぱい。:2005/09/26(月) 22:14:53
環境変数


30 :age:2005/09/26(月) 22:31:14
>>29
なんとなくロケール関係という気はしてるんですが、一般的にどう実装するのか知りたいでやんす

31 :名無しさん@お腹いっぱい。:2005/09/27(火) 04:24:22
Xlibのことなのですがここでしつもんさせてもらいます
Xlibでウインドウを作りそこに文字を表示しているのですが
マウスでドラッグしたりしても選択されません(すいませんどういえばいいのか分かりません)
どうすれば選択できるようになるのでしょうか?

32 :名無しさん@お腹いっぱい。:2005/09/27(火) 07:25:21
>>31
こっちのスレの方が向いてるんじゃ?
http://pc8.2ch.net/test/read.cgi/tech/1060005170/l50


33 :名無しさん@お腹いっぱい。:2005/09/27(火) 14:42:05
>>31
Xlibだけでやるのはとてもめんどうくさいから、
適当なツールキットをつかったほうがいいです。

34 :31:2005/10/01(土) 00:54:27
>>32
ありがとうございます
そちらで聞かせて頂きます

>>33
toolkitってC++ですよね?
Cしかできないんですよ・・・
GtkとかQt, Motifもインストールしてなくて・・・

35 :31:2005/10/01(土) 01:06:57
ごめんなさい
toolkitじゃなくてXtです・・・

36 :名無しさん@お腹いっぱい。:2005/10/16(日) 17:53:51
質問です。

コンパイルしてできたオブジェクトファイルのサイズを小さくしたいんです。
どうやら.mdebugというセクションが大きくなっている原因のようなんですが、
これには何が入っているのですか?
基本が無い為、的外れな質問をしてしまっているかもしれませんが宜しくお願いします。

37 :名無しさん@お腹いっぱい。:2005/10/16(日) 18:21:05
そんな下らない事をしてどうするのです

38 :36:2005/10/16(日) 18:26:56
>>37

私宛ですよね?
すみません。それが下らない事だということすらわからないレベルでして…。
仕事で言われたんですが全然わからなかったので聞いてしまいました。

39 :名無しさん@お腹いっぱい。:2005/10/16(日) 23:06:38
>>36
ヒント: strip

40 :名無しさん@お腹いっぱい。:2005/10/16(日) 23:23:25
>>39

ありがとうございます。ググったらそれらしきコマンドが出てきました。
シンボルというのが何かわからないので勉強してみます。

ちなみにmdebugというセクションを消してしまうと何か問題はあるでしょうか?

41 :名無しさん@お腹いっぱい。:2005/10/16(日) 23:53:10
>>40
多分デバッグができなくなる。

42 :名無しさん@お腹いっぱい。:2005/10/17(月) 00:14:15
>>41

ありがとうございます。参考になります。

43 :名無しさん@お腹いっぱい。:2005/10/20(木) 23:13:19
>>34
ツールキットってのはGtkとかQtとかMotifみたいなものの総称。
言語は勿論ツールキットによる。

Gtk -> C (C++ラッパー有り)
Motif -> 多分C
Qt -> C++
wxWindows -> C++

好きなのを選ぶがいい。

44 :名無しさん@お腹いっぱい。:2005/11/02(水) 15:29:17
すみません、質問です。
三次元座標をプロットしていくようなプログラムは
C++ビルダーでは難しいでしょうか?
もし何か情報がありましたら教えていただけると助かります。
よろしくお願いします。

45 :名無しさん@お腹いっぱい。:2005/11/02(水) 15:39:09
>>44
何がしたいのか分からないがまず必要なclassを探すべし。多分,ある。
もし見つからなければゼロから自分で作ることになるから当然難しい。
UNIX版で聞くよりプログラム版いきなはれ。

46 :名無しさん@お腹いっぱい。:2005/11/02(水) 15:46:27
>>45
はい。
では、プログラム板にいってみます。
親切に教えてくださってありがとうございました。

47 :名無しさん@お腹いっぱい。:2005/11/06(日) 19:15:45
UNIXにフォントをインストールするにはどうしたらいいでしょうか?
ImageMagickという画像処理ソフトで、
フォントを使ってテキストを入力したいのですが、
うまくいかないのです。

48 :名無しさん@お腹いっぱい。:2005/12/30(金) 23:16:41
質問です.stat(2) で得られる.st_size の型は off_t で,これは(size_t と
違って) signed なような気がするのですが,これは何故こうなっているのでしょ
うか?

49 :名無しさん@お腹いっぱい。:2005/12/31(土) 00:45:52
offsetだから。名前からわかるだろうに。

50 :名無しさん@お腹いっぱい。:2005/12/31(土) 03:30:46
>>49
そういうことではなくて。。(素人さんには聞いてないです)

51 :ヽ(´ー`)ノ ◆.ogCuANUcE :2005/12/31(土) 03:44:02
>>50
lseek() と合わせてじゃねーの。

    lseek(fd, n, SEEK_END); /* n < 0 */

こういう状況はよくあると思うけど。

> 素人さんには聞いてないです
質問する側がこういうのを言うのは良くない。

52 :名無しさん@お腹いっぱい。:2005/12/31(土) 05:02:50
off_t が signed なのはそういうことだろうけど、
st_size が off_t なのは、なんかこお歴史的な理由のような気がする。

53 :名無しさん@お腹いっぱい。:2005/12/31(土) 05:09:39
やっぱり、off_t と比較するときにウザいからかな?
いや、素人なので無視して(w


54 :スージン:2005/12/31(土) 06:29:42
ファイルサイズのないデバイスとかあるから

55 :名無しさん@お腹いっぱい。:2005/12/31(土) 13:54:29
ビット数が十分あると思われるならsignedにしとく方がややこしくなくていいだろ。
実際、unsignedのはずでもどこかでsignedになってるかも知れないから
あやしいって話はあるわけだし。


56 :名無しさん@お腹いっぱい。:2006/01/06(金) 13:40:30
popenのrとwの機能を両方同時に使いたいのだけど、
どうすれば良いのでしょうか?

ttp://www.ncad.co.jp/~komata/c-kouza3.htm
のpopen2にヒントがあるようなのですが、
このpopen2の使い方が分かりません。
どなたか簡単な例を示してください。お願いします。

57 :名無しさん@お腹いっぱい。:2006/01/06(金) 17:45:41
"r+"
man読め。


58 :56:2006/01/06(金) 18:33:25
>>57
fopenと混同していますね。
man popenしてください。


59 :名無しさん@お腹いっぱい。:2006/01/06(金) 22:19:15
>>56
簡単もなにも、pipe() とほとんど一緒だが。

/*
* pid: プロセスID
* fd_r: 読み取り用ファイルディスクリプタ
* fd_w: 書き込み用ファイルディスクリプタ
*/
int pid = popen2("<command>", &fd_r, &fd_w);

個人的な意見を述べるならこの関数のインターフェースは良くない。
動作の似た pipe() に似せるならディスクリプタは配列にするべきだし、
名前の似た fopen() 系に似せるなら FILE* を返すべきだし、
return -1 してるんだから、perror() せずに呼出し側でエラー処理するべきだし、
fork(), dup2() とかを使ってるのになんで unistd.h を include してないんだとか
まぁ言い出すとキリがない。

60 :名無しさん@お腹いっぱい。:2006/01/06(金) 23:34:58
個人的な意見ならチラシの裏が良い。

61 :名無しさん@お腹いっぱい。:2006/01/07(土) 02:03:01
うちのman popenにはr+があったりするわけだが

62 :名無しさん@お腹いっぱい。:2006/01/07(土) 10:41:10
FreeBSDとNetBSDだけじゃないの

63 :名無しさん@お腹いっぱい。:2006/01/07(土) 13:41:18
Userland が FreeBSD な Mac OS X もだよ。

64 :名無しさん@お腹いっぱい。:2006/01/07(土) 13:51:22
linuxには無いのかな

cat /proc/version
Linux version 2.4.31-0vl1.8 (daisuke@windy.dicey.org)
(gcc バージョン 3.3.2 20031218 (Vine Linux 3.3.2-0vl8)) #1 2005年 9月 5日 月曜日 03:33:25 JST

man popen
The type argument is a pointer to a null-terminated string
which must be either `r' for reading or `w' for writing.



65 :名無しさん@お腹いっぱい。:2006/01/07(土) 15:09:19
板違い

66 :名無しさん@お腹いっぱい。:2006/01/12(木) 21:12:48
ー-ニ _  _ヾV, --、丶、 し-、
ニ-‐'' // ヾソ 、 !ヽ  `ヽ ヽ
_/,.イ / /ミ;j〃゙〉 }U } ハ ヽ、}
..ノ /ハ  〔   ∠ノ乂 {ヽ ヾ丶ヽ    ヽ
 ノノ .>、_\ { j∠=, }、 l \ヽヽ ',  _ノ
ー-=ニ二ニ=一`'´__,.イ<::ヽリ j `、 ) \
{¨丶、___,. イ |{.  |::::ヽ( { 〈 (    〉 今センスオブプログラミングの42ページで
'|  |       小, |:::::::|:::l\i ', l   く  フローチャート書くなと書かれてますけど!!!!!
_|  |    `ヾ:フ |::::::::|:::|  } } |   ) どうしてなんですか!!!!!!
、|  |    ∠ニニ} |:::::::::|/ / / /  /-‐-、
トl、 l   {⌒ヽr{ |:::::::::|,///        \/⌒\/⌒丶/´ ̄`
::\丶、   ヾ二ソ |:::::::/∠-''´
/\\.丶、 `''''''′!:::::::レ〈
   〉:: ̄::`'ァ--‐''゙:::::::/::::ヽ
\;/:::::::::::::/::/:::::::::::://:::::〉
::`ヽ:::ー-〇'´::::::::::::::::/-ニ::::(
           /    \



67 :名無しさん@お腹いっぱい。:2006/01/12(木) 21:23:45
著者が嫌いなんだろ

68 :名無しさん@お腹いっぱい。:2006/01/12(木) 21:28:08
ー-ニ _  _ヾV, --、丶、 し-、
ニ-‐'' // ヾソ 、 !ヽ  `ヽ ヽ
_/,.イ / /ミ;j〃゙〉 }U } ハ ヽ、}
..ノ /ハ  〔   ∠ノ乂 {ヽ ヾ丶ヽ    ヽ
 ノノ .>、_\ { j∠=, }、 l \ヽヽ ',  _ノ
ー-=ニ二ニ=一`'´__,.イ<::ヽリ j `、 ) \
{¨丶、___,. イ |{.  |::::ヽ( { 〈 (    〉 >>67
'|  |       小, |:::::::|:::l\i ', l   く  ありがとう心の友よ!!!!!!!!!
_|  |    `ヾ:フ |::::::::|:::|  } } |   ) 
、|  |    ∠ニニ} |:::::::::|/ / / /  /-‐-、
トl、 l   {⌒ヽr{ |:::::::::|,///        \/⌒\/⌒丶/´ ̄`
::\丶、   ヾ二ソ |:::::::/∠-''´
/\\.丶、 `''''''′!:::::::レ〈
   〉:: ̄::`'ァ--‐''゙:::::::/::::ヽ
\;/:::::::::::::/::/:::::::::::://:::::〉
::`ヽ:::ー-〇'´::::::::::::::::/-ニ::::(
           /    \




69 :名無しさん@お腹いっぱい。:2006/01/14(土) 15:02:39
解決したのか・・?

70 :名無しさん@お腹いっぱい。:2006/01/17(火) 05:39:36
whileループの中で下記</tmp/fileAのように
リダイレクションすると子プロセスが出来るので
最後にRTN=0が表示されるのは分かるのですが、

#!/bin/sh
RTN=0
while read LINE
do
RTN=1
done < /tmp/fileA
echo RTN=$RTN

whileループに入る前にexport RTNを記述してRTNを
環境変数にしてもやっぱり最後はRTN=0が表示される
のってなぜなんです?環境変数なら子プロセスで
設定した値が親にも反映されると思っているんですが
違います?

71 :名無しさん@お腹いっぱい。:2006/01/17(火) 07:33:42
>>70
> 違います?

違う。


72 :名無しさん@お腹いっぱい。:2006/01/17(火) 10:16:36
>>70
シェルスクリプト総合 その4
http://pc8.2ch.net/test/read.cgi/unix/1131026501/

73 :名無しさん@お腹いっぱい。:2006/01/17(火) 13:25:06
コマンドのソースで読みやすくて簡単なもの無いかな?


74 :名無しさん@お腹いっぱい。:2006/01/17(火) 13:46:43
>>73
読んだことないけどcoreutilsとか

75 :名無しさん@お腹いっぱい。:2006/01/17(火) 13:55:49
>>74
('∀`)'`,、'`,、'`,、

76 :taka:2006/01/17(火) 14:55:32
killコマンドを使わないでApacheを止めたり再起動する方法は分かりますか?
教えてくださいお願いしますm(__)m

77 :名無しさん@お腹いっぱい。:2006/01/17(火) 14:59:06
>>73
http://www.gnu.org/software/hello/

>>76
くだらない質問はここに書き込め!45
http://pc8.2ch.net/test/read.cgi/unix/1134178554/

78 :名無しさん@お腹いっぱい。:2006/01/17(火) 15:09:54
fork()にて子プロセスを生成して、exec系関数にて実行した場合、
元に戻る方法は無いのでしょうか。
以下のような事がしたいのです。

pid = fork();
if(pid == 0){
execl("/bin/ls", "-l", "");
hoge(); ← 戻ってくると実行出来る
}

見当違いな質問かもしれませんがよろしくお願いします。

79 :名無しさん@お腹いっぱい。:2006/01/17(火) 15:13:12
>>78
fork() して wait() とかじゃだめなん?

80 :名無しさん@お腹いっぱい。:2006/01/17(火) 15:26:24
見当違い以前に何をしたいのか伝える能力が欠けているような。
fork&execせずsystem("/bin/ls -l"); hoge(); じゃだめなん?



81 :名無しさん@お腹いっぱい。:2006/01/17(火) 15:36:36
>>79, 80
早速のレスありがとうございます。
確かに説明が足りませんでした、すいません。

子プロセスから任意のコマンドを実行している間の
カーネル空間上のデバッグカウンタの値の挙動を見たいのです。
そこで、

counter_initialize(); // カウンタの初期化
execl("/bin/ls", "-l", "");
counter_finalize(); // カウンタ動作停止、値の取得

という様な事を行いたいのです。
何か方法があればご教授よろしくお願いします。

82 :名無しさん@お腹いっぱい。:2006/01/17(火) 20:35:47
>>80
>system("/bin/ls -l")

ゲラゲラww

83 :名無しさん@お腹いっぱい。:2006/02/01(水) 09:37:06
1
12
123
1234
12345
このプログラミング作成したい。
for文を使って頼むorz

84 :名無しさん@お腹いっぱい。:2006/02/01(水) 10:08:16
for i in 1 12 123 1234 12345; do echo $i; done

85 :名無しさん@お腹いっぱい。:2006/02/04(土) 00:06:43
for(i=0;i<5;i++){
for(j=0;j<=i;j++)
printf("%d",j+1);
printf("\n");
}

86 :名無しさん@お腹いっぱい。:2006/02/05(日) 13:08:00
for (i = 1; i <= 5; ++i) printf("%.*s\n", i, "12345");


87 :名無しさん@お腹いっぱい。:2006/02/06(月) 01:19:18
c言語を用いて、メッシュ特徴量とペリフェラル特徴量についてプログラムを作りたいのですが、何をどうすればいいのか分かりません(涙)
どなたか教えてください(泣)参考にするべきサイトなども、よろしくお願いします

88 :名無しさん@お腹いっぱい。:2006/02/06(月) 01:37:21
>>87
C/C++の宿題を片付ケます 60代目
http://pc8.2ch.net/test/read.cgi/tech/1139053955/

89 :名無しさん@お腹いっぱい。:2006/04/23(日) 21:24:31
どなたか下の問題を教えていただけないでしょうか?
http://urajyou100.at.infoseek.co.jp/004.pdf
お願いします。

90 :名無しさん@お腹いっぱい。:2006/04/23(日) 22:39:43
>>89
ほらよ。Acrobat Readerぐらい入れとけよ

> 課題1
> 品名(name)と単価(price)で構成される構造体(GOODS)の配列を作り、
> キーボードから品名と単価を3つ入力するとこの配列に格納し、
> 入力した順と逆の順序で出力するプログラムを作成せよ。ただし、品名は15文字以下とする。
> 課題2
> キーボードから入力した整数を線形リストに格納し、その内容を
> 入力した順に表示するプログラムを作成せよ。なお、整数の個数は最大5個とし、
> EOFコード(Ctrl-D)が入力されたら入力終了とする。

91 :名無しさん@お腹いっぱい。:2006/04/23(日) 23:07:08

















( ゚д゚)ポカーン

92 :名無しさん@お腹いっぱい。:2006/04/23(日) 23:24:08
ええ?漏れは「うまいなw」と思ったけど

93 :名無しさん@お腹いっぱい。:2006/04/24(月) 18:34:20
確かに "問題" を教えてるねw


94 :名無しさん@お腹いっぱい。:2006/04/24(月) 22:31:05
プログらミングって何ですか?

95 :名無しさん@お腹いっぱい。:2006/05/14(日) 20:14:02
libiconv の iconv の inbuf は const ついてるのに、 glibc の iconv の inbuf には const ついてないのはなんで?
glibc の iconv は inbuf を書き換えるわけ??

96 :名無しさん@お腹いっぱい。:2006/05/14(日) 21:34:02
Cの言語仕様では「constが付いているならば書き変えらねない」
逆は真ならず。constつけてないのに書き変えなくても全く構わない。

97 :名無しさん@お腹いっぱい。:2006/05/14(日) 21:47:15
UNIX98の仕様ではconst char **inbufで
SUSv3ではchar **inbuf、みたいな話が引っかかるな。

98 :名無しさん@お腹いっぱい。:2006/05/14(日) 23:01:33
glibc だと const な文字列を iconv に渡すときに、const 無しにキャストしないといけないのがキモイんだけど。
strcpy とかするのはバカらしいし。

99 :名無しさん@お腹いっぱい。:2006/12/06(水) 21:03:58
Makeについて質問させて下さい。
Makefileの中でフォートランのコンパイルしてるんですが、
突如*.cのコンパイルを始めるんですよ
cのファイルなんて無いから当然エラーで止まるんですが、
なんでこんなことになっちゃうんですかね?

100 :名無しさん@お腹いっぱい。:2006/12/07(木) 08:48:10
同じ事が起こる最小のMakefileを晒してみてはどうか

101 :名無しさん@お腹いっぱい。:2007/01/12(金) 15:28:21
tarのヘッダに記載されている "size" ってどう見ればいいか何方か教えて下さい。

% tar cvf foo.tar hoge

とやって 21466 byte のhogeファイル1個をアーカイヴしたtarファイルをダンプすると、
ヘッダの "size" には "00000051732 " という文字列が記載されています。

% tar tvf foo.tar

で確認するとちゃんと

-rw-r--r-- 0 root wheel 21466 1 26 2006 hoge

と出てくるので、どこからファイルサイズを取得してるのかわかりません><
ちなみにソースを追ってみましたが、libarchive* に入り込んだ辺りで限界で
した。(FreeBSDの話)


102 :名無しさん@お腹いっぱい。:2007/01/12(金) 15:33:25
8進


103 :名無しさん@お腹いっぱい。:2007/01/12(金) 15:54:22
>>102
Thanks.
書いた後、Win版tar

104 :名無しさん@お腹いっぱい。:2007/01/12(金) 15:56:33
>>102
Thanks.
実は書いた後、Win版tarのsrcが見つかったので見てみたら to_oct() とか使わ
れてるのをみて8進数だと気がつきました。スマ
しかし、何故に8進数?tarってそんなに歴史あるフォーマットでしたっけ?

105 :名無しさん@お腹いっぱい。:2007/01/12(金) 16:15:45
>>104
> tarってそんなに歴史あるフォーマットでしたっけ?
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=tar&dir=jpman-5.4.0%2Fman§=0#sect12

106 :名無しさん@お腹いっぱい。:2007/01/12(金) 16:20:25
http://morishoji.homelinux.net/2006/03/tar_perl.html

107 :名無しさん@お腹いっぱい。:2007/02/16(金) 21:07:46
こんばんわ。 プログラミングで質問があります。

大学のレポートで出された問題ですが、どうしても解けません。
ソフトはウインドウズのビジュアルソフトというのを使ってます。

問題
キーボードから1を入力するとあなたの名前、
2を入力するとあなたの年齢、
3を入力すると、その両方を表示することができるプログラムを作成せよ。

というものです。

よろしくお願いします。

108 :名無しさん@お腹いっぱい。:2007/02/17(土) 01:04:39
板違い

109 :107:2007/02/17(土) 01:33:01
いた違いすいません。

どちらの板に行けばいいでしょうか?

110 :名無しさん@お腹いっぱい。:2007/02/17(土) 07:38:30
C/C++の宿題を片付けます 83代目
http://pc10.2ch.net/test/read.cgi/tech/1170830498/
ここかなー。

111 :107:2007/02/17(土) 09:26:02
>>110

ありがとうございます!!

112 :名無しさん@お腹いっぱい。:2007/02/19(月) 18:07:29
自作のなんちゃってサーバーを運用しています。
今は syslog で接続ログ+デバッグメッセージを出しているのですが、結構CPUを
食うみたいだし、負荷が高いときは取りこぼしもある感じです。
接続ログ+デバッグメッセージを取るのに syslog 以外でおすすめはありますか?

113 :名無しさん@お腹いっぱい。:2007/02/19(月) 18:15:37
log4c?

114 :名無しさん@お腹いっぱい。:2007/02/19(月) 20:22:24
syslog-ngとか socklog , msyslog, metalogとか
みんな結構syslogにはいろいろ苦労はしているのか
後は自前でログを書き出すようにアプリを書き換えるとか。

115 :名無しさん@お腹いっぱい。:2007/04/24(火) 08:19:20
UNIXのプログラミングでは統合環境なに使うのが一般的なの?

とりあえず今はEmacsつかってるけど、
VisualC++みたいにクラスのメンバなんかを自動的に補完する機能(InteliSence?)
を付けることってできないでつか?

116 :名無しさん@お腹いっぱい。:2007/04/24(火) 08:54:36
CEDET

117 :名無しさん@お腹いっぱい。:2007/04/24(火) 10:02:47
>>116
おぉ、ありがたやありがたや (´Д`;)

118 :名無しさん@お腹いっぱい。:2007/06/03(日) 21:50:52
exec()って成功すると返り値を返しませんよね。
fork()して、子供がexec()に成功したことを親が知るにはどうすればいいですか?

119 :名無しさん@お腹いっぱい。:2007/06/03(日) 23:45:51
exec() で起動されるプログラムから親に何らかの方法で成功したよ〜って
何か送ってもらえばいいんジャマイカ。

120 :名無しさん@お腹いっぱい。:2007/06/04(月) 00:03:18
/proc/PID/でも監視してれば

121 :名無しさん@お腹いっぱい。:2007/06/05(火) 00:05:19
>>118
確実にやるんだったら、ptrace(2)

122 :sage:2007/06/07(木) 22:31:18
>>121
ありがとうございます。
ptrace(2)、勉強してつかってみます。

123 :名無しさん@お腹いっぱい。:2007/06/15(金) 23:24:28

SuperCon2007 ― 夏の電脳甲子園
http://pc11.2ch.net/test/read.cgi/tech/1181916316/

1 :デフォルトの名無しさん :2007/06/15(金) 23:05:16
がんばれっ!天才高校生諸君

スーパーコンピューティング・コンテストSuperConは、
高校生がスーパーコンピューターを使って、プログラミングのアイデアを競う大会です
今年は阪大に今年導入された最新のスーパーコンピューターを使います
プログラミング大好きな高校生諸君!
来たれ阪大・東工大へ!!
諸君のアイデアをスーパーコンピュータ上で実現してみよう!!!
http://www.gsic.titech.ac.jp/supercon/supercon2007/index.html

124 :名無しさん@お腹いっぱい。:2007/06/17(日) 10:11:22
GNUのリンカー( LD )で質問ですが、
バイナリーデータを指定アドレスに配置する方法を知りたいです。
読み込むとセクション.dataでそのセクションに配置されてしまいます。


125 :名無しさん@お腹いっぱい。:2007/06/17(日) 10:39:59
>>124 まるち
http://pc11.2ch.net/test/read.cgi/unix/1079538957/114

126 :名無しさん@お腹いっぱい。:2007/07/13(金) 11:38:35
学校の課題で「UNIXシステムにおけるリダイレクションとパイプの概念を説明し、
この機能の利点について論じろ。また、それぞれの典型的な使い方を説明しろ」

っていうのが出たんですけど、教えてください

127 :名無しさん@お腹いっぱい。:2007/07/13(金) 14:36:41
その課題は以下の5つの小問に分解されるということを教えてやろう。
(1) リダイレクションとは何か
(2) パイプとは何か
(3) リダイレクション、パイプの利点を論ぜよ
(4) リダイレクションの典型的な使い方を説明せよ
(5) パイプの典型的な使い方を説明せよ

あとは自分でどうぞ。(3)を最後に持ってきた方がやりやすいかも。

128 :名無しさん@お腹いっぱい。:2007/07/15(日) 15:54:49
Xで簡単な日本語のエディタを作るサンプルとか、サンプルコードはないですか?
エディタというより、日本語の処理を勉強したいので、Cで短いものがいいです。



129 :名無しさん@お腹いっぱい。:2007/07/15(日) 16:34:59
>>127
なんで (3) だけ リダイレクション と パイプ が一緒にになってるのか気になる。

130 :名無しさん@お腹いっぱい。:2007/07/17(火) 19:37:00
>>128
日本語以外のエディタならバリバリ作れるぜっ、
だから日本語処理だけ知りたいぜってレベル?
あと日本語以外の文字は眼中になし?

131 :名無しさん@お腹いっぱい。:2007/12/31(月) 17:47:53
getoptは引数からオプションだけを取れますが、オプション以外を取れる関数はありませんか?

132 :名無しさん@お腹いっぱい。:2007/12/31(月) 18:43:08
>>128
「文字コード」でググってみ
文字コードを甘く見すぎてると気づくぜ

>>131
argv を見るのじゃいかんのか?(Cのハナシでしょ?)

133 :名無しさん@お腹いっぱい。:2007/12/31(月) 18:44:46
うはwww
テラ七月wwwww

134 :名無しさん@お腹いっぱい。:2008/01/01(火) 02:11:10
本読んで、いろいろわかった気がしたので、nviとmgのソースを読もうとしたのですが
どうにもなりません。

どうしたらよかですか?


135 :名無しさん@お腹いっぱい。:2008/01/01(火) 11:46:38
もっと簡単なものを読むか、一部分だけに絞って読む。

136 :131:2008/01/01(火) 14:06:50
>>132
もちろんargv*を見て、自分でオプション以外を取得すれば良いのですが、
getoptはオプションを見るように、オプション以外を見れる関数があるのかと思い
質問しました。

137 :名無しさん@お腹いっぱい。:2008/01/01(火) 15:24:01
getopt.cのソースが読みづらいのが悪い

138 :134:2008/01/02(水) 04:17:08
>>135
lsとかcatのことでせうか?
オプション全ては、網羅できないけど大体大丈夫だと思ってます。
もっと、簡単で教育的なものを教えていただけると幸いです。

あと、一部分に絞って読むというのは、これくらいの量の場合意味があるのでせうか?

139 :名無しさん@お腹いっぱい。:2008/01/02(水) 04:48:24
>>138
> lsとかcatのことでせうか?

なんでls? 135はもっと古くてプリミティブなバージョンというつもりで書いた。

> あと、一部分に絞って読むというのは、これくらいの量の場合意味があるのでせうか?

その程度の量すら把握できないから泣き言言ってるんだろ。
まずは何か一つごく簡単な小さいテーマを決めてそれだけ調べろ。

140 :134:2008/01/02(水) 12:25:29
>>139
        ___
       ,∠==、ヽ `i'ー- .
      /    ヽ| 「`'ー、`ー、
       l     ミ| /   `ー、ヽ
      j     R|イ ー-、.  ノ7┐
      `Vハハハ/ヽ.「~ ̄ `''ァf‐┘
.         `、 }ー-`、__..._/::l
          `|:::::::|ヽ/l:;:;:;|
.            |::::::::l:::::::::::::::l
.            l::::::::l:::::::::::::::l
           l:::::::::l::::::::::::::l
           l;::::::::{:::::::::::::l
              `iiiiiiiハiiiiiiiij´
          ∠-、レ'ヽ〃〕

141 :名無しさん@お腹いっぱい。:2008/01/02(水) 15:39:24
>>134
カーネル嫁

142 :名無しさん@お腹いっぱい。:2008/01/03(木) 05:18:28
車輪の再発明と言いたがるやつは多いが
分かった気になったんなら cat cp mv rm... だのの身近なコマンドを
自作コピーしてみ
当然 C で
オプション満載する必要なし
そのコマンドの本質的な機能のみ

まず find あたりが壁
more (less) を書こうとして何か違うと気づく
diff、patch、make あたりに手を出してもヤバいと思ったら退却する
リダイレクトくらいはできるシェルを書けるようになったら
UNIX プログラミング入門編修了

エディタは OS カーネル、言語処理系、RFC なんかに並ぶ修了認定科目だな

143 :句読点打てないバカをサマージャンボする俺 ◆1xdL.Dyf.I :2008/01/03(木) 09:39:26
>>142


144 :名無しさん@お腹いっぱい。:2008/01/03(木) 17:49:47
句読点がないことしか理解できなかったんだね。
居場所まちがってるよ。

145 :名無しさん@お腹いっぱい。:2008/01/03(木) 19:13:35
サマージャンボの意味が解ったのか、すごい。
教えてくれ

146 :名無しさん@お腹いっぱい。:2008/01/04(金) 23:13:13
C言語でプログラムを書いているのですが、デバッグのために
全ての関数の先頭に、
#ifdef DEBUG
printf( "関数名\n");
#endif
を挿入したいと考えています。

簡単にそれを実現する方法はありませんか?

147 :名無しさん@お腹いっぱい。:2008/01/05(土) 00:29:44
ageとけ

148 :名無しさん@お腹いっぱい。:2008/01/05(土) 00:37:03
バックトレースしたいってことか?デバッガ使えば良いんじゃないの?

149 :146:2008/01/05(土) 02:26:39
>>148
デバッガは使ったこともないと言うのがあるのですが、
正しい順序で関数が呼ばれているかだけ分かれば十分な用途なので
関数名を関数の最初でプリントできればと思っています。

ちなみに関数は、
int
main( argc, argv)
int argc;
char** argv;
{
と言う書き方で書いています。

sedやawk, Perlを使ってできるのであれば、今後の参考のために教えて頂きたいです。
どうかよろしくおねがいします

150 :名無しさん@お腹いっぱい。:2008/01/05(土) 03:54:21
>>146
変数宣言の前に printf 入るとエラーになる処理系だと
構文解析的な事までやらないと無理だと思うけど。


151 :名無しさん@お腹いっぱい。:2008/01/05(土) 04:32:47
>>146
ソースファイルを加工するよりスマートな方法がいくつかあるよ。
ttp://d.hatena.ne.jp/yupo5656/20071008/p1
ttp://lab.klab.org/modules/mediawiki/index.php/Software#ftrace


152 :名無しさん@お腹いっぱい。:2008/01/05(土) 05:03:04
>>146
デバッガで追うこと覚えちまう方が格段にハナシがはやい。

それか、もうそのプログラムはログを吐くことに決めちゃって
debug(char *msg){printf("%s\n", msg);} みたいな関数を作って使う。
その場しのぎの #ifdef まみれにするよりはカッコがつく。


153 :146:2008/01/05(土) 18:57:12
皆さんありがとうございます。

>>150
c99モードで行っているので、問題ないと思います。

>>151
そのようなものがあるのですね、後で使ってみようと思います。

>>152
デバッガの使い方を覚えた方がやはりいいですよね…。
今回は、関数が呼ばれている順番を見たかっただけなので、
簡単に関数名の出力順だけを見たいと考えたいと思っていました。
自分で作っているソフトなので、カッコとかは特に大丈夫なのですが…

154 :amiba ◆fxG7LsaDek :2008/01/06(日) 10:50:57
IBMのThinkPadにFreeBSD5.4をインストールし、デスクトップ環境KDEもインストールした。
自分が行いたいのは『C/C++のプログラム開発』。
環境開発にあたり、このあとは何をすれば良いのだろうか?
コンソール画面で行うとも考えらえないし、ktermでやってみたが、
標準入力、出力が全く動作しない。
何の上で開発していけばいいのだろうか?
必要な情報は随時追加していきたい。

155 :名無しさん@お腹いっぱい。:2008/01/06(日) 11:01:50
>>154
マルチ、死ね。

156 :amiba ◆fxG7LsaDek :2008/01/06(日) 11:03:39
>>155
ごめんなさい、どうしても知りたくて。
しかし、しねません。

157 :名無しさん@お腹いっぱい。:2008/01/06(日) 11:03:46
>>154
あっちのスレでさらしてたプログラムをもう一度実行させて
2 と ENTER を押してみそ。
10 と出るだろ


158 :amiba ◆fxG7LsaDek :2008/01/06(日) 11:07:24
>>157
普通に、kterm->emacsで、
int main()
{
int a;
cin>>a;
count<<a*5<<endl;
return 0;
}
のことですよね。

普通そうなりますよね?しかしおかしいんですよ。
入力待ちが行われません。

home/*****/test/g++ test.cpp -o test
home/*****/test/test
home/*****/test/
みたいな感じです。


159 :名無しさん@お腹いっぱい。:2008/01/06(日) 11:14:34
test の前に ./ をつけて、
./test というふうに実行してみ。

なんでうまくいったかは宿題な。

160 :名無しさん@お腹いっぱい。:2008/01/06(日) 11:16:11
>>156
自分だけは特別なのか?
幸せ全開のゆとり脳だな。

161 :amiba ◆fxG7LsaDek :2008/01/06(日) 11:16:40
できました!
ありがとうございます、感謝します。
シェルがどうこうって話ですかね?
調べてみます!

162 :名無しさん@お腹いっぱい。:2008/01/06(日) 11:29:23
感謝のしるし+マルチの謝罪として
秘蔵のエロデータを1ギガバイト以上アップすること

163 :名無しさん@お腹いっぱい。:2008/01/06(日) 12:07:19
>>162
偉そうに

164 :名無しさん@お腹いっぱい。:2008/01/06(日) 15:22:26
>>159でうまくいったのか・・・ ただのアホじゃないか・・・
てっきりもっと難しい問題かと思ってたのに

165 :名無しさん@お腹いっぱい。:2008/01/09(水) 22:36:44
アホじゃあないな、単なる初心者だ。

あの要領を得ない 1 レス目からして
人が手をつけないエッジで詰まってるような問題であるわけもない。

青いねヽ(´ー`)ノ>>164

166 :名無しさん@お腹いっぱい。:2008/01/20(日) 20:42:42
while (1) fork();

167 :名無しさん@お腹いっぱい。:2008/01/31(木) 00:53:08
>>166
プロセステーブル埋め尽くして何が嬉しいの?

168 :名無しさん@お腹いっぱい。:2008/01/31(木) 03:36:59
普通はテーブル埋め尽くすより先にmaxprocのlimitにひっかかって止まる

169 :名無しさん@お腹いっぱい。:2008/02/12(火) 15:41:51
相手にアカウント登録させて、クレジットカードを入力させ、
利用料を月に引き落とすプログラムとかってどやって作ってるんでしょうか??
また配布されていたりしませんかね…?

170 :名無しさん@お腹いっぱい。:2008/02/13(水) 13:00:42
>>169
日本人でおk

171 :名無しさん@お腹いっぱい。:2008/02/13(水) 13:07:31
>>169
もしかして、プログラムで自動的に引き落としたりできると思ってるのか?
そんなことになってたら、銀行口座がばれるだけで全て引き落とされる罠。


172 :名無しさん@お腹いっぱい。:2008/02/13(水) 13:38:01
>>170
日本語ですが?

>>171
口座じゃなくてクレジットなんですが、
銀行と繋いでできないんですか?

173 :名無しさん@お腹いっぱい。:2008/02/13(水) 13:56:43
クレジットカードならクレジット会社に申請して審査してもらわないと

174 :名無しさん@お腹いっぱい。:2008/02/13(水) 16:08:51
phishingでもやるの?

175 :名無しさん@お腹いっぱい。:2008/02/13(水) 18:53:40
>>172
カード番号分かるだけで引き落とせるなら、レジのバイトするよ俺

176 :名無しさん@お腹いっぱい。:2008/02/15(金) 01:31:17
>>173 >>175
頭悪いヤツに聞いてない。

>>171さんみたいに、国語できる人に聞いてる。

177 :名無しさん@お腹いっぱい。:2008/02/16(土) 02:17:46
できるものならクレジットカードを入力してみたい。

178 :名無しさん@お腹いっぱい。:2008/02/16(土) 03:26:35
利用料を月に引き落とすんだから、回収するには月に行かないといけないのかな

179 :名無しさん@お腹いっぱい。:2008/02/17(日) 13:34:08
こーゆー決済代行会社に頼むとかかなー。
ttp://www.cubit.co.jp/sgp_system.html

180 :名無しさん@お腹いっぱい。:2008/02/20(水) 20:41:17
gcc3.4.6でC++プログラムを書いています
inline関数でメモリチェックのために
変数の読み書きをするコードを書きたいのですが、

inline void foo(unsigned long *var)
{
 unsigned long tmp;
 if (var != 0) {
  tmp = *var;
  *var = tmp;
 }
}

の様にして-O2で最適化すると
バイナリからメモリに触れるコードが消えてしまいます。
-O0オプションを付けるとinlineではなくなってしまうものの、
メモリに触れるコードは残るので、
  tmp = *var;
  *var = tmp;
の部分だけ最適化しないようにしたいのですが、
どうしたらよいですか?

181 :名無しさん@お腹いっぱい。:2008/02/20(水) 21:10:15
最適化するなよ

182 :名無しさん@お腹いっぱい。:2008/02/20(水) 21:18:57
>181
利用頻度が高いと思われる部分なので、
他の部分は最適化されたコードである必要があります。

183 :名無しさん@お腹いっぱい。:2008/02/20(水) 21:40:42
そこを最適化しないことで周りがぐちゃぐちゃになるだろ

184 :名無しさん@お腹いっぱい。:2008/02/20(水) 21:41:37
どうでもいいなら、そこだけ別ファイルなりにして別のオプションでコンパイルしろよ

185 :名無しさん@お腹いっぱい。:2008/02/20(水) 21:43:57
volatile unsigned long *var

186 :名無しさん@お腹いっぱい。:2008/02/20(水) 23:45:21
>>182
最適化したくないとこだけソースファイル分けて別のオブジェクトにすれば?

187 :名無しさん@お腹いっぱい。:2008/02/21(木) 00:06:06
>>186
>>184

188 :名無しさん@お腹いっぱい。:2008/02/21(木) 11:08:24
>185
ありがとうございます
うまくいきました

189 :名無しさん@お腹いっぱい。:2008/02/22(金) 04:56:20
シグナル周りの初期化の定石を教えてください。

190 ::2008/02/22(金) 05:40:31
FFmpegについて質問したいのですが、
ものすごく初歩的なことです。
コマンドプロンプトで命令を実行しようとするとunknown formatと出て
どうしようもできません。

どなたかおられますかね??
いくら検索してもどこにも載ってない・・・

191 ::2008/02/22(金) 05:51:36
http://www.xucker.jpn.org/product/ffmpeg_commands.html
ここのサイトのFLV1の下のやつ
"c:\ffmpegフォルダー\ffmpeg.exe" "-y" "-i" "c:\入力.flv" "-ab" "96k" "-r" "29.97" "-ac" "2" "-ar" "44100" "-b" "400k" "-s" "320x240" "c:\出力.flv"
を日本語部分変えてコマンドプロンプトに入力すると、
〜〜〜入力.flv Unknown Formatと出て、そこからどうにもできません。
どうすればいいんでしょう?

192 :名無しさん@お腹いっぱい。:2008/02/22(金) 13:02:01
370 :k [] :2008/02/22(金) 05:57:01
既知のフォーマットのflv の意味が分かりませんww
フォーマットの意味が…

これはFFmpegがきちんとインストールされてるか検査するために一応やってみたのですが…
何をどう変換してるのかすら分からないです。(flvをflvって…)

つまり、どうすればUnknown Formatが出なくなるんでしょうか…?

371 :k [] :2008/02/22(金) 06:10:22
ま、いいわちゃんとしたとこで聞くし。

数学板の住人が言ってたな。プログラミング板はバカが多いって。

低学歴どもは性格も悪いからな…高学歴のオレの前にひざまづくがイイ。
じゃあな。暗い職場で一生プログラム打ってしねばww

372 :k [] :2008/02/22(金) 06:11:29
頭が悪いヤツは単純作業を繰り返して社会にこき使われればいい。
単純作業しかできないのだからな。
オレのように賢い人間はこのようなことする必要ないんだよ。
今度こそじゃあな。


193 :名無しさん@お腹いっぱい。:2008/02/22(金) 20:44:56
>>192
svnからスナップショットとっておいで


194 :名無しさん@お腹いっぱい。:2008/03/18(火) 20:36:13
先日ラクダ本を購入してボチボチ読んでるんだけど、
こんな書き方が出来るのかと目から鱗の連続・・
安価な本読んでやりたい事が出来るようになった程度で
満足していた自分が情けなくなる・・
参考書は多少高くてもちゃんとしたものを買わないと駄目だな・・

195 :名無しさん@お腹いっぱい。:2008/03/19(水) 06:24:15
本買えばいいってもんでもないけどな

196 :名無しさん@お腹いっぱい。:2008/03/19(水) 15:30:34
意味不明なんですけど。なんでこんなの分かるんですか?すごいね。

※くれぐれも、返信に「それはお前がバカだからさ」とは書かないでください。書いたら(´・ω・`)て感じの顔になってしまいます。

197 :名無しさん@お腹いっぱい。:2008/03/19(水) 20:30:27
マニュアル読んで応用が効かないような奴はまともなコード書けないだろ。
本を読んで応用を知っても、結局それしかできないし。

198 :名無しさん@お腹いっぱい。:2008/03/20(木) 10:32:33
>>194
て言うか素直が一番

199 :名無しさん@お腹いっぱい。:2008/03/20(木) 23:31:17
>>196
て言うかこいつが一番素直

200 :名無しさん@お腹いっぱい。:2008/03/21(金) 01:27:43
>>197
そうやって試行錯誤して成長するんだろ。成長しないやつもいるが。はは。

201 :名無しさん@お腹いっぱい。:2008/03/21(金) 13:20:41
>>194
逆にラクダ本を理解できるようになった
と考えればいいじゃない

202 :名無しさん@お腹いっぱい。:2008/03/28(金) 17:05:20
>iconv_open("SJIS", "EUC-JP");

この引数に使える文字セットってどこを見ればわかりますか?

203 :202:2008/03/28(金) 17:16:10
もしくは、現在の文字コードの文字列をOSから取得することはできますか?

204 :名無しさん@お腹いっぱい。:2008/03/28(金) 17:17:41
>>202
OSは何?

>>203
「現在の文字コードの文字列」って?

205 :202:2008/03/28(金) 17:33:14
Mac OS X です。

現在の文字コードって、GUIから入力されたときの文字コードっていうか。。。

206 :名無しさん@お腹いっぱい。:2008/03/28(金) 18:15:54
ひどいマルチだ。
http://pc11.2ch.net/test/read.cgi/tech/1205795434/26
http://pc11.2ch.net/test/read.cgi/linux/1118024349/691

207 :名無しさん@お腹いっぱい。:2008/03/28(金) 19:23:33
$ iconv -l
とか、
iconv_open("char", "wchar_t")
とかの話?

208 :名無しさん@お腹いっぱい。:2008/03/30(日) 16:15:16
env
とかで調べろ

209 :名無しさん@お腹いっぱい。:2008/03/31(月) 11:37:44

 黒 タ イ ツ の 暗 黒 シ ュ シ ュ ト リ ア ン

210 :名無しさん@お腹いっぱい。:2008/04/03(木) 01:28:48
Hello world

211 :名無しさん@お腹いっぱい。:2008/05/28(水) 09:28:01
ムー板に書きましたが、誰も相手にしてくれません:

>struct timeval tv;

の値って、
doubleの変数に入出力できたりしますか?

というか、timeval <---> double 変換したいのですが、
どういうコードでできますか?

212 :名無しさん@お腹いっぱい。:2008/05/28(水) 09:31:05
>>211
期待する動作と、自分でやったことと、自分でやった結果(期待とどう違ったのか)、説明が
抜けてるから相手にされないんだろ。無理もない。

213 :211:2008/05/28(水) 09:36:54
いや、標準の関数とかマクロでできると思ってるので、
その名称を教えて頂きたいだけなんですが。

214 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:06:01
ムー板というと
UFOの真実! とかそういうネタを扱う板だろうか?

215 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:17:13
>>211
struct timeval tv;
double d;

d = (double)(tv.tv_sec + tv.tv_usec/1000000.0);

>>212
わからないなら黙ってろ

216 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:17:28
そういうのが好きな人の集まった板でつ。

関連板: 魔板

217 :211:2008/05/28(水) 10:18:30
>>215
知りたいのはその内容ですた orz

218 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:24:32
>>213 >212

219 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:26:19
>>218
>>215 で解決済。

期待する動作は自明。
「自分でやったことと、自分でやった結果」なんて書かなくてもわかる。

220 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:34:32
>>219
いやね、 tv.tv_sec*1000000.0 + tv.tv_usec なんて答えもあり得るし、
そもそも >215 で正解なら、そんなもん真っ先に自分で書くだろうから
何か変わった変換を期待してるか、そうでもなけりゃコードレベルで
ミスってるんじゃないかと思っちゃったんだよ。

> 「自分でやったことと、自分でやった結果」なんて書かなくてもわかる。
おぉ。エスパー乙。
あ、「こんな質問する人が自分で何かやってるわけない」、ってことかな。

221 :名無しさん@お腹いっぱい。:2008/05/28(水) 10:37:36
エスパーすると、
tv.tv_usecを100万で割る時に、末尾の「.0」を付け忘れて
int扱いで切り捨てられたとかだろ。

222 :名無しさん@お腹いっぱい。:2008/05/28(水) 17:58:12
>>215
相変わらず、素人丸出し駄目回答で粋がっているのか。
自ら恥晒すことないのに… 引っ込んでなよ。

223 :名無しさん@お腹いっぱい。:2008/05/28(水) 18:13:22
>>222
>>217

224 :名無しさん@お腹いっぱい。:2008/05/28(水) 18:52:17
具体的に指摘されないとわからないようだ。本当にヘボなんだな。

d = (double)(tv.tv_sec + tv.tv_usec * 1e-6);
乗算をつかう理由は二つある。先生に聞いてきなさい。www

225 :名無しさん@お腹いっぱい。:2008/06/02(月) 19:05:21
2chに書き込む手順を教えてください

226 :名無しさん@お腹いっぱい。:2008/06/02(月) 19:07:12
1.10年ROMる。
2.書き込みたいスレで書き込んでも良いか質問する
 Yes→書き込む
 No→1へ

227 :名無しさん@お腹いっぱい。:2008/06/03(火) 11:22:39
プログラムからファイル書き込みするとして、
ファイルの権限付与はどういうAPIで行うのでしょうか?

できればファイルを書き込む前に設定したいのですが、
umaskっていうAPIあるのでしょうか?
ググっても見あたりませんが。

228 :名無しさん@お腹いっぱい。:2008/06/03(火) 11:47:51
1ページ目で見つかってますが。

229 :227:2008/06/03(火) 11:49:24
thx>>228

あ、UNIX とか プログラミングとか余計なワードを入れたから混乱しましたが、
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/umask.2.html
で良いわけですか。

もしくは、
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/chmod.2.html
かな。

230 :227:2008/06/03(火) 11:52:03
良く考えると、umaskだと、
プログラム自身がファイルを書き出すときの設定を行うわけではなくて、
ディレクトリの設定変えてしまうわけですよね。
行儀が悪いですよね。

やっぱ、chmodかな。

231 :名無しさん@お腹いっぱい。:2008/06/03(火) 12:00:10
関連質問させて下さい。

rootユーザーがファイルを作成すると、そのディレクトリがリード権限になってしまったりする場合ありますか?

232 :名無しさん@お腹いっぱい。:2008/06/03(火) 12:39:17
>>230
ちげーよ。
umaskは既に存在するファイル(ディレクトリ)には何の影響も及ぼさない。
そのプロセスが「作成する」ファイル(ディレクトリ)のモードのマスクを設定する。
umaskはプロセス固有の情報なので、作成したファイル(ディレクトリ)には記録されない。

>>231
ならない。

キミ、根本的に誤解しているから、基本から調べなおす事をすすめる。

233 :227:2008/06/03(火) 12:42:12
とりあえずthx>>232

234 :名無しさん@お腹いっぱい。:2008/06/04(水) 07:29:17
>>226
質問はどうやって書き込むかをどうやって質問しますか

235 :名無しさん@お腹いっぱい。:2008/06/04(水) 08:12:33
「仮にぼくが質問できるようになったとしよう」と仮定法で進めてはどうか?

236 :名無しさん@お腹いっぱい。:2008/06/04(水) 16:44:37
書き込む方法についての質問を書き込む方法は?

237 :名無しさん@お腹いっぱい。:2008/06/05(木) 13:49:46
書き込む方法が分からないまま書き込んでいますか?

238 :名無しさん@お腹いっぱい。:2008/07/31(木) 19:26:13
プログラミングしりとり
http://game14.2ch.net/test/read.cgi/575/1010948472/l50

239 :名無しさん@お腹いっぱい。:2008/10/05(日) 18:30:14
プログラム中(C言語)にて/dev/ttyA1やttyA0といったデバイスファイルに対し
ボーレート・パリティの設定をioctl関数で行いたいんだけど、
渡す引数等がわかりません。

ご存知の方教えてください。


240 :名無しさん@お腹いっぱい。:2008/10/05(日) 19:04:16
>>239
ioctl()をじかに呼ばずに、tcsetattr()使った方がいいよ。

241 :239:2008/10/05(日) 20:19:05
>>240
ありがとうございます。
tcsetattr()は初めて聞く関数名でした。
tcsetattrはioctlをラッピングしたAPIと考えてよろしいのですか?



242 :名無しさん@お腹いっぱい。:2008/10/05(日) 20:47:21
>>241
ラッパーと考えていいよ。
ioctl()直接の場合、OSによって TCGETAだったりTCGETSだったり、やりかたが変わる。
tcsetattr()を使えば、OS共通で同じやりかた。
struct termiosに値をセットして呼べばいい。

243 :239:2008/10/05(日) 23:10:30
>>242
丁寧にありがとうございます。
早速試してみます。

244 :名無しさん@お腹いっぱい。:2008/11/04(火) 08:16:43
/etc/hostsを参照する場合って何のライブラリをつかうんですか?


245 :名無しさん@お腹いっぱい。:2008/11/04(火) 08:20:14
>>244
gethostent()

246 :名無しさん@お腹いっぱい。:2008/11/08(土) 16:50:36
ダミーのカーネルドライバを作って/dev にデバイスを生成し
mmap経由でエンドアプリとデバイスアクセスアプリとやりとりをするレイヤー的なものを作ろうと思っているのですが
解析しやすいソースとか資料になるサイトがあれば紹介願います。
ちなみにver7.0です。
なんかver6.*からいろいろ変更があるみたいで拾ったソースとか引数が違っていたりしました。


247 :名無しさん@お腹いっぱい。:2008/11/08(土) 17:28:39
Windows7か。もうソースまで流出したのか。

248 :名無しさん@お腹いっぱい。:2008/11/10(月) 00:17:14
>>246
fuseとか。

249 :246:2008/11/10(月) 12:11:30
>>248 あんがとです。
fuseはドライバではなくてエミュレータのようです。
v4l関連を追ってみることにします。

250 :名無しさん@お腹いっぱい。:2008/11/10(月) 18:01:49
エミュ…?

251 :名無しさん@お腹いっぱい。:2008/11/10(月) 18:09:34
こ、、工ミュ...?

252 :名無しさん@お腹いっぱい。:2008/11/12(水) 00:32:03
なんだ、女か。

253 :名無しさん@お腹いっぱい。:2008/11/25(火) 10:42:53
FreeBSDでカーネルドライバ作るとき機種毎の関数を同じ名称にして
別のファイルに分散して設定ファイルを読み込んでデバイスIDとのマッチングを行ったあと
該当ファイルを読み込む形にしようとおもうのですが

設定ファイルの置き場所に関してルール(例えば/etcとか)があるのか
サブプログラムもkoでないといけないのか
ユーザープログラムと同じようにsoにしてdlopenとdlsym使っていいのか
そしてその場合の置き場所に妥当なところを
教えてくださいませ。


254 :名無しさん@お腹いっぱい。:2008/11/28(金) 22:41:10
エクセルのマクロでプログラミングをしています
その内容は「じゃんけん」です
はい=グー いいえ=チョキ キャンセル=パー にしたいのですが
どうやればよいのでしょうか?
教えてください




255 :名無しさん@お腹いっぱい。:2008/11/30(日) 20:42:22
>253
カーネルドライバは基本的にファイルシステムの
マウントより先に初期化されるわけでして、ハイ。

256 :名無しさん@お腹いっぱい。:2008/11/30(日) 20:53:39
>>255
そんなことはわかってるよ。
だから、ファイルシステムのマウントより前に読むために、
例えば/etcとかの特定の置き場所があるのか、
koにする必要があるのか、dlopenとdlsymを使っていいのかを聞いてるんだろ。

257 :名無しさん@お腹いっぱい。:2008/12/03(水) 11:51:37
>>256 そのとおり!!
現実問題としてloader.confを読んでいるときはファイルシステムは成立しているはずだから
loader.confに記述するかkldloadでスタートできるならいいのかなと思っています。

デバイスリストなどユーザーサイドで編集できるようにしておけば
プログラムの再コンパイルなどしないでもデバイスIDを登録すれば使えるようにしたいのです。
そのための対応ライブラリーのロードです。

現実問題として同じICチップを使っているデバイスIDの違う製品がでると
いちいちソースに手を入れてビルドし直さなくてはいけないようなことがあったからです。


258 :名無しさん@お腹いっぱい。:2008/12/04(木) 02:14:01
C言語で質問なんですが、二つの実数が小数点1ケタまで等しいとき
に〜するみたいにしたいんですけど、
if(a == b){

}
ってやったら実数が完全に等しくないといけないじゃないですか・・・
どうやれば上記のようにできますか?

259 :名無しさん@お腹いっぱい。:2008/12/04(木) 02:25:28
丸めろ

260 :258:2008/12/04(木) 09:07:24
丸めるってなんですか?
初心者なのであまりくわしくないです。

261 :名無しさん@お腹いっぱい。:2008/12/04(木) 09:56:38
珍しいスレが上がってると思ったら
なんだ、釣りか……

262 :名無しさん@お腹いっぱい。:2008/12/04(木) 10:19:18
>>259
引っかけ問題に引っかかったね。

「小数点1ケタまで等しい」→「小数点1ケタ目までの数字が同じ」
だから、丸めたら不正解。

263 :名無しさん@お腹いっぱい。:2008/12/04(木) 10:24:13
if (fabs(a - b) < 0.1)

264 :名無しさん@お腹いっぱい。:2008/12/04(木) 10:27:49
>>263
それだと 1.09 と 1.1 でも一致とみなされる

>>262 参照

265 :名無しさん@お腹いっぱい。:2008/12/04(木) 10:31:23
>>262 は抜きして、丸める方式でOKだとしても、

>>263 だと 1.11 と 1.02 が一致と判定されるから駄目だな

266 :名無しさん@お腹いっぱい。:2008/12/04(木) 10:42:06
1.11と1.02は偽
1.00と1.09は真

実際はこんな比較を行いたいわけがない。

267 :名無しさん@お腹いっぱい。:2008/12/04(木) 10:48:37
>>266
数値符号の生成処理なんかだと、
文字通りの数字の一致を判定したいことがあるよ。

1.11と1.02は偽
1.00と1.09は真

そういう比較を行ないたい。

268 :名無しさん@お腹いっぱい。:2008/12/04(木) 11:08:11
文字列化シロ

269 :名無しさん@お腹いっぱい。:2008/12/04(木) 11:13:46
なんで誰も10倍してfloorしろとアドバイスしてやらないんだ

270 :名無しさん@お腹いっぱい。:2008/12/04(木) 11:57:36
オーバーフローするかもしれんじゃん。

271 :名無しさん@お腹いっぱい。:2008/12/04(木) 14:18:50
そんなでかいdoubleなら、小数点以下は0だから、別チェックを前に入れるだけ

272 :名無しさん@お腹いっぱい。:2008/12/04(木) 20:04:28
>>269にツッコミを入れるなら floorでなくてIntだろ。
floorだと-2.0と-2.3が違う値になる。
だから不正解
それと実数は10倍してintだと化けることがあることを忘れるな。
整数部と小数部を分離して
整数部チェックの後
小数部の判定をすればいい

273 :名無しさん@お腹いっぱい。:2008/12/04(木) 20:09:49
そろそろ正しいコード書いて見せろよ

274 :名無しさん@お腹いっぱい。:2008/12/04(木) 22:02:12
珍しいスレが上がってると思ったら
なんだ、釣りか……

275 :名無しさん@お腹いっぱい。:2008/12/04(木) 22:10:07
んじゃ、俺が。

int compare(double a, double b)
{
char s1[512], s2[512], p;

snprintf(s1, sizeof(s1), "%f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}

276 :名無しさん@お腹いっぱい。:2008/12/05(金) 07:10:19
>>275
そんなことしなくても、
sprintf() で "%.1f" のフォーマットで文字列化すれば
最初から小数点以下第1位までで文字列カットできる。

277 :名無しさん@お腹いっぱい。:2008/12/05(金) 07:16:16
>>276
アフォか。"%.1f" だと丸められてしまうだろ。

278 :名無しさん@お腹いっぱい。:2008/12/05(金) 08:58:20
指摘される前になおしておこう。

int compare(double a, double b)
{
char s1[512], s2[512], *p;

snprintf(s1, sizeof(s1), "%f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}

279 :名無しさん@お腹いっぱい。:2008/12/05(金) 09:27:12
>>278
別の指摘するよ。

"%f" は、デフォで小数以下6桁精度に丸められる。("%.6f"と同じ)
なので、1.9999999 が、2.0 に丸められてしまう。

280 :名無しさん@お腹いっぱい。:2008/12/05(金) 10:44:50
ふむ、10倍するのも計算誤差で小数点第1位が変わる可能性があるな。
そもそも、外部表現から浮動小数点に変換した時点で誤差が発生するから、
BCD使えという結論か。

281 :名無しさん@お腹いっぱい。:2008/12/05(金) 11:20:41
丸め方式はFPUに指定コードを与えれば変えることができる。
そもそも精度を取り違えている。6桁の精度に対して10桁の演算精度があるなら
最下位2桁部分の丸めで精度が狂うことはない。
それは最初の質問者が「文字」で質問していたことでも分かる。

今回の場合無理に比較するのではなくて
二つの引き算した結果の符号をとって(絶対値化)
その値から0.1引いた値が正ならfalse
というのが一番無難。


282 :名無しさん@お腹いっぱい。:2008/12/05(金) 11:39:11
>>281
それ、>>263 と同じ。
263は、>>264-265 で否決。

283 :名無しさん@お腹いっぱい。:2008/12/05(金) 12:04:28
IEEE 754 として、10倍して整数部をとったんじゃだめな具体例を誰かプリーズ。


284 :名無しさん@お腹いっぱい。:2008/12/05(金) 13:03:09
>>283 仮数部フルにつかってたらだめだろ。
せめて整数化して小数部だけにしてからからという前提にシロ


285 :名無しさん@お腹いっぱい。:2008/12/05(金) 13:15:16
だから、具体例を。

double f = 0.1;
f = floor(f*10.0);
printf("%d\n",f==1.0);

=> 1

だよ。

286 :名無しさん@お腹いっぱい。:2008/12/05(金) 14:38:49
a = 300000000000000.3125;
b = 300000000000000.3750;
printf("%f %f %d\n", a, b, floor(a * 10) == floor(b * 10));


287 :名無しさん@お腹いっぱい。:2008/12/05(金) 17:36:14
なるほど。わかったよ。

正に限ると、
floor(a) == floor(b) && floor((a-floor(a))*10) == floor((b-floor(b))*10)
でおけ?

288 :258:2008/12/05(金) 23:03:41
ちなみに実数は0より小さいです。それで小数点2桁目を四捨五入したいです。
一応自分で作ったんですが

double x=0.15;
int a;
x+=0.05;
a=x*10;
x=(double)a/10.0;

これで大丈夫ですかね?

289 :258:2008/12/05(金) 23:04:35
↑間違えました。0でなく1より小さいです。

290 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:05:41
>>267
お前らあほだな。


sprintfとstrncmpで解決だろ。

291 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:24:56
覆面算をマクロで解きたいのですが教えてください
B、C、Dは0を除外

    C A B
 +)  B A C
----------------------
  D A B A


292 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:29:42
マクロってm4あたり?

293 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:31:33
>>292
エクセルのマクロです

294 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:42:27
まったく板ちがいです。おひきとりください。

295 :名無しさん@お腹いっぱい。:2008/12/05(金) 23:44:00
失礼しました

296 :名無しさん@お腹いっぱい。:2008/12/06(土) 00:29:52
>>288
0より小さい実数は負なのだが…
中学数学をやり直せ。

297 :名無しさん@お腹いっぱい。:2008/12/06(土) 10:16:03
>>296
0より小くて負よりも大きい数oがあるとしたら?

298 :名無しさん@お腹いっぱい。:2008/12/06(土) 10:40:46
>>290
sprintf()する時に、"%f"の変換で勝手に四捨五入されるから不可。

299 :名無しさん@お腹いっぱい。:2008/12/06(土) 10:48:11
>>297
そんな実数があるのか?

300 :名無しさん@お腹いっぱい。:2008/12/06(土) 11:37:11
1.0以下なら
10倍説でいいけれど >>287はかっこが足りないだろ
それに正が前提と言うならfabsなりabsなりいれればいいじゃないか。

あとsprintf関連のつっこみは四捨五入(rint)じやなくてroundだろ。
もちょっと「道具の仕様」はしっておこうよ

double演算でも特定のライブラリーを使っていると高速化のため「singleモード」に設定していて
丸め誤差も出やすくなったりしていることもある。もっぱらWinに多いけど
逆にlong doubleにしておけば丸め精度はでにくい。

今回の場合しょっぱなの「見た目の数字」なんだからsprintfでの誤差は
最初に認識した文字列にも反映されているはず

1以下限定なら文字列の段階で整数として入力するか
文字列できるほうがいい

しかしネタとして考えるならばbit比較とかマニアックな関数とか
論理的に完璧なものとかそういうものの方がおもしろい。

というかUNIX板なんだからネタとして解を求めるならbc前提にするとか
仮数部のビット比較してみるとか特定ツールにしぼるか
FreeBSDでのextendedというかlong doubleでの精度アップとか
もうちょい下のほうにするとかにシチクリ


301 :名無しさん@お腹いっぱい。:2008/12/06(土) 11:47:11
使えるツール、足りないツールを作る。それがプログラミング
できない人は覚えたい。できる人でも穴はある。
UNIXはツールが多いようでつなぎも情報もすくないんだから
貴重なスレをあんまり算数の遊びみたいなんでスレを消費するない。
やるならせめてbcとかシェルとか局所的なものにしちくれ



302 :名無しさん@お腹いっぱい。:2008/12/06(土) 11:50:30
>>300
> >>287はかっこが足りないだろ

どこが?

> それに正が前提と言うならfabsなりabsなりいれればいいじゃないか。

単純に入れたら、正=負とかいう馬鹿な結果が出るから、めんどうだっただけ。

303 :名無しさん@お腹いっぱい。:2008/12/06(土) 12:27:28
貴重なスレって、長寿スレでも狙ってるのか? w
実数演算の話題はあまりないので結構楽しかったぞ。

304 :名無しさん@お腹いっぱい。:2008/12/06(土) 12:45:32
板違いと思っていたから参戦しなかったが、
その辺のことはアメリカ人が詳しくまとめてるよ。
やつらは実数部でドル、小数部でセントを表すことをよくやるから。
いろいろな言語にBCD演算を入れる提案がつきないのもそのため。
exact calculation floating point number あたりでググってくれ。
IEEE 754を仮定して近似計算で、BCD相当の結果を出すものがたくさんある。
中にはbit演算で正規化されたIEEE 754表現を扱うものまである。

現代のCOBOL、Javaのページにもこんなんがあるしな。(単純なものだけ)
http://java.sun.com/developer/JDCTechTips/2001/tt0807.html

305 :名無しさん@お腹いっぱい。:2008/12/06(土) 12:46:37
今のペースだと、Part1なのに10年以上あるスレってか

306 :名無しさん@お腹いっぱい。:2008/12/06(土) 12:51:59
>>304
それは、内部表現を固定小数というか、
全部セントに統一しなかったアメリカ人が馬鹿なだけのような

307 :名無しさん@お腹いっぱい。:2008/12/06(土) 12:58:41
金利計算とかあるからセントが最小単位じゃダメだろ。

308 :名無しさん@お腹いっぱい。:2008/12/06(土) 13:04:25
>>300
お前は roundのことは四捨五入と言わないのか?

あと、>>287 に括弧が足りないところなんてないし。

もうちょっと「日本語」と「道具の仕様」は知っておこうよ

309 :名無しさん@お腹いっぱい。:2008/12/06(土) 13:17:07
>>307
じゃあやっぱりBCD一択。

310 :名無しさん@お腹いっぱい。:2008/12/06(土) 13:19:59
>>300
おいおい、(s)printfの "%f" 変換は、round() じゃなくて rint() 方式だよ。
(確認済み)

311 :名無しさん@お腹いっぱい。:2008/12/06(土) 13:21:18
ジンバブエ・ドルも計算できる桁数無いといかんな。

312 :名無しさん@お腹いっぱい。:2008/12/06(土) 16:30:25
インストールしたプリンタの一覧ってどうやって
取得できるのですか?

313 :名無しさん@お腹いっぱい。:2008/12/07(日) 00:33:16
>>309
組み込みでBCDがないなら、
オペレーター多重化がないとプログラム書きづらいな。

314 :名無しさん@お腹いっぱい。:2008/12/07(日) 07:34:44
無知晒した >>300 の釈明まだぁ?

315 :名無しさん@お腹いっぱい。:2008/12/07(日) 10:39:11
sprintfで少数第2位まで出しておいて、strncmpで小数点1桁の文字列と比べれば丸めも減ったくれもどうでもいいだろ。

316 :名無しさん@お腹いっぱい。:2008/12/07(日) 11:47:04
>>315
だから、sprintf()で小数第2位まで出す際に、sprintf()自体で丸めが起きるんだよ。
printf("%.2f", 1.099) → 1.10 と表示

あと、×少数 ○小数な、日本語くらい正確に使おうよ。

317 :名無しさん@お腹いっぱい。:2008/12/07(日) 11:51:42
>>315
sprintfで小数第2位まで出す際に、
小数第3位が丸められるから、
その結果、小数第1位に繰り上がってしまうことがある。

よって、>>315 の言ってることは不正解。

318 :名無しさん@お腹いっぱい。:2008/12/07(日) 12:41:31
doubleの有効桁は15~16なので>>278を改造して17桁とれば良い。

int compare(double a, double b)
{
char s1[512], s2[512], *p;

snprintf(s1, sizeof(s1), "%.17f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%.17f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}

319 :名無しさん@お腹いっぱい。:2008/12/07(日) 12:46:13
>>318
…ネタだよな?

320 :名無しさん@お腹いっぱい。:2008/12/07(日) 22:48:58
>>317
じゃあ4位まで出すか。

321 :名無しさん@お腹いっぱい。:2008/12/07(日) 23:05:57
>>320
sprintfで小数第4位まで出す際に、
小数第5位が丸められるから、
その結果、小数第1位に繰り上がってしまうことがある。

よって、>>320 の言ってることは不正解。

322 :名無しさん@お腹いっぱい。:2008/12/07(日) 23:51:11
小数点指定なしでいいな。

323 :名無しさん@お腹いっぱい。:2008/12/08(月) 16:56:18
>>303 UNIX関連のプログラミングの情報源として密度が薄まる
別にスレが長寿になる必要はない。

>>302 のは結果として役立たずなわけだから「〜れば」とかいうのはいいわけでしかない。
できたような気になっているだけだ。

>>308 roundが四捨五入なんてプログラミング言語はない。
知らないなら覚えろ。常識
四捨五入は意図的にコンパイラが切り捨てコード使ってで作るものだ。

カッコなしで複数の条件列挙は
は言語によりなければエラーになるものがある。
イコールでの条件列挙は適切とは言えない。

速いからdoubleなんだしdoubleのデータの問題で
「初めからBCDで」とか論外

324 :名無しさん@お腹いっぱい。:2008/12/08(月) 17:16:43
>>323
roundは普通の意味での四捨五入。(2進だから0捨1入)
rintは四捨五入ではなく、偶数への丸め。常識。知らないなら覚えろ。
おまえ、sprintfの件で、roundとrintを混同して指摘してただろ。>>300 で。


> カッコなしで複数の条件列挙は
> は言語によりなければエラーになるものがある。

「言語により」って、最初から C言語の話してるんだろ。
演算子の優先順位も知らなかったくせに、見苦しい言い訳するなw


結論:
>>300 = >>323 は自意識過剰のものすごい知ったか。

お前の言葉をそのまま返す、
「もうちょっと『道具の仕様』は知っておこうよ」

325 :名無しさん@お腹いっぱい。:2008/12/08(月) 17:46:18
「〜れば」とか「初めからBCDで」とか「」使って引用してるふりしながら、
どれも正確じゃないんだよな。
自分独自の解釈を随所におりまぜてそう。

326 :名無しさん@お腹いっぱい。:2008/12/08(月) 20:12:00
はいはい逆にしてましたよ。間違えてました。RINTとROUND
恥ずかしくも「正しい解説のメモ」とかアップしているていたらく

どうせアタシャ低レベルなアセンブラプログラマーですよ。
でも今回いつCが前提になったんですか?
JavaScriptとかPerlもありだとみてたんですがね、

独自解釈でもなんでもちゃんと動くものを仕様書こみでつくれるからいいんです。

でも今回の件は
long doubleにキャストして
i386 FreeBSDに関して言えば
fpsetprec(FP_PE)
を使って10倍して差をとり整数化すればいいんですよね、
仮数部が内部で64bitになるので丸め誤差でません。

最初から10byteモードっていってましたよね。
理解できなかった?

どうして型キャストとかできないんですか?
floorとかsprintとか無駄過ぎ

机上の論議過ぎて実用性ゼロ

その点を言っているんです。
道具としてのUNIXでなくて
UNIXのためのプログラミングノーハウの話をしないなら
板違いだっていっているんだ。


327 :名無しさん@お腹いっぱい。:2008/12/08(月) 20:26:33
>>326
> でも今回いつCが前提になったんですか?

>>258の1行目


328 :名無しさん@お腹いっぱい。:2008/12/08(月) 20:40:08
今回いつ、「実数」がdouble以下で、かつ、
long double が double より精度高いプラットフォームが前提になったんですか?

329 :名無しさん@お腹いっぱい。:2008/12/08(月) 20:41:01
こういうバカがチームにいると大変だな。お前、向いてない転職しろ。

330 :名無しさん@お腹いっぱい。:2008/12/08(月) 21:17:38
たしか、JavaScriptもPerlも&&より==の方が強いよなぁ。
しかもこいつらってlong double的なの明示的に使えたっけ?

331 :名無しさん@お腹いっぱい。:2008/12/08(月) 21:35:22
使えないな。
しかも、FPU使うコードなんて今時見ないぞ。

332 :名無しさん@お腹いっぱい。:2008/12/08(月) 23:37:10
>>329
普通はこんなしょうもない問題にぶち当たらないようにコーディングするもんだ。

お前の卓越した知能wがチームの効率下げてるんじゃね?

333 :名無しさん@お腹いっぱい。:2008/12/08(月) 23:55:42
自信満々で「仕様書込みで動くものをつくれるからいい」とか豪語しながら
仕様を逆に覚えてヘッポコなバグを作りこむクズはいらない。

334 :名無しさん@お腹いっぱい。:2008/12/09(火) 00:00:34
>>332
つっこみどころはそこだけなんかよ
技術的なことにつっこんでくれよ

335 :名無しさん@お腹いっぱい。:2008/12/09(火) 11:02:08
>>326
> 10倍して差をとり整数化すればいいんですよね、

ここ意味わからんかった。
これじゃ差が0.1以下であるという判定しかできないんじゃないの?
やっぱりfloor的なものがどこかにいるんでは?

336 :名無しさん@お腹いっぱい。:2008/12/09(火) 13:32:00
彼の完璧な仕様に文句をつけてはいけない。

337 :名無しさん@お腹いっぱい。:2009/01/14(水) 17:04:18
この問題なんですが、解答あってるでしょうか?

msgbox "変数aの値は" & a & " , 変数bの値は" & b

この文を先頭から2つ目の&までとその後の部分に分け、正しく2行で記述しなさい。
また、変数a,bの値がそれぞれ10,20である場合に、実行したときに表示される
メッセージボックスの中の記述内容を書きなさい。

解答。

msgbox"変数aの値は" & a &
msgbox"変数bの値は" &b

変数aの値は  10
変数bの値は  20



338 :名無しさん@お腹いっぱい。:2009/01/14(水) 17:31:14
UNIX無関係なので板違い

339 :名無しさん@お腹いっぱい。:2009/01/14(水) 22:36:54
金をdoubeで扱う勘定系プロジェクトに配属になったけど
ソッコーで抜けさせてもらったことがある
「おかしい計算が合わない…」とかいうつぶやきが遠くで聞こえてるうちに逃げてきた

340 :名無しさん@お腹いっぱい。:2009/01/14(水) 22:39:50
あはははははは

341 :名無しさん@お腹いっぱい。:2009/01/14(水) 23:40:05
>>326
> 仮数部が内部で64bitになるので丸め誤差でません。

何も理解してないw

342 :名無しさん@お腹いっぱい。:2009/01/14(水) 23:53:11
仮数部を増やす方向にキャストしてから10倍すれば問題起きないよ。
それができるという前提がなかったからあの話がおかしかっただけで。

それよりおまえは1ヶ月以上前の話につっこんでも意味がないことを理解していない。

343 :名無しさん@お腹いっぱい。:2009/01/17(土) 12:00:35
>>342 プログラミングという机上の空論で遊んでいるやつらに
現実的なプログラミングのノーハウをちらみさせても意味ない事に気づけ

ダメ系の算数野郎さんはとりあえずgccでπでも1万桁求めるにはどうしたらいいかとか
まっとうなプログラミングの道でもしめせばいいよ。
UNIXの場合必要なライブラリーはデスクトップを入れるとついてきたりしている。
あえて名称はかかんけどね、

だいたい元々の話がリアルな精度ではなくて「10進化された文字列」での話なんだから二進演算の精度うんぬんなんて実は関係ない。
どっちかというと「.」がらみの正規表現のプログラミングの方が正解で
それは最初に「文字列で」と書いているレスでおわっているわけだ。


344 :名無しさん@お腹いっぱい。:2009/01/30(金) 14:26:14
コンパイル結果のファイル名ににタイムスタンプをつけたくて
Makefile中に以下のようにして
TIMESTAMP=`ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g'`
時間をとりだしているのですが、結果的にTIMESTAMPには
TIMESTAMP=rwrr 1 user user 601847 20090130 14:19 objname.hex
という値が格納されてしまいます。
実際にシェルから実行したら
20090130
という結果が表示されるのですが、なぜでしょうか?
ちなみに
TIMESTAMP=$(ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
でも結果は同じです。
アドバイスよろしくお願いします。


345 :名無しさん@お腹いっぱい。:2009/01/30(金) 14:28:13
失礼しました。
TIMESTAMP=$(ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
ではなく
TIMESTAMP=$(shell ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
でした。


346 :名無しさん@お腹いっぱい。:2009/01/30(金) 14:42:44
TIMESTAMP=`ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g'`
awkのprintの引数を$$6にしたらいけました。
何故でしょうか。
よく分かりません。

347 :名無しさん@お腹いっぱい。:2009/01/30(金) 15:10:55
Makefile中では$に特別な意味があるから。


348 :名無しさん@お腹いっぱい。:2009/01/31(土) 00:25:38
makeの変数展開

shの変数展開

awkの変数展開

349 :名無しさん@お腹いっぱい。:2009/02/05(木) 21:48:12
ポインタじゃなくて、structの実体渡しで呼び出す関数を、
structの即値の引数で呼び出すことってできませんか?

どういうことかというと、

struct hoge {
int hoge_a;
char *hoge_b;
};

void func(struct hoge);

と宣言されてる時、

struct hoge hh = {123, "boke"};
func(hh);

で呼び出すと、呼び出しのためだけにstruct hoge hhを宣言するのが無駄なので、

func({123, "boke"});
みたいな形で、引数を即値にして一発で呼び出したいんですが。

350 :名無しさん@お腹いっぱい。:2009/02/05(木) 22:22:28
>>349
たぶんC99限定だけど、複合リテラル
func((struct hoge){123, "boke"});


351 :名無しさん@お腹いっぱい。:2009/02/05(木) 22:36:02
>>350
ありがとうございます。(struct hoge)を頭につけるだけで良かったんですね。
ちなみに、実体渡しじゃなくて、普通のポインタ渡しの場合でも、

func(&(struct hoge){123, "boke"});
で行けることを確認しました。

352 :名無しさん@お腹いっぱい。:2009/02/06(金) 08:18:47
えっと自分でなんちゃってダウンローダを作っていて、いくつかの Unix 上で
(いまんとこ Linux と Mac OS X)で同じコードを使いたいと思ってます。
で、整数型の移植性がちょっと気になってます。

4GB以上のファイルを扱うために32bitより大きい整数でファイルの大きさを表現しない
といけないのですが、これってどんな型を使うのが正解ですかね?
必要なのは 1) 4GB以上のサイズを表現可能(http とかにファイルサイズを埋め込む)
2) printfとかで簡単に表示可能 です。

とりあえず off_t かな? と思ったんですが、ビット数とかよくわからないし、printfの指定も
よくわからないし、もしかしてとりあず long long にでもした方が楽なのかなあ、とか...

353 :名無しさん@お腹いっぱい。:2009/02/06(金) 08:31:56
もちろんoff_t
http://www.suse.de/~aj/linux_lfs.html

これも参考になる。
http://jp.sun.com/practice/software/solaris/jp/wp/Sol_file/index.html

Macは知らない。

354 :名無しさん@お腹いっぱい。:2009/02/06(金) 09:05:26
便乗質問ですが、
off_t を printf する時、書式指定はどうすればいいの?
off_tは、64bitの場合も32bitの場合もあって、OSによって違うけど、
ソースは共通にしたいという場合の話です。

355 :名無しさん@お腹いっぱい。:2009/02/06(金) 09:36:01
>>354
書式は固定して、32bitの場合でも(long long)にキャストして表示。

356 :名無しさん@お腹いっぱい。:2009/02/06(金) 09:42:02
http://jp.sun.com/practice/software/solaris/jp/wp/Sol_file/sol_3.html#sol3_2_2_3

357 :名無しさん@お腹いっぱい。:2009/02/27(金) 18:41:03
はて? 何が悪い?

$ cat file1.c
char s[] = "hoge\n";

$ cat file2.c
extern char *s;
int main(){printf(s);}

$ gcc file1.c file2.c

$ ./a.out
Segmentation fault

358 :名無しさん@お腹いっぱい。:2009/02/27(金) 18:59:12
あたりまえだ。

$ cat file2.c
extern char s[];
int main(){printf(s);}

359 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:00:51
file1 では、s という名前の箱には、直接 char[] が入っている。
file2 では、s という名前の箱には、char を指すポインタが入っている、と宣言している。

ポインタと配列は混同してはいけない。
「エキスパートCプログラミング」の4章を嫁

360 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:00:54
>>357
C FAQ一読しとけ
http://www.kouno.jp/home/c_faq/

361 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:06:18
じゃあなんでこれは動くんだよ

func(char *s){printf(s);}
int main(){char s[] = "hoge\n"; func(s);}

362 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:08:05
>>357
main()で、int宣言してるのに値を帰してないからじゃないの?
未定義の値が帰ってSegmentation faulするのでは?

363 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:26:00
>>361
いいから>>360を読め。
>>362
釣れるかい?

364 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:27:42
ていうか>>360内の
http://www.kouno.jp/home/c_faq/c6.html#1
一番最初に出てる。

365 :名無しさん@お腹いっぱい。:2009/02/27(金) 19:40:51
>>362
return(1)を足したら動きました。返り値は無視できませんね。勉強になりました。

366 :名無しさん@お腹いっぱい。:2009/02/27(金) 20:05:19
配列の値がアドレスなのがいけないんだろう。
だからポインタと同じに見える。

367 :名無しさん@お腹いっぱい。:2009/02/27(金) 20:07:58
× 配列の値 (それはchar)
○ 配列名の値

368 :名無しさん@お腹いっぱい。:2009/02/27(金) 21:29:31
去年の秀逸な記事
ttp://s03.megalodon.jp/2008-0328-1911-56/builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm

369 :名無しさん@お腹いっぱい。:2009/02/28(土) 01:27:00
>>368
おお、恐ろしい。恐ろしい。

370 :名無しさん@お腹いっぱい。:2009/02/28(土) 12:17:44
ダメ初心者が初心者に教えてるのか…
> int main( void ) {
> int *n;
> *n = 5; /* ポインタ変数nに値5を代入 */

371 :名無しさん@お腹いっぱい。:2009/02/28(土) 13:31:28
コード例だけ見ると typoっぽいけど、地の説明文からして
どうもポインタを勘違いして理解してるっぽい。
この沖林正紀って人は、なんでこの程度の知識で原稿書いたんだろう
初心者レベルの駄文より、嘘を教える方が性質が悪い。

372 :名無しさん@お腹いっぱい。:2009/02/28(土) 13:50:40
>>370は初心者が陥りやすい間違いなので、ポインタの解説記事ならば間違えてはいけない個所。

記事の題名が「C/C++のポインタの機能--参照渡しのような処理」なので、JavaやLLから入って
来た人なのだろう。参照渡しでは初期化は不要だからね。

傍証
http://bookweb.kinokuniya.co.jp/htm/%89%AB%97懼ィ%B3%8BI/list.html

373 :名無しさん@お腹いっぱい。:2009/02/28(土) 14:27:55
参照渡しでも値渡しでも、callee は初期化不要では?

374 :名無しさん@お腹いっぱい。:2009/02/28(土) 17:53:21
>>373
372は、参照渡しということはcalleeの話だから初期化は不要と言ってるのであって、
参照渡し以外で呼び出されたcalleeが初期化が必要とは一言も言ってないよ。

375 :名無しさん@お腹いっぱい。:2009/02/28(土) 19:28:41
glib-2.0のgstringってCで使う場合使い勝手とか負荷とかどんなもんなんでしょう
ポインタ配列とかリストとかもあるんなら使いたいのだけれど
仕様が微妙なのでばきばき使っている人の使用感が聞きたい


376 :名無しさん@お腹いっぱい。:2009/03/01(日) 06:43:15
以下をコンパイルしたのですが何も表示されません。
どうしてですか?

#include <iostream>

class H{public:H(){std::cout<<"hoge\n";}};

int main(){H h();}

377 :名無しさん@お腹いっぱい。:2009/03/01(日) 08:19:51
関数の宣言だから

378 :名無しさん@お腹いっぱい。:2009/03/01(日) 08:55:08
>>376
iostream.h じゃないの?
ヘッダーの拡張子 .h がなくて正常コンパイルできてないに1票。

379 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:07:01
>>376
"\n" なんて使えたっけ? << std::endl でしょ?
改行が出力されず、行バッファがフラッシュされなかったから
表示されていないように思っただけでは?

380 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:13:46
>>378-379
だから、「関数の宣言だ」と言ってるだろ。
int main() {
 int printf(...);
}
と書いてあるのと同じだよ。

381 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:15:46
>>380
もちろん、main()関数は宣言してます。そういう問題じゃないでしょw

382 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:34:33
おまえ、本当にバカだな。
printf()関数の宣言をしているのが見えないのか。

ホント、初心者の知ったかぶりって迷惑だよな。

383 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:36:10
>>382
ワーニングを無視すれば printf() は宣言なしでもつかえますよ。
あと、質問はprintf()じゃないしw

384 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:36:34
Hを返す引数の無い関数h()をmainの内部で宣言してる、と言われてるのに
知ったか初心者の癖に理解力ゼロだから困る。

385 :376:2009/03/01(日) 09:38:23
>>378-379
.h付けて、endlに直したら表示が出ました。
ありがとうございました。

386 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:38:31
頭悪すぎだね。

387 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:41:43
>>383
あなたC++って言語、知ってる?

388 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:44:01
どこぞの独自拡張拡大解釈コンパイラしか知りません

389 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:47:40
>>387
printf()が出た時点で C++の可能性はゼロでしょ。
C++ではprintf()の使用は禁止だし。

390 :名無しさん@お腹いっぱい。:2009/03/01(日) 09:59:28
ネタだよな?
まさかとは思うけど、本気で言ってるんじゃないよな?

これが初心者?
それとも老害?

391 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:00:33
>>389
幾らなんでも、それじゃ釣れないだろ。

392 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:04:56
main()がint型でありながら戻り値が省略可能な時点で、C++確定ですけど。

393 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:09:06
>>392
つC99

394 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:13:41
>>392
main()に限らず、何のint関数でも戻り値は省略可能。
ワーニングを無視するなら。

395 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:21:07
>>394
えーとね、main()は警告なしで省略可能なんだよ。
言語仕様として決まってるから。

もちろんあなたはは知らなかったでしょうけどね。
あ、もちろんprintf()も言語(のライブラリ)に含まれてますよ。
当然ながら、宣言なしで使うことは出来ませんがね。

396 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:22:48
>>395
つC89

397 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:23:30
警告をワーニングって言うのもちょっと恥ずかしい。
別にウォーニングと言えってことじゃないけどね。
単に「警告」で済むんだから。

ま、恥はいくつかいても恥で一緒だけどね。

398 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:28:04
>>396
つ 話の流れ
つ 空気

>>394
別にintに限りませんけど?
C(でかつ警告を無視する)なら。

399 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:32:21
そもそも>>376でclassが使われていて明らかにC++の話なのに
何故か「printfが使われてるからC++の可能性はゼロ」となって
Cでの話にすり替えられちゃってるんだよな。
不思議。

400 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:38:02
>>395
printf()は宣言なしで使えるよ。
実際にコンパイルしてみればわかるよ。
即席で書き捨てソースを書く時によくやる。

宣言なしでは使えないのはputs()とかputchar()とか。

401 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:44:48
>>395
仕様としてそう決まっていようが、現実はそうじゃない。

$ echo 'main(){}' | gcc -xc -; ./a.out; echo $?
148
$ echo 'main(){}' | gcc -xc -; ./a.out; echo $?
84
$ echo 'main(){}' | gcc -xc -; ./a.out; echo $?
101

毎回未定義。

402 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:44:57
>>400
つかえましたよ。
int main()
{
puts("xxx");
}
つーか、linkとごっちゃになってね。


403 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:49:17
>>402
>>395 に言ってくれ。

404 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:51:45
>>401
↓これじゃない
int main()

return 0; の話だろ

↓こっちは省略禁止
int main()




405 :400:2009/03/01(日) 10:57:24
ああ、ごめん。
>>395 は論外としてputs云々が気になったので....
でだ。

ばかも ん。
昔のcompilerはなぁ、昔のcompilerはなぁ、
まともなwarning吐かないので、lint使ってたんだぞぉ。


406 :名無しさん@お腹いっぱい。:2009/03/01(日) 10:57:31
>>400
だから、話の流れ的に「C++では」なの(>>395>>394>>392)。
C++では「宣言の無い関数は呼び出せない」の。
某コンパイラを除いてね。

407 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:00:40
>>401
あなたが省略してるのは「戻り値」ではなく「戻り値の型」。
話の流れとは全然関係ないから。

CでもC++でも
f() { return 0; }
という「戻り値の型の省略」は完全に合法ですから。
もちろんintと仮定されます。
そして、何もreturnしない場合、まっとうなコンパイラなら警告が出ます。

408 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:11:43
>>404 >>407
int付けても同じだよw そこが論点じゃないしww

$ echo 'int main(){}' | gcc -xc -; ./a.out; echo $?
41
$ echo 'int main(){}' | gcc -xc -; ./a.out; echo $?
116
$ echo 'int main(){}' | gcc -xc -; ./a.out; echo $?
32

毎回未定義。

409 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:12:13
>>395がCの話だと思ってる人って
わざわざ「printfが言語仕様に含まれる」と触れてる事を疑問に思わないのかな。
少し前に>>389があるのに。

410 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:19:51
>>408
>>406>>393を無視して、何故わざわざ「省略可能なことが言語仕様で保証されていないC89」でコンパイルするわけ?

411 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:25:23
「C++では言語仕様で保証されている、だからC++のコードだ」という話(それが妥当かはともかく)なのに
わざわざ「言語仕様で保証されてない言語(C89)」での結果を何度も貼りつけて何がしたいのかな。

412 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:26:39
あ、違った。
「言語仕様で「不定」となることが決まっている言語」だな。

413 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:30:14
>>404 の書き方では、「intさえ付ければ戻り値は固定される」と
言ってるように見える。

>>408 はそれに対する反論かと。

414 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:32:03
>>404
で言ってるのは
>>401に対して仕様で省略が認められてるのはreturnの方だけだよということだろう



415 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:33:39
>>414
でも結局省略したら値が不定んなったんだから省略できないじゃんw

416 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:36:35
>>415
だからC99規格対応なら、省略できて
C89規格ではそうではないって話だろ

417 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:39:25
>>416
結局省略できないじゃんw

418 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:45:48
省略できる言語の話をしてるんだろ?
何で別の言語の話をする?

419 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:48:28
省略できるって主張してる奴は、
「仕様上は省略できるはずです」って言って、
不定値を返すままのソフトを納品すればいいさ。

420 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:56:21
>>419
実装がとにかく正しいとか言って、コンパイラ依存のプログラムでも作ってろ

421 :名無しさん@お腹いっぱい。:2009/03/01(日) 11:59:15
だったらせめて -xc をやめて
-xc++ や -std=c99 をつけた結果を貼れよ。
C89で保証されてないことなんか、知らない奴殆ど居ないんだから。

>>376からの流れなのに>>380がC++の話じゃないと思い込むバカは居るかもしれないけど。

422 :名無しさん@お腹いっぱい。:2009/03/01(日) 12:02:08
>>419
どこに、「C89で省略できる」って主張してる奴がいる?


あ、いるのかな。
戻り値が保証されてるとは誰も書いていない、ってだけで。

423 :名無しさん@お腹いっぱい。:2009/03/01(日) 12:12:12
×戻り値が保証されてるとは誰も書いていない
○戻り値が保証されると脳内で勝手に決め付けて特定の実装の結果を張り続けるバカもいる

424 :名無しさん@お腹いっぱい。:2009/03/02(月) 10:17:57
linuxだとsearch.hのハッシュがやけに遅いのでGhashTableのが性能いらしいんだけど
FreeBSDの場合ハッシュの実装をするのにGhashTableとsearch.hと
どっちのがおすすめ?

425 :名無しさん@お腹いっぱい。:2009/03/02(月) 12:38:43
ほとんどの人には不要だと思うけど、一応張っとく。
C++とC98は、main関数は暗黙のreturn 0。C89とその前はそうではなかった。

$ echo 'int main(){}' | gcc -std=c99 -xc - && ./a.out; echo $?
0
$ echo 'main(){}' | gcc -std=c99 -xc - && ./a.out; echo $?
<stdin>:1: 警告: return type defaults to ‘int’
0

$ echo 'int main(){}' | gcc -Wall -std=c++98 -xc++ - && ./a.out; echo $?
0
$ echo 'main(){}' | gcc -Wall -std=c++98 -xc++ - && ./a.out; echo $?
<stdin>:1: 警告: ISO C++ forbids declaration of ‘main’ with no type
0 # 禁止されてるけどエラーにならない

$ echo 'int main(){}' | gcc -Wall -std=c89 -xc - && ./a.out; echo $?
<stdin>: In function ‘main’:
<stdin>:1: 警告: control reaches end of non-void function
196


426 :名無しさん@お腹いっぱい。:2009/03/02(月) 12:48:53
>>424
基本どっちもクヌース本のアルゴリズム。

427 :名無しさん@お腹いっぱい。:2009/03/02(月) 12:52:43
C98という新規格まで登場したか。

428 :名無しさん@お腹いっぱい。:2009/03/02(月) 13:32:40
>>425
おまえがC++とCごっちゃになってどうする

429 :名無しさん@お腹いっぱい。:2009/03/03(火) 09:27:07
Cのコード中でディレクトリの内容を比較するのはどうしたらいいか悩んでいます。

動作的には "diff -r dirA dirB" を実行した場合の結果と同じ処理をしたいのですが、
毎回 diff コマンドを呼ぶオーバーヘッドを避け、出来ればCのコードで実現したいと
思ってます。どうすべきでしょう?

1. UNIX の API にこの目的にふさわしいものがあり(何という名前?)、それを使う
2. 違うファイルかディレクトリに遭遇するまで地道に両者のディレクトリを辿るような
コードを自分で書く
3. diff のソースコードを入手し、自分のプログラムにリンクして使う
4. その他

430 :名無しさん@お腹いっぱい。:2009/03/03(火) 09:57:03
お前の書くコードがdiffよりオーバーヘッドが少ないわけがない。

431 :名無しさん@お腹いっぱい。:2009/03/03(火) 10:09:27
>>429
普通のdiffコマンドは高速でないアルゴリズム( O(ND) )を使ってるから、
gitとかpythonのライブラリに使われてるやつのが速い
ってわけで、速度を追い求めるなら差分取得のアルゴリズムについて調べてがんばれ

432 :名無しさん@お腹いっぱい。:2009/03/03(火) 10:12:30
いや高速でないってこたないんですよ、それより速いのがあるだけで

433 :429:2009/03/03(火) 10:29:38
あー書き方が悪かったかな。
もし diff ということで LCS とかそこらへんに脊髄反射されてたらごめんなさい。
自分が知りたいのは dirA と dirB の内容が違うか同じかだけなんです。

この場合むしろディレクトリの階層に効率よくアクセスできることが重要なんじゃないかと
思ったんですが、違います? fts とかですかね?
それにファイルを処理するようなソフトならありがちな処理のような気がするので、
どこかに適切なコードのサンプルがあればと思って...

434 :名無しさん@お腹いっぱい。:2009/03/03(火) 10:37:16
>>433
> 自分が知りたいのは dirA と dirB の内容が違うか同じかだけなんです。

内容の比較は必要か
タイムスタンプの比較だけでいいか
同じファイル名が存在するだけでいいのか

rsync --dry-runの出力結果を使うとか。

435 :429:2009/03/03(火) 10:50:52
>>434
「同じ」とはディレクトリ構造が同じで、その中に存在するファイルの名前&内容が同じ
という積もりです。
タイムスタンプは比較しません。

>rsync --dry-runの出力結果を使うとか。

はい、確かにそれも速そうですが、自分のプログラムだと比較的浅いディレクトリに
対してそれを何度も呼ぶことになりそうなので、C の何かの API で書いた方がいいのか
なあと。

ある意味 rsync みたいなプログラムなんですが、syncするときにいろいろカスタムな
ロジックを入れたいので、コードを書いているといいますか....

436 :名無しさん@お腹いっぱい。:2009/03/03(火) 11:32:23
内容比較がcmp -sレベルでいいなら、
readdir/lstatで自分で書けばいいんじゃない?
質問せずに書けば、今頃書き終わっている頃かと。

437 :名無しさん@お腹いっぱい。:2009/03/03(火) 13:31:30
ファイルとディレクトリの equality は適当に定義出来
るとして、↓みたいになるかな。

for (File src = each of srcDir) {
        File dst = dstDir.Find(src);
        if (dst == null) {
        // src にしかない
        } else if (src != dst) {
        // 違う
        }
}
for (File dst = rest of dstDir) {
        // dst にしかない
}

each of …は都度 readdir して、Find は保持してるプー
ルから探して、無ければ見つかるまで readdir、してプー
ルに入れていく感じ。見つかったらプールから削除して
おいて rest of …でそれを得る。

438 :名無しさん@お腹いっぱい。:2009/03/03(火) 14:07:34
両方コレクションにいれて、ソートして、
先頭二つ、計四つを比較しながら取り出せばいい。
四つになるのはどちらが欠けているかわからないから。
どれも違う場合、四つの中で小さいの二つを捨てればいい。

AB
AB

AB
BC

BC
AB
-
AB
CD

AC
BD

439 :名無しさん@お腹いっぱい。:2009/03/03(火) 14:16:00
>>438
ファイル/ディレクトリの equality と同様に順序付け
も定義出来るなら(ソートするからには出来るはずだ)、
先読みする必要はない。マージソートの要領だ。

440 :名無しさん@お腹いっぱい。:2009/03/12(木) 19:41:22
dirp=opendir(".");
printf("1 :%d;\n",telldir(dirp));
printf("2 :%d;\n",telldir(dirp));
printf("3 :%d;\n",telldir(dirp));
closedir(dirp);
とすると返す値は1,2,3とどんどんインクリメントしていくだけだし
seekdirは無反応rewinddirは巻き戻すばかりかtelldirをひとつ進めるだけ
readdirとかはちゃんとできているんだけれど
何か呪文とかいるのかダメダメな関数なのか情報please

441 :名無しさん@お腹いっぱい。:2009/03/12(木) 19:51:28
>>440 OSはFreeBSDです。

442 :名無しさん@お腹いっぱい。:2009/03/12(木) 20:15:55
たぶん実装がおかしいんだろう。MacOS Xも同様らしい。
ttp://idm.s9.xrea.com/ratio/2007/09/10/000673.html

dirent読むのにtelldirやseekdir使うようなやつはいないから放置されてると想像。

443 :名無しさん@お腹いっぱい。:2009/03/12(木) 20:24:17
追加。このへん関係あるかも。
ttp://www.freebsd.org/cgi/query-pr.cgi?pr=bin/121656

444 :名無しさん@お腹いっぱい。:2009/03/12(木) 20:32:49
>>440です。rewinddirの記述は間違っていました。
rewinddirとreaddirだけが使えます。

で調べたらscandirというのがありました。
mallocしてくれて配列に入れて関数指定すればsortもしてくれるようなので
コールバックもsort関数に入れます。
>>435もscandir+lstatでいいのでは?

しかしひどすぎるなtelldir+seekdir
ファイルの多いディレクトリーでちょろちょろよむもん作りたかったんだけど
一気読みが基本ですか?

445 :名無しさん@お腹いっぱい。:2009/03/12(木) 20:38:50
とりあえずコールバック抜きのアルファソートやってみた。
c = scandir(dirname, &namelist, NULL, alphasort);
if(c == -1) {
puts("not opendir");
return(1);
}
printf ("%d\n", c);
for (i = 0; i < c; ++i) {
printf ("%s\n", namelist[i]->d_name);
free(namelist[i]);
}
free(namelist);

opendirの苦労は一体....orz

446 :名無しさん@お腹いっぱい。:2009/03/12(木) 20:40:17
>>435

opendir -> ディレクトリをファイルとして開く
readdir -> ディレクトリのエントリを一つ読み込む(ポインタ一個進む)
seekdir -> ディレクトリのエントリを x 番目にセットする
telldir -> 今いるエントリ位置を報告する

を組み合わせて, 双方のエントリを比較して
1. 対象物の inode が同じなら処理スキップ
2. 対象物が ディレクトリなら, 自分自身を再帰的に呼び出す
3. 対象物がファイルなら中身を比較
すればええんちゃう?


447 :名無しさん@お腹いっぱい。:2009/03/12(木) 20:46:16
既に読んだエントリに戻って読み直すシチュエーションがわからん。

仮にtelldir/seekdirの動作がまともでも、
いちいち物理的にディレクトリ読みに行くような実装だったりしたら、
遅いし最中に誰かがいじらんとも限らんし、いいことなしでは?
キャッシュしてるんだとすれば一気読みと何も変わらんし。

というわけで、telldir/seekdirは価値なしなんじゃないかと。


448 :名無しさん@お腹いっぱい。:2009/03/12(木) 21:00:32
>>447
再帰して必要物がなくって、バックトラックするときに
変わってしまった状態を元に戻すために必要

recur_dir(...
here = telldir(...
if (このエントリが dir && 比較対象と違う)
if (recur_dir(...) == succeed)
return なんとか
ここに戻ってきた場合何がどうなってるか保証できない
seekdir(here)
続きの処理


449 :名無しさん@お腹いっぱい。:2009/03/12(木) 21:56:26
何がどうなってるか保証できない状態なら
telldirしたところにseekdirしても保証できないだろう

450 :名無しさん@お腹いっぱい。:2009/03/15(日) 11:44:20
ストリームとしてファイルリストをチェックしていくならseekとかは必須だと思うけれど
telldirもseekdirも機能しないんだから必要でも存在しない事実をどうする。

一旦readdirだかscandirでざっくりと読み込んで
それに対して操作するしか方法が無いのが現実。

バックアップとかで完全一致を目指す場合
「ほぼあっている」前提ならば結局ファイル自体の完全マッチをするしかないと思うが
事前にMD5とかSHA1とかとったリストをディレクトリーに入れとけばそれで済む気はする。

451 :名無しさん@お腹いっぱい。:2009/03/17(火) 11:41:43
なんだ。ftsとかftwというファイル階層を歩くライブラリーが標準であるんじゃないか。
少なくともperlの「find::file」と同じ事はftwだけでできた。

最低の作り方でもftwのコールバックで配列を構築すればいいわけだし
scandirとか使ってバカみたいだった。

何気にファイルユーティリティが固まってきたよ。


452 :名無しさん@お腹いっぱい。:2009/03/17(火) 14:33:22
opendir/readdir/closedirは、
fts, ftw辺りを書く人のためのシステムコールなんだよね。
まあ自分で書くのも悪くないけど、
scandir/telldirは使わないことをお勧めする。

>>448に書いてあるようなことは、
"concurrent data structure"と言うべきものだけど、
(Javaのiteratorのremove()のような)
UNIXのシステムコールは、"concurrent directory"を
直接的にはサポートしない。

昔、間接的にサポートするために、
update notifyが上がるUNIXenを見たことがあるが、
何だったか忘れてしまった…

453 :名無しさん@お腹いっぱい。:2009/03/17(火) 15:25:32
変な用語持ち出して論理に飛躍のあること言い出す輩が出てきたな

454 :名無しさん@お腹いっぱい。:2009/03/17(火) 16:33:31
用語が理解できないのを論理に飛躍があることにする輩が出てきたな

455 :名無しさん@お腹いっぱい。:2009/03/25(水) 11:19:17
>>452
> opendir/readdir/closedirは、
> fts, ftw辺りを書く人のためのシステムコールなんだよね。

ちゃうやろ…と思って見てみたけど、ffs(ftw) って
"." を open() してあれこれしてるだけだよ。

ttp://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/fts.c?rev=1.30;content-type=text%2Fplain


456 :名無しさん@お腹いっぱい。:2009/03/25(水) 11:42:34
>>455
違う。
open(2)は後から戻る時にfchdir(2)するため。
パスで辿ると別のところに行く可能性あるから。

116 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)