トップページ⇒tech
1001コメント254KB

C言語なら、俺に聞け! <25>

レス数が1000を超えています。これ以上書き込みはできません。
0001スーパープログラマ日(以下略)NGNG
C言語質問スレッド Part 25

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART4
http://pc.2ch.net/test/read.cgi/tech/1022961238/l50

・前スレ
<24> http://pc.2ch.net/test/read.cgi/tech/1024033400/l50
<23> http://pc.2ch.net/test/read.cgi/tech/1023024817/l50
<22> http://pc.2ch.net/test/read.cgi/tech/1022402165/l50

コンパイラなどのリンクは>>2-3 あたり
void日下部氏の激動の半生は過去スレを参照
0002デフォルトの名無しさんNGNG
弐
00031NGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

【製品版。有料】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html

【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
0004デフォルトの名無しさんNGNG
>1
乙
>2
早
0005デフォルトの名無しさんNGNG
strings.hってobsoleteなヘッダですよね?
単純にstring.hに置き換えて問題ないですか?
0006デフォルトの名無しさんNGNG
メール欄がvoidでなくなって久しいなあ・・・・
0007デフォルトの名無しさんNGNG
>5
なぜおとなしく日本語で書かないの?辞書引いたよ
0008デフォルトの名無しさんNGNG
>7
日本語がわからないから
0009デフォルトの名無しさんNGNG
>>5
もしかして日本人じゃなくて?隣国の方ですか?
0010デフォルトの名無しさんNGNG
ポケコンの内蔵C言語はどのくらいの大きさのプログラムを作れますか?
0011デフォルトの名無しさんNGNG
>>10
5TB
0012デフォルトの名無しさんNGNG
obsoleteって慣用表現だろ。
0013前スレ 883NGNG

前スレの >>846 >>954 へ

10 ていう数字は >>846 で malloc で 10 文字分確保してたから。
それに合わせて書いただけ。

>>846 の場合だと「一桁の数字」と「改行文字」と「ヌル文字」で 3 以上あればいい。

入力文字数分あればいいけど、特に理由がないときは 80 ぐらい。
80 てのは、端末の1行分から来てるらしい。(未確認)

あとは、 atoi に掛ける前に改行文字をヌル文字に置き換えた方がいいよ。
0014今度こそNGNG
(・∀・)ノモツカレー>>1
0015デフォルトの名無しさんNGNG
すみません、教えて戴けないでしょうか。
linux(vine 2.5)で、ディレクトリの中のファイル数を
知りたいのですが、readdir(3)をNULL まで回して数える以外に
方法はあるのでしょうか。言語はCです。DIR構造体の中に
何か情報があるのでしょうか。
0016デフォルトの名無しさんNGNG
1  2  3  4  5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

配列なんですけど、プログラム教えておながい。
0017デフォルトの名無しさんNGNG
ほう、宿題とはな。
http://pc.2ch.net/test/read.cgi/tech/1024592344/l50
0018デフォルトの名無しさんNGNG
>>15
readdir()でいいと思う。
おおざっぱでよければ、ハードリンク数が
ファイル数+2ぐらいになってるかもしれない。
001918NGNG
ああ、ごめん。勘違い。
・・・もう寝よう。
002015NGNG
ありがとうございます。
ハードリンク数は使えない…んですかね。
地道にループするしかないのかな。
002115NGNG
ごみファイルを増やしても、ハードリンク数は
変わらないんですね。(ディレクトリのハードリンク数は)
ディレクトリの数しか見ていない?
ファイルシステムがまったく分かってない発言をしている
気がしますが。
0022デフォルトの名無しさんNGNG
malloc() で、SIGSEVが発生するが、これは、mallocのバグなのだろうか?

malloc(0x18, 0xeffff348, 0xb78964, 0x35000000, 0x0, 0xb78981)
_smalloc(0x18, 0xeefabcf8, 0x8, 0x0, 0x0, 0xeefa5868)
--- シグナル SIGSEGV を発生しました ---
sigacthandler(0xb, 0xefffe9a8, 0xefffe6f0, 0xef666b60, 0x2c, 0xac5020)
__sighndlr(0xb, 0xefffe9a8, 0xefffe6f0, 0xef654598, 0xac5010, 0xac4ff0)
__libthread_segvhdlr(0xb, 0xefffe9a8, 0xefffe6f0, 0xef666b60, 0x0, 0x0)

日本語Solaris2.6、コンパイラはWorkShop5.0。実行ファイルがでかいとの、
でばっかのバグで、メモリアクセス検査は使えない。

http://sources.redhat.com/ml/glibc-linux/2000-q2/msg00094.html
には、獲得してないメモリを開放すると、まったく関係のないところで、
SIGSEGVが発生するとあるが、本当なのか?
002315ボヤキNGNG
fseekみたいな感じで、ディレクトリのストリーム?のSEEK_ENDに
セット、とかできればなあ。DIR構造体はどういう構造なんでしょう。
__dirstreamのデファインとしかヘッダに書いてないし。
0024デフォルトの名無しさんNGNG
>>23
BSD 系だと telldir(), seekdir() なんてシステムコールがあった気がするが。
何にせよ ANSI C の範囲外だから、UNIX プログラミングのスレに移動しない?
0025デフォルトの名無しさんNGNG
>>22
たぶん 22 のソースのバグ。たぶん malloc() で割り当てたメモリブロックの前後
に管理情報が書いてあって、そこを壊しているので、結果的に次の malloc で死
んでるのだと思う。

Solaris 2.6 だとソースは読めんと思うが Solaris 8 のソースで malloc の実装を
確認してみたら? もしくは、別の(性能より耐久性重視の)実装をした malloc で
差し替えてみるとか。
0026shigeNGNG
ElectricFenceを入れて、cc -o app source.c -lefence はだめ?
0027デフォルトの名無しさんNGNG
char int float double struct union enum long short signed unsigned
if else for while do continue break goto return
auto static extern register volatile

この他にC言語の予約語はありますか?(ただしCプリプロセッサ命令は除きます)
0028デフォルトの名無しさんNGNG
typedef
0029デフォルトの名無しさんNGNG
>>12
確かにobsoleteっていう慣用表現はobsoleteだと思いますが…
0030デフォルトの名無しさんNGNG
>>27
switch
0031名無しさん@カラアゲうまうまNGNG
>>30
caseとdefaultも入れろよ。
0032デフォルトの名無しさんNGNG
あ、すまん>>31 あとvoidも入ってないな。

何のために調べてるか知らないけど、Cの文法が載ってる適当な本を探した方が
早くないか? >>27
0033デフォルトの名無しさんNGNG
sizeof
003427NGNG
みなさんありがとうございます。

列挙しようとすると普段使っていても思い出せないものが結構ありますね・・・
autoなんて使っていないものは思い出すのに。

>>32
昔借りた本にファイルの中に存在するCのキーワードの個数を数えろという問題があったので、それを解こうと思ったんです。
0035デフォルトの名無しさんNGNG
const
0036デフォルトの名無しさんNGNG
autoってあれだろ、行番号自動でつけてくれるヤツ。
0037デフォルトの名無しさんNGNG
懐かしい・・・
contが漫才ではなくcontinueの略と知ったのは小学6年の頃だった・・・
0038デフォルトの名無しさんNGNG
>>27

_Bool
_Complex
_Imaginary
0039葵NGNG
この問題を教えてください
3×3行列Aに対し
1,Aを読み込みAの行列式を出力
2,Bを読み込みA×Bを出力
3,|A|≠0の時のA^-1を出力
0040デフォルトの名無しさんNGNG
宿題スレ行け。あとマルチすんなボケ。
0041デフォルトの名無しさんNGNG
>>39
1.2.は簡単なので
3.掃き出し法(ガウス・ジョルダン消去法)を用いる。
「ガウス・ジョルダン消去法」でぐーぐるってみ。
0042デフォルトの名無しさんNGNG
>>39
旧スレageんな、ぼけ
0043デフォルトの名無しさんNGNG
|A| = a[1][1]*a[2][2]*a[3][3]+a[2][1]*a[3][2]*a[1][3]+a[3][1]*a[1][2]*a[2][3]
-a[1][1]*a[3][2]*a[2][3]-a[3][1]*a[2][2]*a[1][3]-a[2][1]*a[1][2]*a[3][3]
0044デフォルトの名無しさんNGNG
>>43
あ、ちなみに配列の添え字を0から始める時は全部1引いてね。
0045デフォルトの名無しさんNGNG
宿題スレあるのになんで、C言語スレとすれ立てるまでも〜スレ
に宿題投げるんじゃいハゲ。
0046デフォルトの名無しさんNGNG
3.の別の求め方。
|A|≠0のとき、各要素について余因子行列Δ11〜Δ33を求め、
A^-1=1/|A|×余因子行列(Δ11〜Δ33)で求める。
Δ11 = (a[2][2] a[2][3]
     a[3][2] a[3][3] ) のように。
0047デフォルトの名無しさんNGNG
|Δ11|=a[2][2]*a[3][3]-a[3][2]*a[3][3]
...........
あとは自分でやれ。
0048デフォルトの名無しさんNGNG
それって余因子じゃなくて小行列式じゃないの?
(-1)^(i+j) * △ij = Aij
の、Aijの方でないかと。
0049デフォルトの名無しさんNGNG
>>48
小行列式は、適当にいくつかの行といくつかの列を取って作る行列です。
それに対し余因子は、aijのi行j列を取り除き、それに符号(-1)^(i+j)を
掛けたものです。
              〜      〜
逆行列A^(-1)=1/|A|×Aで、ここにAはAの余因子行列のつもりで
書きました。

読みにくかったのならすみません。
0050デフォルトの名無しさんNGNG
>>39は今さっき宿題スレ行ったね・・・。問題もそのまんま。
やっぱいろんなスレに宿題投げといて、時間経ってから答えだけ見にくるってか。
0051デフォルトの名無しさんNGNG
>>50
見たよ。数学の基礎もわからないで、プログラムだけ作ってやったって
何の役にも立たないからねえ。放置放置。
0052デフォルトの名無しさんNGNG
>>49
さらに突っ込んで(しかもスレ違いで)申し訳ないんだけど、
最後に掛けてるAって、転置しないといけなかったような気が。
それとも、逆行列を求めるときに登場する余因子行列Aは、すでに転置済みなの?
0053デフォルトの名無しさんNGNG
>>52
余因子行列は、転置済みです。これぐらいなら初等数学の本を読めば
書いてあるから、特に書かなかった。
0054デフォルトの名無しさんNGNG
CD-ROMのイメージを変換するプログラムを作りたいのですが
 ISOイメージ(2048バイト/セクタ) → RAWイメージ(2352バイト/セクタ)
 RAWイメージ → エラー訂正 → ISOイメージ 等々
ECCとEDCの求め方と使い方(エラーの訂正方法と検出方法)が分かりません
そこら辺の事を詳しく説明している日本語か英語のホームページか
Cのソースがあるホームページを知ってる方は教えて下さい
0055デフォルトの名無しさんNGNG
http://www.ee.washington.edu/conselec/CE/kuhn/cdrom/95x8.htm
簡単に出てきたぞ
0056デフォルトの名無しさんNGNG
32bitの符号付き整数型である long は一般に最小・最大いくつまで使えるんですか?
bitですよ。
0057デフォルトの名無しさんNGNG
>56
0xffffffffから0x7fffffffまで
005857NGNG
まちがえた。
0x8000000からか?
0059デフォルトの名無しさんNGNG
>>56
>long は一般に最小・最大いくつまで使えるんですか?bitですよ。

問題聞き直してこい。
0060デフォルトの名無しさんNGNG
>>56
> bitですよ。

わけわからん
0061デフォルトの名無しさんNGNG
32bitの脱字でしょう。
0062デフォルトの名無しさんNGNG
「>>1」は「/2」と同じ効果が得られますが
これはどのCPU、どのコンパイラでも同じですか?
エンディアンとか関係あるのでしょうか?
0063デフォルトの名無しさんNGNG
>>62
普通は、エンディアンは考えなくていいとおもう。
0064デフォルトの名無しさんNGNG
>>62
エンディアンを問題にしなきゃいけないのは他CPUにデータを渡す場合。

0065デフォルトの名無しさんNGNG
>>63
どうもありがとうございます
ちなみにunsigned int型の整数なんですけど
考えなくてはいけない場合とかないですよね・・・
0066デフォルトの名無しさんNGNG
>>64
無謀なキャストの時もだよ〜〜〜ん。
0067デフォルトの名無しさんNGNG
>>66
そっか、char->long(32bit)とかすると値変わるね。
0068名無しさん@カラアゲうまうまNGNG
>>62
unsignedだとだいたい同じだが、singedだと保証花井。
0069デフォルトの名無しさんNGNG
32bitの符号付き整数型である long は一般に最小・最大いくつまで使えるんですか?
先ほどはすいません。32bitの間違いでした。(気にしないで下さい)
16進数ではなく、10進数で教えてください。お願いします。
0070デフォルトの名無しさんNGNG
宿題か?
0071デフォルトの名無しさんNGNG
>>69
そもそもどんな腐ったCの入門書にも必ず書いてあるもんだと思うが・・・
0072デフォルトの名無しさんNGNG
2147483647 〜 -2147483648
0073デフォルトの名無しさんNGNG
limits.hミロ
0074デフォルトの名無しさんNGNG
>72
微妙にひねくれた書き方だね。
0075デフォルトの名無しさんNGNG
>>74なんで?
LONG_MIN〜LONG_MAXの方が良いって事?
10進数って書いてあったからこう書いた。
0076デフォルトの名無しさんNGNG
>>75
> LONG_MIN〜LONG_MAXの方が良いって事?
普通そう書くだろ。
> 10進数って書いてあったからこう書いた。
意味不明。
0077デフォルトの名無しさんNGNG
>>76
それじゃ10進数で教えたことにならんのでは?
0078デフォルトの名無しさんNGNG
大きい方先に書いたからでそ。
0079デフォルトの名無しさんNGNG
なんか微妙に話がすれ違ってるな。

ふつう 小さい数〜大きい数 の順に書くところを>>72が逆に書いてるから
>>74が「ひねくれた」って書いたのではないかと。
で、>>75でdefineになった上に 小さい数〜大きい数 の順にもどってるから
さらにややこしいことになってる。
>>76の「ふつうそう書くだろ」はdefineのことを言ってるんじゃなくて、
「ふつう小さい数〜大きい数 の順で書くだろ」の意味。
0080デフォルトの名無しさんNGNG
>>79
なるほど、理解した
008176NGNG
>>79
解説さんくす。
0082デフォルトの名無しさんNGNG
ビットの並びで考えると、0 〜 -1?
意味ないけど。
0083デフォルトの名無しさんNGNG
ところでいつからジョブスから日(略)にかわったの?
0084初心者家労NGNG
麻雀ゲームをを作ろうと思っているんですけど
0085デフォルトの名無しさんNGNG
>>84
作ったらチョウダイネ。
0086初心者家労NGNG
字牌はまとめちゃっていいのかな?
0087デフォルトの名無しさんNGNG
>>83
度々変わってるよ。
0088デフォルトの名無しさんNGNG
>83
来襲してきたころでなかったかいな?
0089デフォルトの名無しさんNGNG
まとめるとは、何を?>>86
0090C全くの初心者NGNG
これからC言語を始めようか
と思うのですが、やはりCからやった方がいいのですか?
0091名無しさん@カラアゲうまうまNGNG
>>89
理牌じゃないのか。
0092デフォルトの名無しさんNGNG
このスレの01は、2000/09/03に建った。1の名はビル・ジョブス。
それから一年、01/10/19に建つ 07 までジョブス。
01/11/15の 08 は凡才ハカーとある。
KusakabeYouichiが付くのは01/12/02の09。
09から14まで、日下部である。
15(3/19) Dennis Richie
16(4/11) マカー代表 日下部陽一
17(4/21) 金融プログラマー日下部陽一
18(5/01) きょうはいいテンキーです。日下部陽一
21(5/07) ともっち
20(5/15) ともっち
21(5/22) 伝説の日下部陽一
22(5/26) 日下部陽一
23(6/02) 日下部陽一
24(6/14) デフォルトの名無しさん
25(6/24) スーパープログラマ日(以下略)
0093初心者家労NGNG
マンズ
ピンズ
ソーズはそれぞれ一つの配列にいれるとして
字牌の�dナンシャペイ白發中もひとつの配列にぶちこんでいいんでしょうか
0094デフォルトの名無しさんNGNG
ログ保存してるの?>>92
0095デフォルトの名無しさんNGNG
>>92
19は?
009695NGNG
ごめん。
21が二つあるだけだったね。
0097デフォルトの名無しさんNGNG
気になったのでちょっと過去ログ検索してみたら
15(3/19) Dennis Richieと19(5/07) ともっち も38才でワラタ
0098デフォルトの名無しさんNGNG
>>92
そうか、おれが前に見てたやつは、
初期の頃のスレだったのか。
なんで変わったの?
0099デフォルトの名無しさんNGNG
>>98
スレ立てる人の趣味じゃない?
次は ken thompson きぼん。
0100デフォルトの名無しさんNGNG
意表をついて stroustrup でもいい。
0101デフォルトの名無しさんNGNG
彼女が出来たらしい RMS はどうよ。
1 は emacs のリンクだけ。
0102デフォルトの名無しさんNGNG
風の様に駆け抜けた伝説のともっち…
0103たくNGNG
ttp://sun1.interq.or.jp/chat/applet/chat.html
ここのチャットでアスキーアート出している人がいたんですけど
やりかた教えてください!
0104デフォルトの名無しさんNGNG
>>103 激しく板違い
0105デフォルトの名無しさんNGNG
>>103
マルチUzeeeeeeee!
0106デフォルトの名無しさんNGNG
>>90
そりゃぁC始めるんならCからやるしかないだろな。
0107 NGNG
>>90
AとBはもう済ませた?
もし、まだならそこからお願い!
女の子はとてもナイーブだから
0108デフォルトの名無しさんNGNG
ハン板からのこぴぺ

684 : :02/06/26 15:33 ID:r+yCWVhX
韓国人がどうしておかしな事をいうのかわかりました。
どうやら、彼らの頭の中では”セグメンテーチョンフォルト”が頻繁に起きている模様。

