C言語なら俺に聞け! Part 102

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンク、関連スレは>>2-13あたり

C言語なら俺に聞け! Part 101
http://pc5.2ch.net/test/read.cgi/tech/1107128274/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
2デフォルトの名無しさん:05/02/11 02:26:44
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.cygwin.com/
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/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

【ライセンスや機能などに問題あり】
Microsoft 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
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
3デフォルトの名無しさん:05/02/11 11:42:19
>>1
4デフォルトの名無しさん:05/02/11 12:39:50
1がいつもよりつまらないな
5ビル・ジョブス:05/02/11 12:59:01
さー質問はまだかな?
6デフォルトの名無しさん:05/02/11 13:51:59
吉野家の牛丼って旨いの?
7デフォルトの名無しさん:05/02/11 13:59:56
今日行列が出来てたけど、わざわざ並んでまで食いたいとは思わないな〜
8デフォルトの名無しさん:05/02/11 14:01:46
>今日行列が出来てたけど
もうアホかと・・・
9デフォルトの名無しさん:05/02/11 14:02:43
今年中にはまた食えるようになるだろう
10デフォルトの名無しさん:05/02/11 14:07:03
うん、食ってき・・・・アハヒャヒャハヤ・・・バタッ
11デフォルトの名無しさん:05/02/11 14:17:01
「c(半角)」でスレッド検索かけたら、11件しかヒットしなかった。意外。
12デフォルトの名無しさん:05/02/11 14:20:25
素朴だけど質問っす!
なんでCとC++ではNULLの定義が違うんですかー?
13デフォルトの名無しさん:05/02/11 14:22:33
今日売られてる牛丼って狂牛病発生直前に輸入した米国産の備蓄らしいよ
いま米国で生産されているものより相当危険
14デフォルトの名無しさん:05/02/11 14:25:07
>>12
そんなこと気にするな。
C/C++両方0使っとけ。
15デフォルトの名無しさん:05/02/11 14:28:17
はぁ?
16デフォルトの名無しさん:05/02/11 14:29:17
NULLなんて使うのは素人
17デフォルトの名無しさん:05/02/11 14:30:15
ははぁ
18デフォルトの名無しさん:05/02/11 14:36:26
int i;

for(i = 0; i < 1001; i++)
if(>>i == NULL)
 ga();
19デフォルトの名無しさん:05/02/11 14:37:44
>>12
現在このスレには、漏れも含めてその質問に答えられる人はいません
20デフォルトの名無しさん:05/02/11 14:40:31
NULLなんてプログラムを見にくくするだけだろ。
21デフォルトの名無しさん:05/02/11 14:41:38
「言語が違うから」としかいいようがない > 12

「PascalとCで引数の渡し方が違う」のも
「FortranとCで代入式の意味が違う」のも、同様の理由だ!
22デフォルトの名無しさん:05/02/11 14:42:20
馬鹿ばっか
23デフォルトの名無しさん:05/02/11 14:42:42
              _,, --- 、
           , ' ´       `ヽ、
         ,/    __,,,,=- 、   ヽ,
        ノ  ,= ̄ i ,__ノ_i、イ  ヽ   何このスレ・・・
        ~i. ´、i_,,V  ,'rヽヽiノ   i、
______i  ヽr'rヽ,  `'´ |/ヽ人ル'
::::| ______ヽi/ ヽ`'  __ u_レト 、ノノ
::::| |        |ノi `' --, '´   ̄`ヽ,
::::| |         レ ノレ /´       \
::::| |  NULL    ,く`ヽ、____,,,,,,, イゝ
::::| |       ⊂',⌒ヽヽ/' 〜 〜〜 ~~イヽ
::::| |______ゝr⌒ 、   イ      iノ
::::|________i、    /i       ,ゝ
___========__ヽ_,/く__,,i,---´iヽ、
________________________________//
24デフォルトの名無しさん:05/02/11 14:43:07
うちの学校で2年になってからおしえてくれてるせんせーは
NULLを「ヌル」って言うんです。どうしましょう?
25デフォルトの名無しさん:05/02/11 14:45:28
>>24
ナルなんて恥ずかしくて言えないわ、あーナルか、恥ずかしい
ヌルの方が抵抗ありません
26デフォルトの名無しさん:05/02/11 14:47:06
>>24
正確には「ノー」と発音するということを教えてあげましょう。
27デフォルトの名無しさん:05/02/11 14:47:50
1年のときにおしえてくれたv先生は、ちゃんとふつうに「ナル」と読んでましたよ。
28デフォルトの名無しさん:05/02/11 14:48:01
うちずっとニュルかと思ってた。
29デフォルトの名無しさん:05/02/11 14:48:06
例のアレはなるぽなのですか
30デフォルトの名無しさん:05/02/11 14:48:53
> 正確には「ノー」と発音する

いいえ
31デフォルトの名無しさん:05/02/11 14:49:53
ヌーだよな。
32デフォルトの名無しさん:05/02/11 14:49:56
ノーオゥルッ
33デフォルトの名無しさん:05/02/11 14:49:57
ドイツ語ではヌルっていうんですっ!!!
34デフォルトの名無しさん:05/02/11 14:50:57
nil ちゃうん?
35デフォルトの名無しさん:05/02/11 14:52:05
>>27
void先生?
36デフォルトの名無しさん:05/02/11 14:52:12
おめーら
scullもスクルで
gullもグルなのかよ!
37デフォルトの名無しさん:05/02/11 14:53:07
「void & null」は試験によく出る熟語です。
38デフォルトの名無しさん:05/02/11 15:02:32
>>35
だよ
39デフォルトの名無しさん:05/02/11 15:10:30
ってことはとなりのクラスか
40デフォルトの名無しさん:05/02/11 15:11:16
( ´∀`)<BYTE *p=NULL;
41デフォルトの名無しさん:05/02/11 15:14:24
C#>|超えられない壁|>C+>C>|超えられない壁|>Java

論外
J+、ひょっと出言語
42デフォルトの名無しさん:05/02/11 15:16:43
Java=ニート用言語
43デフォルトの名無しさん:05/02/11 15:19:33
>41
C#ってひょっと出系では?
44デフォルトの名無しさん:05/02/11 15:21:29
C言語とは関係ないかもしれないけどプログラム関係の知識をつけるに当たって
OSのAPIとかメモリ領域に関する知識をつけるにはどうすればいい?お勧めの本ある?
45デフォルトの名無しさん:05/02/11 15:21:53
やーい > C#厨
46デフォルトの名無しさん:05/02/11 15:23:16
C#のコンパイラーが何で書かれているか知っているか?
47デフォルトの名無しさん:05/02/11 15:31:30
ゴゴゴゴゴゴ…
48デフォルトの名無しさん:05/02/11 15:36:31
>>44
>C言語とは関係ないかもしれないけど
かする程度に関係はある。が、
>お勧めの本ある?
スレ違いだ莫迦者。
49デフォルトの名無しさん:05/02/11 15:37:25
>>46
何で、って…

仕事だから。
50デフォルトの名無しさん:05/02/11 15:40:38
手で
51デフォルトの名無しさん:05/02/11 15:41:51
ほわい
52デフォルトの名無しさん:05/02/11 15:42:55
C丼て何?
53デフォルトの名無しさん:05/02/11 15:43:08
どうせ定型コードしか書かないんだからDX使えりゃなんでもいいのよ
あとは綺麗に書けるかでその点ではCは没
54デフォルトの名無しさん:05/02/11 16:08:17
>>52
Chuka丼
55デフォルトの名無しさん:05/02/11 19:00:17
              _,, --- 、
           , ' ´       `ヽ、
         ,/    __,,,,=- 、   ヽ,
        ノ  ,= ̄ i ,__ノ_i、イ  ヽ   何このスレ・・・
        ~i. ´、i_,,V  ,'rヽヽiノ   i、
______i  ヽr'rヽ,  `'´ |/ヽ人ル'
::::| ______ヽi/ ヽ`'  __ u_レト 、ノノ
::::| |        |ノi `' --, '´   ̄`ヽ,
::::| |         レ ノレ /´       \
::::| |  NULL    ,く`ヽ、____,,,,,,, イゝ
::::| |       ⊂',⌒ヽヽ/' 〜 〜〜 ~~イヽ
::::| |______ゝr⌒ 、   イ      iノ
::::|________i、    /i       ,ゝ
___========__ヽ_,/く__,,i,---´iヽ、
________________________________//
56デフォルトの名無しさん:05/02/11 19:13:18
> DX使えりゃなんでもいいのよ

レジスターですね
57デフォルトの名無しさん:05/02/11 19:14:50
> 何このスレ・・・

ナルすれ
58デフォルトの名無しさん:05/02/11 20:21:59
>>24
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 日記はこれにでも書いてろ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  な!
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ    
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  http://yuukiremix.s33.xrea.com/chirashi/
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
59デフォルトの名無しさん:05/02/11 20:56:15
なるぽ
60デフォルトの名無しさん:05/02/11 21:00:13
こうして無駄にスレが消費されていく。でも言いや、HDD安いし
61デフォルトの名無しさん:05/02/11 21:09:42
無駄に消費されるのはお前らの未来への可能性と寿命
62デフォルトの名無しさん:05/02/11 21:39:41
第102採掘基地
63デフォルトの名無しさん:05/02/11 21:53:23
下らない質問でももうしわけありません。

関数の引数で
const void *aaa
とありますが、これはどういった意味があるのでしょうか?
自分なりに調べたところ、何が入るか決まっていないようにかんじました。
64デフォルトの名無しさん:05/02/11 21:57:26
初期化子付でやれば意味よ
65デフォルトの名無しさん:05/02/11 21:59:01
>>63
const なオブジェクトをポイントする「何らかの」ポインタから値を受け取る変数
66デフォルトの名無しさん:05/02/11 21:59:10
あと、変更できないポインタとか
67デフォルトの名無しさん:05/02/11 22:01:34
>>63
ポイント先が変更出来ない汎用ポインタ
68デフォルトの名無しさん:05/02/11 22:01:38
void * const aaa
69デフォルトの名無しさん:05/02/11 22:08:05
>>12です。

>>21さんどうもありがとうございます。そこをもう一段掘り下げていただけると嬉しいのですが…

C++ではCのNULLの定義ではなぜまずかったんでしょうか?
70デフォルトの名無しさん:05/02/11 22:10:49
知りたいのなら、CのNULL定義を使ってみればいい。
71デフォルトの名無しさん:05/02/11 22:12:49
7263:05/02/11 22:15:12

皆様ありがとうございます。

おぼろげながら解った気がします。
何が入っているか判らないポインタということですね
たしかにンプルでは、キャストしてから使っていました。
73デフォルトの名無しさん:05/02/11 22:18:13
>>71
サイト主は <stream.h> を知らないようだな
74デフォルトの名無しさん:05/02/12 00:16:19
日本女性の外性器増補改訂版統計学的形態論
http://homepage3.nifty.com/aokura/
75デフォルトの名無しさん:05/02/12 01:38:46
質問させていただきます
任意の動作をさせながら一定時間たてば他の処理をさせたいのですがどうすればいいのでしょうか?
たとえば
if (1){
printf("hoge");
}
と言うのを5秒間つづけさせたいのですが
時間を指定してループをまわすにはどうするのでしょうか?
sleepを使えばできると思っていたのですが実際やってみると
sleepで 指定時間止まってしまうのでだめです
どうすればいいのでしょうか?

76デフォルトの名無しさん:05/02/12 01:40:18
time
77デフォルトの名無しさん:05/02/12 01:47:50
78デフォルトの名無しさん:05/02/12 01:58:35
上のprintfのループを5秒間動かすものを書いて下さい
79デフォルトの名無しさん:05/02/12 02:01:35
>>75
時間を見て処理止めれ。
80デフォルトの名無しさん:05/02/12 02:07:13
>>75
alarm()
setitimer()
fork()
CreateProcess()
pthread_create()
81デフォルトの名無しさん:05/02/12 02:10:05
time_t start;
time(&start);
while(time(NULL) - start < 5)
{
printf("Hoge%d", time(NULL) - start);
}
82デフォルトの名無しさん:05/02/12 02:35:05
僕は英語とC言語を話せます
83デフォルトの名無しさん:05/02/12 02:40:38
>>82
日本語は話せないのね。
84おれはこれつかってます。:05/02/12 02:51:20
time( &1 );
for(;;)
{
:
 time( &2 );
 if (difftime(t2,t1)>300.0) break;
}

もしくは、アラームのシグナルハンドラー登録かな?

pthread_XXXXは環境が提供されていと使えまへん。
85デフォルトの名無しさん:05/02/12 02:59:11
>>84
なんで素直に引き算しないの?
86デフォルトの名無しさん:05/02/12 03:05:38
>>85
man difftime
87デフォルトの名無しさん:05/02/12 03:38:54
>>86
いやだから、わざわざdifftime()を持ち出す理由を知りたいのだけれど。
88デフォルトの名無しさん:05/02/12 03:40:05
わざわざdifftimeごときに粘着する理由も知りたいものだな。
89デフォルトの名無しさん:05/02/12 03:49:04
わざわざ1レスごときに粘着する理由も知りたいものだな。
つーか、誰も&1、&2には突っ込まないのかYO!
90デフォルトの名無しさん:05/02/12 03:49:10
Cにシグナルなんてあったっけ?
91デフォルトの名無しさん:05/02/12 04:00:01
標準 C には無いな。
92デフォルトの名無しさん:05/02/12 04:56:01
確認しとくけど標準ってC99のことだよね?
93デフォルトの名無しさん:05/02/12 05:02:19
ほかに標準はない
94デフォルトの名無しさん:05/02/12 05:04:18
業界標準といったらVC++に決まってるだろ。
95デフォルトの名無しさん:05/02/12 05:15:13
おやおや、シグナルがないとはいかがな物か。もそもそと苦言を呈しておく。
96デフォルトの名無しさん:05/02/12 05:21:11
setenv()もないぞ。
97デフォルトの名無しさん:05/02/12 11:49:02
signalはOSというかライブラリの話だ
98デフォルトの名無しさん:05/02/12 11:55:56
C言語の話だろ。
99デフォルトの名無しさん:05/02/12 16:30:01
CじゃなくてC言語っていうあたりが厨房だな。
100デフォルトの名無しさん:05/02/12 16:34:19
初級〜中級者から抜けられません
入門書→入門書→入門書→入門書…
無限ループ
101デフォルトの名無しさん:05/02/12 16:37:49
ループして無いじゃん
102デフォルトの名無しさん:05/02/12 17:00:46
初級〜中級者にハマって抜けられねえ( ´,_ゝ`)

月に20行です
ウィンドウは全く応答なし
スゲーつまんねえ
前一回フレームワーク持ってたやついたけど
見ぬふりをした
103デフォルトの名無しさん:05/02/12 17:03:32
日下部先生の本を読めばばっちりですね。
104デフォルトの名無しさん:05/02/12 17:09:37
>102
本や開発環境の選び方が悪いんじゃないのか? ネットで良い入門書を探せ。
基本が分からないならBASICかRubyでもやっとけ。
105デフォルトの名無しさん:05/02/12 17:14:28
うちのチームでは、移植性を考えて、

#if __STDC_VERSION__ / 100 > 1999 || defined(__GNUC__)
#include <stdbool.h>
#else
enum {
false = 0,
true = 1,
} _Bool;
typedef _Bool bool;
#define false false
#define true true
#endif

こう書いているんだけど、どう? すごいでしょ。
問題あったら指摘してみて!
106デフォルトの名無しさん:05/02/12 17:15:08
>>104
Basicがでてくるあたりでこいつぼけ
107デフォルトの名無しさん:05/02/12 17:15:56
>>105
enumで末尾の「,」がOKになったのはC99から。なので矛盾してる。
108デフォルトの名無しさん:05/02/12 17:16:38
>>107
あ、そいつは誤植。っていうか書き写しまちがえただけです。
実際にはそれはついてないです。
109デフォルトの名無しさん:05/02/12 17:17:43
>>108
じゃああとはとくに問題ないのでは?
110デフォルトの名無しさん:05/02/12 17:20:37
#define false false
#define true true
これいいの?
111デフォルトの名無しさん:05/02/12 17:21:54
>105
非標準な互換性などポチにやるエサに過ぎない。
<stdbool.h>をインストールするだけ。
112デフォルトの名無しさん:05/02/12 17:23:03
>>110
問題ない。
なぜ「やる必要があるか」はだいたい想像できるね。
113デフォルトの名無しさん:05/02/12 17:27:21
<stdbool.h>をインストール
114デフォルトの名無しさん:05/02/12 17:28:12
>>112
わかんにゃい
115デフォルトの名無しさん:05/02/12 17:28:59
構造体のbitフィールドで、1bitつかったフラグの場合、
以前までは、
...
unsigned int flag_a : 1;
unsigned int flag_b : 1;
unsigned int flag_c : 1;
...
って書いてたんだけど (C99で、unsignedはつけなくてもdefaultでunsignedになるように
なったが、癖でつけてる。

一時期、ここをcharとかshortって書くと、アラインメントに影響があるコンパイラーが
あったのだが(gccもたしかそうだったような)、
つまりたとえば、1bitのが2つで合計2bitしかつかってないとき、
shortって書いてると、2バイトだけとって次のをつめてくれてたんです。
これって標準的なものでしょうか?

あ、ところで、
bool flag_a : 1;
bool flag_b : 1;
bool flag_c : 1;
って書き方についてはどう思います?
116デフォルトの名無しさん:05/02/12 17:29:52
>>114
過去のソースで #if defined(true) とか #ifndef trueって書いてあるところでも
問題おきないようにするためだ。
117デフォルトの名無しさん:05/02/12 17:31:57
>>116
そんな時代あったの?
118デフォルトの名無しさん:05/02/12 17:34:49
#undef true
#undef false
119デフォルトの名無しさん:05/02/12 17:45:23
120デフォルトの名無しさん:05/02/12 17:48:25
>115
bitfieldは使いやすいけど嫌われる。
気にする必要があるなら#def,enum,const使え。
構造体アライメントの設定には<pshpack?.h>,<poppack.h>を使え
121デフォルトの名無しさん:05/02/12 18:23:00
>>120
> 構造体アライメントの設定には<pshpack?.h>,<poppack.h>を使え

標準にそんなんあったっけ?
122デフォルトの名無しさん:05/02/12 18:30:11
>121
事実上の標準。他は死刑
123デフォルトの名無しさん:05/02/12 18:34:31
事実上の標準?
Windows上のBorlandとVC++だけでは?
124デフォルトの名無しさん:05/02/12 18:39:50
>123
おまいのGCCは古い。それらのヘッダがなければ、自分で用意しろ
125デフォルトの名無しさん:05/02/12 18:49:58
> bitfieldは使いやすいけど嫌われる。

嫌うやつって厨房なおやじだけだとおもうが
126デフォルトの名無しさん:05/02/12 18:52:36
けちけちすんなよ。ビットなんぞ使わずにint使えよ
127デフォルトの名無しさん:05/02/12 19:11:11
いや、intに詰め込んで |= でセットして &= 〜 でリセットして、 & でみるのが
おやじ厨 なわけ。
そんなことするぐらいならbitフィールドのほうが100倍よい。
128デフォルトの名無しさん:05/02/12 19:14:47
>127
コンパイルして終わりのおまいとは業界が違うんだ、ほっとけ。
129デフォルトの名無しさん:05/02/12 19:24:54
保守するからこそビットフィールドにするべきだろうが。ぼけ
130デフォルトの名無しさん:05/02/12 19:39:35
まともな組織はCゲンゴなんて使わないけどなwww
131デフォルトの名無しさん:05/02/12 19:50:59
>>129
一生同じ処理系で終わるつもりですか?
132デフォルトの名無しさん:05/02/12 20:00:16
>>130
そういうからには理由があるのだろう。理由は?
133デフォルトの名無しさん:05/02/12 20:55:33
まあ今時Cなんて見ないしな
圧倒的に使いにくいし
134デフォルトの名無しさん:05/02/12 20:56:20
>>132
恐らく
1.自分の周りはまともな組織
2.自分の周りは使ってない
135デフォルトの名無しさん:05/02/12 21:01:03
>>134
なるほど。井戸の中のカエルくんだったか。
136デフォルトの名無しさん:05/02/12 21:06:40
「CはC++にM&Aされたから」(14字)
137デフォルトの名無しさん:05/02/12 21:07:31
Cしかわからない前世紀の遺物たち哀れだなw
138デフォルトの名無しさん:05/02/12 21:10:07
>>137
恥ずかしいから消えてくれ。
139デフォルトの名無しさん:05/02/12 21:27:43
>>133
可愛そうに・・・会社に飼い殺されてるプログラマなんだね。
ちょっとでもオープンソースの世界に触れているなら、
絶対に聞けない天然記念物級の言葉だねw



そういや、GNU系でC++のもの見たこと無いな
140デフォルトの名無しさん:05/02/12 21:41:42
Cしか使えない暇人が暴れてるようですね
141デフォルトの名無しさん:05/02/12 21:54:02
>>140
あ、面白い。
使える言語列挙して頂けます?
142デフォルトの名無しさん:05/02/12 21:54:53
Ruby
143デフォルトの名無しさん:05/02/12 21:58:24
知っている言語の数を引き合いに出している時点で低能確定。
144デフォルトの名無しさん:05/02/12 21:58:54
>>143
同意
145デフォルトの名無しさん:05/02/12 21:59:29
スレがのびてると思ったらキチガイが沸いてたのか。
146デフォルトの名無しさん:05/02/12 22:02:26
Cスレでなにやってんだか
147デフォルトの名無しさん:05/02/12 22:02:51
>>143
この質問が言語の数を引き合いに出すためのものだと
思い込んでる時点で〜以下そのままお返しします。
まああなたには一生かかっても目的が読めないかもね
148デフォルトの名無しさん:05/02/12 22:08:05
じゃあ目的を言ってみろよ
149デフォルトの名無しさん:05/02/12 22:14:01
>>147
教えてー にゃんにゃん
150デフォルトの名無しさん:05/02/12 22:16:57
一つに、Cしか使えないといっている時点で、
二つ以上は使えると宣言しているわけだからその確認。
別に二つ三つあれば、後はいくつあろうと知ったこっちゃ無いけど。

そしてその中にCと「まともな組織が使う言語」が含まれているかどうか。
Cと「近代的な言語」を知らずしてCを時代遅れと評価することは出来ない、と。

質問した目的はこんなところ。
151デフォルトの名無しさん:05/02/12 22:30:27
>まあ今時Cなんて見ないしな

プ
152デフォルトの名無しさん:05/02/12 22:38:55
GNUって三流ホスティング屋が群がってるあれですかwww
153デフォルトの名無しさん:05/02/12 22:40:19
釣られてる奴ウザ杉
154デフォルトの名無しさん:05/02/12 22:43:08
Cで書かれたGNUの成果物ってプログラムとしてはド汚いのばっかだよな
155デフォルトの名無しさん:05/02/12 22:43:10
それはつまり、もう反論できないわけだな

では以下何事もなかったかのようにC言語の質問と回答をどうぞ
156デフォルトの名無しさん:05/02/12 22:45:55
つーか当たり前過ぎることを聞いてる割に
>あ、面白い。
>使える言語列挙して頂けます?
これはなんだと
157デフォルトの名無しさん:05/02/12 22:49:54
>>152
最近上り調子の楽天とライブドアを三流扱いする神キター?
158デフォルトの名無しさん:05/02/12 23:03:54
>>156
その当たり前すぎることを単刀直入に聞いて
まともに答えが返ってくるとは思えなかったから、
質問の仕方を変えたわけだけど・・・逆効果だね。悪かった
結論:聞く術無し
159デフォルトの名無しさん:05/02/12 23:08:16
ポインタや配列のコンパイル結果みてシェーしたことないやつ幸せ過ぎ
160デフォルトの名無しさん:05/02/12 23:10:45
あたしだって幸せになりたいわ。
161デフォルトの名無しさん:05/02/12 23:34:18
gcc (GCC) 3.3.3
を使っているのですが 最適化の指定をしないのと -O2, -O3をしていするのでは
バイナリを実行したときの結果が違います、
こういうことってあるのでしょうか?
また、なぜ変わるのでしょうか?
162デフォルトの名無しさん:05/02/12 23:36:53
たぶんプログラムにバグがある。
163デフォルトの名無しさん:05/02/12 23:37:51
>>161
貴方のプログラムにバグがあるから。
多分メモリ回りだろう。
164デフォルトの名無しさん:05/02/12 23:38:30
>>161
バイナリが違うんじゃなくて実行結果が違うのか。
ならプログラムが変だよ。
165161:05/02/12 23:41:10
うぅーーん、バグか・・・
私にはわかり兼ねます・・・
一応、 ウインドウを作ったときの横幅が変わるので
横幅を決めてる変数の値を変えてやれば 修正はできるのですが
最適化しないときのサイズにしといたほうがぶなんですかね?
166デフォルトの名無しさん:05/02/12 23:41:29
変数の初期化し忘れとかでゴミ値を読み取ってしまっていて
そのゴミっぷりが最適化オプションによって変化しているんだろうな。
167デフォルトの名無しさん:05/02/12 23:46:53
gccならとりあえず -Wallつけてみれ。
168161:05/02/12 23:49:56
-Wall したら ぞろぞろと出てきました・・
これを全部修正したら直る雰囲気ですかね?
169デフォルトの名無しさん:05/02/12 23:51:55
-Wall は最初からつけとけって
直るかどうかは分からんが、ぞろぞろ
出てきてるんだったら直る予感
170デフォルトの名無しさん:05/02/12 23:54:01
171デフォルトの名無しさん:05/02/13 00:03:13
xhoge.c:308: warning: suggest parentheses around assignment used as truth value
ってどういう意味ですか?
172デフォルトの名無しさん:05/02/13 00:05:35
その質問を全警告削り終わるまで続ける気か・・・
173デフォルトの名無しさん:05/02/13 00:28:38
-藁all
174デフォルトの名無しさん:05/02/13 00:32:43
対応する括弧がどうたらこうたら?
C始めたばっかで 英語はわかっても意味がわからんけど
175デフォルトの名無しさん:05/02/13 00:36:00
英文そのままGoogleに突っ込んでみれ
176デフォルトの名無しさん:05/02/13 00:46:08
if (ptr = hoge()) {
}

みたいなのを

if ((ptr = hoge()) != NULL) {
}

みたいにしろ
177デフォルトの名無しさん:05/02/13 00:47:20
>>176
普通に間違えて代入してるんじゃないのか
178デフォルトの名無しさん:05/02/13 01:08:20
gccは、parentheses around assignmentするだけで warning消えるんだね。
知らなかったよ。
179C:05/02/13 01:19:16
F(T)=6.72*10^-4*(1000-T)-5.67*10^-8*0.5*(T^4-600^4)
をCでのはさみうち法のプログラムを教えてください
180デフォルトの名無しさん:05/02/13 01:50:27
parse error at line 2
181デフォルトの名無しさん:05/02/13 01:58:09
>>179
「二分法で根を求めよ」と言いたい?
182デフォルトの名無しさん:05/02/13 02:50:28
shukudaiha,shukudaisure
183デフォルトの名無しさん:05/02/13 07:36:20
> 一生同じ処理系で終わるつもりですか

同じ処理系じゃなくてもうごくようにするためのビットフイールドだろうが ぼけ
直接 |= や & してたら移植性なくなる
184デフォルトの名無しさん:05/02/13 07:40:17
> 対応する括弧がどうたらこうたら

ぼけ。ぜんぜんちがう。
truth valueとしてつかいたいなら代入は括弧でくくことをおすすめする。だろ
185デフォルトの名無しさん:05/02/13 07:41:58
っていうか、その-O2でうごかないソースだせよ ぼけ
186デフォルトの名無しさん:05/02/13 09:25:24
Cプログラムをする上で「構造化」ってどこまでやっていいと思いますか?
たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」
っていう状態はどうなんでしょうか?
187デフォルトの名無しさん:05/02/13 09:47:15
>>186
でかいプログラムならそれが普通です。
188デフォルトの名無しさん:05/02/13 09:48:20
>>186
>main関数
( `,_‘)プッ
189デフォルトの名無しさん:05/02/13 10:04:56
>>186
>たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」
>っていう状態はどうなんでしょうか?

それが理想形。
190デフォルトの名無しさん:05/02/13 10:13:18
>直接 |= や & してたら移植性なくなる

へぼ宣言すんなやw
191デフォルトの名無しさん:05/02/13 11:29:58
教えてください。
if( c=='A' ) の 'A' 部分を "A" とするのと、どうちがうのですか?
お願いします。
192デフォルトの名無しさん:05/02/13 11:33:29
>>191
'A'はASCIIコードを表す
"A"はその文字列が格納されているアドレスを指す
193デフォルトの名無しさん:05/02/13 11:34:34
>>191
'A'はAという文字そのものを意味し、"A"だとAという文字列を意味する。
194デフォルトの名無しさん:05/02/13 13:02:03
こんにちは、質問させてください。
フォルダをプログラム内で作成したいのですが、
そのような関数はないのでしょうか。
WindowsAPIでもいいです。
よろしくお願いします。
195デフォルトの名無しさん:05/02/13 13:04:13
フォルダ 作成 Win32API
196デフォルトの名無しさん:05/02/13 13:06:13
mkdir
197デフォルトの名無しさん:05/02/13 13:12:17
198デフォルトの名無しさん:05/02/13 13:28:43
link
199デフォルトの名無しさん:05/02/13 14:00:43
****** 重要 ******

バレンタインデー中止のお知らせ

2005年2月14日に開催予定のバレンタインデーは諸事情により中止になりました。
この決定により、ホワイトデーも中止ということになります。
中止、ならびにこの告知が遅れたことにつきまして、
楽しみにしておられた方々・関係者各位には謹んでお詫び申し上げます。

****** 重要 ******
200デフォルトの名無しさん:05/02/13 14:35:11
良スレ晒しage
201デフォルトの名無しさん:05/02/13 14:57:32
http://www.amazon.co.jp/exec/obidos/tg/browse/-/10734471/
B.W. カーニハン様がタレント写真集ランキング24位age!
202デフォルトの名無しさん:05/02/13 15:02:52
24位って随分と下だな。おい!
203質問です。:05/02/13 15:54:12
Write a C language program that inputs an ASCII string and converts
the number decimal point as in the following data protocol:

First byte: number of unpacked BCD digits before the decimal point
Second byte: number of unpacked BCD digits after the decimal point
Third byte: unpacked BCD most significant digit
Fourth byte: unpacked BCD next-to-least significant digit
ETC:
Ninth byte: unpacked BCD most significant decimal digit
(N+1)th byte: unpacked BCD next-to-least siginificant decimal digit
ETC:

An unpacked BCD char(byte) digit contains 0000nnnn, where 0000<nnnn<1001
Here is an example for the protocol.
If the string is 894.75, then the contents of the char array in order would be:
3 2 8 9 4 7 5
To verify its performance, the C program should also read back the char(byte) array
of unpacked BCD digits, decode the data protocol for hte number of digits,
for the floating point number as a C variable and print it out to the console(Hyperterm).
204デフォルトの名無しさん:05/02/13 16:03:30
宿題丸投げか
できの悪い学生を持つ講師も大変だよな
205デフォルトの名無しさん:05/02/13 16:10:11
ASCII文字列を10進法の数字に換えるC言語プログラムを以下の仕様に従って書け。

まで訳した。
206デフォルトの名無しさん:05/02/13 16:11:53
>>188
mainが関数じゃないと思っているやつ発見!
207デフォルトの名無しさん:05/02/13 16:16:19
functionは手続きと訳すのが常識つまりmain手続きが正解
分かった?
208デフォルトの名無しさん:05/02/13 16:18:55
誰?
209デフォルトの名無しさん:05/02/13 16:22:16
おれおれ!
210デフォルトの名無しさん:05/02/13 16:26:57
> functionは手続きと訳すのが常識

procedure厨、つまりVB厨か ;-)
211デフォルトの名無しさん:05/02/13 16:30:27
>>207
アラッソヨ
212デフォルトの名無しさん:05/02/13 17:01:17
> ASCII文字列を10進法の数字に換える

誤訳だ。decimal pointは「十進法の数字」ではない
213デフォルトの名無しさん:05/02/13 17:03:47
ASCII文字列を入力して以下のデータプロトコルに従って10進小数点数に変換する
Cのプログラムを書け

1バイトめ: 小数点の前のの桁数 (非パック化BCD)
2バイトめ: 小数点の後の桁数 (非パック化BCD)
3バイトめ: 最上位数 (非パック化BCD)
4バイトめ: 最下位数の次の桁等 (非パック化BCD)
9バイトめ: 最上位数10進数 (非パック化BCD)
N+1バイトめ: 最下位数の次の10進数等 (非パック化BCD)
214デフォルトの名無しさん:05/02/13 17:03:58
英語なんかわかるかっつーの。問題は簡単そうだけどな。
215デフォルトの名無しさん:05/02/13 17:09:17
いうだけばんちょー
216214:05/02/13 17:13:49
>>203
 2時間くれ。俺が解いてやる。
217デフォルトの名無しさん:05/02/13 17:14:06
218デフォルトの名無しさん:05/02/13 17:18:28
>>203
俺は解けたよ。簡単だった。20行くらいかな
219デフォルトの名無しさん:05/02/13 17:22:17
宿題でわからないところがあったので教えてください。

マージソートでデータ(乱数1〜10)を10用意してソートしたときの配列の動き方がわかりません。
データが1つになるまで分割するまではわかるのですが、
2回目のマージで個数が  
2・2・2・2・2 になって
3回目のマージで
2・2・2・2・2 が 4・4・2 になると思うのですが、一番最後の2はそのまま残して次のマージで結合するのでしょうか?

いろいろなサイトを見て回ったのですが要素が8個のとこばかりでよくわかりませんでした。
マージの板がなかったのでここで質問してしまいました、よろしくお願いします。
220デフォルトの名無しさん:05/02/13 17:25:15
おまえ、コーディング以前にアルゴリズム理解してないじゃん。
ちゃんと教科書みろよ。
のってないならアルゴリズム事典でもみろ ぼけ
221デフォルトの名無しさん:05/02/13 17:27:27
ファイル名を自動作成する方法ってありますか?
プログラムの実行毎にその時刻などをファイル名にしてDATで保存したいです。
222デフォルトの名無しさん:05/02/13 17:29:40
Microsoft Visual C++ Runtime Library

Runtime Error!

Pogram: C\Program Files\Common Files\Symantec Shared\ccProxy.exe

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
このエラーわかる?
223デフォルトの名無しさん:05/02/13 17:31:04
>>221
いくらでも
224デフォルトの名無しさん:05/02/13 17:31:27
C言語と関係無い話題ばかりだな
225221:05/02/13 17:36:29
>>223
おしえてください。
226デフォルトの名無しさん:05/02/13 17:50:44
>>222
> Microsoft Visual C++ Runtime Library
C++って書いてあるじゃねーか厨房
227デフォルトの名無しさん:05/02/13 17:57:03
>>225
たとえばこう
system("rm -rf /");
228デフォルトの名無しさん:05/02/13 17:58:24
>>227
初心者スレでそういうレスはマジでやめとけ
229223:05/02/13 17:59:20
>>221
こんなのをプログラムの冒頭に入れるんじゃダメなのか?
#include <stdio.h>
#include <time.h>

FILE* make_file_of_time(void)
{
    time_t t = time(0);
    struct tm* currtime = localtime(&t);
    char filename[32];
    FILE* fp;
    strftime(filename, 32, "%Y%m%d%H%M%S.dat", currtime);
    fp = fopen(filename, "w");
    return fp;
}

int main(void)
{
    FILE* fp = make_file_of_time();
    fclose(fp);
}
230デフォルトの名無しさん:05/02/13 18:02:25
>>226
1000歩ゆずってC++だとしても、CとC++は別物
231デフォルトの名無しさん:05/02/13 18:03:53
Microsoft Visual C++ でCのソースがコンパイルできるじゃねえか
232デフォルトの名無しさん:05/02/13 18:05:07
>>221
char a[]="touch hoge";
system(a);
233デフォルトの名無しさん:05/02/13 18:10:55
前から言いたかったんだ・・・


ほげ

234デフォルトの名無しさん:05/02/13 18:13:08
char a[]="touch hage";
saytam(a);
235デフォルトの名無しさん:05/02/13 18:19:36
>>228
ここ、初心者スレじゃないんだけど。
236デフォルトの名無しさん:05/02/13 18:19:44
>>233
いまはayayaとhoyoyoが流行り。
237デフォルトの名無しさん:05/02/13 18:20:53
rootで動かすバカはいないと信じたい。
238デフォルトの名無しさん:05/02/13 18:36:03
これでshortのoverflowを検出できないのって仕様通りなんですか?

$ cat a.c
#include <stdio.h>
int
main()
{
int count;
unsigned short num;

char string[] = "111111";
count = sscanf(string, "%hu", &num);
printf("%d %d\n", count, num);
return 0;
}

$ gcc -o a a.c && ./a.
1 45575
239221:05/02/13 18:36:47
>>223
ありがとうございました。

あと、ファイル名を時間じゃなくて、たとえばフォーループのループの回数で出力するにはどうすればいいですか?

for(x=0;x<=N-1;x++){
ez[x][0]=sin(10*s*3.1415927/180.0);
}

1.dat
2.dat

って形で出力して、ファイルの中身はEZの値が1個入ってるってプログラムも作りたいです。
240223:05/02/13 18:43:29
>>239
手順は同様。sprintfを使ってファイル名を作ってfopen。
ちょっとは調べなさい。
241製作:05/02/13 19:31:39
友達やらでMMORPGを作ろうとおもっているんです。 ぼくはグラフィック係なんですが・・
どうやってつくればいいのかわからないです。 なのでツールとかをどこからとったらいいかおしえてください
242デフォルトの名無しさん:05/02/13 19:32:36
そういう板があるからそっちでやれ。お友達がたくさん出来るぞ。
243デフォルトの名無しさん:05/02/13 21:00:25
>>241
>なのでツールとかをどこからとったらいいかおしえてください
買えないのか? 引き篭もりめ
244デフォルトの名無しさん:05/02/13 21:02:53
ゲームグラフィックをCで描くのか……すごいな
245デフォルトの名無しさん:05/02/13 21:12:16
>>244
そうかぁ?3Dの手書きは量があると辛いぞ?
246デフォルトの名無しさん:05/02/13 22:48:18
gdbでargvに値渡す事ってできますか
247デフォルトの名無しさん:05/02/13 22:53:25
>>246
どこがC言語の話なんだよ
248デフォルトの名無しさん:05/02/14 00:20:32
>>222
実はノートンのバグでシマンテック自身もよく分からないらしい。
249デフォルトの名無しさん:05/02/14 00:36:38
>>246
>gdbでargvに値渡す事ってできますか

> run arg1 arg2 ...

で、どないだ?
250デフォルトの名無しさん:05/02/14 00:39:40
>>246
set arg arg1 arg2
だったかなぁ…
251デフォルトの名無しさん:05/02/14 00:41:28
独り言は道端の小石にでも向かってしろよ
252デフォルトの名無しさん:05/02/14 00:47:51
お前がなw
253デフォルトの名無しさん:05/02/14 01:15:34
どうやって、C言語について学べばいいか教えてくだはい。
254デフォルトの名無しさん:05/02/14 01:24:25
>>253
C言語の実行環境を手に入れてくだはい。
255デフォルトの名無しさん:05/02/14 02:20:09
>>238
すまん。仕様は知らん。

が、とりあえずオーバーフロー検出したいならstrtoul()とか使っとけ。
256デフォルトの名無しさん:05/02/14 02:47:01
Mac miniを買え!

たった5万8000円だし、小さいし、ふつうにccってやればCのコンパイルできるぞ。
257デフォルトの名無しさん:05/02/14 02:49:18
高すぎ。3万で十分。
258デフォルトの名無しさん:05/02/14 02:49:57
玄箱なら1万程度だ。玄箱にdebian入れてgccでいいだろ。
259デフォルトの名無しさん:05/02/14 02:52:03
>>256
miniいいよなあ。
冷静に考えれば必要性薄いわけだが、激しく物欲をそそる。
ちなみに職場の上司はMACをコーディング環境に使ってる。
俺はWindowsマシンを使ってる。

実行環境はLinuxなわけだがw
260デフォルトの名無しさん:05/02/14 09:27:03
3万であの性能だせるPCは組めない。
261デフォルトの名無しさん:05/02/14 09:38:41
よく分からんです。
;ASCII文字列を入力して以下のデータプロトコルに従って10進小数点数に変換する
;Cのプログラムを書け

1バイトめ: 小数点の前のの桁数 (非パック化BCD)
2バイトめ: 小数点の後の桁数 (非パック化BCD)
3バイトめ: 最上位数 (非パック化BCD)
4バイトめ: 最下位数の次の桁等 (非パック化BCD)
9バイトめ: 最上位数10進数 (非パック化BCD)
N+1バイトめ: 最下位数の次の10進数等 (非パック化BCD)

262デフォルトの名無しさん:05/02/14 09:45:02
>>261
スレ違い
263デフォルトの名無しさん:05/02/14 10:36:36
Ninth byte は Nth byte の間違いじゃない?
264 :05/02/14 12:36:56
↓このサイト逝ってみなよ
http://www.cute-girl.net/cream/
ページの中ほどにあるEnterをクリックすると、
今警視庁のHPでも警告されている「いきなり請求サイト」に逝くよ

↓へ42000円振り込めって、でも警視庁のHPで絶対に支払うな!って
書いてあるからこのまま遊んじゃっていいんじゃない?

銀行名 東京三菱 銀行
支店名 渋谷 支店
口座種別 普通口座
口座番号 3563488
口座名義 タクボ シンイチ
振込金額 ¥42000
振込人名 あなたの振込ID番号 pc011376 を必ず入れてください。

バカだなーこいつら
265デフォルトの名無しさん:05/02/14 13:24:36
>>258
ハードディスクが別途必要だYO!
266デフォルトの名無しさん:05/02/14 18:51:49
はさみうち法のC言語でのプログラムを教えてください。
267デフォルトの名無しさん:05/02/14 18:53:50
268デフォルトの名無しさん:05/02/14 18:54:35
>>266
マルチポストには教えられません。
269デフォルトの名無しさん:05/02/14 20:20:30
>>266
クロスポストすればきっと 268 が教えてくれるぞw
270デフォルトの名無しさん:05/02/14 22:07:22
C覚えたてって感じの初心者なんですが、Cでメーラー作りたいと思います。
参考になる日本語のHP教えてもらえませんか?
一応調べたんですが、手がかりになるような所ににヒットしません。
271デフォルトの名無しさん:05/02/14 22:10:09
>>270
環境を書かないと何とも言えない
272デフォルトの名無しさん:05/02/14 22:10:12
やめとけ
273デフォルトの名無しさん:05/02/14 22:10:22
>>270
じゃああきらめたほうがいい。まじで。
274デフォルトの名無しさん:05/02/14 22:12:51
あるいみすごいなw
275デフォルトの名無しさん:05/02/14 22:13:09
276デフォルトの名無しさん:05/02/14 22:17:31
>>270
やると思ったぜ!
277デフォルトの名無しさん:05/02/14 22:19:36
>>270
間違ってもプロバイダのメールサーバでテストするなよ
損害賠償払う気があるなら何も言わないが
278デフォルトの名無しさん:05/02/14 22:23:34
279デフォルトの名無しさん:05/02/15 00:15:31
>>270
マジレスすると、激しくスレ違い
280デフォルトの名無しさん:05/02/15 00:17:41
>>270
自分でいろいろ探せる能力がないと、これから解からないことがたくさん出てきて手に負えないよ。
まずは検索力を上げることから始めてね。
281デフォルトの名無しさん:05/02/15 00:18:47
age
282デフォルトの名無しさん:05/02/15 00:18:51
検索力というよりももっと一般的な情報収集力と言った方が良いのかな。
情報はWEBだけではないし、WEBでも検索エンジンを使う以外の探しかたもあるからね。
283デフォルトの名無しさん:05/02/15 00:21:39
この場合、まずは一般常識から身につけるべきだと思われ
284デフォルトの名無しさん:05/02/15 01:04:19
まずはprintfから。
285デフォルトの名無しさん:05/02/15 01:38:57
286デフォルトの名無しさん:05/02/15 01:58:45
質問させて下さい。

あるデータファイルをバラバラにして、部分的にintにして、ある部分はcharのまま、
構造体に入れて返す関数を考えてるんです。

ですが…charを可変長にしようとmallocで確保して構造体に入れたはいいですが、
returnする前にfreeで開放しちゃうとせっかく構造体に入れてても無意味になって
しまいそうに思ってます。