686 : :02/06/26 15:40 ID:PZqRs7P/
>>684
んで、その ”コアダンプ”が日本に吐き出されていると。
すると、俺らは ”デバッガ”か? 一体デバッグがどれだけしんどいか小一時間(略

688 : :02/06/26 15:51 ID:r+yCWVhX
>>686
誠に申し訳ありませぬ。
本プロジェクトでは gcc と gdb のみしかありませぬ。

689 :    :02/06/26 16:12 ID:tmFKv03x
>>686
デバックするより、書き直した方が早いっす。

690 :tenpura ◆UMAIu01k :02/06/26 16:22 ID:0hFhBlaF
>>689
書き直ししても無駄なコストが発生するだけだから、
フロジェクト全体をあぼーんするのが正しい判断では?

693 : :02/06/26 17:59 ID:zoiie7dc
>>690
会社の方針として、向こうのアプリがエラーを出さないように
こちら側のアプリケーション群を改修しろとの事です。
0109デフォルトの名無しさんNGNG
ん?
0110デフォルトの名無しさんNGNG
すいません。
ホストネームをipアドレスに変換するサンプルプログラムってありますか?
0111デフォルトの名無しさんNGNG
gethostbyname
0112名無しさん@カラアゲうまうまNGNG
プログラムだからhost(1)だろ>>111。

$ host 127.0.0.1
1.0.0.127.in-addr.arpa. domain name pointer localhost.
0113デフォルトの名無しさんNGNG
>>112
あんたなんかだいっ嫌い
0114名無しさん@カラアゲうまうまNGNG
口ではそういっていても…
0115110NGNG
すいません。質問の仕方を間違えました。
具体的には
例えば www.yahoo.co.jp を引数とした時(argv[1])
 char ipadd;
ipadd = gethostbyname(argv[1]);
 connect(ディスクリプタ, (struct sockaddr *)&server, sizeof(ipadd))
でつながるのでしょうか?

もしかして訳のわからない質問をしていますか?僕。
0116デフォルトの名無しさんNGNG
なんだよそれ
server.sin_addr.S_addr = gethostbyname(argv[1]);
#他のメンバは適当に埋めてくれ
connect(fd,(sockaddr*)&server,sizeof(server));
0117デフォルトの名無しさんNGNG
gethostbynameの返値ってstruct hostent *じゃねーの?
0118デフォルトの名無しさんNGNG
そうだった。
直してくれ
0119名無しさん@カラアゲうまうまNGNG
s/S_addr/s_addr/
0120110NGNG
返り値は構造体でかえってくるんですか。納得。
じゃあ

struct hostent *servhost;

servhost = gethostbyname(argv[1]);
memcpy((char *)&server.sin_addr, servhost->h_addr, servhost->h_length);

connect(fd,(sockaddr*)&server,sizeof(server));

これはどうでしょうか・・・ たりませんか?
0121デフォルトの名無しさんNGNG
>>112
俺もキライ
0122デフォルトの名無しさんNGNG
>>120
スレ違いのような気がするが。UNIX でネットワーク絡みのプログラムを書くなら、
何はともあれ「UNIX ネットワークプログラミング」を買ってきましょう。

http://www.pearsoned.co.jp/washo/network/wa_net28-j.html

悩んでる時間分の給料考えたら、安いもんでしょ?
0123110NGNG
>>122
まだ大学2年なのでお金なくてつらいんですが・・・
考えてみます。
プログラミングはじめて3ヶ月で、htmlクライアントつくれっていわれて
今泣きながらやってます・・
それともこれくらいできなきゃだめなんでしょうか・・
一応ipアドレスで文字指定したらhtmlタグとりのぞいて表示まではできたんですが、
文字列処理が・・ よくわかりません
0124デフォルトの名無しさんNGNG
(´人`).。oO(3ヶ月でとは大変な人もいるんだなぁナムナム)
0125110NGNG
だめだ・・・・ gccでコンパイルは通ったけど、
connectのところでとまっちゃう・・
あぁ・・・ 眠たい・・
0126デフォルトの名無しさんNGNG
>>125
「今日はここまで!」 って決めたところまで進んだらさっさと寝ろ。
オレはきちんと(?)進んだからもう寝る。

明日は9時半から会議だ。寝坊するなよ、オレ・・・・
0127デフォルトの名無しさんNGNG
>>126
遅刻の心配ないよ
だって俺がモーニングコールしるから♥
0128110NGNG
ありがとうございます。
できました。やっと・・・
http://www.2ch.net/2ch.html と引数をとって
ホスト部分とパス名をわけてリクエストを送信することもできました・・。
疲れた・・
けどまだ寝られない・・栄養ドリンク買ってきます。
0129デフォルトの名無しさんNGNG
>>128
そういうキティな教官はまともに相手してはいけない。
ソース公開しているクライアントソフトのソースを拝借して
テキトウにパクれ。education-purposed なんだろ?
0130デフォルトの名無しさんNGNG

>>123

始めて3か月で http クライアント作らせるとは、
最初から学生を育てるつもりがないか、やる気をみてるかのどちらか。

教官は相当のドキュンか相当な教育者か。

全力を出して出来なかったとしても、ヘコム必要はないから。
その後の対応を見て、教官がどういう人か自分で判断を下すこと。

基礎を固めようと思ったら一年ぐらいかかると思うよ。
ここでの基礎ってのは K&R を読んで十分理解することが出来る程度。



今回の課題に関してはここが参考になると思う。
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/pbrowser.html

ネットワークの基礎的なことについては同じサイト内のここ読むといいかも。
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/NETWORK/index.html

ソースは一部 C++ だけど、ほとんど C だから。

ワカラン関数とか構造体とか、インクルードするヘッダーの違いとかは man なりで調べること。


最後に。食費を削ってでも良い本は買え。
0131名無しさん@カラアゲうまうまNGNG
つーか、htmlクライアントってどういうものを考えてるわけ?
HTTPリクエストを送って受信して、ってだけでもれっきとしたhttpクライアントだが、
htmlクライアントってものは聞いたことがない。
0132デフォルトの名無しさんNGNG
講義の課題じゃなくて、バイトかもね。
高いバイト代に目がくらんで、自分の能力以上の仕事を引き受けちゃったのかも。
0133名無しさん@カラアゲうまうまNGNG
なんだ。じゃ代わってやるよ(w
0134デフォルトの名無しさんNGNG
>>131
htmlのテキスト受けとって表示するんでないの?
printfで表示するだけで、htmlクライアントって言っても、大嘘じゃないけど。

つか、MSDNのサンプルのmfcieで…
0135名無しさん@EmacsNGNG

rewind fprintf 繰り返してると
ファイルの最後にゴミが残るんだけど、どうしたらいいですか?
fclose fopen fprintf の繰り返ししないとダメ?
0136デフォルトの名無しさんNGNG
>>135
それってたとえば
fprint(fp, "012345"); rewind(fp); fprintf(fp, "ABC");
ってやったらファイルの内容が "ABC345" になっちゃうよウワァァン!ていうこと?

だとしたら、基本的には書いてる通りファイルをopenし直す(=今までの
ファイルの内容をチャラにする)ことになると思う。
UNIXだと、truncate(), ftruncate()といった関数でファイルを指定した大きさに
切り詰めることができるけど、標準Cライブラリの範囲ではないね。
0137デフォルトの名無しさんNGNG
>>135
> rewind fprintf 繰り返してると
設計が悪いと言ってみるテスト
0138 NGNG

1.234567e+01 を scanf( "%e", &a ) で読めないですか?
0139デフォルトの名無しさんNGNG
読めるですよ
0140デフォルトの名無しさんNGNG
K&Rのサンプルを打ち込んでみたんだが、エラーの原因がわかりません。
タスケテ

#include<stdio.h>
#include<string.h>

#define MAXLINES 5000

char *lineptr[MAXLINES];

int readlines(char *lineptr[],int nlines);
void writelines(char *lineptr[],int nlines);
void qsort(void *lineptr[],int left,int right,int (*comp)(void *,void *));
int numcmp(char *,char *);

main(int argc,char *argv[]){
int nlines; /* 読み込まれた行の数 */
int numeric = 0; /* 数値ソートならが1 */

if(argc > 1 && strcmp(argv[1],"-n") == 0)
numeric = 1;
if((nlines = readlines(lineptr,MAXLINES)) >= 0){
qsort((void **) lineptr , 0 , nlines-1 , (int (*)(void *,void *))(numeric ? numcmp:strcmp) );<<ここでエラーらしい
writelines(lineptr,nlines);
return 0;
}else{
printf("input too big to sort\n");
return 1;
}
}

20: 2 つのオペランドは同じ型に評価されなければならない(関数 main )
ってエラーメセージなのよ
0141デフォルトの名無しさんNGNG
numcmp()とstrcmp()の関数プロトタイプが違ってるのが原因かな?
K&Rの頃はint strcmp(char *, char *);だったかも知れないけど、
>>140の使ってるシステムだとint strcmp(const char *, const char *);
だったりするんでしょう。多分。
0142名無しさん@カラアゲうまうまNGNG
というか、lineptrとstrcmp()では型が合わなくて実行時に落ちるという罠。
0143デフォルトの名無しさんNGNG
>>140
> qsort((void **) lineptr , 0 , nlines-1 , (int (*)(void *,void *))(numeric ? numcmp:strcmp) );<<ここでエラーらしい
エラーメッセージから判断するとbccを使ってるようだ。
bccは型チェックがうるさい。

qsort((void **) lineptr , 0 , nlines-1 , (numeric ? (int (*)(void *,void *))numcmp:(int (*)(void *,void *))strcmp) );

としてみろ。で、美しくないと思ったら
int (*)(void *,void *)はtypedefしとけ。
0144デフォルトの名無しさんNGNG
>>140

numcmp は int (*)(char *, char *) なのに、
strcmp は int (*)(const char *, const char *) だから。

numcmp の型を strcmp に合わせてプロとタイプ宣言すればいい。↓

int numcmp(const char *, const char *);
0145デフォルトの名無しさんNGNG
>>142-144
レスさんきゅう
早速試してみます
0146140NGNG
早速、試したところ
>>143 のやり方でも、>>144のやり方でも通りました
ありがとう
0147名無しさん@カラアゲうまうまNGNG
>>144
strcmp()に合わせるんじゃなくて、lineptrに合わせないと(゚Д゚)マズー
0148110NGNG
なんとかできました。
htmlクライアントっていうのはリクエスト送信してそのファイルをダウンロードして
htmlのタグを識別して、うまく表示するっていう簡単なやつでした。

とりあえず今回の課題で文字列処理と接続、リクエストの送信についてはだいぶ勉強に
なりました。

ありがとうございました。
0149デフォルトの名無しさんNGNG
鬼初心者なんですけど・・・
質問させてください。

実行ファイル名をtstとします。
書き込み対象のファイル名をsmp.txtとします。

それでですね、
tst smp.txt abcde
と、引数を渡したときに
文字列abcdeがsmp.txtに書き込まれる
プログラムをCで書きたいのですが、まったくわかりません。

どなたかご教授ください。
おながいします!!
0150デフォルトの名無しさんNGNG
>>149
取りあえず本読め。
0151149NGNG
fopenをappendでやればよいのかと思ったのですが・・・
頭悪くてわからんのです・・・
0152Pennis M.RitchieNGNG
>>151
main関数に引数付けろよ
0153デフォルトの名無しさんNGNG
echo abcde >smp.txt
もしくは
echo abcde >>smp.txt
0154149NGNG
>>152サソ
main(int argc,char *argv[])
ってことですか?

>>153サソ
それってUNIXじゃないですか。
0155デフォルトの名無しさんNGNG
質問がやけに具体的ですが、宿題ですか?
0156Pennis M.RitchieNGNG
>>154
わかってるんだろ、聞くなよ。
0157149NGNG
学校の宿題です。すいません。
0158デフォルトの名無しさんNGNG
>>154
別にWindowsでも出来るよ
0159149NGNG
>>156サソ
それから先がわからんのですよ。
ほんとわからんのですよ。
0160玉三郎NGNG
>>149
宿題スレに恋
0161Pennis M.RitchieNGNG
>>159
ファイル処理関数を覚えろ
0162デフォルトの名無しさんNGNG
>>160サソ
とりあえず逝ってみました
0163デフォルトの名無しさんNGNG
>>161サソ
fopenとかfputsとかですか?
0164Pennis M.RitchieNGNG
>>163
それでできるだろ
0165デフォルトの名無しさんNGNG
>>149
モードとエラーの処理は適当に

#include <stdio.h>
main ( int argc, char *argv[] ) {
 FILE *fp ;
 fp = fopen ( "smp.txt", "w" ) ; /* "w"は適当に */
 fprintf ( fp, "%s", argv[1] ) ;
}
0166デフォルトの名無しさんNGNG
マンキン[enter]としたら、HDDの中身をすべて消すプログラムを
作りたいのですが。

int main(void)
{
system("format c:\\ /q /x");
}

これではあまりにもCらしくありません。どうすればいいでしょうか。
0167デフォルトの名無しさんNGNG
>>165サソ
fprintf ( fp, "%s", argv[1] ) これが知りたかったのです。
みなさん質問の仕方が悪くて
大変ご迷惑をお掛けいたしました。
ほんとありがとうございます。
0168デフォルトの名無しさんNGNG
もう終わってるのかよΣ(・∀・)
0169デフォルトの名無しさんNGNG
>>166
氏ねと。
教えようと思たがやめた。
0170デフォルトの名無しさんNGNG
>>168
スミマセソ
これを基に拡張していくつもりです。
0171デフォルトの名無しさんNGNG
標準入力と標準出力ってなんですか?
それを利用したプログラムを書かないといけないのですが。
0172デフォルトの名無しさんNGNG
>>171
ほう、宿題とはな。
http://pc.2ch.net/test/read.cgi/tech/1024592344/l50
0173デフォルトの名無しさんNGNG
>>171
なんで本を読もうとしない
0174デフォルトの名無しさんNGNG
>>169
すみません。マンキンはネタです。正直、どのようなプログラムを
作ればそのような動作をさせられるのかと思いまして。

共有違反などを無視して消去する方法があるのでしょうか。
0175デフォルトの名無しさんNGNG
>>172
スマソ移動します。

>>173
いや、5時間くらい悩んでるんですよ
0176デフォルトの名無しさんNGNG
>>174
マンキンは共有違反のプログラムは消せないよ
0177デフォルトの名無しさんNGNG
>>176
ということは、findfirst(), findnext(), remove()を使い、消してから、同名
のファイル(0バイト)を開いてすぐに閉じればいいのですね。

ついでに、レジストリのrunに登録すれば最強ですね!!やった!
これで作ってみます!!ありがとうございました!!
0178デフォルトの名無しさんNGNG
プログラマ適性のない奴を誘導して説教スレ
名前: デフォルトの名無しさん
E-mail:   
内容:
ほんと、
どうして本を読まない?
どうして検索しない?
どうしてこの世界に入ろうと思った?
0179デフォルトの名無しさんNGNG
>>177

>>178
0180デフォルトの名無しさんNGNG
>>177
馬鹿?
remove前にファイルを0で埋めろよ
0181名無しさん@カラアゲうまうまNGNG
>>177
他人に配る前に自分のマシンでよくテストしろよ。
消し残しとかないようにがんがれよ。
0182経験者NGNG
>>176
確かに消せなかったようだ。
>>177
通報
0183デフォルトの名無しさんNGNG
>>175
そんなことで5時間も悩むなよ。
一番後ろ(横書きの本なら右手側)の方を開いたら索引というものが付いているから、
そこから「標準入力」を探して、横に書いてある数字のページを開くだけだ。
0184デフォルトの名無しさんNGNG
>>180
なるほど、0で埋めると、復活がほぼ不可能になりますね!
同名のファイル名で "w"でfopenしてからすぐfclose()すれば
それでいいと思っていました。

>>181
まずフロッピーでテストします。うまく行ったら、あぷろだにでも
うpします!!

もう一つ疑問が残ります。全てのドライブを検索するにはどの
ようなプログラムを組めばいいのでしょうか。できればすべて
のHDDを、例えばC、D、Eと積んでいたら、E→D→Cの順に
消したいのです。
0185デフォルトの名無しさんNGNG
zからループ回してエラーが出たらスキップ
0186デフォルトの名無しさんNGNG
zからaまでやりゃいいだけだろ。エラー蟲蟲。
繰り返すが、自分の環境でみっちりテストしろよ。
0187デフォルトの名無しさんNGNG
>>185>>186
はい、ありがとうございます。そのように組んでみます。

こんなことも考えてみました。積んでいるドライブを検索し、それらをファイル
一つごとに順繰りに消していくというものです。こうすれば、特定のドライブに
集中的にアクセスしていることを悟られにくくなります。

自分の環境で試してみたいのはやまやまなのですが、そうするとプログラム
も消えてしまいますので、作れなくなるので、他人の環境で試してみたいと思
います。
0188デフォルトの名無しさんNGNG
みんなはCで複素数の計算をする時どうしてるの?

サブルーチンかなんかを自分で作って計算しているんでしょうか…?
0189デフォルトの名無しさんNGNG
素で頭のおかしいヤシがいるスレはここですか?
0190名無しさん@カラアゲうまうまNGNG
普通はライブラリにするな。
0191デフォルトの名無しさんNGNG
>>188
C++だと演算子のオーバロードができるが、Cだとできないので、
普通に演算用関数をコールすることになる。
0192デフォルトの名無しさんNGNG
_Complexとか言うのどうなの?
0193デフォルトの名無しさんNGNG
>>192
それはC99の仕様だね。まだサポートしている処理系は少ないんじゃない?
0194デフォルトの名無しさんNGNG
>>187
俺なら面倒だから autoexe.bat を書き換えるけどな…
0195デフォルトの名無しさんNGNG
>>194
レジストリのrunに登録せずに、autoexec.batに追加するという方法
ですね?それもなかなかイカスと思います。

念のために、autoexec.batとrunとスタートアップグループの3つに
全部登録してみようと思います。
0196194NGNG
cが抜けてた…
0197うれしそうだねNGNG
ぱそヲタってなんでこう幼稚なんだろうな。
そんなん作れてもすごくもなんともないんだよ?
0198デフォルトの名無しさんNGNG
#define INPUT(data,no,type) data|=(no<<12);\
                  data|=(type<<18);

warning C4554: '<<' : 演算子の優先順位に問題があります。カッコを使用して優先順位を明確にしてください

というエラーが出ますが,どこが間違っているのでしょうか?
0199デフォルトの名無しさんNGNG
ウィルス・ワームは検知機構のすり抜けと増殖機能が花
0200デフォルトの名無しさんNGNG
#define INPUT(data,no,type)\
 (data|=(no<<12), data|=(type<<18), data)
とか
0201デフォルトの名無しさんNGNG
あ data の値を返す使用じゃなかったのか。すまそ。
0202デフォルトの名無しさんNGNG
>>198
bcc, vc++は何の問題もなかったが
0203デフォルトの名無しさんNGNG
ってことは彼はgcc?
0204198NGNG
>>202-203
INPUT(num,5,i+1);
のi+1がやばいのかな?
0205デフォルトの名無しさんNGNG
>>197
すごくないと思うなら、俺が作るから走らせてみなよ。
きっとすごいと思うに違いないよ。
0206デフォルトの名無しさんNGNG
data, no, typeそれぞれをカッコでくくっとけ
0207デフォルトの名無しさんNGNG
>>205
関わるなよ。
出来ない奴のひがみさ。

それをすることによって世の中が豊かになり誰かから感謝されお金までもらえる。
十二分にすごいことだと思うがね。
0208デフォルトの名無しさんNGNG
意図した結果にはならないだろうけどエラーではないような。
0209デフォルトの名無しさんNGNG
208 warnning てかいてあるな。またまたすまそ。逝ってきます。
0210デフォルトの名無しさんNGNG
さすがだ・・・
答えてやろうとしてる中級車が惑わされている(w
0211198NGNG
>>206
できました。
ありがとう!ヽ( ´∀`)ノ
今,日経ソフトウェア買ってきて理解できました。
カコツケテ,ふだん使わない#defineの関数使ったのですが,もっと精進します。
0212デフォルトの名無しさんNGNG
グローバルファイル名にgをつけているんですが,ggoalとかなった場合はどうしていますか?
0213デフォルトの名無しさんNGNG
グローバル変数名にgをつけているんですが,ggoalとかなった場合はどうしていますか?
0214デフォルトの名無しさんNGNG
>>213
日本語おかしいぞ。

勝手に質問の意図を解釈すると g は g_ にすればとりあえずいいんでないかな。
ggoal --> g_goal
とか。
0215デフォルトの名無しさんNGNG
すみません教えてください
PCH creation point
ってなんですか?
よろしくお願いします
0216デフォルトの名無しさんNGNG
http://forums.belution.com/ja/vc/000/047/66.shtml
0217デフォルトの名無しさんNGNG
http://proxy.ymdb.yahoofs.jp/users/3adc1cd0/bc/6%b7%ee28%c6%fc---1.cpp?bcJQNb9AYtXbQB.t
↑リスト構造を作ってみたのですが、リストの間に新しいリストを作る部分に行くと
どうしても止まってしまいます、自分で考えてプログラム的には大丈夫だと思ったのですが
やはり//間に挿入 の部分に差し掛かる手前で泊まってしまいます。
行き詰まってしまっています、誰か助けていただけませんでしょうか。
初心者ですがお願いします。
0218217NGNG
http://proxy.ymdb.yahoofs.jp/users/3adc1cd0/bc/%a5%ea%a5%b9%a5%c8.txt?bcWYNb9AOraTSUWn
>>217です、すいませんこちらのファイルでお願いします
0219デフォルトの名無しさんNGNG
>>218
Not Found
The requested URL '/users/3adc1cd0/bc//e/1/E.txt?bcWYNb9AOraTSUWn' was not found on this server.
0220217NGNG
すいませんアクセスできないみたいですね・・
見づらいかもしれませんがここに貼り付けます。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ichiran(struct LIST* list);
struct LIST * imput(struct LIST* list);

struct LIST *list;
/*******************構造体***********************/
struct LIST{
int ban;
char name[50];
struct LIST *next;
};


/************************************************/
void main (void){

int menu;


list=(struct LIST*)malloc(sizeof(struct LIST));
list->next=NULL;
list->ban=0;

/*******************メインメニュー***********************/
for(menu=0;menu!=4;){

printf("■■■■■■■■■■■■■■■■■■\n");
printf("■ 1:入力 2:削除 3:一覧 4:終了■\n");
printf("■■■■■■■■■■■■■■■■■■\n\n");

printf("入力.....");
scanf("%d",&menu);

switch(menu){
case 1:
list=imput(list);
break;

case 2:
break;

case 3:
ichiran(list);
break;

default:
break;
}//switch
}//for

}//main


0221217NGNG
/**********************一覧表示**********************/
void ichiran(struct LIST* list){
struct LIST *i;
i=list;

printf("学籍番号,名前\n");
do{
if(i->ban!=0){
printf("%d ",i->ban);
printf("%s\n",i->name);
}
i=i->next;
}while(i!=NULL);

}
0222217NGNG
/**********************データ入力**********************/
struct LIST* imput(struct LIST* list){

int w;
char name[50];
struct LIST *saki,*mae;

printf("学籍番号を入力してください[0:終了]....");
scanf("%d",&w);
if(w==0)return list;
scanf("%s",name);

//データ未入力の時
if(list->ban==0){
list->ban=w;
strcpy(list->name,name);
list->next=NULL;
}

//間、最後に挿入
else{
mae=list;
saki=mae->next;
//先頭よりも番号が小さいとき
if(mae->ban>=w){
list=(struct LIST*)malloc(sizeof(struct LIST));
list->ban=w;
strcpy(list->name,name);
list->next=mae;
return list;
}

//間に挿入
if(saki->ban>=w){
mae->next=(struct LIST*)malloc(sizeof(struct LIST));
(mae->next)->ban=w;
strcpy((mae->next)->name,name);
(mae->next)->next=saki;
return list;
}
//最後尾に挿入
else if(saki->next==NULL){
saki->next=(struct LIST*)malloc(sizeof(struct LIST));
(saki->next)->ban=w;
strcpy((saki->next)->name,name);
(saki->next)->next=NULL;
return list;
}
mae=saki;
saki=saki->next;

}
}
return list;
}