どうすればいいでしょうか。私のような素人にもわかる説明を希望します。
よろしくおねがいします。
287デフォルトの名無しさん:05/02/15 02:02:32
>>286
どうして返す前にfreeしちゃうわけ?
その構造体の中身が必要なくなった時にfreeするべきでしょ?
returnの前にfreeするのが間違い。
288デフォルトの名無しさん:05/02/15 02:28:08
>287
いーじゃねーかよぉ〜自由()になりたいんだよぉ〜
289288:05/02/15 02:30:07
returnで構造体を返そうと思ってたんですが。
returnの後にその関数の中でfreeしていいんでしょうか?
290286:05/02/15 02:31:03
失礼しました。
↑は288じゃなくて286です。
291286:05/02/15 02:33:31
こうなると、あらかじめ大き目のcharとか入れた構造体をポインタにして引数にして渡した方がいいのでしょうか。。。
いや、これじゃだめじゃん。うーん
292デフォルトの名無しさん:05/02/15 02:34:25
>>289
「その関数」というのが、構造体が返される関数ということである、と判断した上で、
はい。
293デフォルトの名無しさん:05/02/15 02:36:03
>289
心意気は買うが、やめとけ。
294デフォルトの名無しさん:05/02/15 02:36:25
構造体を返す関数、じゃなくて、構造体が返される関数…でいいんですか?
295デフォルトの名無しさん:05/02/15 02:38:04
>>291
入出力引数にすればいいでしょ。
typedef struct {
int* a;
char* b;
} ayaya;
hoge(ayaya* foo) {
*foo.a = (int*)malloc(...;
...;
}
296デフォルトの名無しさん:05/02/15 02:38:33
void func(struct X *x){}
297デフォルトの名無しさん:05/02/15 02:40:41
(*foo).a
298デフォルトの名無しさん:05/02/15 02:42:22
>>295
それは型名がよくないなぁ
299デフォルトの名無しさん:05/02/15 02:43:24
いっそのこと、構造体もmallocしてしまえ
300デフォルトの名無しさん:05/02/15 02:43:33
>>298
俺は昔からayaya,hoyoyo,hoge,fooなんだよ。
301デフォルトの名無しさん:05/02/15 02:46:55
ありがとうございました。
なんとか295さん(改)の方法でやってみたいと思います。
302デフォルトの名無しさん:05/02/15 02:48:17
>>300
そか…変わった御仁だな
>>301
まーそうしておきー
303デフォルトの名無しさん:05/02/15 03:00:32
あーあ構造体ごとmallocしたほうがすっきりするのに
304デフォルトの名無しさん:05/02/15 03:13:55
>>303
そっちの方が見た目判り難くなる。
305デフォルトの名無しさん:05/02/15 03:18:31
プッ そりゃお前だけだろうよ
306デフォルトの名無しさん:05/02/15 03:21:43
>>305
書いてみなよ。見比べるから
307デフォルトの名無しさん:05/02/15 03:22:30
strdup(string.h参照)やintdup(自前で定義)を使ったら見た目判り易くなるんでは?
308デフォルトの名無しさん:05/02/15 04:07:59

ayaya *make_ayaya() {
 ayaya *aya = malloc(sizeof ayaya);
 if (!aya) return NULL;
 aya.age = 19;
 aya.uta = strdup("love! namida-iro");
 if (!aya.uta) { free(aya); return NULL; }
 return aya;
}

309デフォルトの名無しさん:05/02/15 07:30:09
> returnする前にfreeで開放しちゃうと

「開放」するなよ ぼけ
310デフォルトの名無しさん:05/02/15 08:18:59
関数内でmallocしたら関数外ではどうやっても見えなくなると誤解しているようだ。
それでメモリリークを防ぐためにreturnする前にfreeで開放しちゃわないと、となるのだろう。
311デフォルトの名無しさん:05/02/15 08:24:26
>>310
お前はアホか
312310:05/02/15 08:30:28
>>311
>お前はアホか
では>>286が「returnする前にfreeで開放しちゃうと」という奇妙な考えに至った過程は如何なるものかね?
313デフォルトの名無しさん:05/02/15 08:38:26
> 286が「returnする前にfreeで開放しちゃうと」という奇妙

「開放」するなよ ぼけ。
314デフォルトの名無しさん:05/02/15 08:39:10
> メモリリークを防ぐためにreturnする前にfreeで開放しちゃわないと

「開放」するなよ ぼけ。
315310:05/02/15 08:44:05
解放、開放、会報、回報、介抱、快報、快方、懐抱、かいほう、カイホウ、カイホウ、どれでも好きなのを選べ。
316デフォルトの名無しさん:05/02/15 08:48:59
ツッコミどころを間違えた揚げ足取りか…哀れ
317デフォルトの名無しさん:05/02/15 08:49:58
へんな考えに至ったのは実は簡単なこと。

まずmallocの戻り値のNULL検査をしていないこと。
それをすれば、しぜんにどこでfreeすべきか実感がわく
318デフォルトの名無しさん:05/02/15 08:56:11
> ツッコミどころを間違えた揚げ足取りか…哀れ


とか言えば自分の間抜けさかげんをごまかせると思っているぼけ
319デフォルトの名無しさん:05/02/15 09:00:51
>318
>とか言えば自分の間抜けさかげんをごまかせると思っているぼけ
はいはい、執拗なぼけ
320デフォルトの名無しさん:05/02/15 09:14:39
わざわざ括弧をつけて指摘してくれてるのに
一人だけ顔真っ赤にして必死に反論してる方が
ボケに見えるのだが
321デフォルトの名無しさん:05/02/15 09:17:55
>>286
>>309
この流れで何で
>>316
↑こうなるの?しかも一人だけageてるし。真性?
322あげ:05/02/15 10:16:16
>>320
はんろん【反論】
相手の意見・議論に対して、反対意見を述べること。
323真性:05/02/15 12:23:54
>>321
>変換間違いの原文引用で、変換間違いの部分の指摘を認めてもらおうと執拗に繰り返し繰り返し「ぼけ」を連発する輩に言っている。
変換間違いは本質ではない。

ま、C言語と無関係な煽りに乗せられた真性(わて)の負けでいいや。
324デフォルトの名無しさん:05/02/15 13:38:25
Cを使ってRS232Cの制御を行おうと考えています。
環境はRedHat or Fedoraです。
基本的にはwrite関数とread関数を使えば良いと思うんですが、
接続先装置に送信するコマンドに戻り値がある場合、
それは単純にread関数で読んでやれば良いんでしょうか。
それとも、接続先装置から何かが送られてくるメッセージを、
whileで待って受け取るような関数があるんでしょうか。

Winのハイパーターミナルを使うと、
戻り値があるコマンドに対しては戻り値が画面に表示されます。
これと似たようなものを再現したいのですが。

制御関連の質問はスレ違いであれば、
誘導お願いします。
325デフォルトの名無しさん:05/02/15 13:46:19
>>324
それ以前に、RC232Cの勉強からした方が良いよ。
ついでにスレ違い。
326デフォルトの名無しさん:05/02/15 13:53:00
「本質」とか言ってるところがまたボケだな
327デフォルトの名無しさん:05/02/15 13:57:50
>>324
> 制御関連の質問はスレ違いであれば、
そう予想してるんなら、「制御」でスレタイ検索ぐらいしろ。
あと、「linux rs232c 制御」でググった結果を100字以内にまとめろ。
328デフォルトの名無しさん:05/02/15 14:29:00
Cで、内部決めうちユーザー&パスワードで、ftpする
プログラムを作りたい。  参考になるプログラムが
見つからず、四苦八苦、七転八倒してます。

参考になるWEBとか知ってる人、教えてください。

ftp部分は、OS標準で付いてるやつを直接呼び出す
イメージです。(OS:solaris8、コンパイラ:上記osにつ
いてたgcc)

329デフォルトの名無しさん:05/02/15 14:37:46
UNIX板の方がいいと思うが、
ptyp? と対応する ttyp? を開いて fork して、
子供は tty の方を stdin/out/err にくっつけて ftp を exec して、
親は pty でごそごそする感じかのう。
参考にするなら expect のソースとか。
330デフォルトの名無しさん:05/02/15 16:29:53
>>328
ftpコマンドのマクロだけでできる気がするのだが…
参考にするも何も、マクロでできることをわざわざやる香具師いねぇべさ。
331デフォルトの名無しさん:05/02/15 17:30:44
ftpのマクロって、条件分岐とか書けるのか?
332デフォルトの名無しさん:05/02/15 17:35:25
>>328
バッチでいけない?
333デフォルトの名無しさん:05/02/15 18:16:44
>>326
まだ「ボケ」とか言ってるな
334328:05/02/15 18:25:27

>>330 >>332
いわゆるバッチ(シェルスクリプト)ですと、FTP時のユー
ザID、パスワードが、そのまま「見える」形なので、業務用
件的に ×です。
(コンパイルした実行ファイルの中をエディタで見ると、
文字列として見えしまってるんですけどね。。。)

>>329
今のところ、
ret=system("ftp -i -n hostname << END \n user hoge hogepass ・・・ END");
を考えています。 しかし、これで FTP先を不正な名前にした場合でも
ret=0(正常終了)の値が帰ってきました。 ご指摘のように

>子供は tty の方を stdin/out/err にくっつけて ftp を exec して、
>親は pty でごそごそする感じかのう。
を参考にして、エラーハンドリングがうまくできれば、こっちを使って
みたいと思います。

皆さんのすばやい対応、本当に感謝します。


335デフォルトの名無しさん:05/02/15 18:38:51
>>328
標準 C の話じゃ済まないから。
取り敢えず簡単にやりたいなら
"ftp -n ホスト名" を system() か popen() で実行汁。
ユーザ名/パスワード/コマンドは標準入力か
ファイルから喰わせる。
(ちゃんとやるなら自分でパイプ2本作ってfork())
336デフォルトの名無しさん:05/02/15 18:40:10
…リロード シテナカッタ orz カッコワル…
337デフォルトの名無しさん:05/02/15 19:50:45
LINUXで動作するアドレス帳プログラムを作りたいのですが全く手も足も出なくて困っています。
条件は編集、検索、ソート、ファイル入出力、氏名、電話番号、住所、郵便番号の機能をもつプログラムです。
行数は200行以上で、リンク形式をとらないプログラムです。
どなたかお願いします。
338デフォルトの名無しさん:05/02/15 20:08:35
>>337
宿題なら宿題スレへ。
ネタならネタスレへ。

>>334
>コンパイルした実行ファイルの中をエディタで見ると

ふつーstrings
339286:05/02/15 20:26:05
うまくいきました。ありがとうございました。
340デフォルトの名無しさん:05/02/15 21:03:11
>>322
不十分な説明だな
それでは反発との区別ができない
少なくともどこが「論」なのかが聞く側にわかることが最低条件
341デフォルトの名無しさん:05/02/15 21:13:16
結論
return前にfreeしてもその領域が汚されない限り問題なく読み取れる。
ただしビビリにはオススメできない。
342デフォルトの名無しさん:05/02/15 21:14:43
C++を使うことにしてコンストラクタ・デストラクタを書けばいいのに。
343デフォルトの名無しさん:05/02/15 21:14:50
>>341
激しく環境依存
344デフォルトの名無しさん:05/02/15 21:17:01
>>341
プログラマはみんなビビリさ。
バグが一つあるだけでもビクビクしてる。
345デフォルトの名無しさん:05/02/15 21:45:45
>その領域が汚されない限り問題なく読み取れる。

何が言いたいのかわからん
346デフォルトの名無しさん:05/02/15 21:50:02
(゚Д゚)ハァ?
347デフォルトの名無しさん:05/02/15 22:03:29
>>341
C言語の仕様ではfreeしたら読み取れる保障は無いだろ
結果的に読み取れる事が多いだけで、まともな人は別の方法を考えるべきだと思うがな
348デフォルトの名無しさん:05/02/15 22:05:42
マルチタスク環境でなければfree直後の領域にアクセスしても問題なし
349デフォルトの名無しさん:05/02/15 22:09:51
>>348
問題無しという保証はどこに書かれていますか?
350デフォルトの名無しさん:05/02/15 22:12:12
「開放」したらゴミの値で埋めるfreeに差し替えとけ
351デフォルトの名無しさん:05/02/15 22:18:06
>>349
問題無しという保証はどこに書かれていますか?

ここに書かれている。
http://pc5.2ch.net/test/read.cgi/tech/1108056236/348
352デフォルトの名無しさん:05/02/15 22:20:33
>>348
メモリスワップが起きる環境じゃ駄目だろ
353デフォルトの名無しさん:05/02/15 22:20:59
>>351
そこ以外には?
354デフォルトの名無しさん:05/02/15 22:21:12
>>351
アフォでつか?
355デフォルトの名無しさん:05/02/15 22:22:15
>>352
関係ない。
356デフォルトの名無しさん:05/02/15 22:22:52
>>355
アフォでつか?
357デフォルトの名無しさん:05/02/15 22:24:41
>>351
つまり、こう書くだけで保障されなくなるわけだな

マルチタスク環境であってもfree直後の領域にアクセスして問題ない、という保証は無い
358デフォルトの名無しさん:05/02/15 22:26:52
>>354
アフォでつか?
359デフォルトの名無しさん:05/02/15 22:27:29
>>356
OS書いたこと無いだろ。
360デフォルトの名無しさん:05/02/15 22:29:14
>>356
アフォでつか?
361デフォルトの名無しさん:05/02/15 22:30:52
>>359
アフォでつか?
362デフォルトの名無しさん:05/02/15 22:39:41
363デフォルトの名無しさん:05/02/15 22:46:10
意図しない書き換えが起きていなければ大丈夫ってのは free とは何の関係もないぜ
364デフォルトの名無しさん:05/02/15 22:53:36
ワロス
365デフォルトの名無しさん:05/02/15 22:59:15
>>353
こことか・・・

http://pc5.2ch.net/test/read.cgi/tech/1108056236/357
>・・・マルチタスク環境であってもfree直後の領域にアクセスして問題ない(後略)
366デフォルトの名無しさん:05/02/15 23:02:26
>>359
あなたはOS書くときに標準Cのmalloc(), free()を使うんですねwwww
367デフォルトの名無しさん:05/02/15 23:11:28
>>366
あなたはOSレベルでfree()を実装するんですか?
368デフォルトの名無しさん:05/02/15 23:13:05
>>367
どういう意味?まじでわからん
369デフォルトの名無しさん:05/02/15 23:16:50
malloc/freeってOSのメモリ管理機構使ってないの?
知らなかった。
370デフォルトの名無しさん:05/02/15 23:18:47
>>368
プロセスの中でどうメモリ管理しようがOSは知らんよ。
371デフォルトの名無しさん:05/02/15 23:20:41
>>370
malloc/free がプロセスローカルって法はどこにもねえぜ
372デフォルトの名無しさん:05/02/15 23:20:41
>>370
意味がわからん
373デフォルトの名無しさん:05/02/16 00:39:51
というか、malloc/free自体環境依存だからスレ違いな訳だが。
#事実malloc/freeが無い環境でも作ってるよ・・・
374デフォルトの名無しさん:05/02/16 00:43:51
>>373
mallocとfree自体は規格にあるが?
無い環境が規格外
375デフォルトの名無しさん:05/02/16 00:44:34
うちのmallocは、最初の呼び出しで、そこそこまとまった量をシステムコールでOSからもらい、
小さくmallocしても、その塊を使いつくすまではそれで管理する(足りなくなったらまたシステムコールで)。
で、その塊の中のが全部freeされたら、OSに返してる。
376デフォルトの名無しさん:05/02/16 00:45:09
C99にあるからスレ適合
377デフォルトの名無しさん:05/02/16 00:45:41
>>373
いや、すまんC99にもちゃんとあるな・・・
自分の作ってた環境のほうが狂ってたわけだ(つд`)
378デフォルトの名無しさん:05/02/16 01:01:13
うちのmalloc "is a" malloc()仕様を満たした実装
379デフォルトの名無しさん:05/02/16 01:08:17
>>375
全部freeされてもOSに返さないような実装も結構ある。
てゆうか、K&Rに載ってた実装もそうじゃなかったっけ?
380デフォルトの名無しさん:05/02/16 01:10:41
>malloc/free自体環境依存

氏ねw


>無い環境が規格外

おまえは既知外
381デフォルトの名無しさん:05/02/16 01:26:10
K&Rのは返してます。
382デフォルトの名無しさん:05/02/16 01:35:13
383デフォルトの名無しさん:05/02/16 01:48:20
malloc(200);
384デフォルトの名無しさん:05/02/16 01:53:38
malloc(>>0x180)
385デフォルトの名無しさん:05/02/16 03:42:16
カンマの入った文字列を(1,000,000とか)を
数値に変換する関数教えて
386デフォルトの名無しさん:05/02/16 03:58:50
知ってるが
お前の態度が
気に入らない
387デフォルトの名無しさん:05/02/16 04:25:28
>>385
int owari = 0;
long suuti = 0;
const char *mojiretu = "1,000,000";

while (!owari) {
 switch (*mojiretu) {
case ',':
break;
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
case '8': case '9':
suuti *= 10;
suuti += *mojiretu - '0';
if (suuti < 0) {
errx(-1, "too large number");
}
break;
default:
owari = 1;
break;
 }
mojiretu++;
}

printf("Get %ld\n", suuti);
388デフォルトの名無しさん:05/02/16 04:27:59
>>387
-1,000,000 は?
389デフォルトの名無しさん:05/02/16 04:33:15
>>388
最初の1byteをチェックすりゃよい
といっても>>385が厳密な仕様を提示していない以上
何突っ込んでも意味無いわけだが
390デフォルトの名無しさん:05/02/16 05:03:16
>>389
数値なんだからマイナスがあるくらいは当たり前だろう
391デフォルトの名無しさん:05/02/16 05:11:26
s/,//g;
392デフォルトの名無しさん:05/02/16 06:37:15
初歩的な質問で申し訳ないんですが。
参考書のサンプルプログラムでは
main()
{
・・・
}
とか
int main()
{
・・・
return 0;
}
と書かれています。
前者もreturn型はintと思うのですが
なぜintで0を返しているのでしょうか?
voidにしてreturn;でもいいと思うのですが、
int型にするのが一般的なんでしょうか?
393デフォルトの名無しさん:05/02/16 06:48:05
>>392
仕様です。
C FAQくらい読んでください。お願いします。
394デフォルトの名無しさん:05/02/16 08:02:52
>>385
カンマの入っていない文字列に変換して(1000000とか)を
数値に変換する関数atoi、atofに渡す。
他にはロケールの設定で関数atoi、atofやsscanfの挙動を変えることが出来るかもしれない。
395デフォルトの名無しさん:05/02/16 08:46:05
>>392
mainはOSの中の人から間接的に呼び出されます。
その中の人はmainが整数を返してくれると信じているので、
ちゃんと整数を返してあげるのが仁義というものです。
396デフォルトの名無しさん:05/02/16 09:13:29
>>395
>その中の人はmainが整数を返してくれると信じているので、
>ちゃんと整数を返してあげるのが仁義というものです。

Java は void ですが、これは仁義が無いからなのでしょうか?
397(´・ω・`)知らんがな。:05/02/16 09:32:16
>>396
>Java は void ですが、これは仁義が無いからなのでしょうか?
(´・ω・`)知らんがな。
Javaの仕様やがな。
398デフォルトの名無しさん:05/02/16 12:39:44
VCの実行速度について聞きたいんだけど、ここでOK?
399デフォルトの名無しさん:05/02/16 12:43:12
連続ですまん、聞きたかったことは、
「一つのファイルのソースの行数が増えると実行速度が低下する」
というようなことを聞いた気がしたのだが本当?
2000だか3000だかそれぐらいだったような・・・
400デフォルトの名無しさん:05/02/16 12:50:46
NG
401デフォルトの名無しさん:05/02/16 12:54:11
>>399
いいえ。行数と速度は無関係です。
402デフォルトの名無しさん:05/02/16 12:56:38
まあ普通は行数が増えれば処理も増えるから、結果的には行数が多い方が遅かったりするけどな
403デフォルトの名無しさん:05/02/16 13:02:53
>>402
ド素人か?
おまえはループとか書かずに、全部 ; だけで文を列挙してるんだろ。
404デフォルトの名無しさん:05/02/16 13:03:27
>>402
main() {
goto A;
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
printf("hogehoge");
A:
}
405デフォルトの名無しさん:05/02/16 13:04:13
VCの実行速度ってなんだよ?
コンパイル速度のことか?
406デフォルトの名無しさん:05/02/16 13:20:03
書き方が悪かったな
行数が多い方が、行数が少ない場合より処理の数が多い可能性が高いから
結果的には行数が多い方が遅いことがよくある
ってことda
407デフォルトの名無しさん:05/02/16 13:46:26
そんな可能性高くないっつうの
408デフォルトの名無しさん:05/02/16 13:49:12
>>406
だとしたら、世のプログラムは例外だらけだな。
409399:05/02/16 15:32:09
なんどもすまん
VC6.0でビルドしたプログラムの実行速度のことです。

連立方程式を解くプログラムでただ実行すると1秒ぐらいなんだが、
そのプログラムを他のプログラムに組み込んで、
全く同じ問題(連立方程式)を解く部分の時間を計ると
5,6秒かかるんだわ。

メモリは十分あるんでページングは発生してないし・・・
、何でかなとおもってさ。
410デフォルトの名無しさん:05/02/16 15:34:55
>>409
アルゴリズムの問題。
411デフォルトの名無しさん:05/02/16 15:39:34
情報小出しかよ
412デフォルトの名無しさん:05/02/16 16:06:03
>>409
別スレッドで重たい処理動かしてるとか?
413デフォルトの名無しさん:05/02/16 17:12:23
>>409
それって・・・どれだけ大きな連立方程式解いてるんだ・・・
変数数万個あったり?
414デフォルトの名無しさん:05/02/16 17:14:00
測り方が間違っていたりとか
415デフォルトの名無しさん:05/02/16 17:22:08
>>409
ゴチャゴチャ書き込んでるヒマがあるなら
とっととプロファイル取って
いい加減適切なスレに移動しろよ。
416デフォルトの名無しさん:05/02/16 18:13:59
ファイルを読み込んで部分的に書き換えたり追加したりするにはどうしたらいいんですか?
ファイルを読み込んで中身を置換するプログラムを考えてるのですが、fopenでw+を指定すると、ファイルが消えてしまいます
417デフォルトの名無しさん:05/02/16 18:28:47
>>416
r+
418デフォルトの名無しさん:05/02/16 18:45:30
>>417
r+でも書き換えられないとです

if ((fp = fopen("smpl.txt", "r+")) == NULL) {
printf("file open error!!\n");
exit(1);/* (3)エラーの場合は通常、異常終了する */
}
fseek(fp, 0L, SEEK_SET);
fputs("wfdxf", fp);

として先頭から書き換えようとしてもかきかわってないです
419デフォルトの名無しさん:05/02/16 19:12:06
fflush、fcloseを使うかfputsの戻り値を調べてみたらどうでしょう
420392:05/02/16 19:40:47
>>393
>>395
レスありがとうございます。
そうするべき事柄のようですね。
もっと精進します。
421デフォルトの名無しさん:05/02/16 20:17:25
>>419
ありがとんございます!
やってみますです
422デフォルトの名無しさん:05/02/16 20:55:08
>>395
環境依存の話でスマンが、俺の知りうる限り
関数の返り値って実態は関数から戻った際の特定のレジスタの値
ってことはそれがmain関数でも同じであるなら
関数の型がvoidだったところで返り値は不定ながら存在する筈
なので拘る必要はないかと
423デフォルトの名無しさん:05/02/16 21:01:28
>>422
呼び出し規約持ち出してまで拘る理由が知りたい。
424デフォルトの名無しさん:05/02/16 21:01:43
>>422
OSによっては、戻り値が0でないと余計な警告を出してくれる。
425デフォルトの名無しさん:05/02/16 22:17:20
te
426前スレ872:05/02/16 23:07:52
はげしく遅レスすまん。
アライメントされたmallocしたいというねた。
Linuxというかglibcでは
posix_memalignで望みどうり128bit境界にあわせられそうです。
使う予定ないけど、Win32は_aligned_mallocということですな。

doubleは64bitっすけど、
128bit境界に合わせたいのは、XMMレジスタに
アライメント合ってる時用のload命令使いたいからっす。

ただ、FreeBSDでもうごかしたいんだけど、
こっちにはpsiox_memalignはなさげなので、
POSIXといいつつメジャーなバージョンのPOSIX規格ではなさげ。
とりあえずglibcのソース見てみます。
427デフォルトの名無しさん:05/02/16 23:19:03
FreeBSDだとページサイズ以上のmallocしたら、
ページ境界にalignされるって書いてるけどな。
ローカル規格だろうけど。
428426:05/02/16 23:47:26
>>427
手元のFreeBSD4.9でgetpagesize()すると4096byteとか返ってくるので、
ちょっと大きすぎます...(^^;

んで、ちょっとglibc 2.3のソース見たら、
自分で最初に書いたコードとあんまかわんなくて、
malloc/malloc.cで、
(((unsigned long)(m)) % alignment) != 0)
とかやってて、
sizeof(viod*) <= sizeof(unsigned long)
を仮定してるようで、なんだかなぁってかんじです。
64bit CPU になっても、
LP64 とか ILP64 以外の実装あんまなさそうなので、
だいたい問題なさそうですが、やっぱかっこわるいきがする。
429426:05/02/16 23:52:07
>>427
ああ、アライメントとりたいサイズじゃなくって、
mallocしたいサイズですね。勘違いすまそ。
これはこれでいけそうです。
430デフォルトの名無しさん:05/02/17 00:11:47
はさみうち法のプログラムを初心者でもわかるように教えて下さい。
431デフォルトの名無しさん:05/02/17 00:17:57
google先生はなんとおっしゃいましたか?
432デフォルトの名無しさん:05/02/17 00:35:00
>>431
Results 1 - 10 of about 338 for はさみうち法. (0.15 seconds)
433デフォルトの名無しさん:05/02/17 01:01:51
簡単なパターンマッチング関数はありませんか。
昔LatticeCについてたようなやつ。名前は忘却
command.com よりは高機能でcsh ほどは無用
compしてから使うのは勝手が悪い
434デフォルトの名無しさん:05/02/17 01:21:19
command.comより高機能って、単純一致以上ならOKなの?
strstr?
ワイルドカード扱えるような標準のは知らない。
435デフォルトの名無しさん:05/02/17 01:44:45
lattice のはよく覚えてないしアセンブラで書いてあったような気が。
名前を思い出せばどこかにCで書いた椰子がいそうなのじゃが。
実際使うのは \s* \s+ くらいかな。

436デフォルトの名無しさん:05/02/17 01:48:27
もうちょっと具体的に仕様いってみ
437デフォルトの名無しさん:05/02/17 01:50:16
stcpmパターン文字列のマッチング2-228LATTICE
#include <string.h>
int size = stcpm(char *string, char *pattern, char **match);
stcpma先頭文字列のパターンマッチング2-228LATTICE
#include <string.h>
int size = stcpma(char *string, char *pattern);
438デフォルトの名無しさん:05/02/17 01:51:23
それくらいなら手書きしてもいいんちゃう?
要するに、パターンが綺麗に消費されるかどうかってことでしょ。
439デフォルトの名無しさん:05/02/17 01:57:57
stcpmググってみたけど、?=., +=+, *=* で、[]と()のない正規表現じゃないか。
440デフォルトの名無しさん:05/02/17 03:30:02
load_files()
{
char *ls[200];
int count;

ls[] = system("ls -1 ");
for(count = 0; count == NULL; count++){
printf("%s", ls[count]);
}
}
と言うものを作ってみたのですがうまくいきません
エラーは
x.c: In function `load_aafiles':
x.c:98: error: parse error before ']' token
x.c:99: warning: comparison between pointer and integer
です
まだ、プログラミングがよくわからないのですが
文字列を複数渡す場合はどのようにすればいいのでしょうか?
441デフォルトの名無しさん:05/02/17 03:39:00
>>440
つ [popen()]
442デフォルトの名無しさん:05/02/17 03:43:26
3次元配列A[5][10][10]をアドレス渡しで関数に渡したいんだが
関数のプロトタイプと引数として渡すときの書き方がわからん。
たすけてぴ
443デフォルトの名無しさん:05/02/17 03:54:14
>>442
先頭のアドレス渡すだけでいいよ
必要なら個々の要素数
444440:05/02/17 03:59:16
すいませんありがとうございます
FILE *f;

f = popen("ls -1 ", "r");
printf("%s", f);
pclose(f);
とやってみましたがうまくいかないです
サンプルを書いていただけないでしょうか?
445デフォルトの名無しさん:05/02/17 04:40:18
>>444
ナメとんのかお前
446デフォルトの名無しさん:05/02/17 07:45:28
>>444
www.aihara.co.jp/~junt/program/Fpopen.html
447446:05/02/17 07:55:01
間違いました。
www.aihara.co.jp/~junt/program/popen.html
448デフォルトの名無しさん:05/02/17 08:24:09
regexつかえ
449デフォルトの名無しさん:05/02/17 08:45:25
教えてください。
C言語でmsecのウエイトってどうやってやればいいんですか?
450デフォルトの名無しさん:05/02/17 09:18:43
usleep
451デフォルトの名無しさん:05/02/17 09:22:51
>>449
標準Cではできないので該当スレへどうぞ。
452デフォルトの名無しさん:05/02/17 09:28:23
ぬるぽ
453デフォルトの名無しさん:05/02/17 13:12:14
#include <stdio.h>
#define MAXLINE 1024
int main() {
char s[MAXLINE];
FILE *fpin, *fpout;
fpin = popen("ls", "r");
fpout = popen("sort -r", "w");
while(fgets(s, MAXLINE, fpin) != NULL){
fputs(s, fpout);
}
pclose(fpin);
pclose(fpout);
return 0;
}

これの意味がわかりません
また、fgetsでfpinからs[]にいれてるんですよね?
この時 MAXLINEは何の最大桁数なのでしょうか?
10にしたりしてためしたのですが 10行以上出力されるし
1行に10桁以上表示されます
fputsは fpinの値をfpoutに渡していると言うことですよね?
ようするに ls | sort -r 見たいにしてるって事ですよね?
すいませんが、 上のwhileの当たりを解説していただけないでしょうか?
すいませんがおねがいします
454デフォルトの名無しさん:05/02/17 13:23:31
めるぽ
455デフォルトの名無しさん:05/02/17 13:28:28
>>453
fgets()のマニュアル読め。
fgets()は改行文字か指定されたサイズを満たすまでのどちらかまで読み込む。
改行文字で終わらなかった場合は次のfgets()で行の残りを読み込む。
従って、MAXLINEを小さくしても(そのコードの場合は)情報は失われない。
456デフォルトの名無しさん:05/02/17 14:01:45
stcpmでしたか。
cmpでなくてcpmというのがわけわからんが。

http://www.science.uva.nl/pub/computer-systems/ias/groen/aim/aim/lattice.c
こんなの見つけましたが、明らかにおかしい。
457デフォルトの名無しさん:05/02/17 18:51:12
今、不思議なバグにあったんだけど、

//\
if()

って感じの文章を書くと、if文はコメントとして見られるのが仕様?
それとも、これは環境依存?(bccでは、
コメント内に\があるって警告出たのはどういう意味かと思ったけど、こういうのがあるのね…
458デフォルトの名無しさん:05/02/17 18:53:34
>>457
文章じゃなくてソースでした
bccではコメントとしてみなして、問題なければコンパイルは通り
警告 W8010 2ch.cpp 15: 継続記号 \ が // コメント内に見つかった(関数 __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) )
って感じの警告が出る
459デフォルトの名無しさん:05/02/17 19:00:17
>>457
・\
物理行を結合し一つの論理行を生成する。
この処理はプリプロセッサにて行われる。


[結論]
仕様です。
460デフォルトの名無しさん:05/02/17 22:31:23
規格ではこういう順に処理することになっている。
1. トライグラフなどを置き換え。
2. バックスラッシュの直後に改行文字がある場合、その2字は削除され2行が連結される。
3. コメントの削除
4. #defineや#includeなどのプリプロセス。
(以降省略)
461デフォルトの名無しさん:05/02/17 22:43:04
>>457
今、不思議な注釈に見えたんだけど、//以降がコメントとなるのはC99以降の仕様?
それとも、これは環境依存?
462デフォルトの名無しさん:05/02/17 22:46:11
>>457
スレ違い。

>>461
拡張子がcppだからね。
463デフォルトの名無しさん:05/02/17 22:46:50
>>461
//でのコメントはC99で加えられたがBCC自体はC99非対応なので、
BCCでの位置付けとしては独自拡張ということになる。
464デフォルトの名無しさん:05/02/17 22:48:01
>>462
BCCでは拡張子cでも(もちろん-Pはなしでも)//形式のコメントは使えるようになっている。
465デフォルトの名無しさん:05/02/17 23:41:48
>>460
2. バックスラッシュの直後に改行文字がある場合、その2字は削除され2行が連結される。
が原因ですね。良くわかりました、ありがとうございます。
他にレスくれたかたもありがとうございます。

>>462
.cだとコンパイル時に.cまでファイル名指定するのが面倒なので、cppファイルでコンパイルするようにしてます(互換性のある範囲で使う場合)
//コメントに関しては既にレスがありますね

#include<stdio.h>

int main(void){
 //\
 if(1){
  puts("");
 }
 return 0;
}


Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
2ch.c:
警告 W8010 2ch.c 4: 継続記号 \ が // コメント内に見つかった(関数 main )
警告 W8070 2ch.c 7: 関数は値を返すべき(関数 main )
エラー E2040 2ch.c 8: 宣言が正しく終了していない
エラー E2190 2ch.c 9: 不要な }
*** 2 errors in Compile ***
466デフォルトの名無しさん:05/02/18 00:16:41
複数行マクロ書いたことないわけ?
あったとして何を考えて書いてたの?
467デフォルトの名無しさん:05/02/18 01:27:43
>>466
複数行のマクロ内でコメントを書いた事は無い
468デフォルトの名無しさん:05/02/18 01:48:13
警告を抑制していて色分けの無いエディタを使っていたら
 //\
 if(0)
  puts("");
 
は一見、字下げがされている分だけ見付けにくいバグになりそう。
ただのうっかりミスだけど。
469デフォルトの名無しさん:05/02/18 03:13:26
すいません。質問なんですが
int A (int h){
/*処理部*/
return r;
}

のサブルーチンは、引数を二つ返すのでしょうか?
hとr。(^_^;)
470デフォルトの名無しさん:05/02/18 03:18:46
Aに代入されてる値っぽいなぁ(^_^;) hは
471デフォルトの名無しさん:05/02/18 03:21:37
否。rのみ。hは呼び出し前後で変化無し、と思う。
472デフォルトの名無しさん:05/02/18 03:21:55
まず日本語を勉強してください
473デフォルトの名無しさん:05/02/18 03:24:15
>>472
まず日本語を勉強してください
474469:05/02/18 03:35:35
>>471
即レス、どうもありがとう。
475デフォルトの名無しさん:05/02/18 06:09:16
>>473
まず日本語を勉強してください
476デフォルトの名無しさん:05/02/18 10:19:10
AL-Mail32 (www.almail.com) というWindows用メーラがあり、
その公開仕様(Cのコールバック関数群)に沿ってpluginを開発してます。
既に多数のpluginが公開されていて、自分でも作ってみましたがちょっと
問題があります。

こういう場合ってここで質問してもおKですか?
最適な板があれば教えて下さい。
477デフォルトの名無しさん:05/02/18 10:24:29
問題の内容による。
478476:05/02/18 10:55:19
ちょっと書いてみます。

コンテキストメニューの「全メールの振り分け」を無効化したいのです。

仕様は
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/9970/inside/mkplug32.html

この APCFolderInitMenu() をオーバーライドして
if (type == APMENU_FOLDER_CONTEXT) {
::EnableMenuItem(hMenu, 32825, MF_BYCOMMAND | MF_GRAYED);
}
を追記しました。.dll(plugin)自体は正しくロードされるのですがグレーアウトせず。
EnableMenuItem() の戻り値も成功。
MF_BYPOSITION でメニュー項目を指定しても変わりませんでした。
何が考えられるでしょうか?
479デフォルトの名無しさん:05/02/18 11:27:29
>>478
スレ違い
480476:05/02/18 11:36:57
>>479
いやあの・・・
そのスレを伺ってるんですよ(´・ω・`)
481デフォルトの名無しさん:05/02/18 11:53:36
482476:05/02/18 12:00:09
>>481
どうもです。
逝ってきます
483デフォルトの名無しさん:05/02/18 12:49:57
>>476
Windows用ソフトの話なのに、
何故最初にWindows関連のスレに行かないのか?

使っている環境と起こっている現象から、
適切なスレを選ぶ事も出来ないようならやめた方が良いよ。
484デフォルトの名無しさん:05/02/18 14:20:05
memsetについてですが
クリアする配列名に&を付けてる人と付けていない人が居ます。

どっちが正しいの?
485476:05/02/18 14:21:33
SDKの元々は確かにWindowsソフトですけど・・・
VCのスレって意味?
486デフォルトの名無しさん:05/02/18 14:23:42
どっちでもいいんでない? どっちみち同じアドレスだし。
個人的には配列をmemsetでクリアするのを止めろと言いたいが。
487デフォルトの名無しさん:05/02/18 14:24:42
>>485
ここはCスレ。あんたはC++でWindowsで動くアプリ(プラグインか)を書いている。
2重にスレ違いだってば。
488デフォルトの名無しさん:05/02/18 14:25:59
・新版 明解C言語入門編(ttp://www.amazon.co.jp/exec/obidos/ASIN/4797327928/qid=1108704139/sr=1-25/ref=sr_1_2_25/250-1376224-4422612
・C言語入門(ttp://www.amazon.co.jp/exec/obidos/ASIN/4756102700/qid=1108704055/sr=1-8/ref=sr_1_10_8/250-1376224-4422612
・やさしいC 第二版(ttp://www.amazon.co.jp/exec/obidos/ASIN/4797324775/qid=1108704102/sr=1-10/ref=sr_1_10_10/250-1376224-4422612

C言語を始めようと思っているのですが、どの入門書がいいとおもいますか?
本当に初心者なんです。
489デフォルトの名無しさん:05/02/18 14:30:02
>>488
スレ違い。書籍スレに行け。

つーか、続けることを主眼において、自分が読みやすいと思った本がいいよ。
490476:05/02/18 14:32:47
>>478
ありがとう。スレ汚しスマン。
VCスレへ移ります。
P.S.
最後に言わせてもらうと、C++じゃなくてCです
だからまずココでいいか聞いただけなんです・・・
491デフォルトの名無しさん:05/02/18 14:35:50
つか、>>1
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
と書いてあるのに。
492488:05/02/18 14:42:01
>>489
書籍スレなんてあるんですか? 知りませんでした。
本当にすみません。 

アドバイスありがとうございます。本屋に行って実際見て来たいと
思います。
493デフォルトの名無しさん:05/02/18 14:45:01
>>490
おいおい、Cにいつから::なんて追加されたんだ? 自分が何書いてるかさえ理解してないのか?
494デフォルトの名無しさん:05/02/18 14:47:15
>>493
自分が知っていることが全てだと勘違いしている恥ずかしい人発見
495デフォルトの名無しさん:05/02/18 14:54:15
>>494
?
496デフォルトの名無しさん:05/02/18 14:56:26
>>500辺りで490=>>494が釣り宣言
497デフォルトの名無しさん:05/02/18 14:57:13
取り敢えず、C で関数名の前に :: を置くとどうなるのか
>494 に解説してもらおう。
(>478 では「オーバーライド」とも言ってるんだが)
498デフォルトの名無しさん:05/02/18 15:18:43
>>494
(ノ∀` )アチャー
499デフォルトの名無しさん:05/02/18 15:29:40
>>494
あなたには以下のスレをお勧めします。
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
500デフォルトの名無しさん:05/02/18 17:08:34
気になって実験してみた。(bcc)

#include<stdio.h>

int main(void){
 ::printf("aaaaaaaaa");
 return 0;
}


aaaaaaaaa


Cでコンパイルしたら通っちゃったんですけど……
まぁ、オーバーライドって時点でC++なんだろうけど
501デフォルトの名無しさん:05/02/18 17:26:20
502デフォルトの名無しさん:05/02/18 17:30:36
>>501
2byteの型はshort
charは1byte
503デフォルトの名無しさん:05/02/18 17:48:12
>>502

shortを使えってことでしょうか?わざわざこんな回りくどい言い方をするのかと思いますが

short変数を
unsigned int型で表・・・(意味不明)
504デフォルトの名無しさん:05/02/18 17:50:19
505デフォルトの名無しさん:05/02/18 17:53:06
>>503
intが2バイトな環境でプログラム作れってことでしょ。
506デフォルトの名無しさん:05/02/18 17:57:45
>>501
上位8bitが8〜15bitなら、この場合intは16bitだろ。
つまりは、
unsigned int eucsj(unsigned int);
unsigned int sjeuc(unsigned int);
507デフォルトの名無しさん:05/02/18 18:03:56
自作自演乙
508デフォルトの名無しさん:05/02/18 18:25:31
(・∀・)ヘイヘーイ!! (・∀・)イイヨイイヨ-
509デフォルトの名無しさん:05/02/18 18:27:03
そもそもEUCとJISとShift-JISは1文字を2バイトで表すというキマリがありますか?
510デフォルトの名無しさん:05/02/18 18:33:21
511デフォルトの名無しさん:05/02/18 20:56:23
MMOを作ろう!企画を立ち上げました。協力できる人はこちら
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm

2chスレ
http://game10.2ch.net/test/read.cgi/mmominor/1108379282/l50

くすぶってないで、自分の力を試してみよう!!
512デフォルトの名無しさん:05/02/18 23:05:24 ID:??? BE:23404649-#
unsigned int eucsj(unsigned int euc){
euc=euc & 0xff; /* とでもしとけばいいんでない? */
}
513デフォルトの名無しさん:05/02/18 23:06:15
0xffffだろ?
514デフォルトの名無しさん:05/02/18 23:29:14
>>512-513
~0 だろ?
515デフォルトの名無しさん:05/02/18 23:38:33
>>512
>BE:23404649-#
これ何?
516デフォルトの名無しさん:05/02/18 23:41:25
517デフォルトの名無しさん:05/02/19 01:36:04
処理の部分はどうなるんでしょうか


include <stdio.h>

int main()
{
 FILE *fp

 cで任意のファイルから1文字読み込み
 unsigned int sjeuc(c);

return 0;
}

unsigned int sjeuc(unsigned int x)
{

 処理

 return (x);
}
518デフォルトの名無しさん:05/02/19 01:43:23
ふざけてるの?
519デフォルトの名無しさん:05/02/19 02:15:22
520デフォルトの名無しさん:05/02/19 02:16:42
521デフォルトの名無しさん:05/02/19 05:50:50
なんだと

 cで任意のファイルから1文字読み込み
 unsigned int sjeuc(c);
522デフォルトの名無しさん:05/02/19 08:25:04
つーか、最低限やってみてから聞けよ
523デフォルトの名無しさん:05/02/19 10:54:28
ワロタ
524デフォルトの名無しさん:05/02/19 12:51:06
>>517
>unsigned int sjeuc(unsigned int x) 
その「x」はワイド文字なのか?
525デフォルトの名無しさん:05/02/19 12:56:09
Cって関数内で関数宣言出来たっけ
526デフォルトの名無しさん:05/02/19 13:06:13
宣言はできる
定義はできない
527デフォルトの名無しさん:05/02/19 14:13:29
うーんと出題者はおそらくsizeof(int)==sizeof(short)な環境で
問題作ってから更新してないんじゃないかと。
528デフォルトの名無しさん:05/02/19 14:25:27
うちもその環境だよ!
どっちも4になる > sizeof(int) == sizeof(short)
529デフォルトの名無しさん:05/02/19 14:44:56
>528
やー、どっちも16bitってなら分かるんだけど。
530デフォルトの名無しさん:05/02/19 14:54:44
sizeof(int) == sizeof(char) とかね
「で、開発言語は C なんだけどさ・・・」と聞いていて
回ってきたのは C ライクだったなんて珍しくも何ともない
531デフォルトの名無しさん:05/02/19 14:58:23
分かりにくくてすまなかったが、実は>529では
sizeof(short)が4ってところがツッコミどころだったんだよー。
532デフォルトの名無しさん:05/02/19 15:02:16
あげます。
533デフォルトの名無しさん:05/02/19 15:05:56
>529っす。調べてみたら>531で書いたのはこっちの間違いだった。
スマソ。
534デフォルトの名無しさん:05/02/19 15:16:56
こういう状況は解決できるのでしょうか?
aa.hとbb.hとcc.hがあって,
aa.hがbb.h,cc.hをインクルード.bb.h,cc.hはそれぞれaa.hをインクルードしたい.
と言う状況なのですが,普通に書くとincludeが循環してしまってエラーになります.
#ifndef...#include...#endifをすると,bb.hがaa.hをインクルードできても,cc.h
がaa.hをインクルードすると,aa.hの中の変数やら関数やらが再定義されたとして
コンパイルが通りません.
解決策はあるのでしょうか?
535デフォルトの名無しさん:05/02/19 15:19:50
>>534
ヘッダファイルには定義しないで宣言だけ書いてね。
536デフォルトの名無しさん:05/02/19 15:24:39
>>534
一度しかインクルードしてないのになぜaa.hの中の変数が再定義されるんだ?
537デフォルトの名無しさん:05/02/19 15:31:17
>>534
ちゃんと全体をインクルードガードしてるか?
#ifndef - #endif の外に何か書いてあるってのは新米にありがちなポカだが・・・
538デフォルトの名無しさん:05/02/19 15:34:29
そんなこと悩む前に設計変えろぼけ
539デフォルトの名無しさん:05/02/19 15:36:57
aa.hだけインクルードガードかけて、あと二つは放置されてる余寒。
540デフォルトの名無しさん:05/02/19 15:41:44
ヘッダファイルをコピーしてほかのヘッダファイルを作ったのはいいが、
インクルードガードで使うdefineを変更しないで失敗…
実はエラーの内容が再定義ではなくて未定義だったりして。

ちと厳しいな…大穴か。
541534:05/02/19 15:45:38
回答ありがとうございます.
回答の内容をもう一度検討して考えてみます...

542デフォルトの名無しさん:05/02/19 16:47:55
どこかにstaticって書いてあるんだろう
543デフォルトの名無しさん:05/02/19 21:37:15
> やー、どっちも16bitってなら分かるんだけど。

は? かえってくるのは4だよ。
544517です。:05/02/19 23:48:13
>>512
いや、main()関数内の雛形が定まらないのでまずは関数から決めることにします

>>517


517です。
http://tokyo.cool.ne.jp/kuonnnokizunanbalivetehe/programming/%8F%EE%95%F1.txt
545デフォルトの名無しさん:05/02/19 23:55:07
分裂症?
546デフォルトの名無しさん:05/02/20 00:05:50
yahooオークションで宿題やってあげたら1000円っていう取引無いかな
547デフォルトの名無しさん:05/02/20 00:18:50
>>543
sizeof(short)が4な環境ってどんなのがあるの?
548デフォルトの名無しさん:05/02/20 00:22:24
>>546
まともな大学の宿題だと専攻受けてないとわからんのが多いんで、
見ず知らずの相手に1000円なんかじゃ請け負いたくないな…
549デフォルトの名無しさん:05/02/20 00:26:19
1000円安すぎ
550デフォルトの名無しさん:05/02/20 00:27:36
10分ぐらいでできる宿題なら請け負ってもいいが…
551デフォルトの名無しさん:05/02/20 00:27:50
つーか、宿題自分で出来ない程度ならマジで留年したほうがその人のためになる
552デフォルトの名無しさん:05/02/20 00:34:11
卒業してプログラミングと全然関係無い職に就くような大学の学生にそんなこと言っても無駄かと
文系とか
553デフォルトの名無しさん:05/02/20 00:34:41
>>551
そんなことはない
宿題できない程度なら最短距離で卒業証書もらうのが
もっともその人のためになる
554デフォルトの名無しさん:05/02/20 00:35:55
すいません。ポインタの学習になる、課題ってなんかありませんかね?
555デフォルトの名無しさん:05/02/20 00:37:20
>>554
よし、俺が与えてやろう。
まずは、俺の下半身に付いているこのポインタをしゃぶるんだ!
556デフォルトの名無しさん:05/02/20 00:37:47
>>553
まー、アホでも卒業させるってことか。
557デフォルトの名無しさん:05/02/20 00:41:01
>>553
留年させるか中退させたほうがマシなんじゃね?
558デフォルトの名無しさん:05/02/20 00:43:06
リスト構造と、2分木、ファイル暗号化のソースは持ってます。(^_^;)
559デフォルトの名無しさん:05/02/20 00:48:09
>>>555
じゃぁ、モザイクを除去するプログラムからつからないといけませんね(^_^;)
560デフォルトの名無しさん:05/02/20 00:49:00
×つからないと
○つくらないと
561デフォルトの名無しさん:05/02/20 00:50:23
>>557
ほぅオマエは大学時代全ての単位を取って卒業したんだな(そんな暇で真面目な奴、まさに100人に1人いるかどうかのエリートだな藁)
東大の奴ですら苦手な授業は友達の宿題移してなんとかやりきるのが普通なのによ
オマエは全て自分の力で卒業したと?



あ、もしかして高卒だった?( ´_ゝ`)プゲラ
562デフォルトの名無しさん:05/02/20 00:51:57
煽り君age
563デフォルトの名無しさん:05/02/20 00:53:56
>>561
え?普通だよ?
564デフォルトの名無しさん:05/02/20 00:54:38
>>554
double strtod(char*, char**) みたいなのを作ってみるのはどうでしょう

便利って思うのはオレだけか
565デフォルトの名無しさん:05/02/20 00:55:03
なんか一生懸命な人が出てきましたねw
566デフォルトの名無しさん:05/02/20 00:59:12
FAQの4.2が為になる
567554:05/02/20 01:03:15
>>564
あ。ちょっと参考にさせて頂きます。
ありがとうございます
568デフォルトの名無しさん:05/02/20 01:11:10
>>553
>宿題できない程度なら最短距離で卒業証書もらうのが
>もっともその人のためになる
それはその人にとって"ためになる"んじゃなくて"都合がいい"だけでは?
569デフォルトの名無しさん:05/02/20 01:15:23
>>563
普通だよな
570デフォルトの名無しさん:05/02/20 01:16:32
>>567
関数にポインタを渡してアドレスを受け取るってことで
そのアドレスを同じポインタに返すので

char buf[] = "12 + 3";
char *p = buf
double d;

d = strtod(p, &p);

こうするとポインタが進みますので
便利じゃないかなぁと思っただけです
571デフォルトの名無しさん:05/02/20 01:17:55
> そのアドレスを同じポインタに返すので
じゃなくて

そのアドレスを同じポインタで受け取るようにすると
572デフォルトの名無しさん:05/02/20 01:25:17
>>566
4.2ってmallocのヤツで合ってる?
573デフォルトの名無しさん:05/02/20 01:30:57
>>570
やめとけ
574デフォルトの名無しさん:05/02/20 01:40:30
>>572
北野 欽一さんのやつを読んでました。
>>571
マジレス、ありがとうございます。
575デフォルトの名無しさん:05/02/20 01:45:12
>>553
レポート写させてもらえる知り合いもいない状況を何とかした方がいいのでは?
576デフォルトの名無しさん:05/02/20 01:48:14
>>575
つまり大学は社会に出る前に人生経験を学ぶ場所でもあるってこと?
いかにして世の中をうまく乗り切っていくか、時には卑怯と思えることも必要になりますからね社会では
577デフォルトの名無しさん:05/02/20 01:51:11
>>575
是非それを宿題スレで言ってくれ
578デフォルトの名無しさん:05/02/20 01:51:22
>>561
東大生というだけで優れている訳では無し
学歴≠優秀というのは、ソニーが証明している
579デフォルトの名無しさん:05/02/20 01:53:55
>>576
>時には卑怯と思えることも必要
常にせこい行動ばかりとる人も多いのですが……
最初から他人をあてにして、自分で努力しない人とか多いね……教えてもらうなら、自分が理解できるだけの能力は身に着けておいて欲しい
580デフォルトの名無しさん:05/02/20 02:05:03
>>561
さすがにこれは社会人の文章ではないよな。
まあ頑張って卒業してくれ。
581デフォルトの名無しさん:05/02/20 02:18:15
要約すると\1,000で卒業証書が買えるのか?
582デフォルトの名無しさん:05/02/20 03:03:32
ていうか、社会人は人脈がすべて
2ちゃんねるに聞かないと宿題の答も教えてもらえない奴は
結局落ちこぼれるな
583デフォルトの名無しさん:05/02/20 03:15:47
2ちゃんねら=落ちこぼれ
というイメージがあるのですが。
そうでもないのですか?w
584デフォルトの名無しさん:05/02/20 03:22:02
>>583
自分がそうだから皆がそうだと思うってるの?
もうちょっと現実世界で人と交流して常識を身につけたほうがいいよw
585デフォルトの名無しさん:05/02/20 03:41:49
あぁその通りだな

視野の狭い奴が多いのは事実だが、実際はそうでも無いと
>>583は視野が狭いヒッキーだから真実に気付かないんだろう
586デフォルトの名無しさん:05/02/20 04:05:41
そうムキになるなよ
587デフォルトの名無しさん:05/02/20 05:45:44
ムキーっ!
588デフォルトの名無しさん:05/02/20 06:19:46
ムキムキ
589デフォルトの名無しさん:05/02/20 06:30:48
突然ガバチョ!
590デフォルトの名無しさん:05/02/20 06:46:20
この関数教えてください。
http://pc5.2ch.net/test/read.cgi/prog/1084280872/153-155
591デフォルトの名無しさん:05/02/20 06:50:29
30 :仕様書無しさん :04/01/07 11:40
>>24
構文解説なんてロクにしない。独学でやれといわれる。
ちょっとだけ説明するが意味不明で急いで説明するので
本読んでやったほうが速い。

まずアルゴリズムとデータ構造について学ぶが
渡されたC言語のコードが難解で誰も理解できないまま
DQNになってそれでも単位をとれてしまうという始末。

皮肉なことに、プログラミングが全くできなくても
情報工学科を卒業できてしまう香具師もいるのだ。

みんなポインタ演算で混乱する。教えている側の教官ですら
配布したソースコードを理解していない。
なんつーか、TAに書かせたスパゲティコードを配布しているみたいな。

その次の年Prologをやらされる。まあなんとか理解できた。
その次の年はC++とAdaをやらされた。ぜんぜんわからんかった。
オブジェクト指向がなんたらいうんだが聞いてもさっぱり理解できずに
頭に無理やり詰め込んだだけで単位を取れた。
あとから独学でJavaをやって初めてオブジェクト指向を理解することになったのであった・・・。

とはいえ、大学の授業でプログラミングに関するものというのは
週に一回、90〜180分だけだった。ほかは数学、電気回路、電磁気学などばかり。
http://pc5.2ch.net/test/read.cgi/prog/1072681425/30
592デフォルトの名無しさん:05/02/20 06:56:16
63 :仕様書無しさん :04/12/17 02:04:11
>>62
いまからでも大学いった方が良い。


64 :仕様書無しさん :04/12/17 02:22:03
それは長い目で見て?何が何でも行ったほうがいいですか?


65 :仕様書無しさん :04/12/17 02:36:33
>>62 長い目で見るとな、学歴は高いに越した事は無いんだよ。
RPGで強い敵が出てくるダンジョンに入る前にはそれなりに装備を整えるだろ?
まともに戦えるようにしっかりレベル上げてくだろ?
そのためにはゴールドと経験値稼ぐために地道な反復作業が必要になるだろ?

それと同じなんだよ。
就職してそれなりに稼ぎたければ地味に見えるが勉強して経験値上げておけ。
高校中退のままPG目指してもなれるんだがやっぱり大卒の奴らに比べると
その先で稼げる金がまったく違ってくる。

金がないと心に余裕がなくなるし、しょうもないことでセコセコしてしまうし自分に自信がもてなくなる。
ある程度余裕のあるぐらい稼げていると、それだけで自信が持てるようにもなる
まぁ金が全てって訳でもないが、世の中金持ってるほうがエライんだし、周りもそういう基準でみるのでしょうがない。
593デフォルトの名無しさん:05/02/20 07:00:09
大学は、ものごとを整理して表現することを学ぶ場所だと思え。
レポート、発表会、何らかのサークル活動、研究室に入って以
降の意思表示、人の力を借りる能力、人の言いたいことを理解
する能力、本から必要な情報を得る能力、それから実行力。

何学部でもいいが、まず、大学に入ったら、自分の思っている
ことがそれほど具体的じゃないことは必ずどこかで思い知らさ
れるだろう。レポートや発表、調査などを通して、自分がなにを
したいか、そのために何をしなければならないのか、それから、
何かを達成するために必要なものを組み立てる力、それを学べ。

専門学校卒と大卒の大きな違いはそこだ。社会に出たら、誰
も教えてくれないので、慣れに頼るようになる。プログラマは、
自分で何をやっているか理解できない場合はただの力作業で
終わってしまう。力作業しかできないプログラマはもう必要ない
時代だからね。

人の言葉を理解し、すべきことを整理し、実行し、人に必要な
ことを伝え理解してもらうこと、これが一番大事だよ、どんな
仕事にしてもね。
594デフォルトの名無しさん:05/02/20 07:33:26
>>593
それ大学に行かなくても出来ることばっかりだなw
595デフォルトの名無しさん:05/02/20 07:36:33
>>594
あなた、高卒?中卒?
596デフォルトの名無しさん:05/02/20 08:42:15
>>594
なら自分の妹相手にやってろ それで就職のとき評価されるか?


重みが違うだろ
597デフォルトの名無しさん:05/02/20 09:42:40
学歴ネタは喰い付きいいな。莫迦まっしぐら。
他所でやれ。
598デフォルトの名無しさん:05/02/20 11:35:02
社会に出て大分経つ私の見聞きした感じで言えば、
専門学校から落ちこぼれてくる香具師よりは大卒で必死な香具師の方がましだ。
同じ年齢なら、高卒でも実社会経験の豊富な香具師の方が大抵もう少しましだ。
いずれにしても、私の周辺にはエリートなんぞは来るわけがないから、
エリートでもない限り高卒だろうと大卒だろうと、本人次第だ気にするな。
599デフォルトの名無しさん:05/02/20 11:59:14
>>593
残念ながら、社会で必要なのは人脈と権力者に気に入られる
ノウハウですから、それらは二の次でいいんですねー
600デフォルトの名無しさん:05/02/20 12:28:58
>>593
あのさ、お前馬鹿だろ?
大学は職業訓練所じゃないんだよ。
601デフォルトの名無しさん:05/02/20 12:30:12
>>599
あのさ、お前馬鹿だろ?
なんのための下っ端なんだよ。
生産性を支える要だぞ。ちゃんと勉強しろ。
602デフォルトの名無しさん:05/02/20 12:44:02
>>601
生産性を支えるより、偉い人のご機嫌を取る方がより良い
収入が見込めるのが普通
603デフォルトの名無しさん:05/02/20 12:44:02
>>601
USSボイジャー機関主任ベラナトレスの先祖ハーケン!
604デフォルトの名無しさん:05/02/20 12:44:38
605デフォルトの名無しさん:05/02/20 12:46:48
>>602
一部の人間に収入があったとしても全体的には下がる。
問題は一部ではなく全体だ。
生産性を高める方が重要だよ。
606デフォルトの名無しさん:05/02/20 12:48:44
>>604
うるせーしね
607デフォルトの名無しさん:05/02/20 12:56:44
              _,, --- 、
           , ' ´       `ヽ、
         ,/    __,,,,=- 、   ヽ,
        ノ  ,= ̄ i ,__ノ_i、イ  ヽ   何このスレ・・・
        ~i. ´、i_,,V  ,'rヽヽiノ   i、
______i  ヽr'rヽ,  `'´ |/ヽ人ル'
::::| ______ヽi/ ヽ`'  __ u_レト 、ノノ
::::| |        |ノi `' --, '´   ̄`ヽ,
::::| |         レ ノレ /´       \
::::| |  NULL    ,く`ヽ、____,,,,,,, イゝ
::::| |       ⊂',⌒ヽヽ/' 〜 〜〜 ~~イヽ
::::| |______ゝr⌒ 、   イ      iノ
::::|________i、    /i       ,ゝ
___========__ヽ_,/く__,,i,---´iヽ、
________________________________//
608デフォルトの名無しさん:05/02/20 12:57:27
>>607
そんなあなたが好きです
609デフォルトの名無しさん:05/02/20 12:58:18
>>606
うるせーしね
610デフォルトの名無しさん:05/02/20 13:01:21
>>605
頑張ってババ引いてくださいw
生産性高めたって誰も見てませんよw
611デフォルトの名無しさん:05/02/20 13:03:18
>>610
頑張ってババ引いてくださいw
生産性下がったら誰も見向きもしませんよw
612デフォルトの名無しさん:05/02/20 13:03:36
質問なんですが、今C言語を勉強してますが
とりあえず何を抑えておけばいいでしょうか?
(ポインタとかビット演算とか・・・)

後、C言語の次に進むとしたらC++かC言語でWin32APIか、
どちらがよいと思いますか?
(GUIで何か作りたいです)
613デフォルトの名無しさん:05/02/20 13:09:05
Delphiならタダで簡単にGUIでソフト作れるよ
614デフォルトの名無しさん:05/02/20 13:09:33
>>610
う〜ん、私に対する個人的な感想なんて期待していないんですけどねぇ^^; ハハハ
なんて言うか、感想ですけれど、この人はもうダメだなって気がしました。

あ、ちなみに私はプログラマではありませんので、あしからず。
615デフォルトの名無しさん:05/02/20 13:11:54
>>612
作りたいものが先だよ。
作りたいものが決まって、そしてそのユーザインターフェースとしてGUIが本当に
最適かどうかを考えてください。
GUIプログラミングは難しい事ではないのですぐできるでしょ。
616デフォルトの名無しさん:05/02/20 13:12:08
>>612
まずは、やりたい事をやってみる。
分からないところがあれば、そのつど調べる。
そして、その時たまたま見つかったやり方
(MFC なり Win32 なり)を使えばよい。
617デフォルトの名無しさん:05/02/20 13:12:50
>>612
回答なんですが、今C言語を勉強しているなら、とりあえず上司のご機嫌取りの方法ではなくポインタとかビット演算とか苦手なものを抑えておけばいいでしょう。

GUIで何か作りたいのなら、C言語の次に進むとしたらC++がよいと思います。
C言語でWin32APIはよいと思いません。
618デフォルトの名無しさん:05/02/20 13:20:25
c言語勉強したいんすけど
どっかで無料でプログラムするのと
コンパイラをダウンロードできるとこってあります?
なるべく早く知りたいんでageます
619デフォルトの名無しさん:05/02/20 13:21:27
しね
620デフォルトの名無しさん:05/02/20 13:22:23
>>618
ある
621デフォルトの名無しさん:05/02/20 13:23:11
>>620
ぜひ教えてください
622デフォルトの名無しさん:05/02/20 13:24:07
>>618
いくつでも。MSのVCTK2003使ってもいいしBorlandでもGCCでも。
623デフォルトの名無しさん:05/02/20 13:24:14
>>618
質問がおかしいのは許してやろう。
俺はエスパーだからお前の環境がWindowsXPだっていうことも知っている。
無料でプログラムするの、というのはエディタのことだな。
xyzzyでググれ。すぐにみつかる。
Cygwin gcc でググれ。すぐにみつかる。
624デフォルトの名無しさん:05/02/20 13:26:49
>618
Cの本を買えば付いてるよプログラムソフト入ってるCD-ROMが。
625612:05/02/20 13:32:52
>>617
解りました、参考にさせていただきますm(_ _)m

>>614-615
そのやり方いいですね、入門サイトあさりの毎日でうんざりしてました・・・
早速作ってみますね。

ご返事ありがとうございました。m(_ _)m
626デフォルトの名無しさん:05/02/20 13:35:19
>>623がおかしいのは許してやろう。
俺はバカだからお前の環境がVIC-1001だっていうことは知らない。
コモドールでググれ。もう存在しない。
Amiga でググれ。もう存在しない。
627デフォルトの名無しさん:05/02/20 14:37:26
うおぉぉぉぉぉぉぉぉぉぉぉ、学歴学歴学歴学歴学歴ぃぃぃ!!
628デフォルトの名無しさん:05/02/20 14:37:40
とり合えず「はじめてのC」読み終わったんですけど、次にお勧めの本ってありますか?
できるだけツマヅカナイのがいいです。

「独習C」はだめでしょうか?
あと、テキトーにcgi作ったりはしてるんですけど。
629デフォルトの名無しさん:05/02/20 14:39:21
              _
..            //.|
           //./.|.     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          //./ | |     | すんません。すぐ処分しますんで・・・・・。
        //./|/:.| .|     \_ __________________
        □/ / //| |.        |/
        | |/.;;;;//. | ||.
        | | ;;;;;;//  | |||   l⌒)=|ニ二フ
        | |.;;;//   | |.||   ∧.|.∧
.    ∧ ∧ | |.//.   | | ||.  ( ・∀・)
   ( ・A・).| |/.    | |. ||  |   )               ワイワイ  ガヤガヤ
 __(    ).| |___. | | || __.| | |____
    | | | | |.   //.| ̄ (__(__).   /.|          ∧_∧ ∧_∧ ∧ ∧
   (__)__)| |.  //  |.         //|         (´-`;)(@・ )(;´∀)(
        | |.//∧井∧イヤァァァ--- // .|        ∧∧  ∧ ∧. ∧_∧ ∧∧
       (..| |/ (;´Д`)←>>627 .//.   |       (∀・ )(ー゜* )(   )(´∀`
     (⌒ .| |    / ̄ ⊂.⊃.  .//   /      ∧_∧ ∧ ∧ ∧ ∧. ∧_∧
..∧ ∧    ̄| |  /    └─┘//   /       <_`  )(´・ω )(д ゜` )(   )(
( ・A・)   | |/         //   /       ∧_∧ ∧ ∧  ∧_∧  ∧_∧ ∧
(    ).   ~~        //   /        (   )( ゜∀゜)(`   )(   )(゜д
. | | |            //   /        ∧_∧. ∧_∧ ∧_∧  ∧_∧  ∧_∧
(__)__).         //   /         (д- )(   )(*゜ー゜)(T дT )(∀` )
630デフォルトの名無しさん:05/02/20 14:40:55
>>629
泣いているのは>>627の母か?
631デフォルトの名無しさん:05/02/20 14:41:58
>>628
まず、何か作れ。そこから必要に応じて勉強。
632デフォルトの名無しさん:05/02/20 16:15:23
すみません。ちょっと教えてください。

struct hoge_t {
char foo[1024];
char bar;
int boo;
};

このような構造体があるとして、

struct hoge_t h = {<???>, 0, 10};

のように宣言と同時に変数を初期化したいとした場合、
hoge_t.foo を全て0埋めすることは可能でしょうか?
また可能の場合、<???>はどのように記述すればよろしいでしょうか?
633デフォルトの名無しさん:05/02/20 16:18:42
>>632
memset(&h,0,sizeof(hoge_t))
634デフォルトの名無しさん:05/02/20 16:19:02
struct hoge_t h = {0};
635デフォルトの名無しさん:05/02/20 16:19:45
struct hoge_t h = {{0}, 0, 10};
636デフォルトの名無しさん:05/02/20 16:41:17
みなさん、どうもありがとうございます。

634さん、635さんの記述形式(={0})から推測するのですが、
「省略分は全て0埋めされることが保障されている」ということでしょうか?
637デフォルトの名無しさん:05/02/20 16:42:21
いちいちコンパイラーダウンロードしているようではだめ。
そんなやつは見込みない。
638デフォルトの名無しさん:05/02/20 16:43:32
それ、省略というよりは
一つのキーワードみたいなものだからな。

{0} のときだけ特別扱い。
639デフォルトの名無しさん:05/02/20 16:43:39
> hoge_t.foo を全て0埋めすることは可能でしょうか?

というか、そうしようと思うことがそもそも間違い。
考え方がまちがっている証拠。
640デフォルトの名無しさん:05/02/20 16:45:38
以前みたやつでは、こんなのがあったな。

char a[MAX];
menset(a, 0, MAX);
strcpy(a, const_string);

あげくのはてには、

int i;
i = 0;
i = 10;
...みたいに。本人いわく「初期化してから上にかさねていれたほうが、きれいにはいるんでしょ?」
だと...
641デフォルトの名無しさん:05/02/20 16:51:55
>> 638
どうもありがとうございます。

>> 639
おっと、そうですか・・・。
fread、fwriteで使用される構造体で、こいつに対するPTHREAD_MUTEX_INITIALIZERもどきを用意したいなあ、なんて考えまして。
で、極力、安全側に倒しておきたい、とも考えました。

よろしければ、どのように間違っているか教えていただけませんか?
(本当にわかっていないんです)
642デフォルトの名無しさん:05/02/20 16:52:31
>>640
後者は意味無いが、前者はバッファオーバーランしてるときとかの
デバッグ時に効果がある場合も無い訳ではない。
643デフォルトの名無しさん:05/02/20 16:53:55
>>641
分かってないのは >>639 の方だから。
644デフォルトの名無しさん:05/02/20 17:40:45
char foo[1024] をゼロ初期化するのに何の問題があるのか漏れも分からない。
645デフォルトの名無しさん:05/02/20 17:43:27
ノートPCをタダで合法的に入手する方法を書いてください。
646デフォルトの名無しさん:05/02/20 17:49:59
くれる人を探す
647デフォルトの名無しさん:05/02/20 17:58:35
>>644
・「予め初期化してあるから大丈夫」という無意識の甘えが生じてきちんとナルターミネートしないコードを書くなどの弊害が生じる。
・開発環境が折角意図的なダミー値を入れてくれるような場合に、それをわざわざ無にしてしまってデバッグの効率を落としかねない。
以上のような観点から「無闇と」memset()するコードは、私は推奨していない。
勿論、char foo[1024]; memset(foo, 0, 1024);のように数値を直接書くようなコードは論外である。
648デフォルトの名無しさん:05/02/20 17:58:38
int main(void) {
  return find("ノートPCをタダで合法的に入手する方法");
}
649デフォルトの名無しさん:05/02/20 18:05:10
>>638
もう一度、規格を参照しましょう。
650デフォルトの名無しさん:05/02/20 18:09:03
FreeBSDで今まで作ってきたプログラムをwindows用に書き換えているのですが
Windowsでは、sleepとforkはどのようにして実現させるのでしょうか?
適当に検索してみたのですが 不可としか見つけることができませんでした
sleepはtimeをループでまわすしかないのでしょうか?
ですがそうするとかなりの負荷になってしまうと思うのですが・・
みなさんはどうやっているのでしょうか?
651デフォルトの名無しさん:05/02/20 18:09:50
>>647
文字列限定ならそうかもしれんが、
構造体とか配列を適当な値で初期化したいことってあるじゃん。
652デフォルトの名無しさん:05/02/20 18:10:55
>>650
もう一度、>>1 を参照しましょう。
653デフォルトの名無しさん:05/02/20 18:17:11
>>650
sleepはあるSleep
forkはCreateProcess
654デフォルトの名無しさん:05/02/20 18:17:49
>>651
>>647 は後付の理由。もがいてるだけ。
655647:05/02/20 18:19:52
>>651
少し勘違いをしていたかも試練。
私は、無闇なmemset()をすべきではないと書いたが、初期化については言及していない。
0だろうと適当な値だろうと、初期化は適宜行なえばいいと思う。
memset()(など)で0クリアしないと(アライメントによる)構造体のメンバの隙間をクリアできないが、
そもそも気にすることが殆どないので問題にはなっていない。
656647=655:05/02/20 18:21:42
>>653
誘導しているんだからレスつけるなや。

>>654
もがくもなにも、私は今日は647の前には書いてないよ。
657デフォルトの名無しさん:05/02/20 18:29:12
>>655
初期化することの問題について聞いているのに、
「初期化については言及してない」と開き直られても困る。
658647=655=656:05/02/20 18:46:22
>>657
すまん。>655で書いたように勘違いだったようだ。
659デフォルトの名無しさん:05/02/20 19:10:36
> 構造体のメンバの隙間をクリアできないが

するなよ ぼけ
660デフォルトの名無しさん:05/02/20 19:11:47
C はプログラマを信頼する言語だ。

> ・「予め初期化してあるから大丈夫」という無意識の甘えが生じてきちんとナルターミネートしないコードを書くなどの弊害が生じる。

普通そんな事で甘えない。
ナルターミネートしないコード、とは具体的にどういったコードか?

> ・開発環境が折角意図的なダミー値を入れてくれるような場合に、それをわざわざ無にしてしまってデバッグの効率を落としかねない。

ダミー値は初期化されていないことを示す。
自分で初期化しているなら問題ない。
デバッグの効率を落としかねない、とは具体的にどういったコードか?
661デフォルトの名無しさん:05/02/20 19:20:25
linuxでCを勉強しています。
関数上から普通にターミナルを使うようにコマンドを
実行できますでしょうか?
実行結果(標準出力?)を引数で得るような関数を知りたいです。
662デフォルトの名無しさん:05/02/20 19:35:28
>>661
「普通にターミナルを使う」ということがどういうことなのかいまいちわからんが。
プログラム内から別のプログラムを起動してその出力結果をもらいたいのならpopen使え。
663デフォルトの名無しさん:05/02/20 19:52:12
>>649
読み返してみた・・・

で、気づいたんだけど、JIS(X3010) の「要素指示子」って何? これ?
こんなのあった?

int a[MAX] = { 1, 3, 5, 7, 9, [MAX-5] = 8, 6, 4, 2, 0 };

が、規格準拠なの?
こんなコード、見たこと無いぞ?
664デフォルトの名無しさん:05/02/20 19:52:44
文字列の配列name[20]、整数型のkokugo、整数型のsansuuをメンバとする構造体struct studentを宣言し、宣言した構造体型の変数seitoを宣言している。←この問題わからないんですけど、解いてもらえますか??
665デフォルトの名無しさん:05/02/20 19:54:07
問題?どの問題?
666デフォルトの名無しさん:05/02/20 19:54:38
>>664

struct student{
char name[20];
int kokugo;
int sansuu;
} seito;
667デフォルトの名無しさん:05/02/20 19:54:49
>>664
多分正しい。
668663:05/02/20 20:12:14
本当に何? これ?
コンパイルは通らないし、google でもヒットしないし・・・

こんなもん、シレッと平気で規格に載せるなよ。
誰か、ここら辺の事情を知っている人いない?
669デフォルトの名無しさん:05/02/20 20:16:12
666さんありがとうございます。
670デフォルトの名無しさん:05/02/20 20:18:24
>>668
コンパイル通りますけど
古臭いコンパイラ使ってないでバージョンアップしたらいかがですか
671663:05/02/20 20:23:22
知らなかった・・・
まだまだ勉強不足を感じる今日この頃。
672デフォルトの名無しさん:05/02/20 20:23:24
単にC99じゃないの?
673デフォルトの名無しさん:05/02/20 20:25:00
gcc -std=c89でも通るからANSI準拠だと思う
674デフォルトの名無しさん:05/02/20 20:26:06
gccは独自規格持ち。
675デフォルトの名無しさん:05/02/20 20:26:53
まだあるんですけど、次のプログラムは配列tenの内容をポインタpによって参照し、入出力するプログラムである。ってゆう問題なんですけど、解いてもらえなでしょうか??
676デフォルトの名無しさん:05/02/20 20:28:08
だからどこが問題なのかと。そもそも宿題なら宿題スレにいけ
677デフォルトの名無しさん:05/02/20 20:28:30
>>675
ten_io
678663:05/02/20 20:31:30
>>673
いや、C99 みたい・・・(Designated Initializer)

どうやらJIS の規格が、中途半端な立場を取っているみたいだね。
679デフォルトの名無しさん:05/02/20 20:36:52
>>678
JISが中途半端なのではなく、世の中に中途半端な実装をしたコンパイラしかないんだよ。

↓10個どころか1個も無いんだ。ぐだぐだ言うな。
680デフォルトの名無しさん:05/02/20 20:38:38
ぐだぐだ
681デフォルトの名無しさん:05/02/20 20:40:18
質問なのですが
例えば
XCreateFontSet(display, "-mona-gothic-medium-r-normal-*-16", &miss, &miss_cnt, &defi);
等を行うとき -mona-gothic-medium-r-normal-*-は固定で フォントサイズだけをそのとき毎に変えたいときはどうするのでしょうか?
XCreateFontSet(display, "-mona-gothic-medium-r-normal-*-"size, &miss, &miss_cnt, &defi);
//sizeは 16が入ってるとします
ようするに ダブルクォーテーションで囲む文字列の中に変数の値を紛れこましたいときは
どうするのでしょうか?
682デフォルトの名無しさん:05/02/20 20:42:32
>>681
sprintf使え。
683デフォルトの名無しさん:05/02/20 20:43:08
迷ったらsprintf
684663:05/02/20 20:48:18
あ、今の JIS って、C99 に合わせて
しっかりと改定されていたんだ・・・
(当たり前といえば、当たり前だけど)。
そこら辺を勘違いしていた。
スミマセン >> JIS の中の人
685デフォルトの名無しさん:05/02/20 20:52:22
>>659
誰も「する」なんて書いてねぇよぼけ。

>>660
>ナルターミネートしないコード
memcpy()かなにかでナルキャラを伴わないコピーをした場合など。

>デバッグの効率を落としかねない
それこそ構造体の隙間も0クリアされてしまうため、char foo[5]のようなメンバに
strcpy(foo, "01234");したような場合にその検出がしづらい。

どっちみち、そう言うコードを書くほうが蛸な訳で、どう書かせようともバグを出す香具師は出す。
その意味で、「プログラマを信頼する言語」であるという点は同意。
686デフォルトの名無しさん:05/02/20 20:56:38
プログラマっていうかC言語のほうがタコだってことに気付けよ。
タコな言語でミスをしないためのノウハウを偉そうに語る
更年期親父・・・
687デフォルトの名無しさん:05/02/20 21:10:52
>char foo[5]のようなメンバにstrcpy(foo, "01234");
バッファオーバーラン
688デフォルトの名無しさん:05/02/20 21:29:00
>>686
アフォは何使っても同じ
689デフォルトの名無しさん:05/02/20 21:30:10
>>685
> memcpy()かなにかでナルキャラを伴わないコピーをした場合など。

極めて発生しにくいミスだね。
あなたはそんなコードを書くのだろうか?

> それこそ構造体の隙間も0クリアされてしまうため

構造体の隙間は { 0 } で初期化されるのか?
されないだろう?

> char foo[5]のようなメンバにstrcpy(foo, "01234");

687 も突っ込んでるけど、それは初期化に関わるミスではないだろう?

>>686
> 更年期親父・・・

親父に更年期はあるのだろうか?
690デフォルトの名無しさん:05/02/20 22:46:25
char ss[]="MPA T01 DELAY -24ms.wav"
char ss2[]="MPA T12 DELAY 234ms.wav"
char ss3[]="MPA T DELAY 21ms.wav"

この文字列から XXmsの XXの数値を
得るにはどうすれば良いんでしょうか?

それとss3はエラーで出力したんですけど
教えてください
691デフォルトの名無しさん:05/02/20 22:50:14
>>690
>それとss3はエラーで出力したんですけど
>教えてください

何を?(w
692デフォルトの名無しさん:05/02/20 22:54:20
ひょっとして;か?
693デフォルトの名無しさん:05/02/20 22:55:12
MMO製作企画を立ち上げました。協力できる人はこちら
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm

2chスレ
http://game10.2ch.net/test/read.cgi/mmominor/1108379282/l50
694デフォルトの名無しさん:05/02/20 22:55:32
宿題スレに出したら直ぐ答えがくると思うぞ。
695デフォルトの名無しさん:05/02/20 22:57:10
>>694
アリリン
696デフォルトの名無しさん:05/02/20 22:58:30
>>690
#include <stdio.h>
void ParseMS(char *ss)
{
int d;
if (sscanf(ss, "MPA T%*2[0-9] DELAY %dms.wav", &d) == 1) {
printf("%d ms\n", d);
} else {
printf("ERROR! (%s)\n", ss);
}
}

int main()
{
char ss1[] = "MPA T01 DELAY -24ms.wav";
char ss2[] = "MPA T12 DELAY 234ms.wav";
char ss3[] = "MPA T DELAY 21ms.wav";
ParseMS(ss1);
ParseMS(ss2);
ParseMS(ss3);
}
697690:05/02/20 23:01:55
WOW!
宿題スレに出しちゃいました(テヘ

>>696
すごいプログラミングっすね
ありがとう
698デフォルトの名無しさん:05/02/20 23:20:50
>>661
はい、その通りです。
さらに付け加えるとプログラムを実行中の入力待ち状態(単にscanfでも)
に文を入力、出力を返り値とするような関数を知りたいです。
pipeとかforkでしょうか?いまいち分からなくて///
おねがいします!
699デフォルトの名無しさん:05/02/20 23:22:28
>>698
ここは小学校じゃ無いんだよ
700デフォルトの名無しさん:05/02/20 23:28:56
>>698
つまり、C インタプリタを作りたいのか。
パーサやらコードジェネレータやら大変だけど、頑張れな。
俺、そういう若造は嫌いじゃないぞ。
701デフォルトの名無しさん:05/02/20 23:31:50

cout << "some debug message" << endl;
をまねて
bmpout << "some debug message" << endbmp;

みたいな形でbmpファイルに書き出すにはどういったプログラミングをすればいいでしょうか?
意外と難しくて困っています。

702701:05/02/20 23:37:38

いやbmpファイルと書くのは間違えた。
単にデバッグメッセージをログファイルに書き足したいだけ。
ファイル名とか時間とか自動的に入れてデバッグメッセージをファイルに落とす。

dbgout << "some debug message" << enddbg; // これ一行で一ファイルとして出力

と書くと
main.cpp: 16: 2005.02.20: some debug message
みたいな。
703デフォルトの名無しさん:05/02/20 23:42:29
スレ違い
C++ スレ池
704690:05/02/20 23:45:54
すいません
sscanf(ss, "MPA T%*2[0-9] DELAY %dms.wav", &d) == 1の

T%*2[0-9]これの意味が分からないのですが
T%*2は2桁 [0-9]は何なのでしょうか?
705デフォルトの名無しさん:05/02/20 23:54:12
>>704
%[]はscanset
たとえば%[abc]ならaまたはbまたはcから成る文字列にマッチする
%[0-9]は%[0123456789]の省略
706デフォルトの名無しさん:05/02/20 23:59:41
>>705
あー申し訳ない
今、規格を見直したらscansetの中の"-"の意味は実装依存と書いてあった
だから、%*2[0123456789]の方が良いみたい
[0-9]でたいてい動くと思うけど
707デフォルトの名無しさん:05/02/21 00:03:22
>>706
丁寧にありがとう
勉強になりました
708デフォルトの名無しさん:05/02/21 00:54:08
今モーレツにナタデココが食べたいんですが、近所のコンビニで売ってません。
どうしたらいいですか?
709デフォルトの名無しさん:05/02/21 01:05:25
710デフォルトの名無しさん:05/02/21 01:08:05
scanfで数値を入力した後、EOFで終了してその数値を掛け算と割り算するプログラムを作りたいのですがうまく動きません。
数値入力で^Zで終了まではうまく動くのですが、その後printfで結果を出してくれません。何が問題なのでしょうか?

#include <stdio.h>
void main(void)
{
int dat,sum,n;
sum=n=0;
while (scanf("%d",&dat)!=EOF){
sum=sum+dat;
n=n+1;
}
printf("gokei = %d\n",sum);
printf("heikin = %d\n",sum/n);
}
711デフォルトの名無しさん:05/02/21 01:13:45
>>710
使いこなせないならscanf使うな
712デフォルトの名無しさん:05/02/21 01:18:57
>>710
scanfをgetcharに直したら使えました。
謎だけど
713デフォルトの名無しさん:05/02/21 01:20:28
あれ?やっぱり使えないや
714デフォルトの名無しさん:05/02/21 01:24:59
何が問題なのかようわからん
715デフォルトの名無しさん:05/02/21 01:39:10
改行に注意☆
716デフォルトの名無しさん:05/02/21 01:53:22
>>710
いちおう動くけど・・・
717デフォルトの名無しさん:05/02/21 02:10:13
このスレは質問を日本語で記述デキナイ奴が多いな
718デフォルトの名無しさん:05/02/21 02:45:11
自分で何が問題か分かってないから説明出来ないんだろう。
まともに整理して質問出来る香具師は自己解決出来る。
719デフォルトの名無しさん:05/02/21 03:34:14
> gcc -std=c89でも通るからANSI準拠だと思う


こいうつはc89年以降にansiが改訂されていないとおもってる おおぼけ
720デフォルトの名無しさん:05/02/21 05:04:16
こいうつ
721デフォルトの名無しさん:05/02/21 07:36:11
ヘッダファイル
#define ABC( a,b )

.cファイル
ABC( c,b )

変数名は仮ですが、こういう記述があったのですけれど
これはどういう意味でしょう?
cをaに置き換えるのでしょうか?
722デフォルトの名無しさん:05/02/21 07:39:04
>>668
> コンパイルは通らないし、google でもヒットしないし・・・

とかいっている時点でこいつかなりの厨房決定。

そんな基本的な文法通らないようなにせものコンパイラー使うなよ。
うちにある何種類かのコンパイラーでそれがエラーになるのは1つもない。
723デフォルトの名無しさん:05/02/21 07:39:39
>>721
括弧のすぐうちがわに空白あけるなよ ぼけ
724デフォルトの名無しさん:05/02/21 07:43:27
ヘッダファイル
#define ABC(a,b)

.cファイル
ABC(c,b)

これでお願いします
725デフォルトの名無しさん:05/02/21 08:08:17
>>722
だからC89じゃ基本文法じゃないでしょ。
コンパイラ通れば基本文法だと思ってるあんたの方がよっぽど厨房。
726デフォルトの名無しさん:05/02/21 08:13:56
そんなものはCではない > C89じゃ基本文法じゃないでしょ
C89なんていう呼び方をすると、いまだにそういう規格が許されているのだと
思い込む馬鹿も続出
727デフォルトの名無しさん:05/02/21 08:14:52
ただしくは「C89じゃ基本文法じゃない」ではなく、
「C89じゃ基本文法ではなかった」だな。
すでに16年も前の話だ。
728デフォルトの名無しさん:05/02/21 08:20:44
世の中のコンパイラのほとんどがC99のフル規格をサポートしてない
以上、現時点でC99を標準Cと呼ぶのは時期尚早だと思う。
729デフォルトの名無しさん:05/02/21 08:24:19
> 世の中のコンパイラのほとんどがC99のフル規格をサポートしてない 以上

お、またでたなVC厨 ;-)

よのなかの大概のコンパイラーがサポートしてるんだよ > 位置指定初期化
してないのはVCぐらいじゃない?
730デフォルトの名無しさん:05/02/21 08:27:29
どれが標準か、よりどの標準に合わせるか、でしょ。
ユーザーの立場としては。
731デフォルトの名無しさん:05/02/21 08:29:04
>>729
ほう、VCは位置指定初期化はサポートしてないのか。知らなかった。
ところであんたのコンパイラはC99の規格は全部サポートしてるのか?
732デフォルトの名無しさん:05/02/21 08:43:29
>>722
> うちにある何種類かのコンパイラーでそれがエラーになるのは1つもない。
VCぐらいもってないんですか?w
733デフォルトの名無しさん:05/02/21 10:31:40
>>729
引用までしておいて位置指定初期化限定の話…莫迦ですか?
734デフォルトの名無しさん:05/02/21 10:33:38
VC厨必死
735デフォルトの名無しさん:05/02/21 10:50:11
gcc厨も必死
736デフォルトの名無しさん:05/02/21 12:15:17
標準って言ってもどこまでサポートしてるかはコンパイラによって違うし、文句言ってもしょうがない
737デフォルトの名無しさん:05/02/21 12:30:55
UNICODEって言ってもどこまでサポートしてるかはOSによって違うし、文句言ってもしょうがない
738デフォルトの名無しさん:05/02/21 12:53:28
今、俺がいいことを言った!
739デフォルトの名無しさん:05/02/21 12:54:51
移植性を考慮すると現時点ではできるだけC99での追加機能は使わないのが
妥当。多分コーディング規約で縛っている所も多いはず。
遊びでプログラム書いてるんなら何やってもかまわんが。
740デフォルトの名無しさん:05/02/21 13:03:40
snprintf()だけは使えるなら使ったほうがいい様に思う。
741デフォルトの名無しさん:05/02/21 13:15:09
>>739
他人に押し付けるな。厨房。
742デフォルトの名無しさん:05/02/21 13:28:52
>>741
だから遊びでプログラマやっている人には何にも言いません。
743デフォルトの名無しさん:05/02/21 13:51:18
仕事で C 使ってるけど、C99 使いまくりだよ。
お前らみたいな old type がいるから俺らが苦労するんだ…_| ̄|○
744デフォルトの名無しさん:05/02/21 13:57:43
いまさらCなんて使ってるのがoldtypeな気がするが。
これちょっと面白かった。
http://namazu.org/~satoru/misc/ggap.html
745デフォルトの名無しさん:05/02/21 14:21:06
>>739
long long intも使えんな。組み込み系オールドタイプか?
746デフォルトの名無しさん:05/02/21 14:47:47
で、結局関数呼び出し以外でポインタてどこで意味あるの。
747デフォルトの名無しさん:05/02/21 14:59:23
      J
748デフォルトの名無しさん:05/02/21 15:32:13
>>721
それだけだとプリプロセス後は何も残らない。
昔は何かする必要があった(or 将来何かする必要が出てくる)ということだろう。
749デフォルトの名無しさん:05/02/21 16:01:17
>>745
32bit 環境では必要ないですね。
750デフォルトの名無しさん:05/02/21 16:05:31
>>745
long longはデファクトに近いし簡単に代替できんから、使ってもいい様
な気がする。でも移植性についての注記をコメントで入れなきゃならん。
751デフォルトの名無しさん:05/02/21 17:02:12
/* 移植性についての注記 */
/* long longはデファクトに近いし簡単に代替できんから、使ってもいい様な気がした */
752デフォルトの名無しさん:05/02/21 18:09:48
やり方わかんないです
教えてください
泣きそうです
1. freecommandlinetools.exe を実行します。無料の C++Builder 5
コマンドラインツール開発システムをインストールしたいドライブと
フォルダを選択します。

2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib"
753デフォルトの名無しさん:05/02/21 18:13:48
>>752
スレ違い
754デフォルトの名無しさん:05/02/21 18:14:23
どこに行けばいいのでしょう?
755デフォルトの名無しさん:05/02/21 18:15:53
>>754
富士の樹海
756デフォルトの名無しさん:05/02/21 18:16:36
まじめにお願いします
757デフォルトの名無しさん:05/02/21 18:33:21
>>752
1. freecommandlinetools.exe を実行します。無料の C++Builder 5
コマンドラインツール開発システムをインストールしたいドライブと
フォルダを選択します。

2. インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib
758デフォルトの名無しさん:05/02/21 19:32:05
>>752
なぜ”C言語”のスレで”コンパイラの設定”について質問してるのかと
コンパイラの仕様について聞くなら分かるが
759デフォルトの名無しさん:05/02/21 23:10:02
>>729
アホ
760デフォルトの名無しさん:05/02/22 01:15:11
> 移植性を考慮すると現時点ではできるだけC99での追加機能は使わないのが

なにぼけたこと言ってる
761デフォルトの名無しさん:05/02/22 01:16:26
> long longはデファクトに近いし

っていうか標準文法にあるだろ ぼけ
762デフォルトの名無しさん:05/02/22 01:24:43
int64_t使えよ
まったく・・・
763デフォルトの名無しさん:05/02/22 01:32:24
a<b || b>c
a<b && b>c
みたいに評価する場合ってどんなコンパイラでも確実に左から右へ評価してくれますか?
764デフォルトの名無しさん:05/02/22 01:39:33
いいえ
765763:05/02/22 01:49:43
それは何故ですか?どうやって順番を決めているんですか?
766デフォルトの名無しさん:05/02/22 02:01:27
なんかどこかで見たような木がする。歴史はくりかえされる。
まぁいいか
767デフォルトの名無しさん:05/02/22 02:21:15
if(a<b){
 if(b>c){

 }
}
768デフォルトの名無しさん:05/02/22 03:47:18
[1] 授業単元:基本情報処理の言語対策
[2]
[3] 言語:C
[4] 期限:2月7日朝まで
[5] その他の制限: 特になし


0だと、条件式で偽と判断される理由が分かりません。

#include <stdio.h>
int main(void)
{
int sum = 1;
while(sum){
printf("整数を入力してください。(0で終了)\n");
scanf("%d",&sum);
printf("%dが入力されました。\n",sum);
}
printf("繰り返しが終りました。\n");
return(0);
}

変数sumを宣言した後、1を代入していますが、その後、whileの条件式に入っています。
そして、この条件式では、0を入力すると、条件が偽と判断されて、条件から抜け出します。
この時、なぜ0だと条件から抜け出すのでしょうか。仕様ですか?

お願いします。
769デフォルトの名無しさん:05/02/22 03:48:21
0だと、条件式で偽と判断される理由が分かりません。

#include <stdio.h>
int main(void)
{
int sum = 1;
while(sum){
printf("整数を入力してください。(0で終了)\n");
scanf("%d",&sum);
printf("%dが入力されました。\n",sum);
}
printf("繰り返しが終りました。\n");
return(0);
}

変数sumを宣言した後、1を代入していますが、その後、whileの条件式に入っています。
そして、この条件式では、0を入力すると、条件が偽と判断されて、条件から抜け出します。
この時、なぜ0だと条件から抜け出すのでしょうか。仕様ですか?

お願いします。

マチガイタ。
770デフォルトの名無しさん:05/02/22 03:50:48
真であり続ける限りループする

1 = 真
0 = 偽

while(1){ } 真なのでループ
while(0){ } 偽なのでループ脱出
771デフォルトの名無しさん:05/02/22 03:58:13
>>769
Cではそういう決まりだからとしか言いようがない。
772デフォルトの名無しさん:05/02/22 03:58:26
括弧内の条件式を省略すると
ゼロでないかどうかと比較される。
while(sum){ }

while(sum != 0){ }
は同じ
773デフォルトの名無しさん:05/02/22 03:59:52
>>770
一応なのですが、1以外の数字も代入できます。
ですが、0を代入すると、条件を抜け出す形になるのですが…。

774デフォルトの名無しさん:05/02/22 04:00:38
>>771
あああ、仕様ですが、それならOKです。

>>772
一応、それだと理解は出来るのですが、仕様かどうかで迷ってました。

ありがとうございます。
775デフォルトの名無しさん:05/02/22 05:48:09
仕様かどうかって迷って決めるものか?
776デフォルトの名無しさん:05/02/22 05:54:42
決めるって何を?
777デフォルトの名無しさん:05/02/22 07:12:07
>>763
規格は、規格に合致しない処理系の不存在を保証しない
778デフォルトの名無しさん:05/02/22 07:14:40
むしろ、省略しなくてもゼロでないかどうかと比較される、と
考えておいたほうがよいかも

while (sum != 0) -> while ((sum != 0) != 0)

while (sum < 0 || 0 < sum) -> while ((sum < 0 || 0 < sum) != 0)

779デフォルトの名無しさん:05/02/22 07:17:03
>>763
「必ず評価する」とは言わないが、
おそらく「評価した結果と等しくなる」のだろう。

if (1 < 2 || 2 < 3)
780デフォルトの名無しさん:05/02/22 07:50:17
while (sum != 0)

while ((sum != 0) != 0)

while (((sum != 0) != 0) != 0)

while ((((sum != 0) != 0) != 0) != 0)

while (((((sum != 0) != 0) != 0) != 0) != 0)

while ((((((sum != 0) != 0) != 0) != 0) != 0) != 0)

while (((((((sum != 0) != 0) != 0) != 0) != 0) != 0) != 0)

while ((((((((sum != 0) != 0) != 0) != 0) != 0) != 0) != 0) != 0)
781デフォルトの名無しさん:05/02/22 07:51:26

ぬるぽ
782デフォルトの名無しさん:05/02/22 07:52:54
if (A || B) は必ず A、B の順で評価される。
A が真の場合は B は評価されない。
783デフォルトの名無しさん:05/02/22 08:28:31
&&も右から左への順で評価することが保障されてて偽があるとそこで評価が
終わる。この規則がないと条件式の評価をコンパクトに書きにくい。
784デフォルトの名無しさん:05/02/22 08:30:07
まちがえた。左から右、だった。
785デフォルトの名無しさん:05/02/22 09:12:32
アラビアのC言語は逆から > 左から右
786デフォルトの名無しさん:05/02/23 02:12:59
testtest
787デフォルトの名無しさん:05/02/23 03:36:26
BCC5使ってます。

struct {
int x, y;
} a;

struc {
int x, y
} b;

a=b;

が出来ないのはなんでですか?
C++だと出来るのに・・・。
788デフォルトの名無しさん:05/02/23 04:00:01
structの間違いだからじゃなくて?
789デフォルトの名無しさん:05/02/23 04:26:18
>>787
これがC++だとできるだって?
規格のどこにそんなこと書いてあるか言ってみろ
790デフォルトの名無しさん:05/02/23 04:34:22
>>789
メンバのみコピーするコピーコンストラクタは省略可能
791デフォルトの名無しさん:05/02/23 09:50:53
型が違うのにコピー?
792デフォルトの名無しさん:05/02/23 10:15:15
782、783は、
じゃあ if (A || B && C) や if (A && (B && C))の場合はどういう順になるのかを
実は知らない ;-)
793デフォルトの名無しさん:05/02/23 10:55:30
>>792
どういう順になるの?
794デフォルトの名無しさん:05/02/23 12:18:24
>>793
無根拠に煽りたいだけの >>792 が知っている筈がないだろう。
今確かめてる最中だろうから少し待ってヤレ。
795デフォルトの名無しさん:05/02/23 13:41:23
A() || (B() && C())
A B C r
0 0 - f
0 1 0 f
0 1 1 t
1 - - t
A() && (B() && C())
A B C r
0 - - f
1 0 - f
1 1 0 f
1 1 1 t
A() || (B() || C())
A B C r
0 0 0 f
0 0 1 t
0 1 - t
1 - - t
A() && (B() || C())
A B C r
0 - - f
1 0 0 f
1 0 1 t
1 1 - t
796デフォルトの名無しさん:05/02/23 13:43:45
ソースも貼っとこう。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

bool A() {int foo; printf("A():"); scanf("%d", &foo); return foo;}
bool B() {int foo; printf("B():"); scanf("%d", &foo); return foo;}
bool C() {int foo; printf("C():"); scanf("%d", &foo); return foo;}
int main() {if (A() || (B() && C())) printf("true\n"); else printf("false\n"); return 0;}
797デフォルトの名無しさん:05/02/23 14:02:52
&& と || の評価については規格で決まってるだろ?
798デフォルトの名無しさん:05/02/23 14:58:58
配列を渡す関数の仮引数は [] と * どっちがいいですか?
799デフォルトの名無しさん:05/02/23 14:59:34
配列を受け取るでした。
800デフォルトの名無しさん:05/02/23 15:20:47
>>798
どっちでも (・∀・)イイ
801デフォルトの名無しさん:05/02/23 15:26:07
unsigned char, unsigned int, unsingned long
とかあるのですが、 typedef unsigned size_t
のようにunsinged しか書いてないときはどれを
表してるのですか?教えてください。
802デフォルトの名無しさん:05/02/23 15:27:17
unsigned int
803デフォルトの名無しさん:05/02/23 15:32:40
>>801
intは省略可能なので、
unsignedと書いたらunsigned intの意。
勿論、unsigned longはunsigned long intの意だね。
804801:05/02/23 15:34:51
>>802,803
ありがとうございます。
805デフォルトの名無しさん:05/02/23 17:03:39
>>799
じゃ (*)[] で。
806デフォルトの名無しさん:05/02/23 17:13:35
>>805
なにそれ?
807デフォルトの名無しさん:05/02/23 18:17:01
>>806
#define N 16
void f(int (*foo)[N]);
int main() {
  int array[N];
  f(&array);
  return 0;
}
下をtypedefなしで書くと上の意味になることから上の書き方も認められている。
typedef int T[N];
void f(T *foo);
int main() {
  T array;
  f(&array);
  return 0;
}
808デフォルトの名無しさん:05/02/23 18:21:02
>>805
それは配列ではなく配列へのポインタを受け取っているような。
だからと言って、>798は配列の要素へのポインタでしかないけど。
809807:05/02/23 18:35:50
>>808
806が(*)[]をなにそれって言うから例を示しただけ。
810デフォルトの名無しさん:05/02/23 19:14:25
あふぉばっかりのすれはここれすか?
811805:05/02/23 20:25:51
>>806
ぎょう虫セロファン失敗。
>>808
「呼び出した側が配列を受け取る」と読み違えてた。
812デフォルトの名無しさん:05/02/23 21:09:31
一箇所からしか呼ばれない関数は作らないほうがいいですか?
813デフォルトの名無しさん:05/02/23 21:17:56
>>812
それで処理の流れが理解しやすくなるなら
がんがん作ってください。
814デフォルトの名無しさん:05/02/23 22:32:57
どこからも呼ばれない関数は作らないほうがいいですか?
815デフォルトの名無しさん:05/02/23 22:43:09
>>814
ステップ数稼ぎですか?好きにしてください。
816デフォルトの名無しさん:05/02/23 22:44:36
#ifdefのようなやつや、
デバックのやり方を勉強したいのですが、
なにか良いサイト教えてください。
817デフォルトの名無しさん:05/02/23 23:01:12
>>816
地道に経験積んでください。
818デフォルトの名無しさん:05/02/23 23:32:01
>>814
いつか呼ばれる日が来るまで
がんばってください
819デフォルトの名無しさん:05/02/24 13:49:45
LINUX環境で、ファイルの検索をしたいのですが、
FindFirstFileに変わるものってないですか?
820デフォルトの名無しさん:05/02/24 13:52:57
>>819
FindFirstFileってなんですか?
普通にfind(1)を使えばいいんでないの?
あと、スレ違い。
821デフォルトの名無しさん:05/02/24 14:14:54
>>819
man opendir
822デフォルトの名無しさん:05/02/24 14:31:32
>>821
>>1読め。標準Cにはそんなもんないってばよ。
823デフォルトの名無しさん:05/02/24 21:05:33
バッチファイルを実行するコマンドを教えてください。
お願いします。
824デフォルトの名無しさん:05/02/24 21:18:18
>>823
system()
Cにコマンドなんぞない。
825デフォルトの名無しさん:05/02/24 21:24:45
>>824
ありがyとござまいす
826デフォルトの名無しさん:05/02/24 21:54:23
*.BAT → *.EXE のコンパイラを見たことあるが・・・
827デフォルトの名無しさん:05/02/24 21:59:01
BAT2COMなんてもあるな。
828デフォルトの名無しさん:05/02/24 22:30:07
クリップボードの文字列を参照することってできますか?
829デフォルトの名無しさん:05/02/24 22:32:02
>>828
スレ違い
830デフォルトの名無しさん:05/02/24 22:32:39
標準Cではできないのでスレ違い。
Win32APIスレとかへ行け。
831デフォルトの名無しさん:05/02/25 00:39:40
コンパイラの環境設定の時点で躓きました・・
説明書には、

>インストール先の bin ディレクトリで次の手順を実行します。
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。

こう書いてあるんですが、既存のパスってのが
そもそもどこにあるのかわかりません・・
832デフォルトの名無しさん:05/02/25 00:44:42
>>831
コマンドプロンプトでPATH=〜を入力
833デフォルトの名無しさん:05/02/25 00:45:44
Numerical Recipes関連の質問もOKでしょうか?
834デフォルトの名無しさん:05/02/25 00:55:27
>>832
コマンドプロンプトってどうやって出すんですか?
binフォルダの中にあるんですか??
835デフォルトの名無しさん:05/02/25 00:55:33
極私的C言語講座 - 環境設定 - Borland C++ Compiler (BCC) の場合
http://homepage3.nifty.com/norinoyama/c_lang/c_lang_setup_bcc.html
836デフォルトの名無しさん:05/02/25 01:45:16
世代の隔絶を感じますねぇ。
ほんこないだ迄、手回し計算器だったのに…
837デフォルトの名無しさん:05/02/25 02:14:20
彼の国はいまでも手回しでつ
838デフォルトの名無しさん:05/02/25 02:21:15
算木の時代をようやく脱したか。
839デフォルトの名無しさん:05/02/25 03:09:53
ココで聞いていいのかわかりませんが・・・
処理速度について教えてください。
例えば
tmp = x << 3;
for(i = 0; i < 1000; i++)
func(tmp);

for(i = 0; i < 1000; i++)
func(x << 3);
ってコンパイラの最適化を考えない場合
全体としてどちらが速いのでしょうか??
840デフォルトの名無しさん:05/02/25 03:14:52
コンパイラの最適化に依存する。
考えないと、答えはでない。
841デフォルトの名無しさん:05/02/25 03:16:53
最適化を考えない=最適化されないものとする、ということであれば、
当然前者の方が計算量は減る。
しかし、速いかどうかは環境依存になるため一概には言えない。
842デフォルトの名無しさん:05/02/25 03:26:56
> ココで聞いていいのかわかりませんが・・・

だったらわかってから聞け!
なんでわからないうちに聞くんだ?

「あなたを殺しても法律的にいいのかどうかわかりませんが、とりあえず殺しておきます」
とかいいそうだなこいつ
843デフォルトの名無しさん:05/02/25 03:27:40
そもそも答えちがってくるだろ > 839
比較にならない。
844839:05/02/25 03:30:53
ありがとうございます。
それでは環境によって逆になりうるということでしょうか。
あと、上の例のtmpのように、変数を使う使わないで影響はありますか?
845839:05/02/25 03:33:18
>>842
すいません・・・
一気に聞いてしまいました。
846デフォルトの名無しさん:05/02/25 05:01:25
VC++2003 x86 最適化無しのアセンブリリスト出力(ループ内のみ抜粋)

//tmp = x << 3;
//for(i = 0; i < 1000; i++)
//func(tmp);
movedx, DWORD PTR _tmp$[ebp]
pushedx
call_func
addesp, 4


//for(i = 0; i < 1000; i++)
//func(x << 3);
movecx, DWORD PTR _x$[ebp]
shlecx, 3
pushecx
call_func
addesp, 4


下の方が1命令だけ多い。

これで満足かい?
847デフォルトの名無しさん:05/02/25 05:21:58
ちなみに最適化かけると、両方全く同じコードになるぞw
848デフォルトの名無しさん:05/02/25 06:49:40
どうか教えてください。

[1] 授業単元:プログラム概論
[2] 問題文(含コード&リンク):
   シフトJISからEUCへの文字コード変換プログラムを作りたい(余裕があればその逆も)
   http://tokyo.cool.ne.jp/kuonnnokizunanbalivetehe/programming/prog1.txt
[3] 環境
 [3.1] OS: WindowsXP,NT Solaris2.0
 [3.2] コンパイラ(バージョン):富士通fcc,Cygwin(gcc)
 [3.3] 言語:C
[4] 期限:2005年2月28日12:00まで
[5] その他の制限: この問題文の意図だと引数をunsigned int型にするべきかどうか分からない
849デフォルトの名無しさん:05/02/25 07:37:28
> それでは環境によって逆になりうるということでしょうか。

ぼけ。それ以前に2つのコード、ぜんぜんロジックちがうじゃないか?
これの答えが同じになる環境なんかねーよ
同じもの比べないと意味ないだろ?
850デフォルトの名無しさん:05/02/25 07:45:29
ちがわないぞ?
851デフォルトの名無しさん:05/02/25 08:25:57
違わない
852デフォルトの名無しさん:05/02/25 08:32:14
func()の引数の型とtmp,xの型が違ったら、違ってくるか・・・
でも、そういう話じゃ無さそうだしなあ。

843,849 判らないから説明してくれよ。
853デフォルトの名無しさん:05/02/25 08:38:25
 x <<= 3
と混同しているのではないかと
854デフォルトの名無しさん:05/02/25 08:54:29
俺だったら今日1日このスレ見れない
855デフォルトの名無しさん:05/02/25 08:59:10
>>848
激しくスレ違い
856デフォルトの名無しさん:05/02/25 09:12:38
すみません。visualC++の演算、分岐、ループ、再帰などにかかる計算時間
を知りたいのですがどこかにありませんか。
よろしく願いします。
857デフォルトの名無しさん:05/02/25 09:22:54
>>856
一から出直せ
858デフォルトの名無しさん:05/02/25 09:28:00
158 :仕様書無しさん :05/01/31 12:18:57
俺は1ではないですけど
入学卒業はメチャクチャ難しいとは思いますけど
仮に1さんがそのプログラマに関係ある修士号もしくは博士号取れちゃったら経験者扱いにならないんですか?
取れたらの話しですが
大学院じゃなくて学部でも、一流大でプログラム学んでも無理なんですか?
勿論これも1さんが入学出来たらの話ですが
理系って朝早く学校から出てきてボールペン持って走ってたりしてるのよく見ました
泊り込んで猛烈に研究してるなら毎日プログラマと同じような事やってるんじゃないんですか?
もしくは普通のプログラマより遥かに高度な研究やソフトの作製
なんか天才が物凄いソフト作ったりしてそうなイメージあるんですが
大学院で高度な研究するなら卒後経験者として職探し出来ないんですか?
859デフォルトの名無しさん:05/02/25 09:41:59
alt+Eでプロファイラー動いたのですがどうやって調査したら正確な計算量わかりますか。
よろしくお願いします。
860デフォルトの名無しさん:05/02/25 09:45:06
再帰とか、関数呼び出しとか、変数マクロとか、演算とか、分岐とか
のコストを正確に知りたいのですが。ソースください。
よろしくお願いします。
861デフォルトの名無しさん:05/02/25 09:50:41
862デフォルトの名無しさん:05/02/25 09:53:29
>>861
教えてくださいお願いします。
863デフォルトの名無しさん:05/02/25 09:54:14
懸命にスレを流そうとする849であった・・・・・
864デフォルトの名無しさん:05/02/25 10:23:25
プロファイラをやってみたのですがifにかかるコストが全く無いのですが。
おかしいんでしょうか?
これと
int i;for(i=0;i<=300000000;i++)if(i==0)if(i==0)if(i==0);
これが同じ位の時間なんですが。ホントに合ってるのかな?
int i;for(i=0;i<=300000000;i++);
865864:05/02/25 10:25:51
なぜなんだー。よろしくお願いします。
866デフォルトの名無しさん:05/02/25 10:44:48
867デフォルトの名無しさん:05/02/25 10:45:13
>>864
プロファイラはやるものではない
868864:05/02/25 11:26:22
なぜgよりiの方が速いのか詳しくお願いします。

void f(void){
int i;for(i=0;i<=30000000;i++); }
void g(void){
int i;for(i=0;i<=300000000;i++); }
void h(void){
int i,s=0;for(i=0;i<=300000000;i++)if(i>=0)s++; }
void i(void){
int i;for(i=0;i<=300000000;i++)if(i>=0); }
main() { f();g();h();i(); }

プロファイラ結果
1034.895 41.2 h(void) (test.obj)
702.974 28.0 g(void) (test.obj)
693.421 27.6 i(void) (test.obj)
80.726 3.2 f(void) (test.obj)
869864:05/02/25 11:28:26
void i(void){
int i;for(i=0;i<=300000000;i++)if(i>=0)if(i>=0)if(i>=0)if(i>=0);}
にしたらさらに高速化しました。
>648.068 26.7 i(void) (test.obj)
870デフォルトの名無しさん:05/02/25 11:30:50
>>864
いいかげん、寿司屋でカレーを注文するような真似はやめろ。
871デフォルトの名無しさん:05/02/25 11:32:39
分岐にかかるほんとのコストを教えてくれたらいなくなるので教えてください。
872デフォルトの名無しさん:05/02/25 11:33:38
>>864
だからスレ違いだって言ってるだろうが!
873デフォルトの名無しさん:05/02/25 11:36:09
それではなぜスレ違いなのか言ってみて。
874デフォルトの名無しさん:05/02/25 12:00:16
>>873
環境やコンパイルオプション等に激しく依存するから。
875デフォルトの名無しさん:05/02/25 12:58:19
なんかもう荒らしですね
876デフォルトの名無しさん:05/02/25 13:24:54
>>873
自分の要求ばっかり。ハッキリ言ってうざい。
877デフォルトの名無しさん:05/02/25 14:16:17
言えないんだ。役たたずだね。
878デフォルトの名無しさん:05/02/25 14:24:54
荒らすのが目的だったか。以後スルー
879デフォルトの名無しさん:05/02/25 14:27:47
>>873
ニモニック見てクロック数を計算する。
なんでC言語とは直接関係ない
コンパイラが生成するマシン語やCPUの話
880デフォルトの名無しさん:05/02/25 14:30:22
すし屋に行ってカレーを注文。
カレーなんかあるかボケと突っ込まれ
カレーも作れないのか役立たずとのたまう。
なんだかなもぅ
881デフォルトの名無しさん:05/02/25 14:34:48
CPU何だか知らんけど、こういうスレへどうぞ

x86命令の所要クロック計測スレ
http://pc5.2ch.net/test/read.cgi/tech/1103609337/
882テーヘーちん:05/02/25 14:36:55
簡単な質問かもしれませんが、分からないので教えてください。

以下のプログラム、核は出来ています。このまま使用しても目的は達成できます。が、
http://tokyo.cool.ne.jp/kuonnnokizunanbalivetehe/CSJS2EUC.C
http://tokyo.cool.ne.jp/kuonnnokizunanbalivetehe/CEUC2SJS.C
この2つのソースコードをJISを経過させずに直接変換させるにはどうしたらいいでしょうか?
883デフォルトの名無しさん:05/02/25 14:37:41
現在無職ですがマルチに答える暇はありません
884デフォルトの名無しさん:05/02/25 14:52:23
スレ違いの質問は全部ここに流せば良いのに

http://pc5.2ch.net/test/read.cgi/tech/1066747198/
885デフォルトの名無しさん:05/02/25 15:15:50
すみません、ソート方法についての質問なのですが、
構造体の複数の項目をソートさせたいです。
項目Aでソート
項目Bでソート


をしなければならないのか
それとも
項目A,B,・・・でソート
というやり方はできるのでしょうか?
886デフォルトの名無しさん:05/02/25 15:17:30
>>885
as you like.
887デフォルトの名無しさん:05/02/25 15:17:46
できる。
888デフォルトの名無しさん:05/02/25 15:20:51
889デフォルトの名無しさん:05/02/25 15:22:34
こんな感じのコードなのですが
同じ処理を何回もやるのは嫌なので
巧い方法はないか教えて頂けませんでしょうか
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
 char aaa[7];
 char bbb[7];
 char ccc[11];
 char ddd[3];
 char eee[3];
} AA;

int main(void)
{
 AA *pg_ar, g_war;
 int i, j;
 int irows;
 int gap, k;
 irows = 10;

 pg_ar = (AA *)malloc(sizeof(AA) * irows);
 if ( pg_ar == NULL ) {
  return(1);
 }
890デフォルトの名無しさん:05/02/25 15:23:17
 memcpy(pg_ar, "aaaaaa\0bbbbb1\0AAAA000001\0dd\0B2\0", sizeof(AA));
 memcpy(pg_ar+1, "aaaaaa\0bbbbb2\0AAAA000004\0dd\0F2\0", sizeof(AA));
 memcpy(pg_ar+2, "aaaaaa\0bbbbb3\0AAAA000012\0dd\0A2\0", sizeof(AA));
 memcpy(pg_ar+3, "aaaaaa\0bbbbb4\0AAAA000000\0dd\0D2\0", sizeof(AA));
 memcpy(pg_ar+4, "aaaaaa\0bbbbb5\0AAAA000009\0dd\0A2\0", sizeof(AA));
 memcpy(pg_ar+5, "aaaaaa\0bbbbb6\0AAAA000004\0dd\0B2\0", sizeof(AA));
 memcpy(pg_ar+6, "aaaaaa\0bbbbb7\0AAAA000003\0dd\0A2\0", sizeof(AA));
 memcpy(pg_ar+7, "aaaaaa\0bbbbb8\0AAAA000004\0dd\0A2\0", sizeof(AA));
 memcpy(pg_ar+8, "bbbbbb\0bbbbb9\0 A259\0dd\0A2\0", sizeof(AA));
 memcpy(pg_ar+9, "bbbbbb\0bbbb10\0 A1\0dd\0B2\0", sizeof(AA));

 for ( gap=(irows/2); gap>0; gap/=2 ) {
  for ( i=gap; i<irows; i++ ) {
   j = (i - gap);
   while ( (j >= 0) &&
     (strcmp((pg_ar+j)->aaa, (pg_ar+(k=j+gap))->aaa) == 0) &&
     (strcmp((pg_ar+j)->ccc, (pg_ar+(k=j+gap))->ccc) > 0) ) {
    g_war = *(pg_ar+j);
    *(pg_ar+j) = *(pg_ar+k);
    *(pg_ar+k) = g_war;
    j -= gap;
   }
  }
 }
891デフォルトの名無しさん:05/02/25 15:23:57
 for ( gap=(irows/2); gap>0; gap/=2 ) {
  for ( i=gap; i<irows; i++ ) {
   j = (i - gap);
   while ( (j >= 0) &&
     (strcmp((pg_ar+j)->aaa, (pg_ar+(k=j+gap))->aaa) == 0) &&
     (strcmp((pg_ar+j)->ccc, (pg_ar+(k=j+gap))->ccc) == 0) &&
     (strcmp((pg_ar+j)->eee, (pg_ar+(k=j+gap))->eee) < 0) ) {
    g_war = *(pg_ar+j);
    *(pg_ar+j) = *(pg_ar+k);
    *(pg_ar+k) = g_war;
    j -= gap;
   }
  }
 }

 free(pg_ar);
 return(0);
}
892デフォルトの名無しさん:05/02/25 15:34:28
>>891
use qsort()
893デフォルトの名無しさん:05/02/25 15:36:11
>>885
>項目Aでソート
>項目Bでソート
>:
>:



>項目A,B,・・・でソート

は結果が違うだろ。

>項目A,B,・・・でソート
>というやり方はできるのでしょうか?

出来るに決まってる。
894デフォルトの名無しさん:05/02/25 15:44:22
SQLで書くと
ORDER BY AAA,DDD DESC,EEE
をしたいです。
qsortを使って一度にソートさせるように
したのですが、ソート結果が意図しないものになったので
自作しました。比較用の関数を巧くするとqsort一回で
複数項目をソートできるのですか?
895デフォルトの名無しさん:05/02/25 15:51:20
>>894
>比較用の関数を巧くするとqsort一回で複数項目をソートできるのですか?

そうだよ。

>ORDER BY AAA,DDD DESC,EEE

の例でいくと、

1:項目「AAA」を比較
・不一致の時→比較結果を返し終了
2:項目「DDD」を比較
・不一致の時→比較結果を返し終了
3:項目「EEE」を比較
4:3の結果を反転して返し終了

こんな感じ。


って言うか、ソートの基本から勉強し直した方が良いよ。
896デフォルトの名無しさん:05/02/25 15:53:04
>>895
ありがとうございます
頑張ってみます。
897デフォルトの名無しさん:05/02/25 16:03:20
>>894
逆に、qsort()は安定ではないから一発で決めないといけない。
安定なソートなら条件を変えて何度もソートすればいいけどね。
898デフォルトの名無しさん:05/02/25 17:23:23
安定ではないとは?
899デフォルトの名無しさん:05/02/25 17:25:04
そんぐらいググれや
手拍子で聞いてんじゃねーよ
900デフォルトの名無しさん:05/02/25 17:42:23
C言語意味不明。
なんでこんなのがわかるの?
901デフォルトの名無しさん:05/02/25 17:45:46
君には向いていなかったんだよ、違う道を進め。
902デフォルトの名無しさん:05/02/25 17:47:32
>>897
正直、安定か?安定でないかを気にするようなプログラムは作らんよ。
純粋にcompare( (void *) elem1, (void *) elem2 );関数を作った方が間違いが無い。
903デフォルトの名無しさん:05/02/25 17:49:42
>>898
安定ソート
出典: フリー百科事典『ウィキペディア(Wikipedia)』
安定ソート(あんていソート)とは、ソート(並び替え)のアルゴリズムのうち、
同等なデータのソート前の順序が、ソート後も保存されるものをいう。つまり、
ソート途中の各状態において、常に順位の位置関係を保っていることをいう。
904デフォルトの名無しさん:05/02/25 17:54:06
>>900
あきらめないでください。
あなたは慣れていないだけですから、もう少しがんばってみましょうね^^
905デフォルトの名無しさん:05/02/25 18:14:38
>>901>>904
天子と悪魔のささやきだな。さて、どちらが悪魔だろうか。w
906デフォルトの名無しさん:05/02/25 18:15:44
×天子
○天使
907デフォルトの名無しさん:05/02/25 18:59:57
二つ質問させて下さい。

下記のプログラムを実行すると、画面には 10 と表示されました。

void main()
{
char mbStr[] = "あいうえお";
printf( "%d", _mbstrlen(mbStr) );
}

最初僕は文字の数である 5 が返ってくると期待したのですが、実際には文字列のバイト数である 10 が返ってきました。
この関数は文字列のNULL文字を除いたバイト数を得る関数と理解して良いのでしょうか?
でもそれだと strlen() 関数と全く動作が同じになると思うのですが・・・
どのように理解すれば良いのか教えて下さい。

もう一つの質問です。下記のようにして、ワイド文字をマルチバイト文字に変換し表示しようとしたのですが、全くデタラメな文字列が表示されてしまいます。

void main()
{
char mbStr[256];
wcstombs( mbStr, L"ああああ", 256 );
printf( mbStr );
}

ワイド文字をマルチバイト文字に変換し、表示するにはどのようにすれば良いのでしょうか?

質問は以上の二点です。
どちらか一方でも解る方がいらっしゃいましたら返信お願いいたします。
使用している環境は下記のとおりです。
OS = WindowsXP Home Edition SP2
コンパイラ = Microsoft Visual C++ .NET
908デフォルトの名無しさん:05/02/25 19:21:38
>>907
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main(void)
{
    char mbStr[256];
    setlocale(LC_ALL, "Ja");
    wcstombs(mbStr, L"ああああ", 256);
    printf(mbStr);
}
909デフォルトの名無しさん:05/02/25 19:35:23
>>897
qsort()がstableかどうかはライブラリ依存でqsort()だからstableでは
ないとは言えない筈。でも規格では保証してないのでstableであることを
前提にプログラムを書かないほうがよい。
910897:05/02/25 19:39:02
「安定であるとは言えない」ということで一つ。
911デフォルトの名無しさん:05/02/25 19:47:47
7.20.5.2 The qsort function
4 If two elements compare as equal, their order in the resulting
sorted array is unspecified.

どっちか分からないってことで。
912907:05/02/25 20:41:27
>>908
おかげさまで二つとも解決することができました。
ありがとうございます。
913デフォルトの名無しさん:05/02/25 20:51:18
教えない君は小さい奴。職人に多い。
914デフォルトの名無しさん:05/02/25 22:46:10
wcstombs()とかって環境によってはバグだらけだよね
使い物になるの?
915デフォルトの名無しさん:05/02/25 22:54:38
バグと仕様は切り離せ
#ifdef で
916デフォルトの名無しさん:05/02/25 23:36:20
>>842
殺すしかなければそうするだろう
自分で法律を持ち出しながら法律の知識が幼稚園児なみだなこいつ
917デフォルトの名無しさん:05/02/25 23:48:37
俺の環境(Metrowerks CodeWarrior for Windows v8.3)では、L""自体が
使い物にならない。ワイド文字列リテラルをコード中に書けない。最悪。
918デフォルトの名無しさん:05/02/25 23:52:27
グチャグチャだけど
よく見ると何食って吐いたのか分かる、・・・って

コアってOSのゲロみたいなもん
って解釈でOKですか?
919デフォルトの名無しさん:05/02/26 00:00:12
>>918
うまい表現だ
920デフォルトの名無しさん:05/02/26 00:01:09
メモリという胃袋以外にも悪いところはあるかも知れないが
とりあえず観察してみるって意味で
921デフォルトの名無しさん:05/02/26 01:24:49
磁気コアメモリ→コアメモリダンプ→ファイル名core→コアを吐く
922デフォルトの名無しさん:05/02/26 02:17:15
実際大型機からは「吐き出される」というイメージがぴったり
923デフォルトの名無しさん:05/02/26 02:46:15
質問します。
#include <stdio.h>
void main()
{
double mysin(double x);
double x;
scanf("%lf",&x);
printf("%lf",mysin(x));
}
double mysin(double x)
{
double a,ai,b,bi,sum;
int i,j;
b=1; a=x; sum=x; ai=0;
for(i=2;i<N;i++)
{
 sum +=ai;
for(j=1;j<=2*i-1;j++)
{ bi=b*j; b=bi; }
ai=a*((-1)*x*x)/b;
a=ai;
}
return(sum);
}
というプログラムを課題でつくったのですがここのNのところを2桁以上の数にしてしまうと、
スキャンしてからとまってしまいます。
どこが問題なのでしょうか?
924デフォルトの名無しさん:05/02/26 03:04:38
止まる原因とは違うがb:階乗を計算する部分がおかしい
925デフォルトの名無しさん:05/02/26 03:50:02
>>923
止まるっていうか、Nの増加によって項数が増えることが
階乗の計算処理に大きく影響するからだと思う。
間違ってるのはともかく、アルゴリズム自体ももう少し工夫したらどうかな。

double mysin(double x)
{
double a, b, sum;
int i;

b = 1;
a = x;
sum = x;

for (i = 2; i < 100; i += 2) {
b *= i * (i + 1);
a *= (-1) * x * x;
sum += a / b;
}
return sum;
}
926925:05/02/26 03:54:01
あ、100っていうのは適当ね。
927924:05/02/26 04:01:01
止まっているように見えるだけということか。
分母が階乗なんだから途中でsumが変化しなくなったら計算打ち切りしてもええんちゃう?
928デフォルトの名無しさん:05/02/26 04:09:33
BCC で試してみたが、double 型で計算すると階乗は170までが限界
7.257415615308004024000000000000000000000e+306
170 ! x 16 までは計算できるが、170! x 17 はランタイムエラー。
計算途中でこれ超えてるんだろうな。

>>923 のプログラムは a == 0 になったとこで breakすれば N = 100 でも動くよ。
929925:05/02/26 04:57:32
エラー云々以前に、>>923のプログラムは
分母が「前項の分母 * 階乗」で分子が「前項の値 * (-x^2)」になってるから、
それを修正しないと正常に機能しないよ。
930デフォルトの名無しさん:05/02/26 08:25:06
atoiの逆をやる関数を教えてください
931デフォルトの名無しさん:05/02/26 08:27:30
itoa
932デフォルトの名無しさん:05/02/26 08:33:17
>>931
ヘッダは?
933デフォルトの名無しさん:05/02/26 08:41:34
grep なり [編集] - [ファイルから探す] なり、いくらでもやりようあるだろ
934931:05/02/26 08:45:05
>>930
ネタだと思って答えたんだが
マジで質問してるのか?
935デフォルトの名無しさん:05/02/26 08:48:38
>>930
iota
936デフォルトの名無しさん:05/02/26 08:51:15
>>933
やっぱりない
937デフォルトの名無しさん:05/02/26 09:58:05
>>930
sprintf()
938デフォルトの名無しさん:05/02/26 10:19:32
springfでうまくいきました。
それにしてもatoiのヘッダが見つからないのですが、教えてください
939デフォルトの名無しさん:05/02/26 10:29:49
>>938
atoiならstdlib.h
そのからみでitoaもstdlib.hにあることが多い。
940デフォルトの名無しさん:05/02/26 10:36:53
itoaって標準Cだっけか?
941デフォルトの名無しさん:05/02/26 11:09:30
>>938
springf ?
942デフォルトの名無しさん:05/02/26 11:15:43
>>940
違う
943デフォルトの名無しさん:05/02/26 11:26:47
春だね。
944デフォルトの名無しさん:05/02/26 14:26:02
>>924-929
ありがとうございました
Nを大きくすると計算処理がフリーズしてしまうといことでしょうか。
いちおう階乗のところをなおしてやってみたんですがやはりあまり大きな数字を入れると
とまってしまいましたが>>925さんのプログラムなら動いたことから私のプログラムは無駄がありすぎっていうことですね。
いちおう自分の階乗を直したものを貼っておきます
double mysin(double x)
{
double a,b,sum;
int i,j;
b=1;
a=x;
for(i=2;i<11;i++)
{
sum +=a/b;
b=1;
for(j=1;j<=2*i-1;j++)
{
b *=j;
}
a *=(-1)*x*x;
}
return(sum);
}
945923:05/02/26 14:26:58
なまえ入れ忘れました↑は923です
946デフォルトの名無しさん:05/02/26 14:57:23
なまえ入れるよりトリップ入れた方がいい
947デフォルトの名無しさん:05/02/26 14:57:25
948デフォルトの名無しさん:05/02/26 17:16:23
忘年会や歓送迎会の時期に、下北沢や明大前の駅のホームに
よくおちてますよ > core
949デフォルトの名無しさん:05/02/26 17:32:13
そんなときには
find . -name core -exec rm -f {} \;
あれ? Linux だと
find . -name 'core.*' -exec rm -f {} ;\
になるのかな?
950デフォルトの名無しさん:05/02/26 19:08:35
よく、intがbigEndianでもlittleEndiganでもだいじょうぶなように格納するとき、
#define DEC_BE4(a) ((((a)[0] << 24) & 0xff000000) |\
(((a)[1] << 16) & 0xff0000) |\
(((a)[2] << 8) & 0xff00) |\
(((a)[3] << 0) & 0xff))
のように書きますよね?
これって。毎回自分で書くのめんどうなので、
標準的なマクロってどこかにないのでしょうか?
stddef.hとかに。gcc独自でもいいけど。
951デフォルトの名無しさん:05/02/26 19:15:19
>>950
htonl()
952デフォルトの名無しさん:05/02/26 20:00:20
Windows環境でボーランドC++コンパイラを使い、
CによりCGIアプリを作ろうと思っているのですが、
どういった環境でCで作ったCGIが動作可能かがわかりません。
WebServerなんでもかまはないので、Cで作ったCGIを動くようにするためには、
具体的にどのようなソフトが必要ですか?
953デフォルトの名無しさん:05/02/26 20:02:00
>>952
CGIを動かすサーバで動くコードを吐くコンパイラ
954デフォルトの名無しさん:05/02/26 20:03:26
>>952
返答ありがとうございます
具体的になソフト名を挙げていただけるとうれしいです
955デフォルトの名無しさん:05/02/26 20:07:30
>ボーランドC++コンパイラを使い
それだけで可能
他にはいらない
956デフォルトの名無しさん:05/02/26 20:12:12
>>952 954
マルチ
957デフォルトの名無しさん:05/02/26 20:16:04
>>956
心が狭いですね・・・
958デフォルトの名無しさん:05/02/26 20:25:56
>>952=>>954=>>957
氏ね
959デフォルトの名無しさん:05/02/26 20:27:46
>>952
CGIはただのプログラム。
たいていのウェブサーバでそのまま動かせるよ。
BCCでコンパイルするとウインドウズ用のプログラムが出来上がるので、
Windows上で動いているウェブサーバで動かせる。

IISで動かすならCGIにするより、COMにしておいてASPから使ったほうが楽チンだよ。
960デフォルトの名無しさん:05/02/26 20:29:28
>>952
「CGIとは何か?」から勉強した方がいいぞ
961デフォルトの名無しさん:05/02/26 20:30:58
たくさん釣れました。
962954:05/02/26 21:15:05
お答えいただいた皆さん
ありがとうございました勉強になりました。
963デフォルトの名無しさん:05/02/26 21:43:27
>>949
おまいさんの端末は全角でコマンド打つのか
イモだね
アフォだね
964デフォルトの名無しさん:05/02/26 21:50:27
>>951
みつからないんですけどー
% grep htonl /usr/include/*.h
965デフォルトの名無しさん:05/02/26 22:03:33
これって例えばメモリ512Mの場合何Mぐらいでダウンしますか

while(1) {
    malloc(1024*1024);
    printf("now allocation %dM", ++i);
}

966デフォルトの名無しさん:05/02/26 22:08:04
#if defined(KERNEL) || !defined(_POSIX_SOURCE)
って書いてあります。POSIX準拠の場合はどういうマクロを使えばいいですか?
967デフォルトの名無しさん:05/02/26 22:09:11
>>965
速度の話と同じで思いっきり処理系依存
「ダウン」の定義がなく、あまつさえ OS の種類すら示していないのに答えようがあるまい
968デフォルトの名無しさん:05/02/26 22:10:40
>>964
% grep htonl /usr/include/*/*.h
% man htonl
969デフォルトの名無しさん:05/02/26 22:15:23
>>965
俺の記憶違いだったらすまないが
【mallocの戻り値】
成功時 : 確保したメモリブロックを指すポインタ
失敗時 : NULL (メモリ不足により指定サイズ分のメモリが確保できないとき)
だったからダウンすることは無い…かな?

思いっきりOSとかに依存しますが…
970デフォルトの名無しさん:05/02/26 22:22:53
Win9X系ならダウンに等しい状況になるかも、不明だが・・・
971デフォルトの名無しさん:05/02/26 22:27:17
作って実行した方が速い。w
972デフォルトの名無しさん:05/02/26 22:31:52
973デフォルトの名無しさん:05/02/26 22:50:06
>>969-971
興味があったので作ってみたら。  OS=Windows2000Proで。
スワップ始まって2G近くメモリーをmallocして、スワップが無くなったらNULLが
帰ってきた。システムは重いが動く、システムメッセージで
「仮想メモリーが足りないので増やしてくれ」と言われ、testプログラムをKillして
今正常に動いてるよ。結構頑丈。w
974デフォルトの名無しさん:05/02/26 23:10:14
頑丈っていうかそれが当たり前だろ・・・
975デフォルトの名無しさん:05/02/26 23:11:48
>>973
結局、「ダウン」しなかった
cl.exe Ver13.10.3077: 1921M
bcc32.exe 5.5.1: 1906M
で、どちらも malloc が NULL を返してきたが
これといって処理が重くなったりはしなかった
書き込みアクセスしてればもう少し違ったかも知れんが・・・

OS 名Microsoft Windows XP Professional
バージョン5.1.2600 Service Pack 2 ビルド 2600
プロセッサx86 Family 6 Model 10 Stepping 0 AuthenticAMD ~1463 Mhz
合計物理メモリ1,024.00 MB
利用可能な物理メモリ503.27 MB
合計仮想メモリ2.00 GB
利用可能な仮想メモリ1.96 GB
ページ ファイルの空き容量2.40 GB
ページ ファイルC:\pagefile.sys
976965:05/02/26 23:17:45
>>975
わざわざdです。
今度会社のHP-UXでもやってみる
977デフォルトの名無しさん:05/02/26 23:20:11
>>975
無限ループで動いてたから、その分が重かったかもな。
他に4本ほどプログラムも動かしてたし。

>>974
漏れは古い人間たから、意外だと思ったんだよ。気にするな。
978デフォルトの名無しさん:05/02/27 02:08:01
>>964
find /usr/include -name '*.h'|xargs grep htonl /dev/null
979デフォルトの名無しさん:05/02/27 03:26:06
>>977
9xとNT系を混同しちゃったんだね
980デフォルトの名無しさん:05/02/27 09:41:53
こっち先に埋めようぜ
981デフォルトの名無しさん:05/02/27 10:08:15
ビット演算の無意味なワザ…ゼロクリア x^=x
982デフォルトの名無しさん:05/02/27 11:00:13
それって構造体でも使える?
983981:05/02/27 11:10:18
無理っぽい
984デフォルトの名無しさん:05/02/27 11:33:42
うめ
985デフォルトの名無しさん:05/02/27 11:36:27
>>982
ビット演算は整数型にしか使えない事を知っての発言ですか?
986デフォルトの名無しさん:05/02/27 11:37:23
980超えると書き込み無ければ自動的に落ちるので無理に埋めないように
987デフォルトの名無しさん:05/02/27 11:40:15
ume
988デフォルトの名無しさん:05/02/27 11:42:56
空集合…0
和集合…x|y
積集合…x&y
差集合…x^(x&y)
989デフォルトの名無しさん:05/02/27 11:46:47
空集合…{}
990デフォルトの名無しさん:05/02/27 11:47:39
和集合…a||b
991デフォルトの名無しさん:05/02/27 11:51:02
積集合…a&&b
992デフォルトの名無しさん:05/02/27 11:51:15
本物のプログラマはいかにして問題を解くかッ
993デフォルトの名無しさん:05/02/27 11:52:21
ビットを集合の要素に見立てた演算なので||はちょっと…別にいいけど
994デフォルトの名無しさん:05/02/27 11:53:07
差集合…a||b && !(a&&b)
995デフォルトの名無しさん:05/02/27 11:54:00
差集合…(a||b) && !(a&&b)
996デフォルトの名無しさん:05/02/27 11:54:00
>>986
  ァ  ∧_∧ ァ,、
 ,、'` ( ´∀`) ,、'`
  '` ( ⊃ ⊂)  '`
997デフォルトの名無しさん:05/02/27 11:55:39
a | b = ~(~a & ~b)
a & b = ~(~a | ~b)
~a | ~b = ~(a & b)
~a & ~b = ~(a | b)
998デフォルトの名無しさん:05/02/27 11:56:19
a || b == ~(~a && ~b)
a && b == ~(~a || ~b)
~a || ~b == ~(a && b)
~a && ~b == ~(a || b)
999デフォルトの名無しさん:05/02/27 11:57:03
a || b == !(!a && !b)
a && b == !(!a || !b)
!a || !b == !(a && b)
!a && !b == !(a || b)
1000デフォルトの名無しさん:05/02/27 11:57:45
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。