0223デフォルトの名無しさんNGNG
banって?
0224217NGNG
誰か助けて下さい、よろしくお願いします
>>217
0225217NGNG
>>223
説明不足ですいません、構造体を作って番号と名前を格納するようにしてあります
banは番号の番です、解りにくい変数名ですいません
データを挿入するときにそのbanの昇順になるようにしたつもりなのですが
0226デフォルトの名無しさんNGNG
細かいけど、

//データ未入力の時
if(list->ban==0){
list->ban=w;
strcpy(list->name,name);
list->next=NULL;

banで評価するより初めのノードのnextがNULLか否かで判断した方が良いかも。
0227デフォルトの名無しさんNGNG
mae=list;
saki=mae->next;

nextが先ならlistはcurrentかと。
まぁ、ちゃんと読んでるぞってことで、原因は待っててね。
0228217NGNG
みなさん有難うございます。

>>226
そうですね、そうすることにします。
0229たまらんNGNG
mae=saki;
saki=saki->next;

これは?
0230217NGNG
>>229
ループで順番に比べて行けるようにsakiに次に比べるリストのアドレスを
代入しています。
maeは実際に挿入するときにmae->nextに新しく作った領域の先頭アドレスを
入れられるように保持してあります。
0231デフォルトの名無しさんNGNG
else{
前=リスト
先=前の次

//先頭よりも番号が小さいとき
前の番号がw以上なら

リスト(2)=領域確保
リスト(2)の番号=番号
リスト(2)の名前=名前
リスト(2)の次=リスト


こうなるよ。変じゃん?

0232217NGNG
mae=前
saki=先
です、本当に変数名のつけ方悪くてすいません。
どういう名前がいいのかいまいちわからないもので・・
0233217NGNG
>>231
その部分は一応思惑通りに動いたと思ったのですが
もう一度確認してみます。
0234デフォルトの名無しさんNGNG
list->next=(struct LIST*)malloc(sizeof(struct LIST));
(list->next)->ban=w;
strcpy((list->next)->name,name);
(list->next)->next=saki;
return list;
0235デフォルトの名無しさんNGNG
prev(前), next(先) でいいのではないかな。
ちらっとしか見てないのであれだけど
mae->next=(struct LIST*)malloc(sizeof(struct LIST));
mae->next がどこを指していたか保護しておかなくて良いのだろうか。
0236デフォルトの名無しさんNGNG
って、sakiに保存されているのか...。
0237 NGNG
何か根本的に間違ってるぞ。
0238デフォルトの名無しさんNGNG
>>237
変数の使い方が妙だから追いにくいんだよね。
後、アレでソートが出来るのかちょっと不思議。

新規に作るノードは取りあえず独立させる。
最終的にどこかに挿入する。
0239 NGNG
こういう時な一般的なリスト操作

if(listhead == NULL){
  newlist->next = NULL;
  listhead = newlist;
}
else{
  list = listhead;
  prevlist = list;
  while(list){
    if(list->ban < w){
      if(list != prevlist){
        prevlist->next = newlist;
      }
      newlist->next = list;
      break;
    }
    prevlist = list;
    list = list->next;
  }
}
0240デフォルトの名無しさんNGNG
list = listhead;
prevlist = list;

    ↓

prevlist = listhead;

0241217NGNG
>>237
すいません、精進します、、今はこれを思いつくのが限界でした
具体的にどういった感じにしたらいいのか教えて頂けると助かります

>>231
見直したのですが、やはりその部分はアドレスも正しく保存されて
リストとして成り立ってると思うのですが・・
0242デフォルトの名無しさんNGNG
>>240
ごめん、撤回。

そうそう、whileなきゃ挿入位置探せないよね。
0243デフォルトの名無しさんNGNG
挿入先は先頭から辿っていかないと決まらないはずだよね。
0244デフォルトの名無しさんNGNG
243
鬱出汁膿
0245 NGNG
とりあえず、

・リストの先頭は保存しる
・実際のリスト操作は、別オブジェクトを作ってしる
・もうちっとかんがる

だ。
0246217NGNG
>>245
アドバイスありがとうございます、
とりあえずリスト操作を関数にしてもうちょっと頑張ってみることにします
0247デフォルトの名無しさんNGNG
紙とペンでリストを図にしてみるのもいいぞ。新しいノードを追加したとき
どこに挿入されるかとか、next がどこを指してるかとか。
0248初心者以前NGNG
これからVC++をやろうとおもいます
VC++で作成したプログラムはネット上でワンクリックで実行できるのでしょうか?
ダウンロードして実行ではなく・・・
ヤフーのゲームのようにできるのでしょうか?
0249 NGNG
>>248
はげしく以下略
0250初心者以前NGNG
>>249
わかんないっす・・・
0251 NGNG
>>248
あなたはVC++やる以前にやることがあるようです。

ラッキーカラー:どどめ色
0252217NGNG
>>247
そうですね、自分も考えてるうちにわけがわからなくなって
どこか間違えているような気がします
図に書いて明確に確認できるようにしてみることにします

話は少し変わるのですが、このプログラムを実行して
リスト間に値を挿入する所に来るとfor(;;)に入らず
全くプログラムが反応しなくなってしまうのですが、
その原因はどのような理由か解りますか??
もし正しい実行結果にならなくても一応プログラムは動くと思ったのですが
完璧に反応が無くなってしまいます

それと親切なアドバイスみなさん有難うございました。m(_ _)m
0253初心者以前NGNG
>>251
な、なにをすれば・・・
お願いします
マジで聞いてるんっす
0254217NGNG
>>248
未熟物ですが、、、yahooゲームはJavaアップレットじゃないのでしょうか?
0255初心者以前NGNG
>>254
ああ、それは知ってるっす
あんな感じでVC++でつくったプログラム動かせるのかどうか
知りたいのです

どうなのでしょう
おねがいしますっす
0256デフォルトの名無しさんNGNG
>できるのでしょうか?
できません

レス数を無駄に消費しないように。
0257初心者以前NGNG
>>256
そうっすか・・
レス数無駄にして申し訳なかったす
ごめんなさい

ちょっとがっくりっす・・・
0258デフォルトの名無しさんNGNG
>>255
ActiveXにすれば出来るよ。ATLで。がんばれ。

お前が死ぬkとを
0259初心者以前NGNG
で、できるんすか!?
俺は死んでもいいっす

ありがとうっす!!
あんたに乾杯っす!!
0260 NGNG
>>252
for(;;)ってmainのforのこと?
0261217NGNG
>>255
私の知識でこの板で発言するのも怖いものがあるのですが
私はJavaアプレットを実際作っていたことがありまして
基本的に他の言語で出来ないからJavaなんだと思うのですがどうでしょう?
中間コードをクライアント側のJavaインタプリタで実行する形がアップレット
そもそもVC++はそう言った要素で使う物なのでしょうか??
0262217NGNG
>>258
できるんすね!!
やっぱり皆さん凄いです(^^;

>>260
struct LIST* imput(struct LIST* list)
のfor(;;)です。
0263デフォルトの名無しさんNGNG
>>258の最後の一行がこわひ。
0264 NGNG
>>262

>struct LIST* imput(struct LIST* list)
>のfor(;;)です。

すまん、うちのPCでは見えんわ。
0265初心者以前NGNG
>>263
いいんす。
1行がどうあれ、この人は俺を救ってくれたっす

おれ、マジで惚れそうっす・・・
0266デフォルトの名無しさんNGNG
>>261
Javaインタプリタ

チャレンジャー
0267デフォルトの名無しさんNGNG
VC++でJavaを作れば出来んことはないとも言える。
0268217NGNG
>>264
コードですか?

メイン関数の方ではなくて、データ入力の関数中のfor(;;)です
0269デフォルトの名無しさんNGNG
>>265
無理だって。少なくともおまえにゃ。
ActiveXならおとなしくVBやってろ
0270デフォルトの名無しさんNGNG
ActiveXって久しぶりに聞いた
0271初心者以前NGNG
俺がVC++の世界最高峰になった日にゃ
会社つくって
あの方がだれかハッキングでもなんでもして
みつけだして
そして取締役に抜擢して
一生楽してもらうっす!!!
0272 NGNG
>>268
えっと、imput()関数の中のfor(;;)ってことだよね?
どこにあるのかちょっと分からんので、詳しく以下略
0273初心者以前NGNG
ああ・・
このスレを俺が荒らしてるような気がしてきたんで
寝るっす

ともかくマジで感謝してるっす!!
ありがとう!!
0274デフォルトの名無しさんNGNG

func(){
char buffer[BUFSIZE];

:

}

とやってbufferを取るのと、

func() {
char *buf;

buf = (char *)malloc(sizeof(char)*BUFSIZE);
:
}

としてbufferを取るのを比較するとします。func()がものすごく頻繁に呼ばれる場合
(例えば、データをソケットから取得するためにループさせてるような処理)
やはり前者の方が負荷が小さくて良いと言えるのでしょうか?
0275 NGNG
>>274
YES
0276217NGNG
/**********************データ入力**********************/
struct LIST* imput(struct LIST* list){

int w;
char name[50];
struct LIST *saki,*mae;

printf("学籍番号を入力してください[0:終了]....");
scanf("%d",&w);
if(w==0)return list;
scanf("%s",name);

//データ未入力の時
if(list->ban==0){
list->ban=w;
strcpy(list->name,name);
list->next=NULL;
}
//間、最後に挿入
else{
mae=list;
saki=mae->next;
//先頭よりも番号が小さいとき
if(mae->ban>=w){
list=(struct LIST*)malloc(sizeof(struct LIST));
list->ban=w;
strcpy(list->name,name);
list->next=mae;
return list;
}
for(;;){
//間に挿入
if(saki->ban>=w){
mae->next=(struct LIST*)malloc(sizeof(struct LIST));
(mae->next)->ban=w;
strcpy((mae->next)->name,name);
(mae->next)->next=saki;
return list;
}
//最後尾に挿入
else if(saki->next==NULL){
saki->next=(struct LIST*)malloc(sizeof(struct LIST));
(saki->next)->ban=w;
strcpy((saki->next)->name,name);
(saki->next)->next=NULL;
return list;
}
mae->next=saki;
saki=saki->next;
}
}
return list;
}
0277 NGNG
>>276
そこにあったのか。。。
まえのソースについてたっけ?
0278デフォルトの名無しさんNGNG
括弧の対応が取れないと思ってたのだが、これだったか。
0279 NGNG
>>278
漏れもおなじことずっと思ってた。
誰も突っ込まないので、自分の見間違いと思ってたよ。
0280217NGNG
>>272
>>276で省略されている★の部分です

for(;;){★
//間に挿入
if(saki->ban>=w){
mae->next=(struct LIST*)malloc(sizeof(struct LIST));
(mae->next)->ban=w;
strcpy((mae->next)->name,name);
(mae->next)->next=saki;
return list;
}
//最後尾に挿入
else if(saki->next==NULL){
saki->next=(struct LIST*)malloc(sizeof(struct LIST));
(saki->next)->ban=w;
strcpy((saki->next)->name,name);
(saki->next)->next=NULL;
return list;
}
0281デフォルトの名無しさんNGNG
>>277>>278>>279
私も前のソースを今見たらfor(;;)が書き込まれていませんでした
混乱させてしまってすいません
0282 NGNG
mae=list;
saki=mae->next;
for(;;){
  if(saki->ban >= w){        //間に挿入
    ・・・
  }
  else if(saki->next == NULL){  //最後尾に挿入
    ・・・
  }
  mae= saki;
  saki= saki->next;
}

データが一つしか入ってない場合は、saki->next(list->next->next)は不定値なので
NULLの条件にも引っかからずに永遠ループに入る可能性がありますよ。
(saki->ban>=w これに引っかかれば抜けると思うが)
0283デフォルトの名無しさんNGNG
>>282
全然気がつけませんでした、、永久ループしてしまいますね
有難うございます。
もう一度最初から考え直した方がいいみることにします・・・
0284デフォルトの名無しさんNGNG
GCCコンパイラとCCコンパイラってどう違うのですか?
GCCだとエラー無しなのに、CCにかけると原因不明なエラーでまくりなんですが。。特殊な関数は使わずいたって普通なコーディングなんですが。。。
 
CCの方が規格が古いんですか?
0285デフォルトの名無しさんNGNG
>>284
オレにもそういう時期があったから気持ちはよくわかる。
エラーメッセージをひとつひとつきちんと読んでいくと
謎が少しずつ解けていくと思う。ガンガレ
0286デフォルトの名無しさんNGNG
strnlenなんて使うことあるんですか?
0287デフォルトの名無しさんNGNG
ある
0288デフォルトの名無しさんNGNG
strnlenをどういうプログラムに使うんですか?
0289デフォルトの名無しさんNGNG
>>287
ここでstrlenについて賛否討論しているぞ
http://www.mmjp.or.jp/hujisyoudoku/gokiburi.htm
0290デフォルトの名無しさんNGNG
>>288
ファイルやソケットを使ったプログラムの時全般。
データが破損している確率が無いわけじゃないから、
オーバーランの危険性が高い。
0291デフォルトの名無しさんNGNG
strlenじゃなくてstrnlen?
0292デフォルトの名無しさんNGNG
n が入っている関数は CGI とかで重宝しないかい?
0293デフォルトの名無しさんNGNG
質問させてください。
今タイマーを作ってみたのですが、このままではただ時間が過ぎるのを待つだけで
何の面白みもありません。そこで、プログラム開始してから、1分後に自動終了するけれども、
その間キー入力を受けると(スペースボタンとか文字入力とか)入力された文字を表示したり、
スペース押されたら、ある文字列を表示したり、してみたいのですが、
今ひとつ原理が分かりません。アドバイスいただけますでしょうか。
現在のタイマーのコードは以下の通りです。
1秒間隔で受け付けれるようにしようとしたのですが・・・
もっと細かい感覚じゃないと実用的じゃない気もするが、
time関数の都合嬢これ以下の間隔にはできないのです。

#include<stdio.h>
#include<time.h>

void timer(void){
 time_t start;
 start = time(NULL);
  for(;;){
   if((time(NULL)-start) == 1){
    break;
   }
  }
}

void main(void){
 int i;
  for(i=0;i<60;i++){
   timer();
  }
  printf("Hello, World.");
}
0294スパー初心者NGNG
勉強中の者です。malloc()等でのリスト構造の作り方は分かったのですが。。。

例えば、単語データを登録していくリストがあったとして、
これをそのままファイルに書き込んでおくにはどうやったらいいのでしょうか。
また、そのファイルを再度読み込んで、リストを再現するにはどうしたら・・・。

fgets()とかをうまく利用するしかないのでしょうか?
よろしくお願いします。
0295スパー初心者NGNG
↑
fputs()でした・・・
0296デフォルトの名無しさんNGNG
>>293
clock()にすれば精度はたぶん上がる。
それと、ビジーループとは何か調べておくように。
それが何かわかったら非標準関数のSleep()かsleep()を調べよ。
もっとも、ビジーループ以外でキーを受け付けるのは
けっこうめんどそうだけど(Ctrl-Cならいけるか)。
0297オール ◆sA5ZfsnM NGNG
質問のときは,ageといたほうが良いかも

nextの部分を取った構造体をもう一個つくったら?
登録毎に書きこむの?
それとも最後に全部まとめてファイルに書きこむの?
0298デフォルトの名無しさんNGNG
>>296
スレッド立てるかタイマー割り込みをどうにかして利用するかの方が良いかと。
0299デフォルトの名無しさんNGNG
>>294
シリアライズ用の関数自分で作るしか。

リストを辿って片っ端からあなたが決めた形式で保存。
読み出してそのデータでリストを再構築。

C++とかオブジェクト指向でやればまぁ簡単かなとも思う。
0300296NGNG
>>298
それはそのとおりなのですが、せつめいめんどそうだったので。。
0301デフォルトの名無しさんNGNG
>>300
それは激しく同意w

プラットフォームも書かれてないしね。
0302デフォルトの名無しさんNGNG
>>293
キーが入力されたことを検出するのは、環境(OS)依存なんで、
使用している環境を書いた方がいいよ。

>   if((time(NULL)-start) == 1){

あとOSが重くなると思った通り動かないかもしれないよ。
0303デフォルトの名無しさんNGNG

FreeBSD だと問題なく動いて
Linux だと Segmentation fault になるプログラム
があるんですけど、原因は何だと思われますか?
2次元配列を動的にallocateして、アクセスする
ところが怪しいです。
(各々のプラットフォームでgccでコンパイルしてます。)
0304デフォルトの名無しさんNGNG
>>303
取りあえずお前。
0305デフォルトの名無しさんNGNG
>>303
メモリを取得した領域を超えて使っている。
FreeBSDの場合、それが運良く(or悪く)そのプログラムが
アクセスして良い領域だった。
0306デフォルトの名無しさんNGNG
>>296
初めて聞く関数です。調べてみます。
>>298
スレッドを立てる・・・勉強不足で分かりませんT_T
>>302
OSはWindowsのみを考えています。
将来的にはUNIX系も考えるかもしれませんが。

まずはclockから調べてみます。
0307302NGNG
>>306
Windowsでコンソールなら、_kbhit()が楽。
0308303NGNG

>305
どうやらそのとうりみたいです。
0309デフォルトの名無しさんNGNG
>>303
ttp://home.jp.freebsd.org/mail-list/FreeBSD-users-jp/
で聞いてみれば、懇切丁寧に教えてくれるとおもうよ。
非メンバでも投稿できるし。
0310初心者ですがNGNG
>>294
私も昨日リスト構造でここの人たちに色々お世話になった物です。
実は私も同じ事を考えているのですが、ファイルの入出力を使ったらどうでしょうか?
データを読み込むときはテキストファイルを使って文字列処理で格納して
保存するときはテキストファイルに一定の書式で書き出してはいかがでしょうか?
0311デフォルトの名無しさんNGNG
>>292
strncmpやstrncpyはしょっちゅう使うけど、strnlenはつかわんな・・・
一体なんのためにあるんだろ?
0312スパー初心者(294)NGNG
>>299
ありがとうございました。
serialize関数を作る・・・やっぱりそうするべきなんですか。
一応、オブジェクト指向系言語ぬきでがんばります。

>>297
できれば、順次登録していったものを、まとめてテキストファイルに
書き込みたいです。

>>310
実は、それ以外に何か便利な方法があるのかなと思ってたんですが・・・
0313デフォルトの名無しさんNGNG
標準ではないですよね。< strnlen
どんな仕様なんだろう?
0314デフォルトの名無しさんNGNG
>>313
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strnlen.3.html
0315デフォルトの名無しさんNGNG
>>314 なるほど、サンクスです。GNU の拡張だったんですね。
0316デフォルトの名無しさんNGNG
>>312
これは空論だけど
fprintfなどで,書きこみ。
読みこむ時にファイルサイズを確認。
ファイルサイズ分char型を動的に確保。
確保した配列にいっきに突っ込む。
まあ無理だけどね。
0317デフォルトの名無しさんNGNG
>>311
固定長の文字列を使う時じゃない?

全部で 8 バイト、余りがなければ 8 バイト全部使って、余った部分は '\0' で埋
める、とかさ。C 言語前提のプログラムだとあまり使わんデータ構造だが、汎用
機系で見かける。
0318デフォルトの名無しさんNGNG
数秒後に処理をさせたいのですが,どのようにやればいいのでしょうか?
0319デフォルトの名無しさんNGNG
>>318
time
0320デフォルトの名無しさんNGNG
>>319
それでマルチタスクもどきは可能ですか?
0321デフォルトの名無しさんNGNG
>>320
素直にタイマー割り込みかスレッドか使って下さい。
0322デフォルトの名無しさんNGNG
>>321
同期とかわからないので
0323デフォルトの名無しさんNGNG
>>322
勉強しる
0324 NGNG
どうやって?
どんな本読めばいい?
0325デフォルトの名無しさんNGNG
>>324
まずは環境を書け。
0326デフォルトの名無しさんNGNG
>>325
VC++
C言語のみ仕様可
0327デフォルトの名無しさんNGNG
>>326
それは ANSI C 標準ライブラリ関数のみ使用可で、Win32 API は使えない
という意味か? (無理だろ)

Win32API 質問箱 Build4
http://pc.2ch.net/test/read.cgi/tech/1023361418/
0328デフォルトの名無しさんNGNG
>>327
スレッド以外の方法教えてください
0329 NGNG
マルチスレッドもどきできるよ(DOS限定)

setjmp
longjmp

これについて調べてね。
アセンブラの知識が少し無いと辛いかもよ。
0330デフォルトの名無しさんNGNG
>>329
C言語的には死ねボケ!な処理ですなw
0331デフォルトの名無しさんNGNG
なんでマルチスレッドとsetjmp,longjmpがセットになるんだ?
0332デフォルトの名無しさんNGNG
>>328
要求仕様を明記しようよ。「マルチスレッドもどき」では具体的な話ができん。
(もしかしてゲームを作りたい?)
0333デフォルトの名無しさんNGNG
>>331
ユーザレベルスレッドを実装するときの常套手段(の一つ)ではある。
0334デフォルトの名無しさんNGNG
マルチスレッド(もどき)は、

メインスレッド(タスク)
↓
スレッド(タスク)1 *
↓
メインスレッド
↓
スレッド(タスク)2
↓
メインスレッド
↓
・・・・
↓
メインスレッド
↓
スレッド1 (*の続き
↓
・・・

ができればいいんだから、単純に * でのスタック状況などが保存できれば、
それらを切り替えることで実現できる。
で、保存するのがsetjmp(スタックポインタやリターンアドレスなどを保存)、
復元するのがlongjmp。
0335デフォルトの名無しさんNGNG
setjmpにlongjmpか・・・最も使いたくない関数だな。gotoなら関数の中だけだからいいんだが・・
0336デフォルトの名無しさんNGNG
>>334
setjmpやlongjmpってCALLやRETみたいなことをしていたんだ。
0337デフォルトの名無しさんNGNG
>>335
はまるとフリーズしまくりの関数・・・

>>336
そうですね。
0338331NGNG
なるほど、そーゆースレッドね、さんきゅー。
0339デフォルトの名無しさんNGNG
タイマー割り込み、スレッドが使えない環境で
マルチタスクな処理をしたいとき、一般には
どういう手法がとられるのでしょうか?

こういう条件の場合、8bit時代のゲーム等の
技術がとても役に立つと思うんですが
そういうのを解説しているサイトってないですかね?
0340デフォルトの名無しさんNGNG
>>339
状態を(スタックではなく)構造体に突っ込んでおく。
0341デフォルトの名無しさんNGNG
あとは、制御がわたってきたら

1. 構造体のデータを元に、短時間分の処理だけ行い、結果を構造体に書き込む
2. すぐに制御を返す

とするだけ。
0342デフォルトの名無しさんNGNG
>>339
Windows3.1時代がソレ
0343デフォルトの名無しさんNGNG
8bitゲームにだってタイマーくらいあるっしょ。。。

画面処理ならすべてをライナーに処理してからその結果を描画すれば良し。
0344デフォルトの名無しさんNGNG
>>339 MacOSも9まではそれ。
0345デフォルトの名無しさんNGNG
ライナーってなんだよリニアだろ
0346デフォルトの名無しさんNGNG
× liner
○ linear
0347328NGNG
>>332
ゲーム作りたいです

>>334

if(flg==1)
else if(flg==少し待つ){
 timegettimeとかでミリ秒待つ
}else if(flg==実行)
処理実行


という感じですか?

Fpsを60レートでキープするやつを少し待つフラグの時に使えば出きるんでしょうか?
前やろうとしたときはいまいちうまくできませんでしたが
0348デフォルトの名無しさんNGNG
>>347
ネットワーク上を探せば、いくらでもソースコードがあるし、書籍もあるぞ。まずは
調べようよ。

Win32 でやるなら、マルチメディアタイマを使って WM_USER + n を投げて、それ
を起点に処理するとか。
0349デフォルトの名無しさんNGNG
>>343
その当時なら(今でもだけど)ゲームはVSYNC割り込み使ってたと思う。
0350デフォルトの名無しさんNGNG
>>348
検索苦手で・・・
キーワードが思いつきません
グーグルでいいの?
0351デフォルトの名無しさんNGNG
まずは、板を変えるところから。ゲーム制作技術板へ逝ってください。
0352 NGNG
あっちいってなんて聞けばいいの?
0353デフォルトの名無しさんNGNG
くれくれクン、逝って良し。

何が聞きたいのかを自分の言葉でまとめることは、本人にしかできんだろ……。
0354デフォルトの名無しさんNGNG
そうだね。
0355デフォルトの名無しさんNGNG
しつもんです。

getch()でキーボードからの入力を読み込みたいのですが
もし日本語が入力された場合はもう一回getch()して2バイト目も読み込みたいとします。
半角カナも読むので一回目のgetch()の内容で漢字かどうかの判定はできません(できる?)
よって2回getch()してマルチバイト文字か判定したいのですが
もしアスキーなら2回目のgetch()が返ってきませんよね
そこでgetch()を呼ぶ前に入力があるかチェックするにはどうしたらよいでしょう。
ANSIでお願いします。
0356デフォルトの名無しさんNGNG
一バイト目が2バイト文字っぽかったらもう一文字よむだけでいいんではないのかい?坊や。
0357デフォルトの名無しさんNGNG
getchはANSI準拠じゃない
0358デフォルトの名無しさんNGNG
そうですね。入力だからマルチバイトの2文字目なんて来るわけないし
1バイト見るだけで判定しても問題ないですね。
どうもです。
0359デフォルトの名無しさんNGNG
>>358
標準入力からバイナリファイルが送られて来ることも・・・
0360デフォルトの名無しさんNGNG
>>358
とりあえず「UNIXプログラミング環境」を読め!
話はそれからだ。
0361デフォルトの名無しさんNGNG
いや、キーボードから読むんですが。
0362デフォルトの名無しさんNGNG
>>361

>>360読んで標準入力について学びなされ。
0363デフォルトの名無しさんNGNG
>362
windowsでも関係あるのですか?
0364デフォルトの名無しさんNGNG
文字はchar型というのがANSIの文字列処理の考えのようですが
半角カナは負の値になりますよね。

そこでカナだとint型に入れたときに、負の値なのでバイトイメージは変わってしまいます。
これを漢字かどうか判定しようとすると上位バイトがFFだから漢字に判定されたり。
なんか扱いにくくないですか?

いまソースからcharを撲滅してunsigned charにしてますが。
これが問題を解決するか不安もあります。こんな時みなさんはどうしますか??
文字をunsiged charで扱うのは問題があるのだろうか。。??
0365名無しさん@カラアゲうまうまNGNG
文字を読む関数なら0xffでマスクして返すだろう。
0366デフォルトの名無しさんNGNG
>>364
>半角カナは負の値になりますよね。
チャレンジャーだな。
0367名無しさん@カラアゲうまうまNGNG
>>355
> 半角カナも読むので一回目のgetch()の内容で漢字かどうかの判定はできません(できる?)

ほとんどの文字コードでは、最初の1バイトだけで長さは分かる。
0368デフォルトの名無しさんNGNG
>>364
>バイトイメージ
なんか知らんがビットパターンは代わらんぞ?

11111101は-2であり253でもある。

0369デフォルトの名無しさんNGNG
>>368
-3かもしれない。というか普通は-3。
0370デフォルトの名無しさんNGNG
>365
intを帰す奴は大丈夫そうですね。

>366
なりません?

>367
そうですね。文字読み込みは最初の1バイトで判定するようにしました

>368
いまいじってるソースはもともとintやcharを混在してまして、
charの-1はintにいれるとFFFEになって、unsignedとして扱ってる奴があちこちにいて
大きな値になってしまう物で。
0371デフォルトの名無しさんNGNG
まちがった。FFFFですよね。
0372デフォルトの名無しさんNGNG
>>369
ごめん、1足し忘れた・・・鬱
0373デフォルトの名無しさんNGNG
charをunsigned charで扱うなんてDQNですかね?
0374デフォルトの名無しさんNGNG
>>373
全角英数文字を使う人はDQNです。
0375デフォルトの名無しさんNGNG
え、漢字とか…
0376デフォルトの名無しさんNGNG
>>375
全角"英数"文字と言っておろう。
0377デフォルトの名無しさんNGNG
>>364
> 文字はchar型というのがANSIの文字列処理の考えのようですが
> 半角カナは負の値になりますよね。
ANSI は、char が signed char か unsigned char かは規定してない
よ。大体、多くの処理系で getch() は int 型のはず。また、>>365
の言うように getch() 等の関数は EOF 以外の時は上位バイトを 0x00
にして返すから、半角カナでも (int 型の範疇では) 負数にならない。
基本的には、int 型のまま EOF とか isxxx() 系の関数で種別を判定
してバッファとかに入れる時に char にする。先に char にしてから
判定しようとすると char → int の変換があるので...
> いまソースからcharを撲滅してunsigned charにしてますが。
と言うようなことをする羽目になったり、0xff が入力されたら EOF
と誤判断するようなタコソフトとなりがち。
0378名無しさん@カラアゲうまうまNGNG
標準の関数は文字列としてplain char*を受けとるから、俺はバッファはplain
char[]にしてる。必要であれば、取り出すときにunsigned charにキャスト。
0379デフォルトの名無しさんNGNG
なるほど、なるほど。
やっぱり問題ですよね。修正のやり方を再検討してみます。
みなさん、どうもです。
0380デフォルトの名無しさんNGNG
int i;
0381デフォルトの名無しさんNGNG
for (i = 0;i < -1;i++)
 printf(">>380 逝ってよし\n");
0382デフォルトの名無しさんNGNG
無駄な>>381の処理が削られました(^-^)v
0383381NGNG
誤爆だった
0384デフォルトの名無しさんNGNG
いろんな意味で誤爆だね。
0385デフォルトの名無しさんNGNG
std::cout<<">>383逝ってよし!"<<std::flush;
0386385NGNG
ヤバイ・・・あげてもた
0387デフォルトの名無しさんNGNG
2つの時刻の差を得るのに、ミリ秒単位で得る方法って
どうやったらいいんでしょうか?
difftime()使っても秒単位は得られますが、ミリ秒単位は
得られません。よろしくお願いいたします。
0388387NGNG
もちろん強引に引き算したらできますが、そうではなくて、
difftime()みたいにできるだけ簡単に得たいのです。
どうしたらよろしいでしょうか?
0389デフォルトの名無しさんNGNG
>>387
標準関数だったら出来ないよ。
環境依存でいいなら自分の環境をかきなよ。
0390387NGNG
>>389
具体的にはどのようにしたらいいんでしょうか?
まだCを初めてまもないので・・・。
今、書いているプログラムは、

time_t zikoku[2];

zikoku[0] = time(NULL);
for(i=0 ; i<100000 ; i++)
zikoku[1] = time(NULL);

printf("%d", (int)difftime(zikoku[1], zikoku[0]));

ってな感じです。これだったら、ミリ秒までは計れないんです。
自分の環境といっても、どうしたらいいのか分かりません。
よろしくお願いいたします。ちなみに、上記のように得た時刻を
格納することが前提です。
0391デフォルトの名無しさんNGNG
>>390
とりあえず、OSとコンパイラの名前でも書いたら?
0392デフォルトの名無しさんNGNG
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/gettimeofday.2.html
http://msdn.microsoft.com/library/en-us/multimed/mmfunc_2q3p.asp?frame=false
http://msdn.microsoft.com/library/en-us/sysinfo/time_8wz8.asp?frame=false


0393387NGNG
>>391
申し訳ございません。
OSは98,又はNT、コンパイラはborland C++5.5です。
0394デフォルトの名無しさんNGNG
>>387
じゃあ、392の下二つでもみたらどうかしら?
0395デフォルトの名無しさんNGNG
GetTickCountとtimeGetTimeによる時間測定
ttp://www.sm.rim.or.jp/~shishido/tick.html
GetTickCount, timeGetTime等の精度について
ttp://www.emit.jp/prog/prog_t1.html
0396デフォルトの名無しさんNGNG
勉強になるな
0397デフォルトの名無しさんNGNG
多重ループの例題(長方形)を参考に問題を解けと言われてるのですが、何のことでしょうか。
0398デフォルトの名無しさんNGNG
>>397
そんなことここで聞かれてもわかるわけない。
問題を解けといった人に聞いてくれ。
0399デフォルトの名無しさんNGNG
>>397
せめて問題でも書いたら?宿題スレにでも
0400デフォルトの名無しさんNGNG
GetTickCountやtimeGetTimeで得た値って、
どうやったら何時何分何秒っていうふうに
なおせるの?
0401デフォルトの名無しさんNGNG
>>400
標準関数以外の質問はするな。
0402デフォルトの名無しさんNGNG
日高
0403デフォルトの名無しさんNGNG
目高って土地の名前だよ
日高って土地の名前だよ
東京って地震が多い土地の名前だよ
0404デフォルトの名無しさんNGNG
>400
GetTickCountもtimeGetTimeも、Windowsが起動した時を
0とした経過時間なので、それだけで「何時何分何秒」に
変換することは不可能。
0405デフォルトの名無しさんNGNG
>>404
出来ますが?

間違った知識を吹き蒔くのはやめて下さい。
ほとんどの人にとって、迷惑です。
0406デフォルトの名無しさんNGNG
>>400は今の時刻を知りたいのか、それとも単にミリ秒を時分秒に変換したいのか。
DOTCHでSHOW
0407デフォルトの名無しさんNGNG
400は小学生2年生なのでやさしく教えてあげてください。
0408387NGNG
>>405
俺も出来ないと思ってた。
まだまだだ・・・・。
ちなみに、教えてくんろ!!
0409デフォルトの名無しさんNGNG
>ミリ秒を時分秒に変換したい
なら、
「何時何分何秒」ではなく「何時*間*何分何秒」って
聞くべきだと思う。
0410デフォルトの名無しさんNGNG
>>409
だね。
というわけで>>405は馬鹿。
晒しあげ。
0411デフォルトの名無しさんNGNG
>409=410なわけだが。
0412デフォルトの名無しさんNGNG
ほほう。
0413デフォルトの名無しさんNGNG
>>411
違うんだな。
0414デフォルトの名無しさんNGNG
>>405=>>411なわけだが。
0415デフォルトの名無しさんNGNG
ほほう。
0416デフォルトの名無しさんNGNG
clock()の戻り値は必ずミリ秒ですか?
0417デフォルトの名無しさんNGNG
>413=414
必死だな (プ
0418デフォルトの名無しさんNGNG
>>417
0419名無しさん@カラアゲうまうまNGNG
>>416
決まってない。1秒にCLOCKS_PER_SEC進む。
0420 NGNG
正の値かふの値かわからない値の絶対値を取りたいのですが,
そういう関数ありましたっけ?
0421デフォルトの名無しさんNGNG
abs,fabs
0422デフォルトの名無しさんNGNG
さすが421さん
ありがとう
0423デフォルトの名無しさんNGNG
一日じっくり考えましたが、time()をclock()に変えて
タイマーを作る方法をどうしても思いつきません。
clock()は処理を行った時間をCPUを使った時間を求めるとあります。
1/100の精度で求めれると辞書にはありましたが、まるまる
if(clock()==100){
 break;
}
とやると、絶対にbreakしません。(といっても10回の試ですが。)
100を飛び越して進んでしまいます。
そこで>=100と比較してやりますが、
おそらく1秒程度になっているでしょうが、
0コンマ何秒ずれていると思います。
しかも、これを2回目まわすとはじめから100ミリ秒を
超えているのだから、1秒以上取れません。
無限ループを使わずに、10秒とやってしまって、
割り込み処理とかが可能なのでしょうか・・・

そもそも考え方が間違えているのでしょうか?
##
#include<stdio.h>
#include<time.h>

void clock_one(void){
unsigned long start;

printf("%ld",start);
for(;;){
if(clock() >= 100){
break;
}
printf("%ld\n",clock());
}
}



void main(void){
int i;

for(i=0;i<5;i++){
clock_one();/*1秒間にCPUをどれだけCPUを使うか*/
}

printf("hogehoge");
}
0424293NGNG
ごめんなさい。423は私です。
しかも、main()のコメントは削除忘れです。
無視してやってくださいm(__)m
0425デフォルトの名無しさんNGNG
>>423
何をやりたいのか、目的を明記してくれ。名無しさんだから、話のつながりが
読めん。
0426デフォルトの名無しさんNGNG
>>424
環境に依るが UNIX なら SIGALRM を、Win32 なら WM_TIMER メッセージを
使うのが一般的かなぁ。

> clock()は処理を行った時間をCPUを使った時間を求めるとあります。
単位は 1/CLOCKS_PER_SEC 秒だけど、それは理解してる?
0427デフォルトの名無しさんNGNG
>>423
clockは差分を使う
最初0という保証もない
0428デフォルトの名無しさんNGNG
>>427
ダウト

clock() はプロセス開始時からの CPU 時間を返すから、最初は 0 だよ。
(最初の呼び出し時に 0 がかえってくるとは限らんが)
0429427NGNG
おや失礼。「プロセスのCPU時間」だから最初は0だな
経過時間でないことに注意だな
0430デフォルトの名無しさんNGNG
もし差分を取ったとしても、差分==100ってのはまずいな。差分>=100にしないと無限ループになる可能性大。
0431430NGNG
>>423を途中までしか読んでいなかった。スマソ
0432293NGNG
>>426 >>427
お二方のアドバイスをいただいて文末のような
コードになりましたが、これと>>293で書いたコードとでは、
あまり代わり映えしないような気がしてなりません・・・
もっとこうしたほうがよいというアドバイスがあれば
よろしくお願いします。

これから、ビジーループと言うものを調べたいと思います。

##
#include<stdio.h>
#include<time.h>

void clock_one(void){
 unsigned long start;
 start = clock();

 for(;;){
  if(((clock()-start) / CLOCKS_PER_SEC ) >= 1){
   break;
  }
 }
}


void main(void){
 int i;
 for(i=0;i<5;i++){
  clock_one();
 }

 printf("hogehoge");
}

>>425
やりたいことは、10分間アプリケーションを立ち上げ続けている間に、
キーボード入力を受けるとその文字を表示したり、
特定のキー(スペースなど)を受けると特定の動作をするように
したいと考えています。
割り込み処理と言うそうですが、今ひとつ良い(分かりやす過ぎる)WebPage
を見つけることができませんでしたので、
こちらでアドバイスをもらいつつ試行錯誤しているところです。

>>428
ちなみに私が呼び出したときは、ほとんどの場合0が始めに見えた気がします。
あまりに早すぎて見切れないときもありますが。
0433デフォルトの名無しさんNGNG
>>432
それ以上は標準ライブラリではどうにもならんだろ。
後はOS依存
0434デフォルトの名無しさんNGNG
文字列として 100,150,200,100,300,
といったデータをカンマで区切って取り出そうとして以前の書き込みを参考にして
次のような方法で取り出してるんですが文字列の最後がカンマで終わることが条件になってしまいます。
カンマ以外が最後に来ても(例えば...300,20とか)うまく終わるようにしたいのですが良い方法はありますか?

#include <stdio.h>
#include <string.h>

main(){
char *pstr,temp_buf[128],strbuf[128]="100,150,200,100,300,";
int buf_len;

pstr = strbuf;
while(strlen(pstr) != 0){
buf_len = strcspn(pstr,",");
printf("文字数:%d\n",buf_len);
strncpy(temp_buf,pstr,buf_len);
temp_buf[buf_len] = '\0';
printf("切り出し文字列:%s\n",temp_buf);
pstr += buf_len+1;
}
}
0435434NGNG
>>434
インデントが付かないんですね、すみません。
0436デフォルトの名無しさんNGNG
>>434
whileの条件式は*pstr!='\0'か*pstrじゃだめなの?
0437デフォルトの名無しさんNGNG
>>432
だから、setjmp,longjmp以下略
0438434NGNG
>>436
その二つでも良いですね。そっちのほうが関数呼ばなくてすむから良さそうですね。
だけど、今プログラム動かして確認してみたらカンマで終わらなくてもちゃんと動いてた(汗。
このプログラムで大方問題ない?
0439デフォルトの名無しさんNGNG
>>434 ほい。

char str[]="100,200,300,400",buf[128];
char *pstr = str,*pbuf=&buf[0];

while(*pstr){
  if(*pstr == ','){
    *(++pbuf) = '\0';
    printf("%s\n",buf);
    pbuf = &buf[0];
    pstr++;
  }
  *pbuf = pstr;
  pstr++;
}
0440デフォルトの名無しさんNGNG
>>439
最後のトークンが表示されないんじゃない?
0441デフォルトの名無しさんNGNG
while抜けたところに

*(++pbuf)='\0';
printf("%s\n",pbuf);

か?
0442440NGNG
末尾が,で終わらない場合ね。
0443。。。NGNG
今、標準関数を自作するのに凝ってるんですが、
itoa,ltoaなどの数を文字列やその逆みたいのは
どうやって実現してるんでしょうか?

だいぶ考えたけどわかんなかった。
0444デフォルトの名無しさんNGNG
>>443
May the source with you!

*BSD の libc でも読んでみるのが良いかと。
0445デフォルトの名無しさんNGNG
libc読んでみたい。
0446デフォルトの名無しさんNGNG
誰か教えてくれ!!
Media Playerで再生中のファイル名を取得する方法ってありますか?
そういうアプリを作りたいんですが・・・
0447デフォルトの名無しさんNGNG
>>432
start_time = clock();
for (;;) {
 if (キー入力の検出あり) {
  キーの処理
 }
 if ((clock() - start_time) / CLOCKS_PER_SEC >= 600) {
  exit(0)
}
}
キー入力の検出はどうしても環境に依存する。
0448デフォルトの名無しさんNGNG
libcのソースどこかで拾える?
0449293NGNG
>>447
そうですそうです。
そんなかんじで、イメージしてます!
その、キー入力をどうするか、
というところを、勉強中です。
考えているところが、間違えていなくて良かったです。
<自分のはif以下に()が一つ多かったが・・・>
環境(OS)はやはりWindowsを主体に考えていますが、
割り込み処理と言う部分も環境(ハードウェア)によるのであれば、
勉強がかなり大変になりますね・・・
ちょっとうつですががんばってみます
0450をい!NGNG
>>449
windowsなら以下略
0451デフォルトの名無しさんNGNG
>>450
ハァァ?
0452デフォルトの名無しさんNGNG
     /⌒ヽ   /⌒ヽ
    /    ヽ /    ヽ
    |     | |     |
    |     | |     |
    |     | |     |
          V     ヽ
  /              \
 /                 ヽ
 |                  |    /  ̄ ̄ ̄ ̄ ̄ ̄
 |    ●       ●    |   / 
 ヽ                / <    ・・・・・・・・・・・・
  \      ×      /   \  
     -、、,,,,,___,,,,,、、-       \
   //  (_人_)  ( ○川 )       ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (_ /           ヽ_)
    /_________ヽ
       | |  |
       ( __) _)
0453デフォルトの名無しさんNGNG
くすっ♪
0454293NGNG
>>450
略しすぎで今ひとつ分かりませんが・・・
APIなるものを利用せよ!
と言うことでしょうか?

ビジーループについて分かりました。
これはやめて、sleepなるものの使い方を勉強してみます。
はふぅ(>_<;)
0455ageNGNG
>>450 >>450
0456デフォルトの名無しさんNGNG
>>450
WM_TIMER まで書いてやれよ。
0457!NGNG
>>450は人気者
0458デフォルトの名無しさんNGNG
446が爽やかに無視されてる罠。
0459デフォルトの名無しさんNGNG
>>454
> これはやめて、sleepなるものの使い方を勉強してみます。
おいおい…。それじゃ入力に対して即座に反応できんだろ。
0460デフォルトの名無しさんNGNG
入力用の、スレッドを、つくれ、と。
0461名無しさん@カラアゲうまうまNGNG
WindowsならWaitForMultipleObjects()
UNIX系ならselect()かpoll()
0462デフォルトの名無しさんNGNG
>>461
Windows なら、入力はスレッドを別に用意せず、メッセージループ回すだけだと
思われ。
0463名無しさん@カラアゲうまうまNGNG
Windowアプリケーションならな。
>>423でprintf()使ってるあたりを見るとそうとも限らない。
0464293NGNG
>>456
WM_TIMERですか。ちとまだ調べられていないので分かりませんが、
次の課題に抱えておきます。

>>459
まだs;eep()の特性を調べ切れていないので、
てっきりsleep()の方が良いのかと思ってました。

>>461-463
現在は、Windowsでbccを使って勉強しております。
ですので、現在はコマンドプロンプト上での操作になるのですが、
VisualCorC++orC#が必要と言うことになるのでしょうか?
一応環境は手持ちにあるのですが。
0465デフォルトの名無しさんNGNG
>>462
余計な処理までしてくれるうふふな仕様。
0466デフォルトの名無しさんNGNG

(´-`).。oO(>>450 は Windows スレへ行けと言いたいんじゃないかなぁ。。。)
0467デフォルトの名無しさんNGNG
>>443
ちと、作ってみた。制限があるけど、自分で探して。

#include <stdio.h>


void swap(char *c, char *d);
int strlen(char *s);
void reverse(char s[]);
void itoa(int n, char s[]);


int main(void){

    char str[32];

    itoa(-12345, str);
    printf("%s\n", str);

    return 0;
}

void itoa(int n, char s[]){

    char *p = s;

    int sign = 1;

    if(n < 0){
        sign = -1;
    n = -n;
    }

    do{
        *p++ = n % 10 + '0';
    }while(0 < (n /= 10));

    if(sign < 0)
        *p++ = '-';

    *p = '\0';

    reverse(s);
}
0468467 続きNGNG

void reverse(char s[]){

    char *p = s;


    p = s + strlen(s) - 1;

    while(s < p){
        swap(s, p);
        ++s;
        --p;
    }
}

int strlen(char *s){

    char *p = s;


    while(*p)
        ++p;

    return (int)(p - s);
}

void swap(char *c, char *d){

    char temp;


    temp = *c;
    *c = *d;
    *d = temp;
}

0469デフォルトの名無しさんNGNG
CRC計算について質問です。
32bitCRCを算出して、CRCリストと比較するモノを作成したいのですが、
CRCの計算原理がいまいちわからずに困惑しています。
どなたか噛み砕いて教えていただけないでしょうか・・・
0470デフォルトの名無しさんNGNG
>>469
手近なところだとソフトウェア開発技術者の参考書。
0471デフォルトの名無しさんNGNG
構造体宣言の前に#pragma pack(push, 1)を入れると
コンパイルできなくなるのですがどうしたらよいのでしょうか

struct{構造体宣言};
(中略)
int main(){ ... }
と、これはコンパイルできるのですが、このソースに
#pragma pack(push, 1)
struct{構造体宣言};
#pragma pack(pop)
int main(){ ... }
とやると
bitmap.c:107: warning: malformed `#pragma pack'
/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/crt1.o: In function `nope':
/usr/local/lib/gcc-lib/sparc-sun-solaris2.7/2.95.2/crt1.o(.text+0x5c): undefined
reference to `main'
collect2: ld returned 1 exit status
となるんです
0472デフォルトの名無しさんNGNG
>>471
#pragma pack(push, 1)
struct{構造体宣言};
#pragma pack(pop)
↓
struct{構造体宣言} __attribute__ ((pack));
でどうか。
0473471NGNG
>>472
コンパイルは通ったのですが、
warning: `pack' attribute directive ignored
…だそうです。無視されたってこと…でしょうね。
fwrite/freadで構造体(BMPのヘッダです)読み書きするプログラムなので
構造体をpackして欲しいのですが。
gccなので当然wingdi.hなぞありません(w
ひとまずあきらめて別のアプローチをとったほうが良いでしょうかね。
0474デフォルトの名無しさんNGNG
>>473
pack→packedの間違いですた。スマソ。
0475デフォルトの名無しさんNGNG
>>474
無事コンパイル通りました。ありがとうございます
0476デフォルトの名無しさんNGNG
>>470
469じゃないけどさ、具体的に書名教えてよ。
CRC-16とかの計算方法が載ってそうな本
0477デフォルトの名無しさんNGNG
>>476
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=utf8&oe=utf8&q=CRC+16+%E8%A8%88%E7%AE%97%E6%96%B9%E6%B3%95

つーか、本が好きなら「アルゴリズム辞典」系の名前の本を
片っ端から見てみりゃ幾らでもあるだろう。
0478名無しさん@カラアゲうまうまNGNG
>>471
構造体の要素をchar(とそのような構造体)だけにすればパディングは起きない。
0479デフォルトの名無しさんNGNG
普通はそうだが保証はない
0480名無しさん@カラアゲうまうまNGNG
これ規定されてなかったか?
0481デフォルトの名無しさんNGNG
openglってみんなつかってる?
これってC言語で使えるんだよね?
VCとかBCとかで
0482デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/tech/981044659/l50
0483buyNGNG
#include<stdio.h>
void main(void)
{
int mat[3][4],i,j;
float ave[3],is;

for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("mat[%d][%d]=",i,j);
scanf("%d",&mat[i][j]);
}
}

for(i=0;i<3;i++)
{
is=0.0;
for(j=0;j<4;j++)
{
is=is+mat[i][j];
}
ave[i]=is/4;
}


for(i=0;i<3;i++)
{
printf("%3d %3d %3d %3d %3.2f\n",mat[i][0],mat[i][1],
mat[i][2],mat[i][3],ave[i]);
}
}
これに各列の平均も出したいんですけどどうすればいいんですか?
誰か教えてください。
0484デフォルトの名無しさんNGNG
>>483
i と j を逆にしてループを回せばよい。
0485buyNGNG
>>484
ループって何ですか?
0486デフォルトの名無しさんNGNG
>>485
・・・・・・・。
0487デフォルトの名無しさんNGNG
( ゚д゚)ポカーン
0488デフォルトの名無しさんNGNG
ループ
(1) 輪。環。「―アンテナ」。ボタンを掛ける、ひもの輪。
(2) 「ループ線」の略。急勾配(こうばい)の地に鉄道を敷く時、線路を環状にして、登りやすくしたもの。
→loop
0489デフォルトの名無しさんNGNG
ループを回す?
↻ฺ↻ฺ
0490デフォルトの名無しさんNGNG
>>485
マジレスしてやる。
ここで聞く以前の問題だ。
俺の昔使った本(すぐわかるC/C++)には
前から73ページ目に乗ってるよ。
もう一度勉強しなおしなさい。。
ループ=繰り返し

0491buyNGNG
誰か教えてくれよ〜
まじテストやばい・・・
0492デフォルトの名無しさんNGNG
これだけfor使ってループが分からないわけないと思った。
0493デフォルトの名無しさんNGNG
>>491
やばいだろうな。

人類のためにさっさと学校やめてくれ。
0494デフォルトの名無しさんNGNG
テストで悪い点を取れ。
んで、勉強せぇ
0495デフォルトの名無しさんNGNG
課題のプリント丸写しか、教材の丸写しか、
友達のソース丸・・・友達いないか
0496buyNGNG
課題は友達のやつをコピらしもらってたからな・・・
金曜日テストなのに間にあうと思います??
0497デフォルトの名無しさんNGNG
しるか
0498buyNGNG
ところでさっきのやつなんだけど is=0.0 の意味を教えてもらえますか?
0499デフォルトの名無しさんNGNG
iのsumを0.0で初期化しているじゃないの?
0500デフォルトの名無しさんNGNG
構造体Oのメンバ変数Oの値を取り出してisに代入してるんだよ。
0501デフォルトの名無しさんNGNG
現在作成中のプログラムの中で
10個のデータg[10]のそれぞれを比較して最大値を出力したいのですが
if文を大量に書くしかないのでしょうか?
10個ならまだいいですが100個とかになった場合恐ろしいので気になりました。
よろしくお願いします。

PS もしかしてとても初歩的な質問ですか?
0502buyNGNG
列の平均だけなら出たけど行と列の平均を一緒に出すってどうやんの?
なんかうまくいかないんだけど・・・
0503デフォルトの名無しさんNGNG
>>501
そのためのループです。
0504デフォルトの名無しさんNGNG
>>501
なんのなためにエディタのコピペがあるとおもってんの?
0505デフォルトの名無しさんNGNG
>>501
ループでまわして最大値をさがせばいいじゃん。
0506buyNGNG
>>501
めっちゃくちゃ初歩的だよ
0507デフォルトの名無しさんNGNG
>>506
お前が言うなw
0508デフォルトの名無しさんNGNG
>>503
>>505
ループ使うってのは考えたのですが
いまいちどう書いていいものか・・・
3個のデータで例でソース書いていただけませんか?
よろしくお願いします。

>>504
コピペですか・・・
効率が悪いと思ったのでなるべく避けたいです。。。
0509デフォルトの名無しさんNGNG
わははは
0510デフォルトの名無しさんNGNG
int a[3];
int m = a[0];
for(int i = 1; i < 3; ++i)
{
  if( m < a[i] ) m = a[i];
}
0511501NGNG
すみません。
少し考えてからわからなかったらまた聞きに来ます。
自分で考えずに人に聞くことばかりではダメですよね(汗)
0512510NGNG
もしかして、501は俺の書いたのを見ないで行ってしまわれましたか?
0513デフォルトの名無しさんNGNG
>512
いま全力で>510を思考中
0514buyNGNG
誰か俺にも助言をくらはい
0515デフォルトの名無しさんNGNG
>>510
int m = a[0];

a[3]は初期化していないよね?実は広域変数とか?
0516デフォルトの名無しさんNGNG
>514
>>484
0517501NGNG
>>510
レスありがとうございます。
質問の仕方が悪かったです
最大値を持っている要素と最大値を出力したいの間違いでした。
しかし、勉強になりました。

ちなみに自分がしたかったことは以下です(汗)
int k=0;
for(i=0;i<10;i++){
if(g[k] > g[i]);
else k=i;
}
printf("g[%d] = %1.2f\n",k,g[k]);

みなさん本当にありがとう御座いました。
0518デフォルトの名無しさんNGNG
ifとelseが微妙
0519デフォルトの名無しさんNGNG
>>510
ここはCスレです。C++スレではありません。
0520buyNGNG
>>516
まじでエラーになるって〜
0521デフォルトの名無しさんNGNG
>>520
しょうがないなあ。ほれ、これでどうだ。

void main(void)
{
int mat[3][4],i,j;
float ave[4],is;
.........

for(j=0;j<4;j++)
{
is=0.0;
for(i=0;i<3;i++)
{
is=is+mat[i][j];
}
ave[j]=is/3;
}
0522buyNGNG
見事できました〜〜ってできて当たり前か・・・
0523デフォルトの名無しさんNGNG
>>522
本当に i と j を入れ替えるだけだったろ?行と列を入れ替えただけだもん。
0524デフォルトの名無しさんNGNG
int x,yがあったとして、x<yなら-1を、x==yなら0を、x>yなら1を返すという処理を記述する際、上級者は
if(x<y) return -1;
if(x==y) return 0;
if(x>y) return 1;
と可読性をあげるために敢えてelseを使わないとある雑誌に書いてあったのですが本当ですか?
三項式の入れ子は可読性が低いというのは分かるんですが。
0525デフォルトの名無しさんNGNG
>>524
・無駄
・意図した処理にならない場合も

よってダメ。
0526buyNGNG
>>522
両方の平均を一緒に出すのがむずかったよ
0527デフォルトの名無しさんNGNG
>>526
足して割れやゴルァ
0528デフォルトの名無しさんNGNG
>>525
ですよね。
まったくもう・・・>あの雑誌
0529デフォルトの名無しさんNGNG
なんて雑誌?
0530デフォルトの名無しさんNGNG
>>529
確かSoftwareDesignという雑誌だったと思います。
学校で少し見せてもらっただけなので間違っているかもしれませんが。
0531!NGNG
漏れなら、if等使わずに、

return ((x-y)/abs(x-y));

とするな。
0532デフォルトの名無しさんNGNG
等しいとき死なない?
0533デフォルトの名無しさんNGNG
>>531
おいおい、0による除算エラーがおきねーか?
0534533NGNG
めるらんにうそですとかいてあった(うつ
0535532NGNG
>534
ほんとだ(うつ
0536デフォルトの名無しさんNGNG
ホホホ
0537デフォルトの名無しさんNGNG
漏れならif等使わずに

return (x-y)/((x-y) ? abs(x-y) : 1);

とするな
0538buyNGNG
#include<stdio.h>
void main()
{
int n,n100;
int y;


n=0;
n100=0;

while(scanf("%d",&y),y>=0)
{
n=n+1;
if(y>=100)
{
n100=n100+1;
}
}
printf("全部で %d ,100以上は %d \n",n,n100 );
}
入力された数字すべての和、100以上の数字の和を求めるよう、改良しろって問題なんだけど
どうやればいいの??さっぱり分からん
0539デフォルトの名無しさんNGNG
宿題か?
0540デフォルトの名無しさんNGNG
>>buy
おまえはこの道はあきらめたほうがいいぞ。
0541デフォルトの名無しさんNGNG
>>538
大阪工業か?
0542buyNGNG
while=forですか??
0543デフォルトの名無しさんNGNG
>>538
これより先は君の質問に限り、解答が有料になるがよろしいか?
0544buyNGNG
>>538
よろしくないです
0545デフォルトの名無しさんNGNG
>>538
俺は明日の昼飯でいいや。
0546デフォルトの名無しさんNGNG
>>538
土産もってこい
0547デフォルトの名無しさんNGNG
>>544
じゃあ自分の力でやれ。
0548デフォルトの名無しさんNGNG
ポカーソ
0549デフォルトの名無しさんNGNG
>538
改造前のコードが、何をやっているのかは分かるの?
0550buyNGNG
>>541
工大生?
なら教えて
0551buyNGNG
>>538
わかんないです・・・
0552Jの4NGNG
>>550
頼むから潔く学校やめてくれ・・・。
0553デフォルトの名無しさんNGNG
>>538
線を2本書き足すだけだよ! 優しいな俺って。
0554デフォルトの名無しさんNGNG
>>buy
おまえひょっとして、以下略
0555buyNGNG
>>553
どこに足すの?
0556buyNGNG
>>552
以下略って何よ?
0557デフォルトの名無しさんNGNG
>>555
>>538のプログラムが何をしているのか一行ずつ読みながらよく考えてみな。
Cの文法はわかっているんでしょ?
0558デフォルトの名無しさんNGNG
>>551
もうこれが最後だからな!1を足す代わりにyを足せ。
0559デフォルトの名無しさんNGNG
>>buy
生き別れになったお兄さんだろ!! こんなところで会えるなんて!!
0560buyNGNG
n100ってなんですか?
0561デフォルトの名無しさんNGNG
>560
元のプログラムでは、100以上の数の個数
0562デフォルトの名無しさんNGNG
>>555
ちょっと待て。
そろそろくだらない質問の連続やめろよ。
自分で調べろ。
http://www.yahoo.co.jp/
>>555>>560
客観的に見てみな。
他人がこんなん書き込んでたらどう思う?
Cの前に掲示板のマナーを学ぶことを強くオススメする。
0563buyNGNG
>>558
ありがとう 
0564buyNGNG
>>562
すいませんでした・・・
自分でやります
0565デフォルトの名無しさんNGNG
>543>545>547>549>552-554>557-559>561>562
に昼飯よろしく。
0566デフォルトの名無しさんNGNG
scanfの後の,y>=0て何?
||だろ?
0567デフォルトの名無しさんNGNG
>566
べつにいいんじゃない?
0568デフォルトの名無しさんNGNG
>>566
scanfでyに代入(?)したあとにyが0以上かどうか判断しているんだろ。

(俺は条件式でカンマ演算子なんか使いたくないな)
0569デフォルトの名無しさんNGNG
へー。カンマなんて使えるんだ。初めて知った。
0570名無しさん@カラアゲうまうまNGNG
どっちもよくねー。>>566>>557

while (scanf("%d", &f) == 1)
もしyが0以上という条件があるなら
while (scanf("%d", &f) == 1 && y >= 0)
0571buyNGNG
ところで皆さんは学生さん?
0572デフォルトの名無しさんNGNG
>>570
勉強用プログラムでscanfの戻り値なんて確認しないだろ。
0573デフォルトの名無しさんNGNG
scanfの正常時の戻り値って1なの?
0574デフォルトの名無しさんNGNG
>>573
いや、実際に代入した個数。それを見てきちんと代入されたかどうか判断する。
0575名無しさん@カラアゲうまうまNGNG
scanf系の戻り値は氏んでも確認しろ(゚Д゚)ゴルァ
0576デフォルトの名無しさんNGNG
つーか、宿題なら、宿題スレ逝けよ、、
http://pc.2ch.net/test/read.cgi/tech/1024592344/
0577デフォルトの名無しさんNGNG
>574
scanfで複数個の代入なんて…
0578デフォルトの名無しさんNGNG
>>577
するだろ?少なくともsscanfでは。
0579デフォルトの名無しさんNGNG
>するだろ?少なくともsscanfでは。
ぷっ。
0580デフォルトの名無しさんNGNG
scanf系をしっかり理解してるのとしてないのとじゃ開きがあるが、
「使うな」といわれてそれっきりのやつも多いんだろうなあ。

子供のおもちゃにしては危険度の高い関数だが
いい大人がなんで使っちゃいけなかったのか、
どう使うべきなのかを理解せずに未だに「いけないもの」
としてる香具師を期待したが、出てこないな、おい。
0581デフォルトの名無しさんNGNG
そんな香具師いるかよ。
0582デフォルトの名無しさんNGNG
scanfは大人のおもちゃ・・ハァハァ
0583デフォルトの名無しさんNGNG
商品じゃあるまいし個人的なものにscanfで何の問題もない
0584デフォルトの名無しさんNGNG
583に激しく胴囲
0585デフォルトの名無しさんNGNG
strtokは使うなというカキコは見たことがある。
0586デフォルトの名無しさんNGNG
/*
* strtok scanf:どちらも仕事では、使ったこと梨。
* scanf    :仕事でなければ結構使うかも。
*/
0587デフォルトの名無しさんNGNG
scanf、、、実装は大変だろうにな・・・
0588デフォルトの名無しさんNGNG
scanfなんか10行プログラムしか出番なし。
0589デフォルトの名無しさんNGNG
getline(うぐぅっ)
0590デフォルトの名無しさんNGNG
>>586
strtokよりもscanfの方がよっぽど危険だと思うが?
strtokは素性さえ知ってれば仕事でも使えるだろ。
0591デフォルトの名無しさんNGNG
scanf()はFORTRANのREAD文と同じく、カードでデータを読みとっていた
頃の、過去の遺物。
0592デフォルトの名無しさんNGNG
そんな悩ましい関数はもう捨てよう。
0593デフォルトの名無しさんNGNG
scanfはナゼ入門書に必ずといっても良いほど取り上げられるのか?
俺のティムポが曲がっているのと同じくらい不思議。
0594デフォルトの名無しさんNGNG
>>593
簡単だから。
0595デフォルトの名無しさんNGNG
>>593
ティムポが曲がるのは、同じ手でばかりオナーニしてるせいらしいぞ。右利きと左利き
のティムポは逆方向に曲がっているとか。
0596デフォルトの名無しさんNGNG
>>595
逆の手でやってりゃ直るのかい?
0597デフォルトの名無しさんNGNG
>>596
どうかな?ちなみに俺は両効きなので、ティムポはほぼまっすぐに
なっているぞ。ふふふ
0598デフォルトの名無しさんNGNG
>過去の遺物。

そうそう、こういうものは沢山残ってる(w
0599デフォルトの名無しさんNGNG
C自体が過去の遺物
0600デフォルトの名無しさんNGNG
>scanf()はFORTRANのREAD文と同じく、
>カードでデータを読みとっていた頃の、過去の遺物。
じゃあカードと紙テープ復活させる?
0601デフォルトの名無しさんNGNG
>599
じゃあ最新はどこら辺よ?
0602デフォルトの名無しさんNGNG
>>600
そこまでしなくても、エディタで入力ファイルを書式通り書いて
リダイレクトで読み込ませるだけで十分。
0603デフォルトの名無しさんNGNG
日本語でプログラミング」という
小学生が考えるようなプログラミング言語を作った
「ひまわり」の作者が「ひまわり.NET」を作成中との情報です。
同作者は「Web上でも動くんだよーチャキーン」と連呼し、各種掲示板サイトに
事実上荒らし行為とよばれる書き込みを多数している模様。
需要がろくにないくせに何を言ってるんだ!とあちこちで死ねコールが
発生。しかし韓国ではワールドカップの影響か「ひまわり」を愛用する
若者たちが最近多く見られるそうだ。彼らは「カムサハムニダチョムルキセヨーウォライケィ」
(ひまわりよ我らに讃えあれ)と意味不明の言葉を発しているとのこと。
ひまわりが韓日関係の向上に一役かってくれそうな状況だ。
0604デフォルトの名無しさんNGNG
>>601
最新は何かな?

ちなみにC++自体も中身は時代遅れと作者は言っていたようだし。
要するに何が問題かというと、CもC++も入出力機能は言語機能では
なくライブラリとして提供されている点が問題。

GUIのライブラリを入出力用に使えば機種依存は生じるが、最新の
機能を維持できる。それだけの話。
0605デフォルトの名無しさんNGNG
入出力機能を実装する言語に入出力機能は要らないだろ。
0606デフォルトの名無しさんNGNG
つーかCが時代おくれって言うよりは標準ライブラリが時代遅れなんじゃ?
0607デフォルトの名無しさんNGNG
新しくて良いものがあるのに使わないのは引退時だな。
0608デフォルトの名無しさんNGNG
>606
剥げどう。
0609通りすがりNGNG
ん?俺スーパーハカーだけど、Cしかしらないよ。
0610デフォルトの名無しさんNGNG
>604
って事はVC++って事?
やっぱりMSかい。スモールサイズはアセンブラって事に落ち着くかい。
0611デフォルトの名無しさんNGNG
>>606>>608
その通り。なぜこのような使い物にならないライブラリが添付されている
のか不思議。まあUNIXは未だにCUIも当たり前だから不思議でもないか
も。
0612デフォルトの名無しさんNGNG
>611
CUIであることと、古くさいライブラリが付いているのは別問題。
0613デフォルトの名無しさんNGNG
>>610
Motifもお忘れ無く。
0614デフォルトの名無しさんNGNG
>>524
int foo(int x, int y)
{
 if (x < y) return -1;
 if (x == y) return 0;
 if (x > y) return 1;
}

> cc -c -Wall t.c
t.c: In function `foo':
t.c:7: warning: control reaches end of non-void function

という具合にwarningがでる。それなんでこう書く。

 if (x < y) return -1;
 if (x > y) return 1;
 return 0; /* x == y */
0615デフォルトの名無しさんNGNG
>>614
条件文無しの無条件returnが一つは必要って事かな?
0616デフォルトの名無しさんNGNG
単にコンパイラがreturnしないパスがあると思いこむだけ
0617デフォルトの名無しさんNGNG
素直にelse使ガホゲホゴホ
0618614NGNG
if (x < y) {
 return -1;
} else if (x > y) {
 return 1;
} else { /* x == y */
 return 0;
}
こんな感じ?こだわりはなくて気分次第で使い分け。
でもelseを使うとなぜか{}を書きたくなる。
0619デフォルトの名無しさんNGNG
return -(x < y) + (x > y);
0620デフォルトの名無しさんNGNG
すいません

関数に配列を投げ込んで
配列内の最大値を返そうとしてるんですが
うまくいきません

> gcc test.c
test.c: In function `MAXdt':
test.c:32: arithmetic on pointer to an incomplete type
test.c:33: arithmetic on pointer to an incomplete type

たすけて…
0621デフォルトの名無しさんNGNG
>>620
コンパイラのエラーの意味はわかるのか?
0622620NGNG
>>621
なんか 変数型が ちがうんかなーと思ったりしたんですが
ぜんぶintだしうーん あんまりわかんないです すいません
0623デフォルトの名無しさんNGNG
よく分からんなら、ソース出せというに
0624620NGNG
#include<stdio.h>
#include<stdlib.h>

#define N 1

int MAXdt(int dt[][]);

int main(void)
{
int i,j;
int cmax;
int org_dt[N][N];//オリジナルデータ

org_dt[0][0]=3;
//配列の最大値を探す
cmax=MAXdt(org_dt);
printf("%d",cmax);
}

int MAXdt(int dt[][])
{
int cmax,i,j;
cmax=0;

for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(dt[i][j]>cmax)
cmax=dt[i][j];

return cmax;
}
0625620NGNG
ここのぶぶんでエラーが

if(dt[i][j]>cmax)
cmax=dt[i][j];

でるみたいです
0626620NGNG
>>623
あう、すいません
今だします
0627デフォルトの名無しさんNGNG
>>624
とりあえず、何を繰り返したいのか小一時間(以下略
0628デフォルトの名無しさんNGNG
>>624
> int MAXdt(int dt[][])
仮引数に配列を渡すときには、実際にはポインタに縮退しているのは理解してる?
0629620NGNG
(^^;;
0630デフォルトの名無しさんNGNG
>624
MAXdtの仮引数→dt[N][N]は?
0631デフォルトの名無しさんNGNG
http://www.st.rim.or.jp/~phinloda/cqa/cqa17.html
ココミル!
0632620NGNG
>>628
あんまり良くわかんないですが
dt自体はポインタでしたっけ?
dt[i][j]はintの値かなーとおもっていたのでそのままcmax
にあげちゃったんですけども…
0633628NGNG
>>630
そう書いても良いけど、実際の内部処理を反映する形で宣言すると

 int MAXdt(int (*dt)[N])

だよね。「int 型 N 個の配列へのポインタ」が引数として渡される。
0634620NGNG
あ、なるほど、省略しすぎだったのか…
ちゃんと、いくつかということを書かないといけないのですね…
>>630
>>633
どちらも試してみます
0635デフォルトの名無しさんNGNG
>>632
int dt[N][N]; と宣言してるから dt 自体は N * N の二次元配列。ただし dt を
右辺値として評価すると、それは N 要素の一次元配列へのポインタに縮退す
る。

二次元ではなく一次元でも同じなんだけど、一次元だと適当に理解していても
どうにかなる。二次以上は、ポインタと配列の区別を明確にしておかないとハマ
る。
0636620NGNG
>>635その他多数のみなさん
ありがとうございました 動きました!!
なんかいまいちわかんないですが
dt[i]まではポインタで
[j]はそのポインタを格納している配列なのかな???
うーむ・・・
0637620NGNG
報告

(*dt)[N] 動作しました
[N][N] エラーでとまりました
0638名無しさん@カラアゲうまうまNGNG
>>636
> [j]はそのポインタを格納している配列なのかな???
やっぱり分かってない。
0639デフォルトの名無しさんNGNG
何か・・・糞スレまっしぐらー Σ(゚д゚lll)ガーン


誰のせいかは名言しませぬが。。
0640デフォルトの名無しさんNGNG
C言語(応用)なら、俺に聞け!(宿題は宿題スレへ)
覗いてみたら消防の宿題ばっかしやし。
0641 NGNG
Sleep関数って使ってる?
使っても良いのかな?
どのくらいの単位で指定できるんだっけ?
1/100秒くらい?
0642デフォルトの名無しさんNGNG
使ってもいいからあとは手持ちのヘルプ嫁。
0643デフォルトの名無しさんNGNG

int *a;

main( )
{
func( );
a[ 0 ] = ...;
}
void func( )
{
a = ( int *)malloc( ... );
}

みたいなことはできますか?
なんか、配列が壊れてるみたいなんですが。

0644名無しさん@カラアゲうまうまNGNG
可能。省略したところがバグってると思われ。
0645デフォルトの名無しさんNGNG

>644 ありがとうございます。
よく分かりませんが malloc するサイズを
必要な分だけにしたらうまくいきました。
0646デフォルトの名無しさんNGNG
>>645
>malloc するサイズを必要な分だけにしたらうまくいきました。

いや、当たり前ですが。

まだmallockとかは早いと思われ。
ポインタの使ってる割にはグローバル変数で渡してみたり・・・。
0647デフォルトの名無しさんNGNG
>>646
> まだmallockとかは早いと思われ
mallockって何ですか?
多分、君もmallocを使うのは早いと思われる。
0648デフォルトの名無しさんNGNG
>>647
mallock知らんのか?
mallocを習得したものだけが使える究極の関数だ。
きっと君は100年経ってもmallockは使えんだろうね。
0649デフォルトの名無しさんNGNG
>>619
0650デフォルトの名無しさんNGNG
mallock の k は何の略なん?
0651デフォルトの名無しさんNGNG
>650
k=こんにちわ
0652デフォルトの名無しさんNGNG
>>650
1024
0653デフォルトの名無しさんNGNG
#define  mallock  malloc
0654デフォルトの名無しさんNGNG
>>650
キティ街
0655デフォルトの名無しさんNGNG
>>650
更年期
0656デフォルトの名無しさんNGNG
>>650
俺のイニシャル
0657デフォルトの名無しさんNGNG
つまんね
0658デフォルトの名無しさんNGNG
callockはありますか?
0659デフォルトの名無しさんNGNG
>>524
その場合、戻り値の情報量を減らす理由があれば別として、

return x - y;

で十分のような。
0660デフォルトの名無しさんNGNG
>>658
勿論。callock 一度つかったら calloc なんて使ってられない。
0661デフォルトの名無しさんNGNG
>659
確かにその方が早い。


でも意味がちがってくる・・
つまりプログラムを読んだときに意図が見えにくくなる
0662デフォルトの名無しさんNGNG
>>659 のようなコードを書く人は >>524 を読み間違えることはないけど、
逆は成り立たないということでよろしいですか?
0663デフォルトの名無しさんNGNG
マゾレス
カーネルレベルのmallocがmallock。
0664デフォルトの名無しさんNGNG
>>663
printkってのもありましたな・・・
0665デフォルトの名無しさんNGNG
http://www.cmagazine.jp/src/kinjite/c/variable.html#index17
この内容って関数から抜けたときに配列の要素が消えるから
関数外で戻り値のポインタを使用して配列の要素にアクセス
してはならないってことであってる?
それとも、returnに自動変数を使用しちゃいけないってこと?
0666デフォルトの名無しさんNGNG
>>665
正解。
関数出た時点からその関数ローカルな変数の値は保証されない。
0667665NGNG
>>666
returnに自動変数使うのはまずくないんだよね。たとえば
int foo(void)
{
 int i;
 i = 10;
 return i;
}
こんなの。
0668デフォルトの名無しさんNGNG
>>667
値渡しってわかるよね?
あれは引数だけでなく返値にも適応される。
だから戻り値にはその変数のコピーが渡される。
0669デフォルトの名無しさんNGNG
自動変数へのポインタをreturnしちゃいけないって事。
0670デフォルトの名無しさんNGNG
>665
>それとも、returnに自動変数を使用しちゃいけないってこと?

とか言っておきながら>667は何だろう?
0671665NGNG
>>668
了解。サンクス。
リンク先の書き方がわかりにくいと思うのは俺だけかなぁ?
0672デフォルトの名無しさんNGNG
>>671
そう?リアルタイムで読んだけど、

「こんな奴おらへんわ〜往生しまっせ〜」

って感じで長し読みした。
0673デフォルトの名無しさんNGNG
スレッド共有オブジェクトをvolatile宣言しないってのは見る
Windowsアプリのソースで以前あった。これってヤバイの?
0674デフォルトの名無しさんNGNG
>>673
つぅかそんなレベルで変数共有留守法が悪いと思われ。
0675デフォルトの名無しさんNGNG
定規にしるしをつける問題です。関数の中身は
rule(int l, int r , int h){
int i,j,t;
for(t=1,j=1;t<=h;j+=j,t++)
for(i=0;l+j+i<=r;i+=j+j)
mark(l+j+i,t)
}このアルゴリズムの解説をお願いします。markは印をつける
という意味です。
0676デフォルトの名無しさんNGNG
markへの2つの引数はそれぞれどういう意味?
0677デフォルトの名無しさんNGNG
#define HAIRETU_PLUS(kata,cnt,p,tempp) \
tempp)=(kata *)realloc((p),((cnt))*sizeof(kata));\
0678デフォルトの名無しさんNGNG
#define HAIRETU_PLUS(kata,cnt,p,tempp) \
 (tempp)=(kata *)realloc((p),((cnt))*sizeof(kata));\

なんかエラーが出るんですけど,なぜ?
kataが悪いようなんですが
0679デフォルトの名無しさんNGNG
>>678
最初の行の\の後ろにある文字を消してみては。
0680 NGNG
error C2440: '=' : 'struct tagPOINT *' から 'char *' に変換することはできません。
とでます
0681デフォルトの名無しさんNGNG
>>675
お前このまえも来ただろ。
0682デフォルトの名無しさんNGNG
>>680
それはマクロじゃなくてマクロを展開した後の文に問題があるんだろ。
0683デフォルトの名無しさんNGNG
>>982
本当だ。
ありがとう。
3時間悩んだ俺は未熟者
これからは,前後の文もよーく見ます
国語が苦手だったのは,前後の文みなかったせいかな
0684デフォルトの名無しさんNGNG
>>680
どんなコンパイラを使っているの?
そういうものは普通はエラーじゃなくて警告がでるよね?構文上の誤りがあるわけじゃないんだから。
0685684NGNG
どうみてもVC++だな。
おかしいな、ポインタ同士なら警告になるはずだが・・・
0686デフォルトの名無しさんNGNG
実は.cppだという罠
0687デフォルトの名無しさんNGNG
>>686
俺もそれよくやった。

>>680
reinterpret_castを使えば警告は出ないよ。使うべきでないけどね。
0688デフォルトの名無しさんNGNG
普通にCのキャストで良い。どんどん使え
0689デフォルトの名無しさんNGNG
>>688
拡張子が".cpp"、つまりコンパイラにC++と認識されていると、C形式の
普通のキャストもエラーになる事がない?
0690デフォルトの名無しさんNGNG
C++で使うとは自動的にconst_cast
static_cast、reinterpret_castが行われる。とっても便利
Cで通用するキャストは全部通るはず、と思う
0691デフォルトの名無しさんNGNG
>>690
本当だ。第3版のP927〜928に書いてある。知らなかった。使わなかった
もので。
0692デフォルトの名無しさんNGNG
signed int と unsigned int の算術演算の結果が unsigned int になるのやめてホスィ・・・
0693デフォルトの名無しさんNGNG
演算時に片方が unsigned int に格上げされるだけで結果は int に
なるのではない?
0694デフォルトの名無しさんNGNG
>>692
unsigned の方が、ぱぅわが強いのです。ぱぅわが。
0695693NGNG
スマン。勘違いだ。
0696デフォルトの名無しさんNGNG
int value = -50; // 1つずつの値
size_t count = 10; // 個数
if ( value*count<100 ) puts("合計は100未満だよ");
↓
(゜д゜)マズー
0697デフォルトの名無しさんNGNG
>>676
tは、印の高さで(l+j+i)は印をつける位置です。
0698デフォルトの名無しさんNGNG
「あいuえ5」みたいに2バイトと1バイト文字が含まれた文字列を
一文字ずつ分解する(分けて取り出す)プログラムを教えてほしいのですが。
0699デフォルトの名無しさんNGNG
>>698
文字コード書いてくれてないから何とも言えません・・・
0700698NGNG
>>699
すみません、シフトJISです。
0701デフォルトの名無しさんNGNG
>>698
mbstowcs()とかを使ったら?使えない処理系もあるけど…
0702デフォルトの名無しさんNGNG
>>700
1バイト読みとって最上位ビットが1だったら2バイト読んで、0だったら1バイト読むとか・・
でも>>701がよいとおもう。
0703698NGNG
>>701
特殊な感じがしますね。ある程度自作したいので(人に聞いてる時点で自作って言うのか・・・)。
0704デフォルトの名無しさんNGNG
>>702
それだけでは、いわゆる半角カナがあるとうまくいかない。
0705デフォルトの名無しさんNGNG
>>703
ShiftJISの文字コード表探してきて法則性見つけてみる?
勉強にはなると。
0706デフォルトの名無しさんNGNG
>>704
ああそうか。半角仮名があったな(笑)
0707デフォルトの名無しさんNGNG
最初の1バイトを _ismbblead() でチェックして真なら
次の1バイトを _ismbbtrail() でチェック。これも真なら
2バイト文字として読み飛ばす。
0708デフォルトの名無しさんNGNG
#define is_kanji1st(c) ((unsigned int) (c ^ 0x20) - 0xa1 < 0x3c)

0709デフォルトの名無しさんNGNG
>>708
signed char だとまずくないですか?
0710デフォルトの名無しさんNGNG
EBCDIC って今でも現役バリバリなんだね。
銀行系とか遊戯系とか。
めちゃくちゃビックリした。
0711デフォルトの名無しさんNGNG
日系2世 恵比寿ディック
0712名無しさん@カラアゲうまうまNGNG
c^0x20じゃなくてcを直接キャスト。
つーか、cにカッコつけろや(゚Д゚)ゴルァ
0713名無しさん@カラアゲうまうまNGNG
>>712は>>709と>>708へね。スマソ
0714デフォルトの名無しさんNGNG
reinterpret_castを使うべきではないというのはどういうことか
0715デフォルトの名無しさんNGNG
>>714
意味をもったキャストではなくて、そのまま生のバイトを再解釈して
型を変えるのでややアレ。
0716デフォルトの名無しさんNGNG
>>714
reinterpret_castなんてはじめから存在しないものと思っていいよ
0717デフォルトの名無しさんNGNG
intとポインタの変換とかで確実に必要になると思うが。
特にWindowsでプログラムする場合なんかは。
0718デフォルトの名無しさんNGNG
キャスト話はいい加減スレ違いだと思うけど・・・
あえて聞くと、画像処理で頻繁に LPBYTE <-> LPWORD なんかの変換を行うけど、
こんなのにもわざわざ C++ スタイルのキャストを行うの?
0719名無しさん@カラアゲうまうまNGNG
>>718
キャストの話ではないが、RISCとかに移植しようとしてSIGBUSを喰らう罠。
0720デフォルトの名無しさんNGNG
LPBYTE<>LPWORD変換なんてしないよ。
void*経由だろ、フツー
0721デフォルトの名無しさんNGNG
>>720
LPVOID <-> LPBYTE はC++スタイルのキャスト?
0722デフォルトの名無しさんNGNG
>>721
つぅか汎用ポインタはキャストしないと使えないしょ。
0723デフォルトの名無しさんNGNG
>>721
static_cast<>()
0724デフォルトの名無しさんNGNG
一つの式中にキャストが3つも4つも出てくるとstatic_castって書くのうざくないっすか?
可読性も落ちる気がするし。
0725デフォルトの名無しさんNGNG
うざいけど、Cスタイルのキャストは見つけづらいので
リファクタリング時に泣くことになる。
0726デフォルトの名無しさんNGNG
>>725
キャストを検索するマクロ書け
0727デフォルトの名無しさんNGNG
書くときの大変さと保守するときの大変さのトレードオフ?
漏れも今度からstatic_cast使おうかな
0728デフォルトの名無しさんNGNG
>>726
書いてください。
漏れには正確に列挙する正規表現が思いつかないよ
0729デフォルトの名無しさんNGNG
>>727
書くとき大変なんて、誰も言ってないが?
そういうことにしたいのですね?(どこかで聞いたフレーズ)
0730名無しさん@カラアゲうまうまNGNG
typedefや[]、()のネストとかまで考えると、正規表現じゃ無理だろうな。
0731デフォルトの名無しさんNGNG
>>728
コンパイラと同じように、インクルード展開して、
型認識せよ
0732デフォルトの名無しさんNGNG
>>731
それならやっぱりC++スタイルキャストの方がいいやん
0733デフォルトの名無しさんNGNG
>>732
一回書けば、ずっと使えるぞ。学生なら勉強にもなるぞ。
リファクタリング時に、見づらいC++スタイルキャストで
ソースが難解になり、泣かずにすむぞ。
0734デフォルトの名無しさんNGNG
ソース解析ツールはコンパイラと同じように発展すべきだ。
0735デフォルトの名無しさんNGNG
>>733
C++スタイルキャストは冗長でうざいけど判断の妨げになることはない
grepだけで簡単に判断できるから、どの環境でも列挙できる強みもある。
0736デフォルトの名無しさんNGNG
>>735

>>C++スタイルキャストは冗長でうざいけど判断の妨げになることはない
ソースが見づらいのは、充分判断の妨げになる。

>>grepだけで簡単に判断できるから、どの環境でも列挙できる強みもある。
Cスタイルキャストがないとは判断できない。
結局、全てのキャスト部分を列挙するツールが必要。
0737デフォルトの名無しさんNGNG
>>736
冗長だとは書いてあるけど、見づらいとは書いてないじゃん
0738デフォルトの名無しさんNGNG
一時期 C++ スタイルキャスト使っていたけど Windows プログラム
だと本当に可読性悪くなってしまう。結局 C スタイルキャストに
戻してしまった...。
0739デフォルトの名無しさんNGNG
ポインタからDWORDとか、構造体のポインタはCキャストで、
クラスオブジェクトのポインタはC++キャスト使ってるけど、
その住み分けにしばし迷ったりして、いっそのこと全部Cスタイルにしようかと。
0740デフォルトの名無しさんNGNG
標準ライブラリにある、atoiとかstrtoulとかは
入力文字列にEBCDICを使えるのでしょうか?
0741デフォルトの名無しさんNGNG
ここで紹介されている .net framework SDK には Cコンパイラ は入っていないんですけど
どうして紹介されてるんですか?
(入ってるのは、C# , JScript .NET , Visual Basic .NET コンパイラ だけなんですが)
0742デフォルトの名無しさんNGNG
cl.exe <- C/C++ Compiler
0743デフォルトの名無しさんNGNG
>>740
その処理系が対応していれば使える。
0744デフォルトの名無しさんNGNG
>>719
(unsigned)intにキャストして下位ビットを見て処理を分けるな。
x86でも高速化に有効。

if ((((unsigend)ptr)&(sizeof(xxx)-1))==0) {
xxx *ptr2 = (xxx*)ptr;
/* aligned code */
} else {
/* unaligned code */
}
0745デフォルトの名無しさんNGNG
アフォすぎヽ(´д`)ノ
0746デフォルトの名無しさんNGNG
              ∩
             | |
             | |
             | |
             | |
       ∧_∧  | |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ( ´Д`)/./  < 先生!バカがいます
      /     /    \___________
      /     /
  __| |     | __
  \   ̄ ̄ ̄ ̄ ̄   \
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||
0747デフォルトの名無しさんNGNG
>>743
というか、普通に考えたらASCIIとEBCDICと同時に使えないような
気がするんだけど、文字コードがアスキーだというのは
いったい誰がどこで定義するんだ?
LANG=Cだとアスキーコードなの?
0748デフォルトの名無しさんNGNG
>>747
> というか、普通に考えたらASCIIとEBCDICと同時に使えないような
> 気がするんだけど、
誰がASCIIとEBCDICを同時に使おうとしてるの?
Cの仕様では文字コードはASCIIとは限定していないし、
某汎用機のCコンパイラはEBCDICコードに対応している。
0749デフォルトの名無しさんNGNG
しかしすげえな〜このスレは。
11日しか経って無いのにもうレス700・・・
0750名無しさん@カラアゲうまうまNGNG
>>748
> 某汎用機のCコンパイラはEBCDICコードに対応している。

昔から気になってるんだけど、その処理系のisascii()は何を返すんだろう。
0751デフォルトの名無しさんNGNG
>>750
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/isascii.3.html
isascii()
はcが、ASCII文字セットに合った7ビットの unsigned char であるかを調べる。この関数はBSDやSVIDが拡張したものである。

とのことだから、値がASCIIのコードに合っていればいいんじゃないの?
0752デフォルトの名無しさんNGNG
>>749
初心者板に行ってみな。もっととんでもないスレがあるから・・
0753デフォルトの名無しさんNGNG
>>750
Cの標準関数にはisascii()などという関数は存在しません。

751も
> この関数はBSDやSVIDが拡張したものである。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
を無視して勝手な推測をするな。
0754751NGNG
>>753
あ、ごめん。下の準拠ってところにANSI-Cと書かれていたから準拠なんだと思った。
他の関数のことだね。というかそこにもBSDや・・・と書かれているし(鬱
0755デフォルトの名無しさんNGNG
>>753
それを言っちゃだめ(w
0756デフォルトの名無しさんNGNG
質問です。
標準入力より入力された文字を見えなくして、取得するための関数はありますか?
getc(stdin)やscanf系を試しましたが、いずれも入力した文字は目に見える形で
取得されているようです。ないと思いましたが不安になったもので。よろしくお願い
します。
0757デフォルトの名無しさんNGNG
>>756
(゚Д゚)ハァ?
質問の意味がわかりません。
文字を見えなくして?(゚Д゚)ハァ?
0758名無しさん@カラアゲうまうまNGNG
getpass()みたいなやつのことだろ
0759shigeNGNG
ローカルエコーを抑制したいんだろ。suのパスワード入力の際みたいに。
簡単にやるなら、cursesでnoecho()呼べ。
0760757NGNG
>>758-759
俺だってそれくらいのことは想像がつく。
いいかたがわるかった。
ようは相手にわかるように質問する力をつけてほしいのだ。
0761デフォルトの名無しさんNGNG
へロンの公式のソースプログラムの書き方をC言語で教えて下さい。
超初心者な質問で申し訳ないですが、お願いします。
0762デフォルトの名無しさんNGNG
>>761
宿題お断り。
0763デフォルトの名無しさんNGNG
つまり、EBCDICだろーとACSIIだろーと
atoiに放り込めば数値がゲットできるってーことか。
さっそく試してみるか。

できなかったらころす
0764デフォルトの名無しさんNGNG
>>761
ヘロンの公式を教えろ。
0765デフォルトの名無しさんNGNG
>>763
アフォかw
0766デフォルトの名無しさんNGNG
ヘロンの公式をCで書く方法を教えろ。
教えなかったらころす。
0767デフォルトの名無しさんNGNG
>>761
double helon(double a,double b, double c){
double s = (a+b+c)/2 ;
return sqrt(s*(s-a)*(s-b)*(s-c)) ;
}
0768デフォルトの名無しさんNGNG
>>766
( ´,_ゝ`)プッ
0769767NGNG
げげ、heronか
0770デフォルトの名無しさんNGNG
>>767さんは命が惜しかった様子。(w
0771デフォルトの名無しさんNGNG
映画だとこういう場合767だけが殺られる罠。
0772761NGNG
>>767のソースプログラムが正しいのでしょうか?
>>761さんには宿題と見抜かれてしまいましたが、
マジでお願いします。
本当にすいません。
0773デフォルトの名無しさんNGNG
>>772
君はヘロンの公式が何かしらないのか?
宿題は宿題スレにいけ、殺すぞ!
0774デフォルトの名無しさんNGNG
>>767のソースプログラムが正しいのか?
>>761には不覚にも見抜かれてしまったが、
まあ教えてくれや。
教えなかったら頃すぞゴルァ!!
0775デフォルトの名無しさんNGNG
>>765
ちょっと待ってクダサーイ。
どうしてそこで笑うデスか?

理由をおしえないと ぶちますよ?
0776デフォルトの名無しさんNGNG
C言語使いは物騒デスネー
0777767NGNG
近似的には正しい。安心しろ
ただへロンのスペリングは間違っている。
0778デフォルトの名無しさんNGNG
ネタで物騒な言葉を使ってもやっぱりウソはウソと見抜かれて
しまう。このスレの住人はなかなか優秀じゃのう(w
0779尻めつれNGNG
atoi とは ASCII to Integer とかそんな感じの略だと思うんですが
それにしたって 「アスキーじゃないとだめ」 なんてのは
man見ても載ってないし。

そもそも文字コードの「前提」ってやつは 処理系のどこで
どう定義されてるんですか ってのが
誰も応えられないのはいったいぜんたいどういうことなのか。

これがわからないと自分で変換プログラムを書かないとならないので
面倒くさいけど、てゆーか、もう書いちゃったんだけど、くやしくて
車輪の再開発って気に入らないってゆーか。

これから誰を信じていけばいいの? おしえて。
0780デフォルトの名無しさんNGNG
> 誰も応えられないのはいったいぜんたいどういうことなのか。
まともなプログラマは、みんな「答えられる」から。
0781デフォルトの名無しさんNGNG
>>779
locale
0782デフォルトの名無しさんNGNG
char arr[] = ""; ...

char arr[] = "";
or
char arr[] = {'\0'};
で、空文字列を格納する配列を
宣言できるらしいですけど、
空文字列の使い道ってあるんですか?

実際宣言することなんてあるんでしょうか・・・・?
0783デフォルトの名無しさんNGNG
>>782
ないから安心しろ。
0784デフォルトの名無しさんNGNG
>>781
ロケールでEBCDICを使いたいときはどうすればいいの?
0785デフォルトの名無しさんNGNG
>>784
EBCDIC をサポートしている処理系を使う。
0786デフォルトの名無しさんNGNG
>>785
LinuxでEBCDICをサポートしてるディストリビューションってある?
0787デフォルトの名無しさんNGNG
>>786
ない。
0788デフォルトの名無しさんNGNG
>>787
じゃー どのみち もーだめじゃん
もう しぬしかない・・・
0789デフォルトの名無しさんNGNG
しぬなんてかんたんに口にしちゃいけない
いきるのです
0790デフォルトの名無しさんNGNG
mallocで外部メモリから空きを得ることはできるのですか?(FDなどに)
0791デフォルトの名無しさんNGNG
>>790
まず、メモリとはなんぞ輩やり直し。
0792sNGNG
正解標準のういんどうずがasciiなんだから、これからはasciiだろ
0793デフォルトの名無しさんNGNG
海栗コードは?
0794デフォルトの名無しさんNGNG
できない。ヒープ領域で無ければならない。
0795デフォルトの名無しさんNGNG
>>791
二次記憶(secondary memory)って知ってる?
0796デフォルトの名無しさんNGNG
C言語のプログラムをWindows上でPascalに変換するソフトはありませんか?
0797デフォルトの名無しさんNGNG
CとPascalっていうとこのページを思い出します
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.html
0798デフォルトの名無しさんNGNG
C使いがh抜きなんかするな。
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.html
0799デフォルトの名無しさんNGNG
ごめんちゃい
0800デフォルトの名無しさんNGNG
http://www.kojima-cci.or.jp/~fuji/mybooks/cdiag/cdiag.8.2.html
>>796
0801デフォルトの名無しさんNGNG
>>797
そこの管理人は生意気だから嫌いだけど、それはワラタ
0802デフォルトの名無しさんNGNG
test
0803コンパイラさんへ /* とりあえずgccのみ */NGNG
#define 初心者です。よろしくお願いします
#define B.Kernighanマンセー
#define D.Ritchieマンセー
#define R.Stallmanは神!
#define J.Gosling逝ってよし!

#undefine<microsoft.h>

#define …<stdio.h>???      /* 見えてねーよな?*/

main(コンパイルして下さい) /* ったくよー、めんどくせえなー */
{

表示してね("hello, world\n");  /* 分かんねーんだよ */

retune コンパイラさん、今日もいかしてますね(はぁと;

}
0804デフォルトの名無しさんNGNG
>>803
発作?
0805デフォルトの名無しさんNGNG
これよりココは、>>803を焼き殺すスレに変わりますた。
0806デフォルトの名無しさんNGNG
void Func(LPSTR str);

#defineA( str) Func( "str" )

A(hogee);と記入すると、Funcには"hogee"ではなく"str"が渡されてしまいます。
マクロで"hogee"を渡す方法ってありますか?
0807デフォルトの名無しさんNGNG
#define A(x) (Func(#x))
0808806NGNG
>>807
それだと、Func(hogee)になってコンパイルエラーになりませんか?
0809806NGNG
>>807
失礼しました。
勘違いしました。
早速試してみます。
0810806NGNG
うまくいきました。
ありがとうございました!
0811806 ◆GpSwX8mo NGNG
>>810
………。誰?

>>807
やっぱり警告が出るんですけど…?
0812名無しさん@カラアゲうまうまNGNG
なんつー警告?
0813デフォルトの名無しさんNGNG
>>811 やっぱり警告が出るんですけど…?
おまえ失礼な奴だな
0814デフォルトの名無しさんNGNG
FuncをLPSTRじゃ無くてLPCSTRにしてホスィ・・・
0815 ◆GpSwX8mo NGNG
ホスィのか
0816名無しさん@カラアゲうまうまNGNG
しろよ
0817新米 ◆jH.6d5ig NGNG
VC初心者です。

for(i=0;i<=100000;i++)
{
printf("%d",i);
}
ってやると100000が表示されるまで何にも受け付けてくれないのですが
もしこの表示中にexitと入力してエンターすれば
表示がそこでとまる、というプログラムを作りたいときは
どのようにすればいいのでしょうか?
処理をしながら別のところでは別処理をするプログラムを作りたいわけです。
0818デフォルトの名無しさんNGNG
>>817
スレッド。kbhit。getch
0819新米 ◆jH.6d5ig NGNG
>>818
即レスthx。
getchって入力待ちの時に使う奴ですよね・・
kbhit・・・? スレッド・・?2ch用語ですか?
0820デフォルトの名無しさんNGNG
>>819
0821デフォルトの名無しさんNGNG
新米獅子舞てんてこ舞い
0822デフォルトの名無しさんNGNG
どのスレでも「スレッド」って言うと2chの掲示板のスレと勘違いする人がいるよね・・・
初心者の質問に答えてるとき、どうも話がかみ合わないなーと思ったら
その勘違いをしながらずっと話を進めてたっていう・・・
0823新米 ◆jH.6d5ig NGNG
(;´Д`)ハァハァ
0824新米 ◆jH.6d5ig NGNG
googleで調べてみます・・・
0825デフォルトの名無しさんNGNG
f分布のパーセント点を(自由度1、自由度2、危険率)から求めるプログラムを教えてください。

この逆は奥村晴彦さんが書かれた「C言語によるアルゴリズム事典」から調べたんですけど…
思うように出力されないです(TT)
0826デフォルトの名無しさんNGNG
質問れふ
C言語で大抵の事が出来ると聞いてるのですが、
テトリスあたりの簡易ゲームも作れる事が出来るのですか?
それとC言語関連の資格試験があったら教えてください
0827756NGNG
>>757
スマソ、UNIXパスワードみたいに見えない形といったほうが分かりやすかったようです。
>>758-759
サンクス、ためになりました。

その後調べてみたのですが、_getch()で思うような操作ができるようになりました。
お騒がせしてしまってすみませんでした。(getche()が、scanf系やgetchar()と同じく
目に見える形になる)
0828デフォルトの名無しさんNGNG
>>826
できる。
0829デフォルトの名無しさんNGNG
>>756
犯罪の匂いがする。
0830デフォルトの名無しさんNGNG
すいません、質問です。
おとといくらいからC言語の勉強を始めたのですが、本を読んでる間
貧乏ゆすりが止まりません。どうしたらいいですか?
0831デフォルトの名無しさんNGNG
>>830
入院してください。
0832デフォルトの名無しさんNGNG
>>830
つま先ではなくかかとを付くようにして下さい
0833 NGNG
文法は超基礎はマスターしてますが、いままで100行程度のプログラムしか書いたことありません。
そんなどーしょうもない俺が1,000行、約2,000ステップのプログラムを1週間後までに修正できる実力をつけるためにはどうしたらいいでしょうか?
0834デフォルトの名無しさんNGNG
修正なら思ったほど難しくない。
でもなぁ、人様の書くソースはくせありまっせ。
0835デフォルトの名無しさんNGNG
>833
るーぷあんろーりんぐとコピペの練習(ワラ
0836デフォルトの名無しさんNGNG
>>835
「1,000行、約2,000ステップのプログラムを作れるようになりたい」と
勘違いしているヴァカ発見。

>>833
「1,000行、約2,000ステップ」ってどういうこっちゃ ?
0837デフォルトの名無しさんNGNG
>>836
妄想で補ってください。

できなければ右脳を鍛えてください。
0838デフォルトの名無しさんNGNG
まさか、
/* comment */
a=b; b=f(c) ; c=g(a);
みたいなコードなのでわ……
0839デフォルトの名無しさんNGNG
>>838
見事にすべてを破壊してますな。
0840 NGNG
for文で3600回まわして使っているんですけど,
そのなかでif文を4つくらい使っているのですが,
これをなくすためにgoto文を使おうと思うのですが,
他の方法(文が読みにくくなるけど,elseつかったりしてなんとかしる)を取った方が良いですかね?
0841デフォルトの名無しさんNGNG
goto文つかうとどうifが無くせるのでつか?
0842デフォルトの名無しさんNGNG
>>840 mono ni yoru
(gomen totsuzen IME ga sinda)
0843デフォルトの名無しさんNGNG
もしかして
for(){
if(・・・) goto aaa;
if(・・・) goto aaa;
if(・・・) goto aaa;
if(・・・) goto aaa;
aaa:
}
とかやってんじゃ・・
0844 NGNG
data=tel(hairetu[i][j]);
if(data==1) No=1;
if(data==2) No=2;
if(data==3){
if(-------){
 if(-------){
   if(-------)
   else if(------)
 }else{
  }
}

switchつかったほうがいいのかな?
0845デフォルトの名無しさんNGNG
if(data==1){
No = 1;
continue;
}
if(data==2){
・
・
・
とか。
0846デフォルトの名無しさんNGNG
ごめん。if文の下で
表示関数(Src[No]);
ってやってるの
0847デフォルトの名無しさんNGNG
do {

if (xx) break;

} while(0);

を覚えなさい
0848デフォルトの名無しさんNGNG
やってくれる
ってか
for
 for
  do{
      }while(0);
にしている人どのくらいいる?
0849デフォルトの名無しさんNGNG
do{}while(0); 使うくらいなら goto つかう
0850デフォルトの名無しさんNGNG
do{}while(0);
???
0851デフォルトの名無しさんNGNG
do{}while(0)はマクロでよく使うなあ
0852デフォルトの名無しさんNGNG
>>851 どんな場面で使うの?
0853デフォルトの名無しさんNGNG
>>852
マクロ内に複雑な文を入れたいとき do/while で囲むと吉
0854デフォルトの名無しさんNGNG
あーなるほどです。breakも使えるし、いいっすね。
0855デフォルトの名無しさん NGNG
hairetu[i][j]の内容ってNoとどんな関係なの?
配列の順番でNo決めるのか?
0856デフォルトの名無しさんNGNG
*( *(hairetu + i) + j ) = hairetu[i][j] だっけ?
0857デフォルトの名無しさんNGNG
*( *(hairetu + i) + j ) == hairetu[i][j]だな
0858デフォルトの名無しさんNGNG
>>856 オイオイ
*( *( hairetu + j ) + i ) == hairetu[i][j]
だろ
0859デフォルトの名無しさんNGNG
>>858
変だぞ?
0860デフォルトの名無しさん NGNG
*( hairetu * i * j ) == hairetu[i][j]
だろ?

0861デフォルトの名無しさんNGNG
もとい!!
*( hairetu + i * j ) == hairetu[i][j]
0862デフォルトの名無しさんNGNG
お前ら・・・わざとだろ。
0863デフォルトの名無しさんNGNG
>855
Noって何だ.
0864デフォルトの名無しさんNGNG
メモリ上でどう格納されているか理解してれば間違いようが無いと思う今日この頃みなさまお元気ですか?
0865デフォルトの名無しさんNGNG
>>860-861
馬鹿か?
*( hairetu + i + j * w)だろ。
でも、>>858が正解
0866デフォルトの名無しさんNGNG
>>864
>>855の情報だけでは何とも言えない。これ答え。文句あっか!
0867デフォルトの名無しさんNGNG
俺もう駄目かも。。。。
0868デフォルトの名無しさんNGNG
>>865
馬鹿か?
0869デフォルトの名無しさんNGNG
メモリ配置は理解出来るが式が思いつかなんだ。。。
大体、>>844の質問って何?
分岐をシンプルにしたいって事?
ループ以外でのi or jに加減算なければアホなレスもOKでは?
0870デフォルトの名無しさんNGNG
>>860-861はネタ
>>858=865は真性

ということでよろしいか?
0871デフォルトの名無しさんNGNG
おいおい
j[i[hairetu]] == hairetu[i][j] だがな
0872デフォルトの名無しさんNGNG
>>870
いや、ネタじゃないで。。。(本人。。)
ネストしたループしか考えてなかった。。。。
0873デフォルトの名無しさんNGNG
>>871
どこからjとiの配列が出て来るんや。。。。。。。

0874デフォルトの名無しさんNGNG
>>873よく考えろ
"abcde"[i]とi["abcde"]は等価
0875デフォルトの名無しさんNGNG
はあ??ここは「数学スレ」か?
「C言語」のスレでは??
0876デフォルトの名無しさんNGNG
頃しますよ
0877デフォルトの名無しさんNGNG
>>874
って言うかそれ出来たら言語的にすごい気がする。
これ指向で誰か仕様考えない?
0878デフォルトの名無しさんNGNG
>>877
Cは言語的にすごかったのですね。
0879デフォルトの名無しさんNGNG
>>877
出来たらつか、出来るんだ。
x[y]の形式は x + yと等価だから、y[x]でも同じ事
0880デフォルトの名無しさんNGNG
>>879
だから!「言語的に」だって!!
0881デフォルトの名無しさんNGNG
言語的ってなんだ?
0882デフォルトの名無しさんNGNG
>>879
xが基準。yがオフセット?
0883デフォルトの名無しさんNGNG
てか、何がすごいんだ?
0884デフォルトの名無しさんNGNG
>>871 本当だ。初めて知りますた。
0885デフォルトの名無しさんNGNG
マクロfoo

#define foo(x) {\
/*ほげほげ*/ \
goto XXX; \
/* ふがふが */ \
XXX: \
}

を複数回使ってもコンパイラに文句を言われないよう、XXXに __LINE__ か何かを
くっつけたいんですが、どうやったらできますか?

こんなマクロ駄目とかgoto使うなってのはナシで。
0886デフォルトの名無しさんNGNG
>>885
こんなマクロ駄目。goto使うな。
0887デフォルトの名無しさんNGNG
#define foo(x)
do {\
 break;
} while(0)
0888デフォルトの名無しさんNGNG
#define foo(x) \
do {\
 break; \
} while(0)

\つけ忘れ。鬱だし脳
0889デフォルトの名無しさんNGNG
>>888
マクロの中のforの2重ループから抜けたいのよね…
0890デフォルトの名無しさんNGNG
>>885
マクロにラベル文字列を指定する引数を追加するってのはどうだ?
コンパイルは通ったぞ。望み通りの動きをするかどうかは知らん。
0891デフォルトの名無しさんNGNG
>>890

goto XXX##str;

XXX##str:

でいいっけ?
0892デフォルトの名無しさんNGNG
>>891
ええんちゃう?
ただ、strに渡す引数は手作業で指定してやらないといけないけど。
(__LINE__等が使えない)
0893名無しさん@カラアゲうまうまNGNG
引数を展開してからじゃないと逝けないから、こうだな。

#define CONCAT2(x,y) x##y
#define CONCAT(x,y) CONCAT2(x,y)
#define foo() { \
goto CONCAT(xxx_,__LINE__); \
CONCAT(xxx_,__LINE__):; \
}
0894デフォルトの名無しさんNGNG
つぅか普通に関数にしろと。
0895デフォルトの名無しさんNGNG
は・げ・ど・う
0896デフォルトの名無しさんNGNG
>>884
そうそう!良く考えたらそうなんだよね!
でもCのスレだからな。
ポインタに0入れてiもjも0なら「少し」は判るが・・・
(そりゃ無いけど)
0897デフォルトの名無しさんNGNG
> でもCのスレだからな。
とは?
0898デフォルトの名無しさんNGNG
文法とかコンパイラの勉強か?
勉強熱心で若者なら有意義な質問かもね。
0899デフォルトの名無しさんNGNG
>>898
よかったな。向上心無しの技術者定年間近のおっさんはお前だけだ。
0900 NGNG
>>855
for(i=0;i<100;i++)
for(j=0;j<100;j++)
No=tel(hairetu[i][j]);

#define tel(a) (a)&(1<<3)

ッてな感じです
0901デフォルトの名無しさんNGNG
>>898
こういうので遊べるってのもプログラマの素養の一つだろ。
0902デフォルトの名無しさんNGNG
>>897
ポインタに0が入るロジックあるのか??
0903デフォルトの名無しさんNGNG
いや、CでできることをCのスレで語ってるのに
> でもCのスレだからな。
ってのは変だなと思って。
0904デフォルトの名無しさんNGNG
>>903
う〜ん。それ言われるとなーー
でも、それだと数学的になり過ぎて、
収集つかないような気がする・・・
0905デフォルトの名無しさんNGNG
>>904
なぜこの流れで数学なんて言葉が出てくるんだ?
0906デフォルトの名無しさんNGNG
>>904
>>871の解についてや!。
0907デフォルトの名無しさんNGNG
int num;

num|=2<<20;

printf("num=%d\n",num>>20); //2
printf("num=%d\n",(num&printf("num=%d\n",(num&2097151)>>20); //2

のはずなんですが,最後の&したあとにシフトさせるのが,0になってしまいます。
上のプリント文は,2が出るのに,なんで下のプリント文では,2が出ないんでしょうか?
0908デフォルトの名無しさんNGNG
int num=0;

num|=2<<20;

printf("num=%d\n",num>>20); //2
printf("num=%d\n",(num&printf("num=%d\n",(num&2097151)>>20); //2

のはずなんですが,最後の&したあとにシフトさせるのが,0になってしまいます。
上のプリント文は,2が出るのに,なんで下のプリント文では,2が出ないんでしょうか?
0909デフォルトの名無しさんNGNG
int num=0;

num|=2<<20;

printf("num=%d\n",num>>20); //2
printf("num=%d\n",(num&printf("num=%d\n",(num&2097151)>>20); //2

のはずなんですが,最後の&したあとにシフトさせるのが,0になってしまいます。
上のプリント文は,2が出るのに,なんで下のプリント文では,2が出ないんでしょうか?
0910デフォルトの名無しさんNGNG
>>20を参照したやつ素直になのれ
0911デフォルトの名無しさんNGNG
>>907
とりあえずnum&2097151==0だ。
何がやりたいのかよく分からんが
0912名無しさん@カラアゲうまうまNGNG
2097151==0x1fffff
2<<20==0x200000
0913デフォルトの名無しさんNGNG
2<<20
で21ビット目が埋まる?
0914デフォルトの名無しさんNGNG
22ビット目だろ
0915デフォルトの名無しさんNGNG
int num=0;

num|=2<<20;

printf("num=%d\n",num>>20); //2
printf("num=%d\n",(num&printf("num=%d\n",(num&2097151)>>20))))))))))))); //2

のはずなんですが,最後の&したあとにシフトさせるのが,0になってしまいます。
上のプリント文は,2が出るのに,なんで下のプリント文では,2が出ないんでしょうか?

足りなそうだったので付け加えてみますた。
0916909NGNG
ガクガクブルブル
0917デフォルトの名無しさんNGNG
関数の引数に
kansuu'const char a)
{
 return a+1;
}

のようにconstってよく付けますか?
つける場合プロトタイプ宣言の方にも付けた方が良いでしょうか?
0918デフォルトの名無しさんNGNG
関数の引数に
kansuu'const char a)
{
 return a+1;
}

のようにconstってよく付けますか?
つける場合プロトタイプ宣言の方にも付けた方が良いでしょうか?
0919名無しさん@カラアゲうまうまNGNG
>>918
関数の引数に'はつけたことがない

constもポインタ引数にはつけるが値渡しにはとくにつけない。
0920木村 キタキタマシーンNGNG
よくは付けません
プロトタイプ宣言にも必要です
0921デフォルトの名無しさんNGNG
>>917>>918
もれのコンパイラではつけないとわー人グ出すよ
0922デフォルトの名無しさんNGNG
>>919-921
ありがとん

夜はいろいろな名前の人がいて楽しいのら(徹夜でおかしくなり気味)
0923デフォルトの名無しさんNGNG
いっぺんの長さを入力すると、その正方形の面積を返してくれる
サーバーをプログラムしたのですが、どうやってそのサーバに
長さを送ったらいいのでしょうか?
ちなみにそのプログラムは自分のPCの中においています。
telnetで送れるらしいのですが、いまいち分かりません。
0924デフォルトの名無しさんNGNG
>>923
だから、以下略
0925デフォルトの名無しさんNGNG
>>924
もしかして、既出ですか?
0926デフォルトの名無しさんNGNG
AIBOはC++で動いているという話を聞きました。それで、これからの将来にドラえもんのようなロボットをつくりだすのもC++だということを聞いたのですが、それは実現可能なのでしょうか??
0927デフォルトの名無しさんNGNG
>>926
ドラえもんの方はどこで聞いた?
0928デフォルトの名無しさんNGNG
>>926
これからはHSPが主流
0929デフォルトの名無しさんNGNG
>>927
「C++の将来」スレでそういうネタがあったんだよ。
0930デフォルトの名無しさんNGNG
int型の整数を文字配列としてChar型の配列に入れたいときは
どうしたらよろしいのでしょうか。
0931デフォルトの名無しさんNGNG
>>930
暇なんでマゾレス。
itoa
0932デフォルトの名無しさんNGNG
>>931
なるほど。ありがとうございます。
では、w型をCharにかえるにはどうすればよろしいのでしょうか。
何度もすいません。
0933名無しさん@カラアゲうまうまNGNG
>>931
itoa()は標準にはない。
sprintf(buf, "%d", i)
0934デフォルトの名無しさんNGNG
>>932
w型ってlongのことか?
ltoa
0935名無しさん@カラアゲうまうまNGNG
>>932
w型ってなんだ。あとCにCharというのはない。
0936デフォルトの名無しさんNGNG
>>932-935
ありがとうございました。
sprintfで解決しました。
0937デフォルトの名無しさんNGNG
>>923
ウェブサービスのサーバ?
0938デフォルトの名無しさんNGNG
サーバープログラミングなのですが、一人がコネクトした状態では
「待って」というメッセージを送って、2人コネクトして初めて
メインの処理が始まるようにしたいんですが、どういう構成でいけばよろしいでしょうか?
0939デフォルトの名無しさんNGNG
>>938
一人がコネクトした状態では「待って」というメッセージを送って、
2人コネクトして初めてメインの処理が始まるような構成にしてはどうでしょう?
0940デフォルトの名無しさんNGNG
>>938
一人がコネクトした状態では「待って」というメッセージを送って、
2人コネクトして初めてメインの処理が始まるような構成にに僕も賛成です。
0941デフォルトの名無しさんNGNG
>>938
s = socket()
bind(s, addr_and_port)
listen(s,...)
s1 = accept(s)
send(s1, "待って", ...)
s2 = accept(s)
main(s1, s2)

ぐらいでいいと思うが。3人目来たらどうするかとかは知らんけどさ。
あと当然ながら、エラー処理は言うに及ばずクローズ処理や Windows
なら必要な WSA...() は書いてねーからそのつもりで。
0942デフォルトの名無しさんNGNG
s2をacceptした時点で、close(s)すればいいんでないかい?
0943941NGNG
>>942
3人目を受付ないならね。そう言う仕様かもしれないし、3〜4人目をセットにし
て同じような処理する仕様かもしれないしね。
要は、「そこの仕様が不明確だよ。」って言ってるだけ。
0944デフォルトの名無しさんNGNG
terminal の行数を得たい場合はどうしたらいいですか?

% echo $LINES では行数を得られるのですが、環境変数ではないようで、
getenv("LINES") ではだめなんですが。
0945944NGNG
すみません、環境は Linux(Debian) です。
0946デフォルトの名無しさんNGNG
age
0947デフォルトの名無しさんNGNG
man 4 tty
/TIOCGWINSZ
0948デフォルトの名無しさんNGNG
se/

dialogon/open.
%1-dialogaaa
0949シロウトNGNG
関数を作るときに
if ( (fp = fopen ("omanko","w" ) )!=0 ) {
printf("Can't open");
exit(1);
}
↑の場合どうすればヨイのですか?
FILE Fopen (*fp) {
if ( (fp = fopen ("omanko","w" ) )!=0 ) {
printf("Can't open");
exit(1);
}
}
とかにすりゃいいんすかね?
0950デフォルトの名無しさんNGNG
とりあえず、コンパイルできないじゃん。
0951デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

void Fopen(FILE **fp);

void Fopen(FILE **fp)
{
if((*fp = fopen("omanko","r"))==NULL){
printf("cant open");
exit(1);
}
}

main()
{
FILE *fp;
char buffer[255];

Fopen(&fp);
while(fgets(buffer, 254, fp))
printf("%s\n",buffer);

return 0;
}

こんなのとか。
0952デフォルトの名無しさんNGNG
>>949
そんな君に送る単発質問テンプレート

「何」を、
「こう」したいので、
「こう」書きましたが、
「こうなって」しまいました。
どうすればよいでしょうか?

鍵括弧の所を適宜書き直して使ってくれ。
0953デフォルトの名無しさんNGNG
>951
エラー時にFopenでexitするの?
0954デフォルトの名無しさんNGNG
>953
まあ、オリジナルに近い形でつくってみますた。
0955949NGNG
949を、
こうしたいので、
こう書きましたが、
こうなってしまいました。
どうすればよいでしょうか?
0956デフォルトの名無しさんNGNG
>>955
>949を、
>こうしたいので
ハァハァ
0957949NGNG
>>955は漏れジャネーッス

fopenを関数にしたかったんすけど
void FileOpen (??????)
の?部分と
呼び出す際の
FileOpen(??????)
の?部分がわからなかったのです。

糞厨でスマソ
0958デフォルトの名無しさんNGNG
>>957
偉い。本当にテンプレートを使用してくるとは・・・

最近は、こういう書き方するとすぐ突っかかってくる奴等
ばかりだからな。感心感心(いや、マジで)。

まず、fopen 自体が関数だって事は理解してるよね。
で、それを使用してエラーをはじく機能を追加した
自作の fopen (=Fopen) を作りたい訳だ。

まあ、普通(あまり細かい事に気を遣わずに)に書くなら

FILE* Fopen(char *filename,char *mode)
{
    FILE *fp;

    if((fp=fopen(filename,mode))!=NULL){
        printf("Can't open");
        exit(1);
    }
    return fp;
}

int main(void)
{
    fprintf(Fopen("omanko","w"),"hello world\n");
    return 0;
}

で、いいんじゃない?
0959デフォルトの名無しさんNGNG
int main()
{

return EXIT_SUCCESS; //(゚ω゚=)
}
0960デフォルトの名無しさんNGNG
>>958
まあ、言いたいことはわかるけど、何でプログラムの動作まで変えるん
だ ? こんな書き方すると...
while(fgets(buffer, 254, Fopen("omanko", "r")))
 printf("%s\n",buffer);
とか書きかねないぞ。あと今回は固定文字列だからいいけど、
printf("helo world\n"); は、printf("%s", "hello word\n"); にし
た方がいいと何回も言われてるのに、学習能力の無いアフォですか ?
0961デフォルトの名無しさんNGNG
>960
何故にわざわざ「あまり細かい事に気を遣わずに」と
断り書きをいれたか分からんのか?

読解能力の無いアフォですか ?
0962デフォルトの名無しさんNGNG
In Article 960 (以下略)
>> printf("helo world\n"); は、printf("%s", "hello word\n"); にした方がいい

はつみみです。
0963デフォルトの名無しさんNGNG
>>960
とりあえず、教科書では

printf("%s", "hello world\n");

ではなく、

printf("hello world\n");

と書かれている理由をじっくり考えてみるヨロシ。
0964!=960NGNG
>>961
悪いけど、俺にとっても
> fprintf(Fopen("omanko","w"),"hello world\n");
はとても細かいこととは思えない・・・
0965949NGNG
ケソカハヤメテ!!
0966デフォルトの名無しさんNGNG
>>963
著者がそろいもそろってバカばっかだからだよ。
0967デフォルトの名無しさんNGNG
なるほどなるほど、例えばint nを表示したいときに
printf("n=%d\n",n);
ではなくて
printf("%s%d%s","n=",n,"\n");
としたほうがいい訳だな


バ カ ァ ?
0968偽551NGNG
>>961
ププ、簡単につれるねぇ。なんだあんたは、「細かいことに気を遣わないと」もと
のプログラムと動作が変わっちまうんのか ?
まあ、もともと「普通に書くなら」ああいうプログラムスタイルになる奴になに
言ったって無駄だけどな。

>>962
失礼、このスレじゃなかったかも知れん。「まあ、
printf("%%% hellow world %%%\n"); とかしたい時まずいだろ ?」って話だ。
0969デフォルトの名無しさんNGNG
フタリヲトメテ!
0970デフォルトの名無しさんNGNG
>>270
次スレよろしく
0971デフォルトの名無しさんNGNG
>>968
偽551ハケーン!!
確かに、普通に書いてあーなるのはちょとどこかおかしいかも・・・
0972デフォルトの名無しさんNGNG
>>971
結局、説明の力点を何処に置くかって事だろ。
説明したかったのは Fopen についてだけで
main はあくまでもオマケ。
コンパイルして実行してみたいだろうからね。

確かにちょっとおかしいと感じるのも分かるけど
動作に支障が無ければ短いほうがいいと考えただけ。
(結構 Lisper の血が流れているのかもしれん・・・)
0973デフォルトの名無しさんNGNG
次スレれふ。
C言語なら、俺に聞け! <26>
http://pc.2ch.net/test/read.cgi/tech/1026048820/l50
0974デフォルトの名無しさんNGNG
ワタシノタメニアラソワナイデ!
0975969NGNG
>>974
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0976 NGNG
callocうっとおしいので、削除しちゃっていいですか?
0977デフォルトの名無しさんNGNG
>>960
あんた、「どんな文字列が入っているのか分からないものをprintfのフォーマット文字列に指定してはならない。」ということと勘違いしていないか?
定数ならなんの問題もないだろ(第一、"%s"だって定数だし・・・)。
0978デフォルトの名無しさんNGNG
>>968
> とかしたい時まずいだろ ?」って話だ。
しねーよ馬鹿(ワラ
0979デフォルトの名無しさんNGNG
(;´Д`)/ <  先生! 危険なので>>968にはprintf/sprintf系関数禁止令を出して下さい!
0980デフォルトの名無しさんNGNG
よっしゃぁ!!
やっと前スレ埋まったよ。
次は、ここだな。
おめーら、早く次ぎいけ

C言語なら、俺に聞け! <26>
http://pc.2ch.net/test/read.cgi/tech/1026048820/l50
0981デフォルトの名無しさんNGNG
   ⊂⊃
    ∧∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ( xДx)< デブ川俣は昇天・・・
  |⌒|U U   \_______
  川 |   |
    U U
   ∫
0982デフォルトの名無しさんNGNG
う
0983デフォルトの名無しさんNGNG
め
0984(・∀・)NGNG
埋めー
0985985NGNG
985     
0986(・∀・)NGNG
(・∀・)ウメウメ
0987(・∀・)NGNG
埋め血前!!!
0988(・∀・)NGNG
(゚∀゚)ノ アヒャ
0989(・∀・)NGNG
ヽ(゚∀゚)ノ アヒャヒャ
0990990NGNG
990!
0991(・∀・)NGNG
9   さて、と…
0992(・∀・)NGNG
8  埋めー
0993(・∀・)NGNG
7   (・∀・)ニヤニヤ   
0994(・∀・)NGNG
6                                 
0995(・∀・)NGNG
5          
0996(・∀・)NGNG
4。。。     (・∀・)ニヤニヤ
0997(・∀・)NGNG
3。     
0998(・∀・)NGNG
2。          
0999(・∀・)NGNG
1!!!!!!!!!                         
1000デフォルトの名無しさんNGNG
      __     
     l⊆⊇`ヽ ≡  ヤホーイ
     (´�D`Lノ ≡
    m=○=mノ) ≡
    _/_/(「_ノニコ ≡
     ( (0)=(__)0) ≡(´⌒(´⌒;;
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。