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

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

C言語なら俺に聞け(入門編)Part 100

1 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/30(金) 21:01:32.89
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 99
http://toro.2ch.net/test/read.cgi/tech/1331786500/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 156代目
http://toro.2ch.net/test/read.cgi/tech/1328276597/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/

2 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/30(金) 22:14:04.75
part 0x64 おめでとう!

3 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/30(金) 23:08:53.13
>>1


4 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/30(金) 23:21:06.70
>>1


5 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 00:22:16.85
文字列の細かい操作はやっぱりC++よりCの方がやりやすいなあ

え?独り言はチラシの裏に書けって?どうも

6 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 01:06:28.97
>>5
std::stringが使いにくいってこと?
それなら同意。

7 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 01:30:32.63
rubyやpythonと比べたら使いづらいけど
Cと比べれば全然マシだと思うけどなぁ

8 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 03:35:38.67
sprintfの万能さには勝てない。

9 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 04:31:39.18
sprintfじゃバッファオーバーフローが防げない
char buff[十分なバッファ];
とかしてsnprintfの戻り値チェックとかめんどくさいっす

10 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 04:37:22.90
/dev/nullに書いて長さ調べるのはだめなの?

11 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 04:39:54.71
数スレ前で同じような話があった気がする

12 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 05:01:42.70
テンプレートライブラリって普及してるの?
あれってコンパイルするとマクロみたいに展開されて
デバッグ凄く大変になるんじゃなかったっけ?
昔ATLとか出始めの時に使おうと思ったけど
メンテナンス性が凄く悪そうな印象だったからやめた記憶がある。
なんかライブラリと自分のコードの境目が曖昧になるのって
あんまり居心地がよく無い

13 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 05:07:43.04
普及してる

14 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 05:32:14.91
>>10
どういうこと?
できたらサンプルソースお願い。

15 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 12:16:01.08
>>14
#include <stdio.h>
#include <stdarg.h>

int formattedLength(const char * form, ...)
{
FILE * fp = fopen("/dev/null", "w");
va_list args;
va_start(args, form);
int len = vfprintf(fp, form, args);
va_end(args);
fclose(fp);
return len;
}

int main(int argc, char ** argv)
{
printf("%d\n", formattedLength(argc > 1 ? argv[1] : "%g", 1. / 3));
return 0;
}


16 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 16:08:20.20
文字配列の初期化って0x00で初期化するのがいいの?
ヌル文字で初期化ってどうなのかなあ。
0x20で初期化するのってどう?

17 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 16:16:43.78
危険

18 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 17:01:47.64
>>16
asciiの積もりだろうから空白文字だろうけど、それで初期化することは無意味。
先頭にナル文字を書いておけば、長さ0の文字列として扱える。

19 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 22:29:08.21
>>15
んーと、それを簡単に書くと
int len = snprintf(NULL,0,...);
でしょ?
int len = snprintf(NULL,0,...);
int plen = len+1;
char *p = malloc(plen);
snprintf(p, plen, ...); /* erro check 省略 */
free(p);
毎回、snprintfを2回呼んでmalloc/freeはダサくね?って話。
とはいえ、固定長バッファで溢れたらエラーで終わりってのも微妙だし
バッファを使いまわしてreallocするのも微妙

20 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 22:53:54.41
天地明察の原作者が一番かわいそうだわ

21 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 22:54:09.06
誤爆ごめんなさい

22 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 23:02:22.15
asprintf使えよ

23 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 23:07:52.56
assprintf?

24 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 23:20:53.34
処理系依存じゃん

25 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 23:32:04.01
うん

26 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 01:58:27.03
俺はC言語の達人
まいったか!?

27 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 02:05:52.10
まいりました


28 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 08:38:49.75
なにこの名前欄

29 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 09:34:49.49
これもすべてQZクズのせい

30 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 10:32:31.72
http://toro.2ch.net/test/read.cgi/tech/1333095907/46,48,50


31 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 12:13:28.81
yaccで分岐ステートメントをインタープリター実装する方法がわからないので教えてください。

selection:
__STATE_IF expression __STATE_THEN expression __STATE_ELSE expression
とした場合にthen、else両expressionが還元されるので、
if x then a=1 else a=2のような構文がインタープリター動作の場合破綻してしまい困ってます。
これを解決する一般的な良い方法があったら教えてください。


32 :はちみつ餃子 ◆8X2XSCHEME :2012/04/01(日) 12:39:17.18
パースの段階では構文木を構築するだけにして、実行とは段階を分けるのが普通。
小手先のトリックを使えばなんとかならんでもないけど…
例えば

cond: __STATE_IF expression __STATE_THEN
ifstatement: cond expression __STATE_ELSE expression

という風にふたつに分離してしまえば条件節の結果を先に得られるので、
それが真であれば else 節はよみとばす (パースだけして副作用を発生させないようにフラグを立てるとか) というような実装にできる。


33 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 13:27:39.48
>>32
フラグで読み飛ばすって、具体的にどうやるか思いつかないです。

cond: __STATE_IF expression __STATE_THEN {$$=$2; if_cond=$2;}
ifstatement: cond if_expression __STATE_ELSE if_expression
if_expression : expression {if (if_cond) 各種;}

的なことだろうけど、このif_cond をどう使えばいいのかイメージが沸きません。

>>実行とは分けるのが普通
たしかに全体を一旦中間コード(おれアセンブラコード)へ変換するアプローチの方が
逆に簡単なような気がしてきましたorz
(簡単のためにインタープリターにしようと思ったのだけど、コンパイラー作る方が逆に簡単っぽい)

34 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 13:38:45.22
いま閃いたんですけど、
lexのパーサーモードに%x <if_then>や %x <if_else>を用意して
字句解析の段階でダイレクトに if_expression の読み飛ばしを指定してみてはどうかと。
gotoをラベルテーブルに対するyyin操作で実装するような感じで。


35 :31:2012/04/01(日) 13:40:59.33
>>32
ありがとうございます。とてもいいヒントになりました。

36 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 18:42:26.45
&((HOGE + i)->fuga) という表記って、もっとすっきり書けないんでしたっけ?
(別にポインタを用意するのはナシで)
もう長年使ってないから忘れてもーた…(´Д`)

37 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 18:49:06.32
&HOGE[i].fuga

38 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 18:50:14.09
>>36
あんま変わんね
&HOGE[i].fuga

39 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 19:10:58.83
FUGA* getFugaReference(HOGE* hoge, int index);


40 :36:2012/04/01(日) 19:15:16.83
やっぱ直接メンバ指定すると配列になっちゃうかー
dd

41 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 21:53:47.78
プログラミングの勉強を始める時に色々オススメの本を教えて頂いた者です。どうしてもお礼が言いたくなり、この場を借りてお礼を言わせて下さい!あの時は本当にありがとうございました!お陰で苦手だった勉強も楽しくなってきました!本当ありがとうございます!

42 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 22:03:41.77
>>41
また困ったことがあればいらっしゃい

43 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 23:24:31.09
可愛いやつだ

44 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 14:08:04.29
http://qune.cside.com/archives/001941.html

> また,この本は,プログラム内の定数にマクロ定数を使えと言う。今でもそゆ古典的なことを勧めてる人がいるのかと,ちょっとびっくりしたんだけれども,何も知らない子に変なこと教えるなといいたい。

このブログにこんなことが書いてあったのだけど、普通はどうするんでしょうか。


45 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 14:17:02.13
ステマ乙www

46 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 14:28:03.59
>>44
#defineではなく、enumで、数値に名前をつける。constもつかえる

「数値は、マクロではなく定数として定義しよう。Cプログラマは、マジックナンバー
の値を管理するのに伝統的に#defineを使ってきた。しかしCのプリプロセッサは
強力だが乱暴なツール(中略)
CとC++では、整定数をenum文で定義できる。C++では任意の型の定数をconstで
宣言できる。
 const int MAXROW = 24, MAXCOL = 80;


『プログラミング作法』p. 41(ブライアン・W・カーニハン、ロブ・パイク)

47 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 14:28:57.72
>>44
オブジェクトサイズは言語に計算させよう(中略)
2や4ではなく、sizeof(int)
(中略)
 char buf[1024];
 fgets(buf, sizeof(buf), stdin);
バッファサイズは依然としてマジックナンバーだが、宣言に1回登場するだけで
済む」

『プログラミング作法』p. 43(ブライアン・W・カーニハン、ロブ・パイク)

48 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 14:38:17.48
>>46
C++ならいいけど、Cのconstは外部リンケージだから定数には使いにくいっていうか。
配列の要素数とか使えないところもあるし。

49 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 14:47:29.02
>>44
未来から来て、過去の人を笑うのは簡単。
100%バグのないプログラムもない。
人間謙虚でありたいものですね。

50 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 15:11:02.71
> 配列の要素数とか使えないところもあるし。
具体例ほしいなー

51 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 15:30:05.01
>>50
const int TBL_SIZE = 10;

int tbl[TBL_SIZE]; ← エラー

52 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 15:55:08.31
>>51
あー、ごめん
それがエラーになるような実行環境の具体例ね。

53 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 15:59:22.29
マクロはプリプロセッサーだけど
constはコンパイラーオプションだからな

54 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:03:23.39
>>52
アホなん?
http://codepad.org/hAuu0X9H

55 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:04:00.48
>>52
バカのくせに上から目線w

56 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:05:49.62
>>44
これもC++の仕様と混同してるだけなんじゃないの?

57 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:08:25.35
え?
そいつ、C++知らねーんじゃねーの?
今時Cの本もないだろに。

58 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:13:34.58
>>54
初めて知ったわ
file scopeだとダメなんだね

59 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:14:45.52
>>48にそのまま書いてあるのに、アホなん?

60 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:16:30.12
>>57
C++だとマクロよりconstやらinline関数の使用が推奨されてるから、
Cでもそうだと思ってるんじゃないの? >>44 のブログの人。

61 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 16:17:13.73
本 人 乙。

62 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 17:22:08.72
enumハックなつかしいなぁ。

63 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 17:34:19.81
即値やdefineマクロを使わずイミディエイト値を用意するとなると・・・

64 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 18:19:09.30
#define定数をconst定数に書き換えたところで大してありがたみを感じたことって実際ないよな
#defineで普通に問題なく事は進んでいくし

65 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 18:34:48.86
まぁデバッガで見えるのと、括弧をつけたつけないで変なことにならなくて
済むってくりだからね。

66 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 18:42:09.29
C++ での NULLの実装は… 任意なんだっけ?
ほとんど #define でやってるように見受けられるけど

67 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 18:44:18.30
関数のプロトタイプにconst付いてない場合にconst定数を引数で渡すと引数の型が違うとか言って怒られるし
プロトタイプを変更したらconst付けてないのが渡せなくなるしマジうざいんだけど

68 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:04:12.36
>>67
なんか違ってないか?

69 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:05:06.65
>プロトタイプを変更したらconst付けてないのが渡せなくなるしマジうざいんだけど

こう言う動作だっけ?
もうC++書いてないから忘れたけど
関数の引数でconst宣言するのって
関数内部で参照先の値を変えませんよって言ってるだけじゃなかったっけ?
呼び出し側でパラメーターに非const渡せないとか有るんだけっけ?

70 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:08:01.79
ス レ 違 い

71 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:14:20.49
プログラミング作法って本当に良書だよなあ
さすがカニチャーハンさん
尊敬しております(^人^)

72 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:45:10.03
間違いを突っ込まれるとスレ違いって言い出す人が現れるな。

73 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:46:50.63
どこがつっこみだよ。
ろくに知りもしないなら書くなよ。

74 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:47:58.77
constは糞でFA

75 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 19:58:05.94
自分がconstの仕様を知らないのをconstが糞だって言ってごまかしてたらいつまでたっても上達できないだろ。


76 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:03:33.16
>>69
メンバ変数を書き変えませんよの const メソッドとごっちゃになってる気配

77 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:06:41.21
単にプロトタイプと定義の両方を同時に変更してないってだけじゃね?

78 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:09:25.50
>>71 鬱になって会社辞めた時、もうプログラムなんてしない
と思って「プログラミング作法」捨てたんだよな。
もったいないことした。

79 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:18:51.51
もうプログラムなんてしないなんて言わないよ絶対〜

80 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:26:02.51
デスマ はじまるよ
ほら また 僕のそばで〜


81 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:29:00.45
こういうのってマヌケがよく書くよな。

82 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:30:43.33
>>71
俺も欝でITは辞めたけど、未だにプログラムは書いてる。
でも辞めた際、結構本捨てたなぁ…

83 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:32:32.62
>>42、43
レス遅くなってすみません。色々あって職を変えることになり、覗く暇がなかったもので^^;
なるべく自分で答えを見つけたいのでどうしても分からなくてどうしようもない時はまたお願いしていいですか?優しい言葉ありがとうございます!


84 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:51:26.12
C++のconstはオブジェクトを値で渡すイメージで使いたい時にとても便利
オブジェクトを実際に値で渡すとスタックを大きく消費するしそのたびにコンストラクターや
コピー演算子が呼ばれてしまうが、constを付けることでオブジェクトのアドレスをスタックにコピーするだけですむのだ
関数内部でオブジェクトが変更されないことが保証されているので、
呼び出し側はあたかも引数に渡したオブジェクトをプリミティブ型のように扱うことが出来る。
いわゆる近代的な言語で設計されているStringオブジェクトやIntegerオブジェクトのようなプリミティブ型を
具象化したクラスが、非コンストメンバーを持たないことで、プリミティブ型のような動作を
するのはとても興味深い。このような動作をさせるのにコンスタントオブジェクトという考え方はとても重要である。

85 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:52:28.25
何アホなこといってんだコイツ
脳みそにウジでも湧いてんのか
Cのconst語れよ低能


86 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 20:52:37.75
>>84
C++スレでやれ

87 : ◆QZaw55cn4c :2012/04/02(月) 20:55:39.04
>>84
それは const とともに & も必要じゃないかい?

88 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 21:06:38.15
まだC言語スレでC++を語る馬鹿がいたのか

89 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 22:06:32.90
つかC99で可変長配列おkになったよね?
なんか>>51とか>>54で不安になって確認しなおしちゃったよ

90 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:19:32.91
C99でもダメじゃないのか?

91 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:26:18.32
C99では、配列宣言時には要素数に変数も使えるんじゃなかったか?
真の意味の可変長配列(スコープの途中で要素数を変更したりできるもの)ではないけど…

92 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:28:24.90
>>90
http://privatepaste.com/bfbce325f4

93 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:29:25.42
>>91
そう、それのこと

94 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:29:40.12
>>87
珍しくあってる。

95 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:31:26.78
>>92
いや、>>54の話。

96 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/02(月) 23:49:10.90
ああ、ファイルスコープか

97 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 09:39:40.06
>>92
これ、ちゃんと最適化されて静的配列になるのかね。
ヘッダーファイルで#define のかわりにconst使うとすると、
static const int n = 100;
とか
extern const int n;
とかしないといけないじゃん。
下のようにすると最適化は不可能だよね。
C99のお作法的にはどうするのが正解なんだろ。

98 :はちみつ餃子 ◆8X2XSCHEME :2012/04/03(火) 12:44:57.53
>>97
処理系によって、状況によって最適化されるよ。
VC や gcc は翻訳単位をまたぐ最適化もできる。

99 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 14:27:30.29
C言語で2Dゲーム作るのにDXライブラリーより簡単なライブラリーってある?

100 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 14:43:57.68
>>99
ncurses

101 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 16:31:09.98
ncursesだとnethackくらいが限界かと思う。

102 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 17:11:32.51
つくーるでつくれ。

103 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 22:35:34.42
うん

104 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 23:02:56.88
猫でもわかるってサイト一通り見たんだけど、次何やればいい?
サイトとか教えて

105 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 23:04:46.23
              「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
                                ↓
     「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
                                ↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
                                ↓
      「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
                                ↓
           「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
                                ↓
        「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
                                ↓
                              神の誕生


106 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 23:18:51.30
英語で言う文法みたいな感覚は理解できたけど、そこから先が・・・orz

107 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 23:23:43.29
やろうとしていることをプログラミング言語以前に母語で説明できない奴はプログラマに向いてないってダイクストラが言ってた。

108 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 23:29:21.26
だいたい分かるだろw


109 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 00:17:35.18
天才の9割は左利き

110 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 00:22:45.74
というかB型が圧倒的に多い、経験則だが。
組み込み系なら一層ね。


111 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 00:23:40.87
まず作りたいものがあってその実現の為に必要な知識を身に付けるという流れが正しいのであって
ただ盲目的に知識だけ身に付けてもそれで何か勝手に生み出されるかっていうとそういうわけではないよね

112 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 00:52:23.09
デタラメに仕入れたはずの知識が線で結ばれることがある
オートマトンとかグラフとか、汎用性が高いと信じられているものと
それに付随するアルゴリズムは、知っておくだけでも有益

113 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 18:51:50.32
ポインタについて質問させて下さい。
いま、あるメモリ上にint型の領域をおき
int*型ポインタ変数ip3にそのアドレスを、
int**型ポインタ変数ip2にip3のアドレスを、
int***型ポインタ変数ip1にip2のアドレスを入れ、
ip1から辿って***ip1でint型の値を得られるようにすることを考えます。すなわち、
ip1→ip2→ip3→int型の値
のような形にしたいという事です。それで以下のようなコードを書いたのですが
int ***ip1, **ip2, *ip3;
ip3 = malloc(sizeof(int));
*ip3 = 2;
ip2 = malloc(sizeof(void*));
*ip2 = ip3;
ip1 = malloc(sizeof(void*));
*ip1 = ip2;
printf("%d",***ip1);
これだと型宣言の時点において、int型の値との間に挟まれているポインタの数に応じて、*の数を静的に決めなければなりません。
最終的にint型の値を取り出す際には、*の数を指定してやらなければならないと思いますが、
ip1, ip2, ip3はその仲立ちに過ぎないのですから、「int型からポインタ何個分離れているか」はドントケアで良いはずです。
このような場合、そのように定義するのが適切でしょうか?
ip1,ip2,ip3をvoid*で定義しようとしたらエラーが出ました。

114 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 18:54:18.96
訂正です。
×そのように定義するのが適切でしょうか?
○どのように定義するのが適切でしょうか?

115 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 18:54:36.28
そもそもの設計が間違ってる。

116 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 19:17:36.35
テメーの手に余ることを設計しても
手のつけられないゴミカスが出来上がる
お前がアホなうちは
そんなクソをこの世に生み出すのは

やめ☆とけ


117 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 19:26:24.22
>>113
void *ip3;
ip3 = malloc(sizeof(int));
*ip3 = 2;
これがエラーになる理由を考えよう。

118 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 19:47:02.18
>>113
void *で宣言して使う時にキャストすりゃできるけどさぁ…

ip1とip2のmallocはいらないだろw

119 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 19:48:37.64
>>113
> 「int型からポインタ何個分離れているか」はドントケア
うんうん、ドントケアだよドントケア。
そんなこと考えないからね。

120 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 19:56:20.53
専用のmalloc/freeを作るところから始めようじゃないか
*int malloc_i2(int**);void free(int**)
**int malloc_i3(int**);void free(int***);

121 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 22:05:14.41
ip1→ip2→ip3→int型の値
ここだけ抜き取ってみると線形リストでことたりるんじゃね? と思ってしまう

122 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 22:16:38.57
>>113
よくわからんが、やりたい事は↓のようなことじゃないか?

int *pi, **ppi, ***pppi;

// int用領域確保
pi = malloc(sizeof(int));

// intの値設定
*pi = 2;

ppi = π
pppi = &ppi;

printf("%d\n", ***pppi);

123 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 22:18:14.92
>>122

ppi = π
って右辺は化けている。

化けないようにアンパサンドを全角で書くけど。
ppi = &pi;

です。

124 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 22:29:39.70
化けてないでござる

125 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 22:31:20.86
jane style と firefox じゃあ
モロにギリシャアルファベットのパイになってる


126 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 23:49:01.63
>>122

アンパ **;ってHTMLの特殊文字の書き方だったのを思い出して、
下記のように書き換えました。

int i, *pi, **ppi, ***pppi;

// int 値設定
i = 2;

// 各ポインタ設定
pi = &i;
ppi = &pi;
pppi = &ppi;

printf("%d\n", ***pppi);

127 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 00:03:37.86
構造体を使えば済む話だろ、どうせ。

128 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 00:59:15.58
エロイ人〜教えてー
mallocとかでメモリ確保するのに実メモリサイズ以上の
メモリ取ろうとしたい場合ってどうすりゃいいの?
例えば、PCに8GBの実メモリ積んでて、10GBのメモリを確保したい時とか。
仮想メモリとか、実メモリで説明してくれ。
ダメなら、どういうエラー処理すればいいのかもよろしく。

129 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:01:24.20
>>128
設計見直して、実メモリ内で収まるようにする。

130 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:02:20.31
メモリマップドファイル使え
以上。

131 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:11:18.41
>>130
kwsk

132 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:17:07.11
>>131
ggrks

133 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:17:39.17
>>131
環境依存だ
mmap でもググってろ

134 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 01:22:55.02
さんきゅー ぐぐってみるゎ!

135 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 02:08:13.69
標準関数と同じ結果を返す自作関数(strlenやstrcpy)を作成してみたのですが、
パフォーマンスが大きく異なるのですが一体何が原因なのでしょうか?
以下strlenの自作関数strlen2

int strlen2(char *Buff){
  int i=0;
  while(Buff[i]!='\0'){
    ++i;
  }
  return i;
}

136 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 02:09:36.35
最適化

137 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 02:25:26.40
>>136
具体的にどのようなコードにすればよいのでしょうか?

138 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 02:31:16.56
>>135
Cの標準ライブラリ関数は非常によく使われるので、
実装がチューニングしてある事も多い
内部でSSEのような拡張命令を使ってたりね

あと、コンパイラが標準ライブラリ関数を検出して、
インライン展開などの最適化をかけている事がある

139 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 03:00:50.03
>>128
PCがWindowsマシンをさしているのなら、実メモリサイズの制限は受けないよ。

140 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 05:08:07.80
>>113に答えて頂いた方々ありがとうございます。
線形リストをやりたいのではなく、ポインタを使ってアクロバットな事をやればポインタへの理解が深まるかなぁと思ったのですが・・・どうもトンチンカンな事をしていたようです。
ip1とip2のmallocは確かに要りませんでした。ip1 = &ip2;で良かったですね。

141 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 05:40:27.35
void *にキャストされたポインタは、元のポインタに戻すことができると決まっているけれど、
元の型がわからないから、そういうのを構造体に持たせて、線形リストにしてはどうかという提案だと思っていたよ。

いかにもめんどくさそうでしょ。でもポインタへの理解を深める目的だったらやってみてもいいんじゃないの。

142 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 09:01:49.23
>>137
repne scasb
あたりを使えば速くなると思うけど、最適化で既に使われるのかな?

143 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 09:36:36.95
論理演算で、指定の位のビットフラグが立っていれば削除するのってどうすればよいですか?
以下のことをif文をつかわずにやりたいです。

if(hoge & 3) {
hoge -= 3;
}


144 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 09:46:30.18
hoge &= ~3

145 :143:2012/04/05(木) 09:50:17.54
>>144
ありがとうございます!!

146 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 10:05:10.99
みんなwchar_tって使ってる?

147 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 11:15:56.63
うん

148 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 11:39:11.45
>>143
最早どうでもいいだろうけど>143のコード断片では例えばhogeが1のときに破綻するよ。

149 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 12:01:26.70
よかったです

150 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 12:14:42.66
1と2のorかもしれないじゃないか

151 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 12:44:48.81
>>150
もう一歩前へ

152 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 13:03:32.57
>>143
4の倍数じゃなかったら3を引くってことをやりたいわけじゃないのね

153 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 13:05:36.75
うん

154 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 15:27:58.64
3てのは2ビット立っているってのを理解してないに3カノッサ。

155 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 17:52:55.65
指定の位のビットフラグ、、、
hoge &= ~(1<<2)
なんじゃないのか?

156 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 18:02:43.28
日本語の説明と記述されたコードが不一致だから どうとでもとれるな

    hoge   1 2  3 4 5 6
>>143 結果 -2 -1 0 4 2 3
>>144 結果  0  0 0 4 4 4

157 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 18:38:17.55
#include <stdio.h>
#include <sys/types.h>

static u_int biton(u_int a, u_int bit)
{
return a | (1 << bit);
}

static u_int bitoff(u_int a, u_int bit)
{
return a & ~(1 << bit);
}

static int bitcmp(u_int a, u_int bit)
{
return (a & (1 << bit)) ? 1: 0;
}

main()
{
printf("%u\n", biton(biton(0, 0), 1));
printf("%u\n", bitoff(7, 2));
printf("%d %d %d\n", bitcmp(3, 0), bitcmp(3, 1), bitcmp(3, 2));
}

158 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 19:10:19.64
hogeの下位2ビットをクリアしたい、と解釈しましたので、>>144のようなコードになりました。
どういう結果になって欲しかったんだろう・・・?

159 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 20:13:18.71
3がどうこうif無しどうこうで少し前のレスに釣られてフィズバズ試してた俺はピンとキタ
こんなのしたかったんじゃないかな?
int main(){unsigned x5=32,x3=8;int x; char buf[256]; char const*p[]={buf,"Fizz","Buzz","FizzBazz"};
if ((x=atoi((gets(buf),buf)))<=0)return -1; x3>>=(x%4); x5>>=(x%6);
while(~0){sprintf(buf,"%d",x++); puts(p[(x3&1)+(x5&1)*2]); x3|=(x3<<3)&8;x3>>=1; x5|=(x5<<5)&32;x5>>=1; }
return 0; }

160 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 01:33:56.62
mallocでメモリを確保したさい、callocと同様にゼロクリアするにはどうするのでしょうか?
forで回してnilやNULLを代入してみたのですがダメでした。

161 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 01:36:51.77
面白い回答

      ↓

162 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 02:02:46.04
0クリアしたいなら最初からcalloc使えよ

163 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 02:07:12.67
calloc = clear and allocate

164 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 03:10:42.76
>>160
ゼロクリアしたいならゼロいれればいいのに。
allocと別タイミングでゼロクリアしたいんだという話ならmemsetで

165 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 03:19:30.04
Cで文脈なしにnilって言われてもなんのことやら

166 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 05:16:16.50
NUL、NULLと間違えたんじゃないかとスルーしていた

167 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 05:17:53.02
NULなんて定義はないと思うが。

168 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 05:50:21.50
NULとかnilって昔なんかでみた気がする。
VBだかCOBOLだかでなかったっけ?

169 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 05:56:03.34
>>160
int *p = malloc(100);
memset(p, 0, 100);

NILは使ったことあるな。
ただし、気象用語だったが…

170 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 06:15:33.65
NULはASCIIコードの0x00
CRが0x0d,LFが0x0aってのと同じ
nilは思いつくところでRuby,Lisp,Delphi,Luaで使われてる

171 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 06:19:05.88
C言語スレだっつーのに。
アホか。

172 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 06:47:23.02
なら、objcってことで。

173 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 07:13:23.08
なんだこのバカ

174 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 08:29:06.23
>>forで回してnilやNULLを代入してみたのですがダメでした。
こっちの方が問題だろ。なにが起きたんだよ。

175 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 08:55:41.40
http://www.kijineko.co.jp/tech/superstitions/initialization-by-memset.html
これでしょ

176 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 09:20:52.47
んなわけあるかボケ。

177 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 11:27:46.92
うん

178 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 11:53:08.77
でも、実際に>175が問題になる処理系はあんまりないんだよね。

179 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 12:20:19.05
パッキングによるmemcmpは普通にあるでしょ。

180 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 13:37:57.58
うん

181 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 15:05:42.27
>>178
問題になる処理系あげてみろ。
>>179
なぜ関係ない話を出す?

182 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 15:18:12.09
>>181
?

183 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 15:59:06.64
ソースコードを実行形式に変換するには、どうすればいいですか?

184 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 16:04:31.14
chmod +x ソースコード


185 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 16:21:34.92
>>184
ググったんですけど、よくわかりません・・・orz

186 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 16:28:00.84
>>185
環境は?
Linuxとかなら、「gcc ソースコード」でコンパイルされ、
a.outっていう実行形式が生成されるはずだが。

187 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 16:33:27.04
サイト主に質問したら、VC++ 2005 Express 用のプロジェクトファイルなので
VC++ 2005以降をインストールしろって言われました
自分の環境は、フリーのBccDevです


188 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 16:39:00.27
はい、解決。

189 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 17:20:25.32
BccDevを使ってコンパイルできないんですか?

190 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 17:25:46.19
まぁ手間はかかるかも知れんが、別にできんじゃね?

191 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 17:26:33.50
さぁ? できるかもしれないし、できないかもしれないし、できても動かないものかもしれないし

192 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 17:54:15.63
>>189
それを聞くようなレベルなら、VC++ 2005 Expressを入れたほうがいいよ。
金がかかるものでもないので。

193 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/06(金) 22:28:19.89
うん

194 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 05:04:18.87
こんなのを質問されるサイト主も大変だ。

195 : ◆QZaw55cn4c :2012/04/07(土) 10:02:14.95
>>94
めずらしいのですか?

196 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 13:54:37.48
うん

197 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 13:56:11.30
めずらしくないよ

198 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 14:20:02.83
そして結局解決できずにこんなところにまで書き込む……


199 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 21:45:18.34
で?

200 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/08(日) 23:00:48.25
プログラマになりたいんですがPGやSEの仕事はきついですか?

201 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/08(日) 23:06:08.24
千差万別なので一概には言えませんが概ねきついです。 つーかそんなのはマ板で訊け。

202 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 09:35:43.01
まずスレチなのに書き込んじゃう時点できついんじゃね?
少し見渡せばわかるものを

203 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 09:56:36.77
Cだと1日1000行くらいしか書けないな。

204 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 09:57:23.06
むしろ、Cは沢山かける言語だと思うけど。
1行あたりの仕事量が少ないから。

205 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 10:02:21.41
それかけるっていうよりかくだよな

206 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 10:22:34.84
Cだと1日がんばって1000行だったな。しかも1000行越えると覚えてらん
なくなって効率が落ちた。
C++を覚えたら1万行くらいまでは効率落ちなくなった。

207 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 10:29:17.61
確かにCだと一日1000行くらいが限界か…
Perlだと400行くらいで頭がパンクするわ。


208 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 10:34:11.30
1000行書けるってすげーな
頭使わなくていい部分でないとそんなスピード出せねー

209 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 10:41:20.36
コードの7割は異常処理だからな
頭使う分のコードはせいぜい300行だ

210 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 10:51:37.24
1000行もあれば大抵のことはできる。

211 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 11:17:31.24
1ファイルに1000書くの?

212 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 11:43:14.63
1000!

213 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 13:15:36.16
>>211
書くよ。

214 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 13:52:14.87
0から1000行書くだけなら簡単だろ
数万行に膨らんだ後でも改変が容易かどうかで評価されるべき

215 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 15:37:01.48
1000行で済むなんてのはコンパクトにまとめることに成功した時だな
手際が悪いとすぐ数倍に膨れあがる

216 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 17:42:58.87
1000行もあれば大抵のことはできる。

217 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 19:35:24.71
質問です。
C言語で三角関数を使わずに画面上に楕円(軸が斜めも含む)を書くプログラムを教えてください。
そもそも可能なのでしょうか?

218 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 19:37:38.47
>>217
可能です

219 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 19:39:46.74
>>217
何も考えないで書くならピクセルを端から端までなめつつ
2つの焦点からの距離の和が一定の範囲に入っている所を塗ればそれっぽくなるんじゃ
線の太さとかはきれいにならないと思うけど


220 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:10:46.71
>>217
http://fussy.web.fc2.com/algo/algo2-2.htm
こんなん。ブレゼンハムの応用かな

221 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:32:34.33
>>217
>>220使ってみた。
http://codepad.org/x2ebuTXq

222 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:35:02.33
>>221
軸を傾けようぜ

223 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:36:22.35
>>222
それはお前への宿題な。

224 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:38:56.97
傾けるってことが分かってないのに得意げに
例示されてもな

225 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:41:14.91
affine変換すればいいだけだろ。

226 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 20:50:41.76
>>224
宿題やっとけよ。

227 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 21:00:18.31
>>225
できるのならやってみろよ

228 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 21:20:46.73
ID強制になったら面白いだろうなぁ。

229 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 21:41:53.14
面白いだろうな
QZみたいな奴が2人以上いるのかどうか

230 :はちみつ餃子 ◆8X2XSCHEME :2012/04/09(月) 21:43:11.71
>>220
ミッチェナーのアルゴリズムという名前が付いている。

231 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 22:31:56.27
>>230
楕円描画アルゴリズムに?

232 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 22:47:06.44
ねぇ、なんでちょっとググればわかることを聞いちゃうの?

233 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 22:58:12.93
1.取り返しのつかないバカだから
2.他者との好意的なコミュニケーションを期待している
3.


234 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:03:42.78
はちみつが自信満々だから

235 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:10:59.98
ドヤ顔を見たいから

236 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:18:35.09
ともかくも
プログラミングで扱うなら
全ての描画方法に名前を付けなきゃいけない


237 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:43:29.07
また変なのが湧いたな。

238 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:46:26.82
桜が満開だからじゃないかな。

239 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:47:04.40
C11なんてのがあるんだ
知らんかった

240 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:47:23.75
桜の木の下に埋まっていればいいのに

241 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/09(月) 23:55:01.69
C++11じゃなくて?

242 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 00:15:50.09
>>241
C11 は有るよ。 まだ JIS に反映されてないから日本語の資料はあんまりない。
こないだ読んでて無名共用体とか C で今まで使えなかったことを知った。
たぶん C11 をそこそこちゃんと実装してるのは gcc くらいだと思う。

243 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 00:21:34.08
>>242
そうなんだ。
今度調べてみるわ。

244 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 01:14:16.11
いやいや、プログラマは数学強くないと駄目だって。
アルゴリズム考えるのに数学の力がなきゃ歯が立たないよ。
例えば、m×n行列とn×l行列の積を求めるアルゴリズム考えられるか?
もうお手上げだよ
ちなみにループが三重構造になるんだぜ

245 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 01:24:28.43
行列の積程度で 数学強くないと かよ
アホか


246 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 01:25:36.97
それは数学とか以前に、定義からゆっくり考えろよ……
結果のm*l行列について、第i行j列の値を出すには
i行k番目とj列k番目の積を足していくんだから、そりゃ三重ループになるよ

Strassenのアルゴリズムが思いつかないというなら、
それはそうかもしれない

247 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 01:35:21.18
そもそもそんなの使う仕事が無いけどな。
研究にしたところでライブラリ使えばいい話。

248 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 03:05:07.63
35歳、喫煙歴なし
あぐらをかいていると、関節が固まるような感じがして
だんだん痛くなり30分もすると立つことすらできなくなります。
足を投げ出して(これがすでに大変)数分も放置すれば
回復するのですが、これは何科にかかるべきでしょうか。

249 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 03:12:53.23
とりあえず偉そうに言う奴はまずcodepadに自分のコード書いてうpれよ
大言博ならその後にしろよ

250 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 03:14:46.33
お前は何もできないくせに偉そうだな。

251 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 03:42:32.15
>>248
たぶんただの老化だと思う

252 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 08:43:48.64
>>160に回答して頂いた方々ありがとうございます。
nilはObjective-Cの値です。スレチかなとも思いましたが、
オブジェクトをCの配列に入れるのに配列要素(オブジェクトのポインタ)がゼロクリアされていなければいけないらしく
そのために確保と同時にゼロクリアするcallocを使わないとダメと書いてあったのですが、malloc+アルファの処理でcallocと同じことが出来ないか?
と思い、その範囲(mallocを使ってcallocと同じ事をする)ならCの範疇だろうということで質問させて頂きました。
素直にcalloc使えということになるのでしょうか?

253 :はちみつ餃子 ◆8X2XSCHEME :2012/04/10(火) 09:14:13.17
>>252
ちょっと確認だが >>160 の「ダメでした」というのはオブジェクトを配列に入れることが出来なかったという意味か?
どういう挙動から出来ていないと判断した? 何かエラーメッセージでも出るのか、それとも seg fault になるのか?
>>174 も言っていることだが、何が起きているのかわからんので回答のしようがない。

C では特に代入にゼロクリアが必要とか無いし Objective-C の仕様でゼロクリアがどう関係してくるのかなんて知らんがな。
C スレ的には for 回しても memset でもゼロクリアはできるんでそこから先は素直に Objective-C のスレで訊けよ。

254 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 10:23:49.15
>>246
三重ループくらいなら直接for文書くが、4重以上の時はループ1個で済ませたりする。

255 :217:2012/04/10(火) 11:00:20.51
>>217へのご回答をいろいろして頂きありがとう御座います。
>>222さんが云われているように、軸を傾けるにはどう対処すればいいでしょうか?
なるべく整数だけの計算で済ませたいのですが、可能でしょうか?(sqrt()とか使わない条件です。)


256 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 12:48:37.43
>>252
> ゼロクリアされていなければいけないらしく
スレチだとおもうなら、このソースを出したほうがいいんじゃないの。

> そのために確保と同時にゼロクリアするcallocを使わないとダメ
なのになんでcalloc使わないの?反骨精神?

257 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 13:13:23.57
初心者が自分なりの工夫とか、10年早いんじゃね

258 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 13:14:51.79
ループでもmemsetでもゼロクリアできるじゃん。

259 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 15:30:21.52
C++難しすぎワロタ、キャストだけで4種とかないわ

260 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 15:45:10.98
スレ違いくそワロタ

261 :はちみつ餃子 ◆8X2XSCHEME :2012/04/10(火) 15:51:37.43
>>259
一種類にいくつもの意味を持たせている C の方がムズい。

262 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 16:21:49.31
ひとつだと割り算だけどふたつだとコメントとか
冷静に考えれば気が狂った仕様だよな・・・

263 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 16:46:50.69
割ってかけたら、かけて割るまで無視されるからな。

264 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 16:48:15.89
割ると掛けるでコメントってのも似たようなものだろ。


265 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 16:49:34.99
ポインタの -> が一番違和感感じたわ。
何?この矢印モドキ。

266 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 17:10:57.59
そんなところで引掛ってるからお前はずっと間抜けのまんまなんだ

267 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 17:16:39.27
266「他人を非難出来る俺ってカッコイイ!!」


268 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 17:28:17.33
このいかにも春っぽいテンションの人って一人でいいのかな。
一人があちこちのスレにいたりするのかな。
そんなことはなくて何人もいるからこそ春なのかな…

269 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 17:29:40.26
->を使わなければ(ry

270 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 17:35:17.51
>>267
そんなこと言ってるからお前は間抜けのままなんだよ。

271 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 17:51:31.28
深い意味なんてないただの決め事をあーだこーだ言ってもしょうがないだろ

272 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 18:28:10.25
コードの読みやすさはRubyが最強伝説
読みやすさならCではとうていかなうまい。
全てオブジェクトだから統一感もある
コメントも#で始まって読みやすいぞォ
識別子に?が使えるのも素晴らしい
if stack.empty? ・・・とか書ける訳だ
Cも見習って欲しいな

273 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 18:35:32.62
RubyとかLinuxインストールしたときに最初から入ってない時点で論外

274 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 18:59:13.53
だよね
Pythonのほうが読みやすいし

275 :はちみつ餃子 ◆8X2XSCHEME :2012/04/10(火) 19:46:18.52
それは Gauche ユーザの俺への挑戦か

276 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 20:36:42.42
>>259
なるほど、おまえさんには難しすぎるようだな
4種類じゃなく無数にあるぞ

277 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 20:38:58.51
>>272
断る!

278 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 21:14:36.14
>>272
メソッドにしか?は使えねーぞ

279 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 22:33:48.29
BYTE列から指定フォーマットで変数代入したいんだけど、どうやんの?
fscanf(fp, format, ...)みたいなこと簡単にできないかー

280 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 22:40:30.69
sscanf?

281 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 22:42:24.81
sscanf(const char *str, const char *format, ... );

282 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/10(火) 22:50:36.47
gj!
>>280 >>281

283 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 00:16:16.96
rubyはメソッドチェーンが最高にガンだからなぁ

284 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 01:47:38.03
おまえら時代はPHPだよ。
俺もHTMLの中に書くだけの簡単なスクリプト言語でしょ
なんて馬鹿にしてたんだけど、これがC言語とPerlのいいとこ取りで
機能的にも足りないところはほとんど無い感じ。
WEB言語なんてイメージとどまらずにC言語の標準入出力ライブラリーにPerlの文字列操作、
画面ライブラリーにHTMLを使えると思えば良いんじゃないのかな。
キーワードはHTML5、JavaScript、そしてPHP。
これが世界の最先端開発環境で間違い無しだよ

285 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 02:16:37.13
PHPは文字列なのか数値なのかいまいちはっきりしてないし
開発チームがセキュリティにかなり無関心というのも気にくわない

286 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 02:30:39.05
ンなこと言ったら
C言語は型にうるさすぎて
しかも肝心の型がデフォで少なすぎる
てな話になる

100文字の文字列と100個の数字
同じように見えるけど
100個の数字のほうはCじゃムリじゃん

287 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 03:00:18.39
なんだ100個の数字って。
ひょっとして100桁の数値といいたのか?

288 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 03:09:21.79
0000000000012322
こういう数字のカタマリは
どーなるんだよ
っちゅーことだよ


289 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 03:17:36.70
アホとは話にならんな、まったく。

290 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 04:02:46.75
PHPスレからでてくんな

291 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 04:04:54.37
>>288
PHPだと文字列なら文字列、数値なら数値
Cだと文字列なら文字配列、数値なら8進数の数値

292 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 04:25:52.01
なんだ、結局COBOLが最強だったのか

293 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 08:12:50.35
>>292
桁数で言えば実際強いよねCOBOL

294 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 08:13:40.69
もうアセンブラでいいよ。

295 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 16:24:18.64
だね

296 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 16:28:04.03
COBOLは帳票向けの言語だから、数字処理が得意ってだけ
科学技術計算はfortran使うって、昔は住み分けてたんだけどね

297 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 16:35:48.68
PHPerは何がしたかったんだろう…

298 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 17:02:57.39
CではなくWindows APIなのですが
数値の表示方法(エラー表示)はどうすればいいのですか?

Cだと
文字表示
printf("hello");

数値表示
int i = 10;
printf("%d", i);

Winodows APIだと
文字表示
MessageBox(NULL, "hello", NULL, MB_OK);

数値表示
???


299 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 17:04:17.84
>>298
sprintf で文字列に変換する

300 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 17:20:24.63
>>298
#include <stdio.h>
#include <stdlib.h>

301 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 17:35:47.37
ありがとうございます。できました

char c[100];
sprintf(c, "%d", 10);
MessageBox(NULL, c, NULL, MB_OK);
でも3行かかってしまいました

printf("%d", 10);のように
みなさん、どうやって一行で表示してますか?

302 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 17:38:04.76
可変長引数を受け取る関数を自作してその中で。

303 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 17:54:38.08
ありがとうございます。一行で表示することができました

304 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 18:20:30.15
いえいえ

305 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 18:22:56.61
OutputDebugStringというのもあるんだけどな

306 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/11(水) 19:00:11.59
>>301
デバッグ用なら AllocConsole と freopen しとけば
普通に printf や perror が使える

# もっとも俺はそんなことしない
# GUI はデバッグ情報が膨大すぎるので
# 絞り込みの工夫・・・というかデバッグ自体をきちんと設計する必要がある

307 :デフォルトの名無しさん:2012/04/11(水) 20:54:42.11
韓国 「韓流が大ブームと言っているのは広告代理店だけ。心配になってきた」
http://engawa.2ch.net/test/read.cgi/poverty/1334137541/


【韓国BBS】日本人は、中国よりも韓国が好きなのか??
スレ主が日中韓3カ国が互いに持つ感情について、自身の考えを述べた。
・「中国には今なお反日感情が根強く残っている。そして日本人たちは、いつか中国人が自分たちに
過去の恨みから報復すると考えているようだ。そのため、日本は中国より韓国を好むのでは」

スレ主の意見に対して、日本には嫌韓の存在があるとの反論が目立った。

・「最近は、本当に韓流なのか分からない。中国、日本で反韓気流がとても激しくなっています」

・「日本の嫌韓、またはネット右翼に一度会ってみたら?」

・「中国では幼い時から日本のアニメに接し、東京へのあこがれから親日派が多くなっていると聞いた。その反面、韓国を嫌いになる人々が多くなっている」

・「わが国は、緩衝地帯ですか?中国も日本も両方消えてしまえばいい」

  一方で、アジアの二大大国に挟まれた韓国の状況を危惧する声もある。

・「日本は経済大国、中国は浮上する新星。私たちは、それらの間で様子をうかがっているだけにすぎない。決してうれしい状況ではありません」
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0411&f=national_0411_020.shtml

308 :デフォルトの名無しさん:2012/04/11(水) 21:27:43.30
名無しがもとにもどった‥‥‥

309 :デフォルトの名無しさん:2012/04/12(木) 00:02:57.50
void my_strcat(char *dest, char *source){
while (*dest++);
while (*dest++ = *source++);
*dest = 0x00;
}

main(){
char fname[128];
char ext[] = ".csv";
strcpy(fname, "filename");
my_strcat(filename, ext);
printf("%s\n", filename);
}

実行結果がfilename.csvと出力されないのは、文字列リテラルは書き換えができないからでしょうか。

310 :はちみつ餃子 ◆8X2XSCHEME :2012/04/12(木) 00:10:29.79
>>309
> while (*dest++);
これが問題じゃね?
考えると *dest == '\0' であることがわかった後に ++ してるんだから、
この文が終わった時点で dest が指しているのはヌル終端の一個後ろだろ。
while (*dest) dest++;
に書き換えればいいと思うよ。
実際に動作させずに言ってるし酒飲んでるから間違ってたらごめんな。

311 :デフォルトの名無しさん:2012/04/12(木) 00:15:12.40
>>309
X while (*dest++);


312 :デフォルトの名無しさん:2012/04/12(木) 00:16:15.52
>>309
#include<stdio.h>

void my_strcat(char *dest, char *source)
{
while (*dest)dest++;
while ((*dest++ = *source++));
}

int main()
{
char fname[128];
char ext[] = ".csv";
my_strcat(fname, "filename");
my_strcat(fname, ext);
puts(fname);
return 0;
}

313 :デフォルトの名無しさん:2012/04/12(木) 00:16:37.91
略した書き方しないで普通にif文やら配列やら使って分かりやすく書けよ。結局自分でも分からなくなってるジャン

314 : ◆QZaw55cn4c :2012/04/12(木) 00:20:44.79
>>309
http://codepad.org/HM3Dtnpu

315 :デフォルトの名無しさん:2012/04/12(木) 00:30:10.13
>>313
なるほど >>312 には「自分は解ってません」て書いてあるな
werror 君ぽい滑稽な作風も痛い

316 :デフォルトの名無しさん:2012/04/12(木) 00:33:20.57
ま た チ ョ ン か。

317 :デフォルトの名無しさん:2012/04/12(木) 00:38:38.93
脳なんたらの?www

318 :デフォルトの名無しさん:2012/04/12(木) 00:53:07.41
皆様ありがとうございます。
はじめのwhile (*dest++);
これが間違っていたのですね。
>>313さんの仰るとおり、カッコつけた書き方はやめて、誰が読んでもわかるようなコーディングを身に着けていきたいと思います。
それにしても、Cはどうしてこう、複雑に書けるようになっているのでしょうか。
実行速度が求められるから?


319 :デフォルトの名無しさん:2012/04/12(木) 00:58:28.67
そもそもなんでstrcatを使わないんだ?
勉強ならstrcatのソースを読めばいいのに。

320 :デフォルトの名無しさん:2012/04/12(木) 00:59:20.63
>>318
それが当時の計算機に一番素直な形だったからだよ。

321 :デフォルトの名無しさん:2012/04/12(木) 01:13:13.49
自分に実力をつけて、自信を持ちたいというのがあります。
ライブラリにある、システムコールのない関数のアルゴリズムを考えることくらいはできた方がいいかなと思いました。
これまでにstrlen(),strcpy(),memset(),atoi()など、簡単に実装出来そうな関数は作ってみたのですが。
どうやったら実力がつくのかなあ。
ちょっとパスカルを勉強して、コーディング作法を身につけたりしたほうがいいのかなあ。
優秀なマになりたいのです(´Д` )

322 :デフォルトの名無しさん:2012/04/12(木) 01:14:46.98
だったらソースを読めって。
strcatのソース読んだのか?

323 :デフォルトの名無しさん:2012/04/12(木) 01:18:17.47
アセンブラで書かれてました。

324 :デフォルトの名無しさん:2012/04/12(木) 01:21:48.88
珍しく基本を押さえたことしてるのが...

325 :デフォルトの名無しさん:2012/04/12(木) 01:28:15.90
>>321
アルゴリズムの本買ってソートを順番にやっつけてこうぜ

326 :デフォルトの名無しさん:2012/04/12(木) 02:33:06.15
>>318
その複雑に見えるのは、難しそうに見えているだけじゃないかな。
惜しいところはいくつかあるけど、素直な方針でやれてるので、その調子でとしか。

327 :デフォルトの名無しさん:2012/04/12(木) 05:14:04.93
>>321
その意気やよし
自分でコードを書くこともいいが他人のコードを読むのもいいぞ
LinuxやFreeBSDなどの様々なコマンドのソースを読んでみるがよい

328 :デフォルトの名無しさん:2012/04/12(木) 07:50:41.78
>>321
http://toro.2ch.net/test/read.cgi/tech/1328276597/

329 :デフォルトの名無しさん:2012/04/12(木) 11:32:27.47
>>318
頼むから後置++ ごときで「複雑」とかやめてくれ
マシン自体がもともとそのようにできているのだから (例: PC, SP)

330 :デフォルトの名無しさん:2012/04/12(木) 11:37:38.35
>>329
そこじゃなくて評価順の理解がまだ不十分なだけだと思うよ。
あとその例はおかしいよな。たとえ前置インクリメントと読み替えたとしても、それである必要性がない

331 :デフォルトの名無しさん:2012/04/12(木) 11:41:20.51
>>330
空想論か? それとも RISC の PC が前置だとでも言いたいのか?
ポインタの更新が直列と思い込んでいるほど ++ が不可解に見えるだけだ

332 :デフォルトの名無しさん:2012/04/12(木) 11:54:58.79
一般的に、スタックポインタは前置デクリメントだけどね。
問題は、CPUがどうかじゃないよ。
C独特の手っ取り早く済ませるスタイルも書けないまでも読めないとね。

333 :デフォルトの名無しさん:2012/04/12(木) 12:01:32.60
>>332
順序が逆だ。書けなければ読めない。

334 : ◆QZaw55cn4c :2012/04/12(木) 12:31:38.90
>>331
モトローラの石は後置インクリメント、前置デクリメントじゃなかったっけ?

335 :デフォルトの名無しさん:2012/04/12(木) 12:36:33.62
>>332
書かないまでも読めるべき。書けるのは前提。

336 :デフォルトの名無しさん:2012/04/12(木) 12:57:25.44
char * straycat(char * restrict s, const char * restrict append) {
char *r = s;
char *a = "2回○ね〜っ";
for (; *s; ++s);
while (*s++ = *a++);
return r;
}

337 :デフォルトの名無しさん:2012/04/12(木) 13:05:08.66
>>334
たった1つしか知らないくせにモトローラのとかwww

338 :デフォルトの名無しさん:2012/04/12(木) 13:34:45.76
>>312
綺麗に書こうぜ。

void my_strcat(char *dest, char *source)
{
while (*dest) dest++;
for (;;) {
*dest = *source;
if (*dest == '\0')
break;
dest++;
source++
}
}

339 :デフォルトの名無しさん:2012/04/12(木) 13:38:31.94
きたねぇ。

340 :デフォルトの名無しさん:2012/04/12(木) 13:44:13.07
10のなんとか乗を表すのにeとEがありますが
今まで意識せずにeを使ってましたが別にどっちでもいいんですよね?

341 :デフォルトの名無しさん:2012/04/12(木) 13:49:24.33
いいんです。

342 :デフォルトの名無しさん:2012/04/12(木) 14:09:01.60
>>332
で、後置はどうなんだ? デクリメントか?
C 独特というのは間違いだぞ

>>337
もう一度聞く、空想論か?

343 :デフォルトの名無しさん:2012/04/12(木) 14:16:38.55
普通、pre-increment/post-decrementだな。

344 :デフォルトの名無しさん:2012/04/12(木) 14:33:17.95
>>318 K

345 :デフォルトの名無しさん:2012/04/12(木) 14:35:16.02
>>318
K&R本の付録A参照マニュアルのA13:文法(295ページからの6ページ)を
なにも見ずに空で書けるようになるまでは、K&R本を捨てない方がいいですよ
とだけ言っておく

346 :デフォルトの名無しさん:2012/04/12(木) 14:37:07.89
そんなもん書くやついねぇ。

347 :デフォルトの名無しさん:2012/04/12(木) 16:21:55.20
>>342
こいつ、何言ってんの?

348 :デフォルトの名無しさん:2012/04/12(木) 16:40:26.68
おい 今日からプログラムを始めようと思うんだ
それでC言語やればいいみたいってとこまでわかったんだ
そんでコンパイラってのがいるってのもわかったんだ
俺に最適なコンパイラを教えてくれ
勿論フリーで
俺のスペックは14歳の女子だ

349 :デフォルトの名無しさん:2012/04/12(木) 16:44:43.59
つくーる いじってろ。

350 :デフォルトの名無しさん:2012/04/12(木) 16:45:46.82
なんで俺がプログラムに目ざめたかといえばだ
クラスメイトの奴がアプリ開発しやがってなんかちょっと羽振りがよさそうだから羨ましくなったんだ
きいたら半年くらいあればアプリ開発までいけるって言ってたから
俺も頑張ってその金でカラコン買いたいんだ

351 :デフォルトの名無しさん:2012/04/12(木) 16:48:22.21
>>349
早く教えてくれよ

352 :デフォルトの名無しさん:2012/04/12(木) 16:50:06.47
カラコン買ってコスプレしてカシャカシャフラッシュを浴びまくりたいんだよ
そんでその写真が大物監督の目にとまって映画デビューするんだ
そのためにはコンパイラは避けては通れないんだ

353 :デフォルトの名無しさん:2012/04/12(木) 16:57:31.62
春だなぁ。
学校にはちゃんと行けよ。

354 :デフォルトの名無しさん:2012/04/12(木) 17:04:18.10
ケチなお前らが教えてくんねんから一応
Visual C++ 2010 Express
をインストール中だ
いいのか?これで?

355 :はちみつ餃子 ◆8X2XSCHEME :2012/04/12(木) 17:09:37.73
いいよ。

356 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 17:09:58.89
>>354 VC++ Express 2010は遅すぎ。2008の方がいい。
2008のDVDのISOイメージをダウンロードしてこれを使え:
http://www.slysoft.com/ja/virtual-clonedrive.html

357 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 17:11:32.83
で、どんなもん作りたいんだ?

358 :デフォルトの名無しさん:2012/04/12(木) 17:14:13.08
>>356
マジか さんクソ
今いれたの早速削除するわ
俺のOSはW7だけど大丈夫だよな?

>>357
バカ売れするアイフォンアプリを作りたいんだが
どんなんが売れるんだ?

359 :デフォルトの名無しさん:2012/04/12(木) 17:15:44.05
ちょっと図書館いってくるわ
閉まっちゃうから早くいかないと
C言語の本借りてくるわ
あとラノベと

360 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 17:18:53.16
>>358 iPhoneだったら、MacのiOSかその互換OSが必要だよ。
Visual C++じゃ無理。

361 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 17:21:55.58
ごめん、iOSじゃなくてMac OS Xだった

362 :デフォルトの名無しさん:2012/04/12(木) 17:21:57.14
>>358
最後の一行が致命傷だ
提案力ないやつはどんなに頑張っても決して報われない

363 :デフォルトの名無しさん:2012/04/12(木) 17:30:47.28
何が売れるかわかったら、さっさと引きこもる。

364 :はちみつ餃子 ◆8X2XSCHEME :2012/04/12(木) 17:34:46.47
技術的には割としょーもないもんでもウケてるのあるからな。
売れ筋を見極める目がないようではだめぽ。
つーか、そんなんわかるんだったら自分で作るわ。

365 :デフォルトの名無しさん:2012/04/12(木) 17:52:54.89
携帯のアプリ作りたいならJavaだろ

366 :デフォルトの名無しさん:2012/04/12(木) 17:53:29.40
>>360
マジで?
マックねえとアイフォンアプリ作れんの?
困るじゃねえか
>>362
いいの とりあえずCから学ぶの


367 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 17:59:12.43
WindowsでiPhoneアプリ開発は、ハードル高すぎ。iPhone持ってる?
http://blog.makotokw.com/2008/07/01/windowscygwiniphoneipod_touch/

368 :デフォルトの名無しさん:2012/04/12(木) 18:01:27.01
オブジェクティブCってので書けば出来ると思ってたんだが
違うのか?

369 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 18:05:35.25
>>367 どう考えても貴様様にはご無理でしょう。
iPhoneアプリを開発するには、iPhone SDKが必要。
iPhone SDKを動作させるには、Mac OS Xかその互換OSが必要。
初心者は、おとなしくMac買うんだな。

370 :デフォルトの名無しさん:2012/04/12(木) 18:05:59.51
>>367
アイフォンは持ってるよ 4S
じゃあマックを手に入れるのが先なのか
という事はその金はアンドロイドアプリの開発で稼ぐしかないのかな

371 :デフォルトの名無しさん:2012/04/12(木) 18:07:45.75
よく考えたらカラコンよりマックのほうが高いじゃねえか

372 :デフォルトの名無しさん:2012/04/12(木) 18:09:19.27
あれだな。
自宅業務内職のために、まずワープロ買わせる、みたいなビジネスモデルだな。


373 :デフォルトの名無しさん:2012/04/12(木) 18:13:06.16
詐欺にひっかかった気分だ
ラノベよも

374 :デフォルトの名無しさん:2012/04/12(木) 18:15:50.23
何をしたらいいかわからん奴におすすめは脱獄

ひたすら悪さばっかりするクソガキやってると
その頃の生活の知恵が後に糧となっている

375 :デフォルトの名無しさん:2012/04/12(木) 18:19:54.84
アプリ開発で金稼ぐ自信があるならウィンドウズ向けにアプリ作ってvectorあたりにシェアウェア登録して金儲けしてみろよと何でもしもしならうまくいくと思えるんだ

376 :デフォルトの名無しさん:2012/04/12(木) 18:22:47.29
一応もしもしのほうが金が取りやすいのは間違いない

377 :デフォルトの名無しさん:2012/04/12(木) 18:23:05.45
ちょっと調べてみたが
インテルCPU積んでるマックならいいのか?
スペックとかうんこでも

378 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 18:31:04.20
>>377 原理的には可能。多少いらつくと思うけどね。

379 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 18:34:21.08
http://www.atmarkit.co.jp/fsmart/articles/iphonesdk01/01.html

380 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 18:35:21.29
Mac OS XじゃなくてIntel Macだったようだね。あやふやな知識でごめん。

381 :デフォルトの名無しさん:2012/04/12(木) 18:37:07.34
そうか
ねだって買ってもらった7のミニノートがあるんだフロンティアの
1年以上使ってないからまずそれを売ろう
あとX箱のソフトとか売って
さらにアイフォン3Gの本体あるから売るわ
そんで中古のマックMINIとか買えばいいな

382 :デフォルトの名無しさん:2012/04/12(木) 18:37:44.23
>>380
いや 色々ありがとう
パンツのひとつもあげたいくらいだ

383 : ◆QZaw55cn4c :2012/04/12(木) 18:38:35.06
>>343
逆じゃない?例:スタックポインタ

384 :デフォルトの名無しさん:2012/04/12(木) 18:39:14.70
問題はミニノート以外は妹の持ち物という事だが
最近スカイリムを買ってもらって夢中だから気づかないだろう

385 :330:2012/04/12(木) 18:40:09.54
>>342
ええと、なんかがんばってたんだな。

たとえばSPが後置インクリメントである環境を用意するよね。
>>329は、マシン自体がそうなってるから、
それを複雑というのはやめてくれという主張だよね。

これがどれだけおかしな主張だったり例であるかがわからないの?

386 :片山博文MZボット ◆0lBZNi.Q7evd :2012/04/12(木) 18:40:19.55
Mac OS X 10.5.3以降必須って書いてあるぞ。

387 :デフォルトの名無しさん:2012/04/12(木) 18:49:36.22
AndroidならLinuxでJavaでタダじゃないの

388 :デフォルトの名無しさん:2012/04/12(木) 18:50:57.52
何! OSも新しいのがいるのか
2万以下で買えるかな・・・

389 :デフォルトの名無しさん:2012/04/12(木) 18:51:17.98
>>385
方言が強くてわからへん、何言うとんねん

390 :デフォルトの名無しさん:2012/04/12(木) 18:56:42.08
>>387
なんかさ アンドロイドのアプリは端末の使用がいっぱいあって開発がめんどくせえんだろ?
どっかの会社が開発コストかかりすぎて儲からんってアンドロイドからは撤退してたじゃん

391 :デフォルトの名無しさん:2012/04/12(木) 20:39:15.74
>>390
あれ、ネイティブコードをばりばりつかってるゲームだからじゃね?

392 :デフォルトの名無しさん:2012/04/12(木) 21:48:04.92
あえてネイティブコードで書かないと性能が出ないってのも困りモンだな

393 :デフォルトの名無しさん:2012/04/12(木) 23:22:15.10
あるshift-jisで書かれたテキストファイルを読み込み、
multibytetocharおよびwidechartomultibyteを使ってutf-8に変換して、
またファイルに書き出してます。

ですが、ファイルの末尾を書き出すと、その末尾の文字は正しく書き出されるのですが、
その後ろに数倍とぐらいゴミみたいなデータが書き込まれてしまいます。
これってどんな原因が考えられるでしょうか

394 :デフォルトの名無しさん:2012/04/12(木) 23:31:27.58
>>393
マニュアル嫁

395 :デフォルトの名無しさん:2012/04/12(木) 23:33:16.69
>>393
余分に書き出している。

396 :デフォルトの名無しさん:2012/04/12(木) 23:33:42.25
> あるshift-jis
shift-jisにはいくつかの種類があんのか?
それとも「shift-jisで書かれたとあるテキストファイル」なのか?
日本語くらいはしっかり使えアホ

> 数倍とぐらいゴミみたいなデータ
そのバイト列は具体的にどんなもんで
いつも同じなのか
それとも違うのか
そんくらい書けよバカ


397 :デフォルトの名無しさん:2012/04/12(木) 23:49:04.22
などと意味不明な供述をしており

398 :デフォルトの名無しさん:2012/04/13(金) 00:18:29.96
mallocで領域を確保するといいますが、確保しただけじゃ領域に書き込む事って不可能では?
実際 int *m; m=malloc〜〜だと
ポインで与えられるので、目的の領域に数値を書き込めなくない? と思うのですが。

399 :はちみつ餃子 ◆8X2XSCHEME :2012/04/13(金) 00:20:07.91
>>398
なんでやね〜ん。

そんなことより、ただの typo だとわかっていても「ポインで与えられる」という言葉が妙にツボった。

400 :デフォルトの名無しさん:2012/04/13(金) 00:27:05.52
>>398
確保された領域の記憶保護については未規定ということか
よく思いついたね、でっていう

401 :デフォルトの名無しさん:2012/04/13(金) 01:13:28.26
>>398
この辺のいきさつは規格に何か書いてあったような記憶がある
malloc()で確保した領域に書き込み出来る事が保証されてないのなら
多くのプログラムが書けなくなってしまうからな

402 :デフォルトの名無しさん:2012/04/13(金) 01:30:58.60
なんだここ
随分上から目線のやつがいるんだな
俺よりレベル下のくせによ
まあいい
明日また来るよ

403 :デフォルトの名無しさん:2012/04/13(金) 01:34:20.52
だってchar *t;の場合tの指し示す領域に書き込みするにはstrcpyとか必要でしょう?
int *tの場合は、ポインタ経由で同じ領域に書き込めるのは何故かなと。

404 :デフォルトの名無しさん:2012/04/13(金) 01:39:31.83
>>403
バカ発見

char *p; が既に領域確保済みなら

*p = 'a'; と書き込み可能

あんたが言ってるのは文字列のコピーであって、全く意味が異なる

405 :デフォルトの名無しさん:2012/04/13(金) 02:16:31.68
>>396
> shift-jisにはいくつかの種類があんのか?
まるで「種類なんてないだろ?なんでこう取れる書き方をした?」とでも言いたそうだけど。

406 :デフォルトの名無しさん:2012/04/13(金) 02:31:00.75
Cの参考書で、分かり易いものがあったら教えて貰えませんか?

407 :デフォルトの名無しさん:2012/04/13(金) 02:40:39.33
いまどのレベルなの

408 :デフォルトの名無しさん:2012/04/13(金) 02:49:04.32
C実践プログラミング

409 :デフォルトの名無しさん:2012/04/13(金) 13:54:19.18
3000バイトぐらい確保したバッファの末尾部分だけを見たいんですが、
デバッガでブレークポイントで停止しても最初の100バイトぐらいしか見れません
どうにかして末尾部分を見る方法ないっすか?

410 :デフォルトの名無しさん:2012/04/13(金) 14:08:25.68
>>409
デバッガの使い方は他のスレで。
つーか、あんたがどんなデバッガ使っているかわからんのに答えろとでも?

411 :デフォルトの名無しさん:2012/04/13(金) 14:29:08.14
気がきかねーな
デバッグつったらVCしかねーだろ

412 :デフォルトの名無しさん:2012/04/13(金) 14:55:10.94
正解を見つける前に工夫して何とかすることができない限り未来は暗い

413 :デフォルトの名無しさん:2012/04/13(金) 14:58:23.60
工夫する前に過去事例をチャッチャと見つけられない限り未来は暗い


414 :はちみつ餃子 ◆8X2XSCHEME :2012/04/13(金) 15:01:09.78
>>411
なんでやね〜ん

415 :デフォルトの名無しさん:2012/04/13(金) 15:01:37.08
つーかファイル出力するとか色々やり方はあるだろ

File* fp = fopen("dbg.txt", "wb");
for(int i=0; i<3000; i++)
  fputc(data[i], fp);
fclose(fp);

たった4行でできるのに馬鹿じゃね

416 :デフォルトの名無しさん:2012/04/13(金) 15:12:57.09
バーロー
ファイルに出力するときにもう解読不可能な文字になってるから、
文字コードを見たいんだよ

417 :デフォルトの名無しさん:2012/04/13(金) 15:15:38.41
バイナリエディタで開くかsprintfで16進に変換した跡で出力

418 :デフォルトの名無しさん:2012/04/13(金) 15:25:37.92
fprintf("%02X " , data[i] & 0xff);
こんな感じでいいんじゃね?

419 :デフォルトの名無しさん:2012/04/13(金) 16:24:16.48
>>416
じゃぁ、メモリみても意味なくね?

420 :デフォルトの名無しさん:2012/04/13(金) 16:43:30.70
デバッガ名乗って>409ができないとかあり得ない
VCならウォッチにptr+2900, 100とかデバッグ→ウィンドウ→メモリとか

421 :デフォルトの名無しさん:2012/04/13(金) 16:51:27.43
名乗るほうのデバッガじゃないと思うよ

422 :デフォルトの名無しさん:2012/04/13(金) 16:53:52.86
gdbなら全部見るオプションがあるね

423 :デフォルトの名無しさん:2012/04/13(金) 17:15:03.00
だから、スレ違いなんだから相手にすんなよ。

424 :デフォルトの名無しさん:2012/04/13(金) 17:35:51.40
一週間前に買ったC言語入門編の本を読み終えそうなんだけど
次、どの本読めばええの…

425 :デフォルトの名無しさん:2012/04/13(金) 17:50:53.20
バイナリエディタを忘れてた
ありがと

426 :デフォルトの名無しさん:2012/04/13(金) 18:05:27.15
>424
コンパイラのマニュアル
他人の書いたソース

427 :デフォルトの名無しさん:2012/04/13(金) 18:07:39.42
>>424
本屋でぺらぺらめくって、知ってることと知らないことが書いてある本を探す

428 :デフォルトの名無しさん:2012/04/13(金) 18:14:03.87
>424
PC9801プログラマーズバイブル


429 :デフォルトの名無しさん:2012/04/13(金) 18:28:56.86
C言語を256倍使う本


430 :デフォルトの名無しさん:2012/04/13(金) 18:31:53.31
堀紘一 著
「一番いいのはサラリーマン」
「サラリーマンなんか今すぐやめなさい」

431 :デフォルトの名無しさん:2012/04/13(金) 18:34:43.16
>>424
Effective C++

432 :デフォルトの名無しさん:2012/04/13(金) 18:35:24.54
>>431
いい本だがC++じゃん。

433 :406:2012/04/13(金) 19:34:26.44
>407-408
ありがとうございました。繰り返しとか条件分岐は分かる程度です。

434 :424:2012/04/13(金) 19:50:51.20
ふむ。サンクス
とりあえず本屋よってみる

435 :デフォルトの名無しさん:2012/04/13(金) 19:51:42.87
ゴミデータが書き出される理由がマジわかんね
誰か助けてくれよ

436 :はちみつ餃子 ◆8X2XSCHEME :2012/04/13(金) 19:54:09.12
>>435
再現可能なコードを提出すること。

437 :デフォルトの名無しさん:2012/04/13(金) 20:17:35.21
末端と思っている箇所が末端として伝わらないファイル書き出しをしてるとエスパー

変換の過程で得られるであろうバイト数(or 文字数)を利用して fwrite() してるのか
\0 終端を期待して fprintf() してるのか

438 :デフォルトの名無しさん:2012/04/13(金) 20:36:07.37
最後はstrlenを使ってバイト数を出して、
fwriteのバイナリモードで書き出してる。
fprintfって\0まで書き出してくれるっていう仕様だっけ?
やってみる。

439 :デフォルトの名無しさん:2012/04/13(金) 20:40:46.24
fprintfで書き出しても一緒だった
じゃあヌル文字の前に何故かゴミが入ってるってことか。
くそっ
UTF-8変換の過程で末尾に変なゴミが入る原因って何だよ!!
末尾以外の文字は完璧に変換できてるっていうのに!!

440 :デフォルトの名無しさん:2012/04/13(金) 20:40:54.21
pとqというリストをもらってpの後ろにqを連結するプログラムを作りたいのですがこれで実行するとpのリストしか表示されません
なぜこれではリストの連結ができないのでしょうか
リストを表示するプログラムはこの中にあるのと同じような条件でやっています。
実行結果は
p= 10 20 30,q= 40 50 というリストがあった場合
10 20 30 と出力されます
struct cell *append(struct cell *p, struct cell *q)
{
struct cell *k, *h;
h=(struct cell *)malloc(sizeof(struct cell));
k=(struct cell *)malloc(sizeof(struct cell));
k=p;
h=k;
while(p!=NULL)
{
printf("%d %d\n",p->value, k->value);
p=p->next;
k=k->next;
}
k=(struct cell *)malloc(sizeof(struct cell));
k=q;
while(q!=NULL)
{
printf("%d %d\n",q->value, k->value);
q=q->next;
k=k->next;
}
return(h);
}

441 :デフォルトの名無しさん:2012/04/13(金) 21:16:45.78

 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ 

 ★ 本日13日(金)よる10時より 《人権救済機関設置法案反対ツイッターデモ》開催 ★

  ツイッターしている人は、ハッシュタグに#人権救済機関設置法案反対#nhk24をつけて、この法案の
  危険性、抗議の法案などをいっせいに呟きましょう。
  ツイッターと連動している「NEWS WEB24」に取り上げてもらいましょう 。

 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ 


442 :デフォルトの名無しさん:2012/04/13(金) 21:38:14.71
>>440
リストpの後にqをつなげているように見えないけど?

443 :デフォルトの名無しさん:2012/04/13(金) 21:48:46.55
>>440
こんな感じ?
http://codepad.org/uvJYomYM

444 :デフォルトの名無しさん:2012/04/13(金) 22:00:27.03
お漏らししてるw

445 :デフォルトの名無しさん:2012/04/13(金) 22:24:20.27
そもそも引数で既存のリストふたつのアドレス受け取ってるのに、
なんであらたにmallocしてるのかがよくわからないんだけど
こんな感じじゃいかんの?
http://codepad.org/wRssci0L

446 :デフォルトの名無しさん:2012/04/13(金) 22:33:33.53
>>445
うん、それ

447 :デフォルトの名無しさん:2012/04/13(金) 22:42:46.73
>>439
Win32 の WideCharToMultiByte とか MutiByteToWhideChar 使ってるのか?

これの戻り値は終端の \0 を含まない文字数を返すから
文字列として(つまり \0 で終わることを保障するように)扱いたいのならば
必要なバッファの大きさは 戻り値+1 であり
変換前に領域を 0 で埋めるか バッファ[戻り値] = 0 と終端を付加しないと
その後の文字列処理(例えば strlen 等 \0 終端前提の関数)が成立しないぞ

448 : ◆QZaw55cn4c :2012/04/13(金) 23:10:35.52
>>447
win32api はそういうのが多いのかな?
*(DWORD *)buff = N;
n = SendMessage(hwndEdit, EM_GETLINE, i, (LPARAM)buff);
InnerBuff[n] = 0;
のセットに気がつくまで苦吟した。

449 :デフォルトの名無しさん:2012/04/13(金) 23:23:07.08
>>448
文字を操作するのはほとんどそういうの

所々「文字数」だったり「バイト数」だったりで
動的確保時に要注意の奴があったようななかったような

450 :デフォルトの名無しさん:2012/04/14(土) 01:12:41.72
>>447-449
それやってもダメだった。
なんかゴミが書き出されないときと書き出されるときがあるんだよな。
それぞれ読み込んでるファイルは違う。

コードはこんな感じ

void Write(char *buf,FILE *fp)
{
int nsize;

WCHAR *p16;
char *p8;

nsize= MultiByteToWideChar(CP_ACP,0,(LPCSTR)buf,-1,NULL,NULL);

p16 = new WCHAR[nsize+1];

memset(p16,0,sizeof(nsize+1));

MultiByteToWideChar(CP_ACP,0,(LPCSTR)buf,-1,(LPWSTR)p16,nsize);
nsize=WideCharToMultiByte(CP_UTF8,0,(LPCWSTR)p16,-1,NULL,0,NULL,NULL);
p8=new char[nsize+1];
memset(p8,0,nsize+1);
WideCharToMultiByte(CP_UTF8,0,(LPCWSTR)p16,-1,(LPSTR)p8,nsize,NULL,NULL);
nsize=strlen((char*)p8);
fwrite(p8,nsize,1,fp);
delete [] p16;
delete [] p8;
}

451 :デフォルトの名無しさん:2012/04/14(土) 01:16:44.89
sizeof(nsize+1)はただのnsize+1の間違い
もちろんこれでもだめ。

ゴミが出るときはあるファイルを読みこんで書き出すとゴミが発生する
でも発生しないときのファイルの末尾は、
ゴミが出るときのファイルと一緒で改行コードで終わらせてる

だから何が原因かマジでわからん

452 :デフォルトの名無しさん:2012/04/14(土) 01:18:24.49
24時間経ってようやくコードのお出ましかよ
一緒に出しときゃあ24時間も丸々ムダにせずにすんだのに


453 :デフォルトの名無しさん:2012/04/14(土) 05:31:48.13
> memset(p16,0,sizeof(nsize+1));
ここは
memset(p16,0,sizeof(WCHAR)*(nsize+1));
じゃないと全部ゼロクリアできないんじゃないの?

454 :451:2012/04/14(土) 07:33:59.96
>>453
うん
その通りだ
でもそこ修正してもダメだった。
この関数を呼び出す前の、テンプレートファイルを読み込む部分のコードは、
fp=fopen(TEMPLATE1,"rb");
fseek(fp,0,SEEK_END);
fgetpos(fp,&size);
fseek(fp,0,SEEK_SET);
basic = new char[(int)size];
memset(basic,0,(int)size);
fread(basic,(int)size,1,fp);
fclose(fp);

こんな感じでバッファを確保して、
このバッファをWrite関数に渡してるんだがおかしくないよね?

455 :451:2012/04/14(土) 07:41:26.13
ちなみにこのテンプレートファイルを読み込んで、
そのままUTF-8に変換せずに書き出してもゴミはなかった。
だからテンプレートファイルに最初からゴミが入ってるってことはないと思う。
よって、やっぱりさっきの変換関数のどこかがおかしいんだと思う

456 :デフォルトの名無しさん:2012/04/14(土) 09:46:17.85
一般的にファイルには、終端文字が記録されていないので、
basic = new char[(int)size+1];
memset(basic,0,(int)size+1);
だな。

457 :451:2012/04/14(土) 10:23:43.31
>>456
うおおおおおおおおおおおおおお!!
これだ!
やってみたらゴミ消えたよ!!
マジありがとう!!!
基本のファイル読み込みの時点で間違ってたとは情けない
ご迷惑をおかけしました


458 :デフォルトの名無しさん:2012/04/14(土) 10:30:26.34
ベターCということで以後よろしゅうお願いします。

459 :デフォルトの名無しさん:2012/04/14(土) 12:35:40.25
> 基本のファイル読み込みの時点で間違ってたとは情けない

ださっ


460 :デフォルトの名無しさん:2012/04/14(土) 12:47:54.24
>>459
答えられなかったお前もレベル低いよ

461 :デフォルトの名無しさん:2012/04/14(土) 12:51:31.43
>>456
basic = new char[size + 1];
basic[size] = 0;

462 :デフォルトの名無しさん:2012/04/14(土) 14:10:45.36
>>456
細かいことだけどサイズがわかってるんだからmemset使うのは無駄な処理だね
末尾に'/0'を入れてやるだけでいい

463 :デフォルトの名無しさん:2012/04/14(土) 20:19:23.89
細かいことだけどシングルクオートの中に2文字入れると効果は処理系定義だぞ
あんたどこの文化圏の人?

464 :デフォルトの名無しさん:2012/04/14(土) 20:32:37.35
>>463
え・・・ 何・・・?

465 :デフォルトの名無しさん:2012/04/14(土) 21:00:16.79
は?ヌル文字だろ?(威圧)

466 :デフォルトの名無しさん:2012/04/14(土) 21:27:11.53
かみわりだとニャル子さん、さんかれあ、ふぁて

このあたりが再生数多いな

467 :デフォルトの名無しさん:2012/04/14(土) 21:28:31.38
いきなりなんだ
とうとう狂ったか


468 :デフォルトの名無しさん:2012/04/14(土) 22:02:40.50
ダウンロード違法化も決まったと言うのに

469 :デフォルトの名無しさん:2012/04/14(土) 23:33:42.95
ふう

470 :デフォルトの名無しさん:2012/04/15(日) 00:20:38.70
むにゃむにゃ
おやすみなさい

471 :デフォルトの名無しさん:2012/04/15(日) 00:47:55.54
AB|C|D
AC|B|D
AD|B|C
A|BC|D
A|BD|C
A|B|CD
異なる4個を区別しない3箱に分けるにはスターリング数で上記のように6通りですがこれを列挙するアルゴリズムを考えてください。
出力は{{1100,0010,0001},{1010,0100,0001},{1001,0100,0010},{1000,0110,0001},{1000,0101,0010},{1000,0100,0011}}
のように2進数4ビット3つ組みで、箱に入れる物のビットが立つようになってると良いです。順番はどうでもいいです。
実際は個数・箱数は入力して可変にしたいです。
2箱ならビット演算余裕で思いついたんですけどね

472 :デフォルトの名無しさん:2012/04/15(日) 01:36:04.47
思いついたの晒せよアホ

473 :デフォルトの名無しさん:2012/04/15(日) 02:04:56.36
http://codepad.org/4AqJ2d5O
こんなのでいいの?

474 :デフォルトの名無しさん:2012/04/15(日) 02:30:24.01
いいよ

475 : ◆st4kIyCS7. :2012/04/15(日) 11:12:18.20
http://codepad.org/pP8WEFFy
玉の数=箱の数+1で良ければ!

476 : ◆st4kIyCS7. :2012/04/15(日) 12:04:04.60
箱の数+1=玉の数の場合、箱の数=m、玉の数=nとすると。
組み合わせの数は、n*(n−1)/2*1 例 4*3/2=6
箱の数+2=玉の数の場合、上にmを掛けた、m*n*(n−1)/2*1 例 3*4*3/2=3*6=18
箱の数+3=玉の数の場合、上にmを掛けた、m*m*n*(n−1)/2*1 例 3*3*4*3/2=3*3*6=54
箱の数+4=玉の数の場合、上にmを掛けた、m*m*m*n*(n−1)/2*1 例 3*3*3*4*3/2=3*3*3*6=162

477 :デフォルトの名無しさん:2012/04/15(日) 13:15:13.51
できたけど codepad って使ったことないんだよな
ちょっと待って

478 :デフォルトの名無しさん:2012/04/15(日) 13:28:09.34
int a[3][4] = {0}; ってできなかったっけ…
codepad でエラー取り切るのむずいもうちょっと待って

479 :デフォルトの名無しさん:2012/04/15(日) 13:34:28.92
http://codepad.org/jswzTyVE

これでいいのかな。コメントに日本語って使って大丈夫かな?
微妙に C++ 混ざってるけど勘弁して。max / min って C だとどこに入ってたっけ…

480 :はちみつ餃子 ◆8X2XSCHEME :2012/04/15(日) 13:44:12.45
>>479
意外なことだが C には無い。 (少なくとも C99 には)

索引の当該ページ
http://uploader.sakura.ne.jp/src/up94166.png

481 :C言語初心者:2012/04/15(日) 15:53:16.31
文字列str中の文字c1を文字c2に置きかえる関数substを作成したのですが、
出力させるとnullとなり、文字列が出力されません。
どこに間違えがあるのでしょうか。
http://codepad.org/fYMt6DlJ

482 :デフォルトの名無しさん:2012/04/15(日) 15:55:20.62
>>481
subst の型と戻り値

483 :C言語初心者:2012/04/15(日) 16:59:38.68
substをchar型にすればよいのですか??
あと戻り値はどのようにすればうまくいきますか??

484 :デフォルトの名無しさん:2012/04/15(日) 17:24:20.62
char* subst(char *str, char c1, char c2){
char *p = str;
while(*p){
if(*p == c1){
*p = c2;
}
p++;
}

return *str;
}

485 :はちみつ餃子 ◆8X2XSCHEME :2012/04/15(日) 17:26:30.56
>>484
まちがえてるぞ
return *str;
じゃなくて
return str;

486 : ◆QZaw55cn4c :2012/04/15(日) 17:27:56.02
>>481
http://codepad.org/hPDYENXk

>>484
×return *str;
*str って何?

487 :デフォルトの名無しさん:2012/04/15(日) 17:39:17.76
>>485
見落とした

488 :デフォルトの名無しさん:2012/04/15(日) 17:42:37.05
void でええやん無理しないで
(void* はやめれ)

489 :デフォルトの名無しさん:2012/04/15(日) 17:54:45.64
>>479
3の4乗通り全部試してるのか、結構無駄があるな
今日はこれをビット演算に改造して使わしてもらおう
もっと速いの考えた人待ってるよ
ちなみに実行は12玉・3箱くらいが主に

490 :デフォルトの名無しさん:2012/04/15(日) 18:13:55.07
3箱なら、一箱+(一箱+一箱)って考えれば再帰的に解けそうな気がするけどなー

491 :デフォルトの名無しさん:2012/04/15(日) 18:15:39.81
>>478
全部0で初期化される事が規格で保証されているよ
でも、警告出るコンパイラもあるのでmemsetした方が鬱陶しくないと思う

492 :デフォルトの名無しさん:2012/04/15(日) 18:33:31.00
>>491
そのコンパイラを窓から投げ捨てるかオプションで黙らせるべき
memset なんか、それこそ保証ないんだから

493 :デフォルトの名無しさん:2012/04/15(日) 18:45:39.85
>>478 >>491
警告を出さないためにはこうじゃないかな。
int a[3][4] = {{0}};

>>492
投げ出す前に正しく書くべきじゃないかな。

494 :デフォルトの名無しさん:2012/04/15(日) 18:49:16.21
>>493
「正しい」の定義を聞こうか

495 :デフォルトの名無しさん:2012/04/15(日) 20:22:21.79
>>493
ていうか、{}だけでいいだろ。

「最初の要素を0で、それ以降を0で初期化」
って冗長な表現だと思わないか?

496 :デフォルトの名無しさん:2012/04/15(日) 20:23:05.20
>>495
それも仕様から外れてる

497 :デフォルトの名無しさん:2012/04/15(日) 20:35:52.45
>>496
別にはずれてないだろ・・・

498 :デフォルトの名無しさん:2012/04/15(日) 21:18:11.16
>>497
C++とは違うのだよ


499 :479:2012/04/15(日) 21:49:08.63
>>489
いやそんなに試してないよ

確かに、途中で 「入れてないアイテム数 == 空の箱数」 になれば、後は順番に入れていく1通りが確定するから、
その処理を入れれば、試行じゃなくて純粋に列挙できる…と思う

500 :479:2012/04/15(日) 21:51:12.76
>>489
補足:
現に、1つめのアイテムは、1つめの箱にしか入れてない
また、2つめのアイテムは、1つめまたは2つめの箱にしか入れてない

501 :デフォルトの名無しさん:2012/04/15(日) 23:27:52.21
UTF-8の文字コードで書かれたファイるがあるんですが、
これをfgetsで読み込んだ場合ちゃんと一行ごとに読んでくれるんですか?

502 :デフォルトの名無しさん:2012/04/15(日) 23:30:24.75
うん。

503 :デフォルトの名無しさん:2012/04/15(日) 23:31:03.07
試しゃーいいじゃねーかよ
アホ

504 :デフォルトの名無しさん:2012/04/15(日) 23:44:12.03
strstrで比較するときはどうなんですか?
これも正しく比較されますか?

505 :デフォルトの名無しさん:2012/04/15(日) 23:58:26.81
試しゃーいいじゃねーかよ
アホ

506 :デフォルトの名無しさん:2012/04/15(日) 23:59:07.11
今PC壊れてるんでお願いします

507 :デフォルトの名無しさん:2012/04/16(月) 00:00:02.19
直しゃーいいじゃねーかよ
アホ

508 :デフォルトの名無しさん:2012/04/16(月) 00:16:36.71
clってexec-charset相当のオプションはないのかね?

509 :デフォルトの名無しさん:2012/04/16(月) 00:18:23.18
探しゃーいいじゃねーかよ
アホ

こうかな。

510 :デフォルトの名無しさん:2012/04/16(月) 01:04:17.41
まずはそのクソオプションそのまま試したのかよ
アホ

511 :デフォルトの名無しさん:2012/04/16(月) 01:07:33.10
そういえばバカバカ言うツンデレはたくさんいるけど
アホアホ言うツンデレって見たこと無いな・・・
大阪系のツンデレになるのかな

512 :デフォルトの名無しさん:2012/04/16(月) 01:09:55.58
>>511
初代いいんちょの名をほしいままにする東鳩のいいんちょを忘れるとは

513 :デフォルトの名無しさん:2012/04/16(月) 18:21:24.30
>>511
うん


514 :デフォルトの名無しさん:2012/04/16(月) 18:23:11.91
アセンプリでpushって命令あるけど、あれどういう意味?
moveは移動ってわかるんだけど、pushも似たようなんじゃないのですか?
調べてもスタックがどうたらよくわからない。

515 :デフォルトの名無しさん:2012/04/16(月) 18:26:42.00
>>514
なにもかも分かってない

516 :デフォルトの名無しさん:2012/04/16(月) 18:27:13.17
牧草を筒の中に入れて固めていた頃があったんだよ
で、固めることをpushって入ってたんだよねー
アメリカの伝統的牧畜の影響

517 :デフォルトの名無しさん:2012/04/16(月) 18:28:01.48
配列だと文字をstrcpyできないですかね?

char a[3]
a[0]='s';
a[1]='t';
a[2]='u';

char b[2];
b[0]='r';
b[2]='d';

この場合、strcpy(a,b);はエラーですか?


518 :デフォルトの名無しさん:2012/04/16(月) 18:29:48.84
pushはメモリに数値を書き込むって意味じゃなかったっけ?
それ以外考えられんのだが。

push abc 3

abc番地に3を書き込む。
違うっけ?

519 :デフォルトの名無しさん:2012/04/16(月) 18:29:50.36
>>517
運がよければ動く
確実にするには文字列の終端が必要

520 :デフォルトの名無しさん:2012/04/16(月) 18:31:53.75
新卒入社の研修かな

521 :デフォルトの名無しさん:2012/04/16(月) 18:33:39.56
>>519

char *s;
char *t;

s="good";
t="bad"

strcpy(s,t);だとOK?

配列型文字列はstrcpyダメで、ポインタ型文字列はstrcpyOK?

522 :デフォルトの名無しさん:2012/04/16(月) 18:34:03.04
内容も間違ってるし、書き込むスレも間違ってる

523 :デフォルトの名無しさん:2012/04/16(月) 18:36:01.18
>>521
さらにNG度UP!

524 :デフォルトの名無しさん:2012/04/16(月) 18:36:31.96
utf-8の文字コードで書かれたファイルを読んだ場合、strstrで比較してもちゃんとひっかかりますか?

525 :デフォルトの名無しさん:2012/04/16(月) 18:43:13.25
うん。

526 :デフォルトの名無しさん:2012/04/16(月) 18:45:12.26
>>521
アウト

>>524
探すものがasciiのみであるならば。

527 :デフォルトの名無しさん:2012/04/16(月) 18:49:15.59
ワロタwwstrcpy使えないじゃんww

>>521もダメで、>>517もダメなら何が正しいんだよ。

文字列はポインタか配列でしか表現できんだろうに

528 :デフォルトの名無しさん:2012/04/16(月) 18:50:28.97
間違えたwww

strcpyじゃなくて

strcmpです。

よろしくお願いします。

529 :デフォルトの名無しさん:2012/04/16(月) 19:07:04.22
>>526
> 探すものがasciiのみであるならば。
ascii範囲外でも問題ないよ

530 :デフォルトの名無しさん:2012/04/16(月) 19:08:49.27
>>526
>>529

ありがとうございます。
ascii範囲外でも問題ないってどういう仕組みなんでしょうか?
勝手に文字コード判断して比較してくれてるんですか?

531 :デフォルトの名無しさん:2012/04/16(月) 19:17:24.72
単にバイナリで比較してるだけ。

532 :デフォルトの名無しさん:2012/04/16(月) 19:19:45.77
別に文字コード判断する必要ないだろ

533 :デフォルトの名無しさん:2012/04/16(月) 19:26:28.79
やっぱそういうことか
おk
サンキュ

534 :デフォルトの名無しさん:2012/04/16(月) 19:54:34.48
>>528
天才

535 :デフォルトの名無しさん:2012/04/16(月) 19:56:21.89
>>527=>>517
>>517はまず文字列じゃないのでアウト。
>>521はリテラルに対する書き換えなのでアウト。

536 :526:2012/04/16(月) 19:59:15.10
>>530
双方がちゃんとutf-8なら問題ないです。ごめんなさい。

537 :デフォルトの名無しさん:2012/04/16(月) 21:51:41.50
#include <stdio.h>

int main() {
int i;
double a;

a=0;
for(i=0; i<10; i++) {
a = a + 0.1;
if(a == 0.3)
break;
}
printf("a =%6.3f\n", a);
return 0;
}

このプログラムでa=1.000ってなっちゃうんだけどなんでだろ
a=0.3じゃないの?

538 :デフォルトの名無しさん:2012/04/16(月) 21:56:12.59
a == 0.3が成立しないから。
なぜ成立ししないかは、浮動小数点数 誤差あたりでぐぐってしらべれ

539 :デフォルトの名無しさん:2012/04/16(月) 22:22:49.88
>>537
初めてCを習ったとき、それ注意されたわ
懐かしい。

540 :デフォルトの名無しさん:2012/04/16(月) 22:32:44.34
if ( a >= 0.3 )
break;

にでもしとけ


541 :デフォルトの名無しさん:2012/04/16(月) 22:55:01.33
書式指定フォーマットの%Xで32ビット分しか表示されないのは仕様ですか?
※VS2010

542 :デフォルトの名無しさん:2012/04/16(月) 22:58:56.93
仕様です
もっとまともなC99対応コンパイラ使って下さい

543 :デフォルトの名無しさん:2012/04/16(月) 22:59:28.56
マニュアル読めば書いてあるだろうが

544 :デフォルトの名無しさん:2012/04/16(月) 23:03:51.89
色つきの文字って配列に入れたりできないのかな?
好きなときに保存した色を簡単にだしたいんだけどどうすればいいんだろう

545 :デフォルトの名無しさん:2012/04/16(月) 23:06:11.14
>>544
タグ付けとパーサ作ればおk

546 :デフォルトの名無しさん:2012/04/16(月) 23:37:41.80
パーサってなんだろ
色々調べてみたけどちんぷんかんぷんだから今は諦めます
ありがとう

547 :デフォルトの名無しさん:2012/04/16(月) 23:51:30.35
色つきの文字を表現する構造体を作って配列にすれば?
文字列としても使いたいなら、文字列と色情報配列を持つ構造体にするとか。

548 :デフォルトの名無しさん:2012/04/17(火) 01:14:18.11
cursesお勧め

549 :デフォルトの名無しさん:2012/04/17(火) 01:33:07.38
printf( "\033[2J" ); /* これまでの画面を消去します。*/
printf( "\033[043m ABC\t" ); /* 背景色黄色で ABC と表示し、タブを表示します。*/
printf( "\033[034m DEG\t" ); /* 青色で DEF と表示し、タブを表示します。*/
printf( "\033[031m GHI\n\n" ); /* 赤色で GHI と表示し、2回改行します。*/

550 :デフォルトの名無しさん:2012/04/17(火) 19:12:19.74
動的に確保したい構造体配列(hoge)のメンバに動的に確保したい構造体配列(sub)を持ったもの
を考えており、main関数で宣言自体をして確保、解放自体は別の関数でするようなものを作ってみたのですが
どうもしっくり来ないんですがもっといい方法はあるのでしょうか。

http://codepad.org/D6VOZ2X6

551 :デフォルトの名無しさん:2012/04/17(火) 19:17:12.94
>>550 の方法がいいと思うよ

552 :デフォルトの名無しさん:2012/04/17(火) 19:42:18.40
>>550
関数名をalloc_hogeとfree_hogeとかに変えたらいいんじゃないだろうか

553 :デフォルトの名無しさん:2012/04/17(火) 19:50:17.03
どのあたりがしっくりこないんだろ。
確保と解放が完全な対になってないあたり?

554 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 20:14:05.67
>>550
C はそういうものじゃね?
C++ ならもうちょっと「しっくりくる」ように書けそうに思うけど。

555 :550:2012/04/17(火) 20:20:47.88
とりあえずセグメント違反を繰り返しながらここにたどり着いたのでしっくりこない点は

free関数の引数が*hogでいいが確保では**hogにしないといけないのか
確保関数でアドレスの先頭を表すのにhog[0]を使わないといけないのか

です。

556 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 20:30:51.83
>>555
一般的な感覚だと
struct hoge* initial_main(void)
{
struct hoge* hog = malloc(sizeof(struct hoge));
hog->A = malloc(sizeof(struct sub)*(2));
hog->B = malloc(sizeof(struct sub)*(4));
hog->C = malloc(sizeof(struct sub)*(8));
hog->C[5].a = 100;
return hog;
}

と定義しといて、
呼出す側は

hog=initial_main();

じゃないかなぁ。

557 :デフォルトの名無しさん:2012/04/17(火) 20:31:15.83
>>555
こんな感じとか。
名前は、initial_mainじゃなくて create_hogeとかalloc_hogeにしたほうがいいと思うけど

struct hoge* initial_main()
{
struct hoge* hog;
hog = malloc(sizeof(struct hoge));
if(hog){
hog->A = hog->B = hog->C = 0;
hog->A = malloc(sizeof(struct sub)*(2));
hog->B = malloc(sizeof(struct sub)*(4));
hog->C = malloc(sizeof(struct sub)*(8));
if(hog->C){
hog->C[5].a = 100;
}
}
return hog;
}

558 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 20:34:55.46
>>557
確かに initial って名前だと確保とは別っていう印象を受けるね。
C++ から用語を取って construct でもいいかも。

559 :デフォルトの名無しさん:2012/04/17(火) 20:37:32.06
基本どおりに 〜〜alloc と 〜〜free でいいだろ

560 :デフォルトの名無しさん:2012/04/17(火) 20:43:32.00
>>556,557
ありがとうございます。名前はわかりやすくしときます。

struct hoge* initial_main(void){ }
ような使い方を知りませんでした。
こっちのほうがぱっと見わかりやすいです。

561 :デフォルトの名無しさん:2012/04/17(火) 21:05:40.25
>>560
mallocとかと変わらんよ。

562 :デフォルトの名無しさん:2012/04/17(火) 21:50:02.50
「malloc_なんたら」を C++ では作りやすくしてくれてるだけ
construct はやだな、extern "C" したときのうんこ臭が耐えがたい

563 :デフォルトの名無しさん:2012/04/17(火) 21:52:09.11
なんでC++?

564 :デフォルトの名無しさん:2012/04/17(火) 22:12:25.72
あ、隔離する気ならノープロブレム

565 :デフォルトの名無しさん:2012/04/17(火) 22:50:14.48
>>557
> create_hogeとかalloc_hogeにしたほうがいいと思うけど
create,alloc,init(ialize),newなどは好みだけど
hoge_createやhoge_allocのほうがいいと思うな。

566 :デフォルトの名無しさん:2012/04/17(火) 22:52:23.06
create_hoge = hogeを作れ
hoge_create = hogeが作る

567 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 22:59:51.50
合成語として考えるなら hogecreate でもおかしな順序ではないよ。
伝統的には create_hoge の方が主流に思えるのは確かだけど…。

568 :デフォルトの名無しさん:2012/04/17(火) 23:01:43.59
めんどくせぇからnewつかえるのに移れよ

569 :デフォルトの名無しさん:2012/04/17(火) 23:04:43.68
namespace 的な考え方すりゃ接頭辞を共通にしたほうが分かりやすい

570 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 23:06:34.62
>>565
俺の好みでは確保したメモリの構造を見せる場合には alloc と free で
ハンドルとして扱ってもらう場合には create と close って使い分けな感じ。

571 :デフォルトの名無しさん:2012/04/17(火) 23:06:39.12
うん

572 :デフォルトの名無しさん:2012/04/17(火) 23:08:09.28
>>567
gtk_init
Py_Initialize
lua_open
SDL_Init

573 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 23:10:48.08
>>572
そのあたりは API としての性格をもったものだから区別が必要じゃないかなぁ。

574 :デフォルトの名無しさん:2012/04/17(火) 23:14:23.02
allocateとinitializeをallocate関数でやるのはどうかと思うの。

575 :デフォルトの名無しさん:2012/04/17(火) 23:27:45.93
>>573
じゃぁ
組み込みではなく生成したインターフェースが
NAME_newな形になるCSTLはどう?

create_hoge
より
hoge_create
のほうが扱いやすいと思うよ
補完しやすいし。

576 :デフォルトの名無しさん:2012/04/17(火) 23:32:59.54
C++じゃ
 オブジェクト.メソッド
なんだが、お前らオブジェクト指向言語使わんの?

577 :デフォルトの名無しさん:2012/04/17(火) 23:37:05.61
どーせ ファクトリ.create_hoge vs ファクトリ.hoge_create になるよ

578 :デフォルトの名無しさん:2012/04/17(火) 23:37:50.58
>>576
ンなの聞いてねーよks
スレタイすらも読めないのかよ池沼
ヒャッペン音読して出直せバカ

579 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 23:41:04.09
>>575
マクロを使って生成しているとは言え、それも CSTL というライブラリが提供している API っていう気もする。
ただ、いずれにせよ上述の「主流に思える」というのはそうでもないかな、という気がしてきた。

580 :はちみつ餃子 ◆8X2XSCHEME :2012/04/17(火) 23:58:47.15
>>575
補完しやすいというのは疑問があるぞ。 構造体とそれに対する操作の組を名前にするわけだろ。
だとすると hoge_ まで入力したときの候補は create_ まで入力した候補より分量が多くなる。
補完候補は少ない方が良いと考えると create_hoge の方が補完しやすいと言えないか?

581 :デフォルトの名無しさん:2012/04/18(水) 00:19:00.97
個人的にgimpソースハックしたときに、関数名の冗長さには苦労させられたわ
GtkWidget *scale;
scale = gimp_prop_spin_scale_new (config, "brush-size", _("Size"), 0.01, 1.0, 2);
gimp_spin_scale_set_scale_limits (GIMP_SPIN_SCALE (scale), 1.0, 1000.0);
gimp_spin_scale_set_log_mode (GIMP_SPIN_SCALE (scale), TRUE);

終始こんな調子の長い名前で変数や関数が羅列されてる。
処理的には大して高度なことしてないのに、パッチ当てるべき箇所を探すだけでも、妙に疲れる。

経験的実感として、全体が長い名前ばかりなコードは、明らかによみずらい。妙な疲労感を伴う気がするわ。

関数は gmp_set_scale() や gmp_new_scale() 程度の10文字程度の長さが最も読みやすいと経験的に感じる。これ以上長いと短期記憶を余計に消費して疲れるし、これ以上短いと意味が不明で疲れる。

582 :デフォルトの名無しさん:2012/04/18(水) 01:10:33.43
そしてその命名ルールを守ってもGIMPほどのモノは作れないという不思議w


583 :デフォルトの名無しさん:2012/04/18(水) 01:32:30.77
>>579
単なるモジュールプレフィクスだよ。
関数名が被らんようにと言うのが主目的で、操作対象を表すわけじゃない。
せいぜいどのモジュールに属する関数かという程度。

モジュール外部と結合する意味でAPI的と言えるだろうけど、
CSTLが提供している云々は関係ないな。
外部結合だから出力の命名規則がそうなってるだけだ。

なんで、意味合いが違うのは同意なんだけど、Cの世界じゃ
モジュールに分けたらプレフィクス付ける方が主流だと思うよ。

584 :デフォルトの名無しさん:2012/04/18(水) 02:07:17.52
>>580
ない。

585 :はちみつ餃子 ◆8X2XSCHEME :2012/04/18(水) 13:09:12.05
>>583
俺は API 的というのを広い範囲で、外に公開する名前くらいの意味で言ってた。
言葉の使い方を除けばだいたい認識は一致していると思う。

586 :デフォルトの名無しさん:2012/04/18(水) 20:03:47.61
>>582
gimpって規模は異常に巨大だけど、徹底的にコードを単純な書式にして、モジュール化も徹底してるおかげで
局所単位でいぢれるし、局所単位で見ればそれほど超高度なことをしてる箇所は少ないので、意外と改造できるのでハック初心者の練習におすすめ。

とにかくコード書式が、これでもかというほど単純なように徹底されてる。
関数中で使う変数の宣言は、必ず関数の先頭位置で行うようになってるし、
GtkWidget *scale;
scale = gimp_prop_spin_scale_new ();

GtkWidget *scale = gimp_prop_spin_scale_new ();
と書くことすらしない。徹底的に一行の情報量を減らすというアプローチで書かれてる。
一見すると過剰な程にコードが簡易化されてるが、そのおかげで、所見でもある程度読める。ただし全体の行数は膨大。

587 : ◆QZaw55cn4c :2012/04/18(水) 21:38:55.50
>>586
>GtkWidget *scale;
>scale = gimp_prop_spin_scale_new ();
>を
>GtkWidget *scale = gimp_prop_spin_scale_new ();
>と書くことすらしない。

auto変数の初期化すら嫌いな -pedantic な人たちなのでしょう、多分。

588 :デフォルトの名無しさん:2012/04/18(水) 21:46:14.13
GTK自体の仕様がよくわからん…

589 :デフォルトの名無しさん:2012/04/18(水) 21:49:24.30
っていうか
関数スコープの途中で変数宣言できるようになったのってC++が出てきてからじゃね?

1行の情報量を減らすってのはなるほどなぁとは思う。


590 :デフォルトの名無しさん:2012/04/18(水) 22:12:00.57
関数スコープとか・・・またまた香ばしいw

591 :デフォルトの名無しさん:2012/04/18(水) 22:13:38.56
ブロックの先頭以外、でいいのにね

592 :デフォルトの名無しさん:2012/04/18(水) 22:24:29.30
関数スコープは荒れる


593 :デフォルトの名無しさん:2012/04/18(水) 22:36:08.96
うん

594 :デフォルトの名無しさん:2012/04/18(水) 23:32:26.55
関数スコープの宿命だな

595 :デフォルトの名無しさん:2012/04/18(水) 23:33:08.58
関数スコープの宿命はよ


596 :デフォルトの名無しさん:2012/04/19(木) 00:02:06.72
言うなら PG の、C 使いの宿命を言ってみな

597 :デフォルトの名無しさん:2012/04/19(木) 00:45:13.12
お前が関数ポインタの宿命を言ったらな。

598 :デフォルトの名無しさん:2012/04/19(木) 00:51:23.99
C++のソースがCのソースに変換されたのを見て、ショックを受けた、口

599 :デフォルトの名無しさん:2012/04/19(木) 00:54:48.71
C++のtry-catch構文って、Cのソースに変換すると、どんな記述になりますか?

600 :589:2012/04/19(木) 00:57:41.83
catch, finallyブロックのアドレスを順番にスタックに積んでいって
割り込みハンドラーが呼ばれたら順番にそれを呼べば良いんじゃね?

601 :デフォルトの名無しさん:2012/04/19(木) 00:58:47.42
無理じゃね

602 : ◆QZaw55cn4c :2012/04/19(木) 01:02:45.86
>>599
http://www.nurs.or.jp/~sug/soft/super/longjmp.htm

603 :デフォルトの名無しさん:2012/04/19(木) 01:04:11.92
関数ポインタならできるんじゃね?


604 :デフォルトの名無しさん:2012/04/19(木) 01:04:55.24
>>600 >>602 情報どうもです、結構複雑になるんですね

605 :デフォルトの名無しさん:2012/04/19(木) 01:30:15.28
前処理におけるエラーについての質問です。

#if (TESTDEF == 1)
aaa();
#else
bbb();
#endif

上の例では TESTDEF が 1 だったら、aaa() を実行して、
そうでない値のときには bbb() を実行してくれることを期待して記述し、そのように動作します。

しかし TESTDEF が未定義の場合にも bbb(); が実行されてしまいました。
てっきり未定義エラーのようなものが発生すると思ったので驚きました。

上記のようなことをする場合に、
TESTDEF が未定義である場合にコンパイルエラーとする方法はありませんでしょうか?


606 :デフォルトの名無しさん:2012/04/19(木) 01:33:19.91
#if (ISSET_TESTDEF == 1)
ccc();
#else
ddd();
#endif

なるプリプロセッサを延々と書き連ねる


607 :デフォルトの名無しさん:2012/04/19(木) 01:35:44.19
>>605
#errorを使う。
http://codepad.org/YkpizD6p

608 :デフォルトの名無しさん:2012/04/19(木) 02:15:29.40
>>606-607
やはり前処理1行だけで判断させてエラーにするのは難しそうですね。
>>607のコードのやりかたで自分でエラー行を書く方法で考えてみます。

ありがとうございました。


609 :デフォルトの名無しさん:2012/04/19(木) 02:38:18.42
ふざけた野郎だな。

610 :デフォルトの名無しさん:2012/04/19(木) 03:05:07.76
>>606がだよな。いみわからんし

611 :デフォルトの名無しさん:2012/04/19(木) 03:28:31.23
#ifdef TESTDEF
#if (TESTDEF == 1)
aaa();
#else
bbb();
#endif
#endif

612 :デフォルトの名無しさん:2012/04/19(木) 04:13:03.33
プリプロセッサには elif 構文あるんだけどな

613 :デフォルトの名無しさん:2012/04/19(木) 04:44:52.45
この時どうするかいい方法が思い浮かばんかった。

#include <stdio.h>

#define TESTDEF

void aaa(void)
{
fprintf(stdout, "aaa\n");
}

void bbb(void)
{
fprintf(stdout, "bbb\n");
}

int main(void)
{
#ifndef TESTDEF
#error "not defined TESTDEF."
#elif TESTDEF == 1
aaa();
#else
bbb();
#endif
return 0;
}


614 :デフォルトの名無しさん:2012/04/19(木) 04:59:40.34
mfcなんですが、何故か?値が代入されません

for ( i=0; i<opetbl.recv_len; i++ ){
recv_dt.data[i] = (unsigned char)opetbl.recv_data[i];


と言う文が有ったのですが・・・
同じ様に・・・

for ( i=0; i<opetbl.recv_len; i++ ){
recv_dt.data[i] = (unsigned char)opetbl.recv_data[i];

dainyuu_data[i] = (unsigned char)opetbl.recv_data[i];



615 :デフォルトの名無しさん:2012/04/19(木) 05:00:01.66
と、入れてみました。上の方は値がちゃんと代入されるのですが
同じ事をやっている下は代入されません・・・

変数の宣言は、グローバル変数で宣言しました

int dainyuu_data[RECV_LENG];

一方、値が代入される変数は、
union を使い、やっています。

union U_recv_dt {
unsigned char data[RECV_LENG];
};

メモリの設定とか、必要なのでしょうか?

616 :デフォルトの名無しさん:2012/04/19(木) 05:15:43.14
>一方、値が代入される変数は、
recv_dt のこと?

dainyuu_data は int の配列
recv_dt は unsigned char の配列

代入されているかの検証で
元データを文字列と期待し printf にて先頭アドレスを渡したとすると、異なる出力になるのは当然だと思うが
配列の index 総なめで、個々に出力してみたの? (printf("%d\n", daynyuu_data[i] ってこと)

617 :デフォルトの名無しさん:2012/04/19(木) 05:50:29.80
fprintf(stderr, "dainyuu_data = %p\n", dainyuu_data);
で代入時、参照時にdainyuu_dataのaddress確認してみたら?
異なると思うよ。

618 :デフォルトの名無しさん:2012/04/19(木) 06:06:59.39
>>616
>>617
有り難うございます。

>dainyuu_data は int の配列
recv_dt は unsigned char の配列

unsigned char の配列でも試してみましたが、駄目でした。

>総なめで、個々に出力してみたの? (printf("%d\n", daynyuu_data[i] ってこと)

デバグモードのブレークポイントで配列の中を確認しました。
入っていない様です、また画面に表示も出ません(値は0です)

返信有り難う御座います・・・ 
疲れたので寝ます・・・

619 :デフォルトの名無しさん:2012/04/19(木) 07:04:42.88
おやすみ、ムーニーマン

620 :デフォルトの名無しさん:2012/04/19(木) 10:10:58.61
下の代入文は本当にfor文の中に入ってるの?

621 :デフォルトの名無しさん:2012/04/19(木) 10:45:52.19
デバッガ使ってて分からんぐらいだから、他のスレッドにリセットされたことも考慮しないとだめかもね

622 :デフォルトの名無しさん:2012/04/19(木) 10:59:41.13
うむ

623 :デフォルトの名無しさん:2012/04/19(木) 11:13:08.28
グローバル以外にもdainyuu_dataという名前の配列があるとか。

624 :デフォルトの名無しさん:2012/04/19(木) 19:20:12.59
そうだよ

625 :デフォルトの名無しさん:2012/04/19(木) 22:17:47.25
次の方どぞ

626 :デフォルトの名無しさん:2012/04/19(木) 23:03:21.29
宿命はよ

627 :デフォルトの名無しさん:2012/04/20(金) 17:55:05.45
C++の基本〜標準を学校で学びましたが
C言語を独学で勉強できますか?

628 :デフォルトの名無しさん:2012/04/20(金) 19:03:38.06

                       できます。具体的には以下の通りです。

              「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
                                ↓
     「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
                                ↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
                                ↓
      「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
                                ↓
           「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
                                ↓
        「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
                                ↓
                              神の誕生

629 :デフォルトの名無しさん:2012/04/20(金) 21:55:24.56
-神の誕生
+土方の誕生

630 :デフォルトの名無しさん:2012/04/20(金) 22:39:06.55
ゲーム作るには最低どのくらいの知識が必要なのよ

631 :デフォルトの名無しさん:2012/04/20(金) 22:44:57.75
歩く前に歩くことをやめる人間には無理

632 :デフォルトの名無しさん:2012/04/20(金) 22:45:39.31
何の知識だよ

633 :デフォルトの名無しさん:2012/04/20(金) 22:49:01.61
最低でも四元数
あとはUI関連の古典 誰のためのデザイン でも読んどけ

プログラム知識だけで面白可笑しく作れるとか思ったら
そいつはアホ


634 :デフォルトの名無しさん:2012/04/20(金) 22:51:05.14
誰がゲームを面白おかしく作れるための知識がほしいって書いてんの?

635 :デフォルトの名無しさん:2012/04/20(金) 22:53:06.67
面白くもおかしくもない一流のクソゲーでも作りたいのかwww
いやそういう知識なら俺は知らんよw


636 :デフォルトの名無しさん:2012/04/20(金) 22:58:50.78
ゲーム作るのには四元数は必須だよな。俺もそう思う。
どんなゲームでも絶対使うもん。マインスイーパとか。

637 :デフォルトの名無しさん:2012/04/20(金) 22:59:23.41
>>630
それはおまえさん自身が決めることだ

少しでもマシンの動かし方を憶えたら
こんなことできないか? とアイディアから始めるんだ

必要な知識はそれによって決まる

ゲームプログラマってのはコンピュータのプロではなく
遊びのプロであることを片時たりとも忘れてはならない

638 :デフォルトの名無しさん:2012/04/20(金) 23:06:59.79
そんなもんディレクターとかデザイナーの話だろ
プログラマとは別

639 :デフォルトの名無しさん:2012/04/20(金) 23:08:07.03
質問者はスレチともどうとも取れない感じだったのに、回答者が全力でスレチってどういうことなん。
しかも超偉そう。

640 :デフォルトの名無しさん:2012/04/20(金) 23:10:55.97
ゲームプログラマは、無能な企画の脳内にあるイメージを口頭でのわずかな情報で再現する能力が必要

641 :デフォルトの名無しさん:2012/04/20(金) 23:18:05.79
ディレクタやデザイナになりたければ
そこそこの組織に入るにはどうするかが問題となる

で、面接でくだんの質問をしたらまず祈られるだろう

スレチとか言っている連中はそこがわかってない
内容的に1人で勝負できる人がスポンサーをつのる様相がわかってない

642 :デフォルトの名無しさん:2012/04/20(金) 23:23:36.78
ああごめん。たしかに俺わかってなかった。
スレチじゃなくて板違いだったね…

643 :デフォルトの名無しさん:2012/04/20(金) 23:30:38.38
(白黒4階調の初代ゲームボーイで)フルカラー出してくれ。

と企画から言われた時は、ハードウェアのマニュアルをそいつに投げ付けた事は良い思い出。

644 :デフォルトの名無しさん:2012/04/20(金) 23:40:30.49
インベーダーの仕様や白黒TV用カラーガラスでも投げ返されると面白いんだがな

645 :デフォルトの名無しさん:2012/04/20(金) 23:41:01.13
色のにじみでハードの定義にない色を出していたのも良い思い出
通信路の定義の違いまで何とかできてしまったのは無知のおかげで今の俺なら発狂してた
そこそこの組織にいる人ならハード担当と癒着でない仲の良さを大事にする

646 :デフォルトの名無しさん:2012/04/20(金) 23:43:00.93
>>645
その時代の話、結構興味あるので、酉とかつけてもらえますか?

647 :デフォルトの名無しさん:2012/04/20(金) 23:44:55.59
さんずいがねえなあ

648 :デフォルトの名無しさん:2012/04/20(金) 23:50:13.31
じゃあ酒あげるんで、レスの1行目に
〜おじさんの楽しい昔話〜
ってつけるようにしてもらえませんか

649 :デフォルトの名無しさん:2012/04/20(金) 23:51:23.08
〜おじさんの楽しい昔話〜(板違いじゃないよ!)
でもいいです。あと、もしおばさんだったらごめんなさい。その場合はおばさんと表記を改めていただけるようお願いします。

650 :デフォルトの名無しさん:2012/04/20(金) 23:52:54.49
ゲ板にでもスレ立てたら?

651 :デフォルトの名無しさん:2012/04/20(金) 23:55:05.77
ほんとだよな。

652 :デフォルトの名無しさん:2012/04/20(金) 23:58:48.56
そりゃごっつぁん、でマダー?tntn
1行目がどうのって意味わかんねえし
セクハラ野郎は嫌いだぜ

653 :デフォルトの名無しさん:2012/04/21(土) 00:03:29.27
レスを抽出してまとめて読めるからだよ

654 :デフォルトの名無しさん:2012/04/21(土) 00:04:05.35
興味ない人はNG設定できる副作用もあるよ。

655 :デフォルトの名無しさん:2012/04/21(土) 02:09:25.93
>>628
ありがとうございます

656 :デフォルトの名無しさん:2012/04/21(土) 02:09:28.86
MPIってモッピーと読むと言われたが冗談ですよね?

657 :デフォルトの名無しさん:2012/04/21(土) 02:15:53.72
>>655
それコピペ

658 :デフォルトの名無しさん:2012/04/21(土) 16:17:43.25
へえ

659 :デフォルトの名無しさん:2012/04/21(土) 20:18:03.43
>>655
いえいえ

660 :デフォルトの名無しさん:2012/04/21(土) 23:07:24.27
素数を認めるプログラムを作っているのですがこのプログラムだとwebコンパイラだと17や19の時にタイムアウトします。ヒントもらえないでしょうか?

#include <stdio.h>
int main(void){
int i,N;
printf("please key in integer n=");
scanf("%d",&N);
if(N>2){
printf("%dは素数ではない",N);
return 0;
}
if(N==2){
printf("%dは素数",N);
return 0;
}
if(N%2==0){
printf("%dは素数ではない",N);
return 0;
}
for(i=3;i<N;i+2){
if(N%i==0){
printf("%dは素数ではない",N);
return 0;
}
}
printf("%dは素数",N);
return 0;
}

661 :デフォルトの名無しさん:2012/04/21(土) 23:08:50.08
>>660
i+2

662 :デフォルトの名無しさん:2012/04/21(土) 23:16:29.27
>>661
うおおおおおおおおおおおおお
しょうもないケアレスミスでした。
ありがとうございました


663 :デフォルトの名無しさん:2012/04/21(土) 23:55:29.42
if(N>2)

(;゚ Д゚) …!? (つд⊂)ゴシゴシ

あれ? if (N < 2) の間違いだよね・・・ 俺の見間違え?

664 :デフォルトの名無しさん:2012/04/21(土) 23:59:30.10
C言語のサンプルプログラム集みたいなサイトはありませんか?
昔見てたサイトがあるのですが思い出せないのです。

665 :デフォルトの名無しさん:2012/04/22(日) 00:00:50.11
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/
あなたが見ていたのはここです
今度は忘れないようにURLを石板に刻んでおいてください

666 :デフォルトの名無しさん:2012/04/22(日) 00:02:53.65
自演で宣伝乙

667 :デフォルトの名無しさん:2012/04/22(日) 00:03:30.07
>>665
面白そうなサイトですが、たぶん違います
ハノイの塔とか定番アルゴリズムを網羅してるサイトだったのですが
心当たりある人いないでしょうか?

668 :デフォルトの名無しさん:2012/04/22(日) 01:17:12.55
>>667
特定のサイトを捜したいなら相当詳しく書かんと特定不能だぞ
うろ覚えならもう自力でありったけの検索ワード入れてググるしか

669 :デフォルトの名無しさん:2012/04/22(日) 01:20:54.98
http://www.ic-net.or.jp/home/takaken/pz/pz3/index.html とか
http://www.itmedia.co.jp/enterprise/articles/1009/04/news002.html

670 :デフォルトの名無しさん:2012/04/22(日) 01:47:06.52
>>668
エスパー力が足りないな

671 :デフォルトの名無しさん:2012/04/22(日) 08:50:10.21
Cで書かれたマルコフ連鎖ジェネレータのソースがどっかに公開されてたら教えてほしいんですが

672 :デフォルトの名無しさん:2012/04/22(日) 11:46:28.31

if (1) goto A; else goto B;

A:
nop();
goto END;

B:
nop();
goto END;

END:

上記のC風ソースコードを、アセンブラコードへと変換するプログラムを書く。

gotoをpc命令へ変換するとして、ifの時点ではラベルのアドレスが不明。
どのようにしてアセンブラコードへ変換すればいいか。


673 :デフォルトの名無しさん:2012/04/22(日) 11:51:22.93
アドレス解決はアセンブラがやってくれるはずだが…

まあ、「アセンブラコード」とか言う意味不明のこと言い出す奴だかなぁ…

674 :はちみつ餃子 ◆8X2XSCHEME :2012/04/22(日) 11:52:05.45
2パスで処理すりゃいいだろ。

675 :デフォルトの名無しさん:2012/04/22(日) 11:57:09.32
アセンブラコードの宿命はよ


676 :デフォルトの名無しさん:2012/04/22(日) 12:04:39.44
巻き戻しでしたけ?
再帰したとき巻き戻しが起こるのはなぜですか?

677 :はちみつ餃子 ◆8X2XSCHEME :2012/04/22(日) 12:14:14.85
お前、自分の質問の意味がわかってるか?
少なくとも俺はわからん。

678 :デフォルトの名無しさん:2012/04/22(日) 12:26:08.20
なぜ? じゃねーよw
スタック巻き戻しで再帰機能を実装しましょう
てな話だwww

もしも無限が扱えるようなファンタジーな計算機があるんなら
巻き戻す必要が無い


679 :660:2012/04/22(日) 12:48:16.65
>>663
そこもミスってましたorz
指摘サンクス

680 :デフォルトの名無しさん:2012/04/22(日) 12:51:07.41
c言語を勉強しようと思うのですが、おすすめの書籍がありましたら教えてください。
cは入出力、演算、分岐、繰り返し等ができます。初級〜中級程度で実用的に使えるような書籍をお願いします。

681 :はちみつ餃子 ◆8X2XSCHEME :2012/04/22(日) 13:54:00.92
>>680
推薦図書/必読書のためのスレッド 67
http://toro.2ch.net/test/read.cgi/tech/1332822023/

682 :デフォルトの名無しさん:2012/04/22(日) 14:01:56.31
>>681
ありがとうございます
そっちに行ってみます

683 :デフォルトの名無しさん:2012/04/23(月) 00:33:15.37
いえいえ

684 :デフォルトの名無しさん:2012/04/23(月) 03:53:07.50
お褒めに預かり光栄で御座います。

685 :デフォルトの名無しさん:2012/04/23(月) 17:44:32.25
開発・実行環境
Vista 32bit
VC++EE

1つのプログラムがmallocで確保できるメモリサイズ合計は2GBまでですか?
64bit版ではそれ以上確保できるのでしょうか


686 :デフォルトの名無しさん:2012/04/23(月) 17:49:34.39
それを確かめられないヤツは
2GBも確保するな


687 :デフォルトの名無しさん:2012/04/23(月) 18:00:14.78
ソース


688 :デフォルトの名無しさん:2012/04/23(月) 18:47:48.02
コード、データで2GBまで、32bit
PAEという誤魔化し使うと、データ分が増やせる可能性がある

689 :デフォルトの名無しさん:2012/04/23(月) 19:21:55.61
>>688
納得しました
ありがとうございました


690 :デフォルトの名無しさん:2012/04/23(月) 23:06:55.21
いえいえ

691 :デフォルトの名無しさん:2012/04/23(月) 23:12:57.78
この受け答えで「納得しました」てのは何か違和感ある
理解も無くなぜも出典も問わずに納得しましたとだけ、
危険な気がする


692 :デフォルトの名無しさん:2012/04/23(月) 23:28:14.37
いつものことだ

693 :デフォルトの名無しさん:2012/04/23(月) 23:32:48.96
FindFirstFileでメモリアクセス違反のエラーが出るんだが原因がわからん

WIN32_FIND_DATAって初期化必要ないよな?

694 :デフォルトの名無しさん:2012/04/23(月) 23:36:15.39
エスパー試験2級問題
(制限時間10分・5点)

695 :デフォルトの名無しさん:2012/04/23(月) 23:36:41.18
やっぱ事故解決

なぜか
WIN32_FIND_DATA *p

じゃなくて
WIN32_FIND_DATA p
の&p渡しならエラーでなかった
何でだろ?

まあサンキュ

696 :デフォルトの名無しさん:2012/04/23(月) 23:37:21.28
大コケ

697 :デフォルトの名無しさん:2012/04/23(月) 23:39:52.24
何でだろ?って悩むところじゃないだろ

698 :はちみつ餃子 ◆8X2XSCHEME :2012/04/23(月) 23:40:46.98
>>695
ちょwww マジかよ。
何でだろじゃねーよ。

699 :デフォルトの名無しさん:2012/04/23(月) 23:47:44.60
>>695
char *p;
strcpy(p, "hogehoge");

これ、なぜか落ちるよね。俺も何でかわからんもん。

700 :デフォルトの名無しさん:2012/04/23(月) 23:48:54.57
今わかった
*pだと構造体自体のメモリが確保されてないってことね
余裕余裕
あばよ

701 :デフォルトの名無しさん:2012/04/23(月) 23:55:12.21
わかったのか!
俺よりも一歩先に進んだなぁ。うらやましい

702 :デフォルトの名無しさん:2012/04/24(火) 02:28:11.97
>>699
p「■■■■」
strcpy(p, "hogehoge");
p「■■■■」← hogehoge\n

p「hoge」hoge\n

703 :デフォルトの名無しさん:2012/04/24(火) 02:36:18.92
>>702
うわwwwww
寝ぼけすぎて色々おかしいwwwww

p(ココを見よ)→「■■■■」(※メモリ上のどこか)
strcpy(p, "hogehoge");
p(ココを見よ)→「■■■■」← hogehoge\n

p(ココを見よ)「hogehoge\n 」

他(あれ?誰だよそこは俺の場所だろ。)

うん。寝よう。

704 :デフォルトの名無しさん:2012/04/24(火) 02:36:46.03
>>702
その話題は終わってる

705 :デフォルトの名無しさん:2012/04/24(火) 03:03:33.22
p「俺が先頭じゃ」
strcpy「hogehoge入れたれや」
p「お前が入れるかわからんわ」
malloc「おいpここの先頭になれ」
p「おkまかせろ」
strcpy「hogehoge入れたれや」
p「おkmallocに許可もらってるからこい」


706 :デフォルトの名無しさん:2012/04/24(火) 03:06:36.73
きも

707 :デフォルトの名無しさん:2012/04/24(火) 03:48:15.15
アスペって皮肉理解できないよな

708 :デフォルトの名無しさん:2012/04/24(火) 04:00:12.77
>>702
そこはただのネタ。

709 :デフォルトの名無しさん:2012/04/24(火) 04:15:51.35
struct quf_alloc{char s[];}:

710 :デフォルトの名無しさん:2012/04/24(火) 08:19:58.45
fgetsでutf-8の文字コードで書かれたファイルを読み込んでるんですが、
一行目からNULLが帰ってきます
utf-8の文字コードで書かれたファイルはfgetsでは読めないんですか?

711 :デフォルトの名無しさん:2012/04/24(火) 09:17:15.81
いいえ。

712 :デフォルトの名無しさん:2012/04/24(火) 09:46:58.01
本当ですか?
じゃあなんでエラーになるんだろ
fgetsって改行コードまで読んで末尾にヌル文字入れるっていう仕様ですよね?
文字コードが違うのに改行コードとか判別できるんですか?

713 :デフォルトの名無しさん:2012/04/24(火) 10:29:39.72
おちえて! グー!!
ttp://oshiete.goo.ne.jp/qa/4406429.html

つまり
>char s[256];
>while (fgets(s, 256, file1) != NULL)
ではダメで
wchar_t s[256];
while (fgetws(s, 256, file1) != NULL)
にしないといけない。

とある
つーかもっとggrks


714 :デフォルトの名無しさん:2012/04/24(火) 11:42:34.69
それはfgets()の問題ではなくてprintf()の問題だろ。

715 :デフォルトの名無しさん:2012/04/24(火) 11:42:51.83
すいません。
そのグーはとっくに読んでたんですが、
ccs=UTF-8っていうオプションを指定しようとしてもそんなのありませんって言われるんで
実行できませんでした。
fopenにそんなオプションないですよね?

716 :デフォルトの名無しさん:2012/04/24(火) 11:45:17.64
あります。

717 :デフォルトの名無しさん:2012/04/24(火) 11:45:49.47
>>713
UTF-8 を wchar_t で扱おうとするとか訳が分からん

718 :>>716:2012/04/24(火) 11:53:29.94
そんなオプションないですっていわれるんです
どうやったらそんなオプション使えるのか教えてください

719 :デフォルトの名無しさん:2012/04/24(火) 11:57:49.72
うひょー

720 :デフォルトの名無しさん:2012/04/24(火) 11:58:14.46
情報が少ないことに対する返しだと思うよ。
お互いにうそはついてないけど、それを読ませたい相手には伝わってない

721 :デフォルトの名無しさん:2012/04/24(火) 11:59:49.19
とにかく私がやりたいことは、
utf-8の文字コードで書かれたファイルを
一行ずつ読みたいんです
方法を教えてください
お願いします

722 :デフォルトの名無しさん:2012/04/24(火) 12:01:46.08
バイナリー読み込みで妥協?

723 :デフォルトの名無しさん:2012/04/24(火) 12:02:47.95
utf8が使えるライブラリ持ってくればいんじゃね?

724 :デフォルトの名無しさん:2012/04/24(火) 12:10:05.49
バイナリ読み込みの場合、
strstrで改行コードまで読むことになりますが、
そのときに指定する文字はどうしたらいいんですか?
文字コードが違うんだから\nではひっかからないでしょう?

725 :デフォルトの名無しさん:2012/04/24(火) 12:14:35.61
まず、UTF8とは何か、それからggrks。

726 :デフォルトの名無しさん:2012/04/24(火) 12:15:04.03
そんなのとっくに調べたわ
早く教えろ

727 :デフォルトの名無しさん:2012/04/24(火) 12:15:42.72
結局誰も答えられねーんだろ
話にならん
クズしかいねーなここ

728 :デフォルトの名無しさん:2012/04/24(火) 12:17:31.32
ひょひょ

729 :デフォルトの名無しさん:2012/04/24(火) 12:20:15.63
珍しいバカもいたもんだな。
あ、今時別に珍しくはないか。

730 :デフォルトの名無しさん:2012/04/24(火) 12:22:13.53
OSもわからないんじゃ改行の扱いなんか答えよう無いじゃん

731 :デフォルトの名無しさん:2012/04/24(火) 12:47:53.32
>>724
ためせよ。
で、その思い込みがあるってことは結果にびっくりするだろうから、なんでそうなのかを調べろよ

732 :デフォルトの名無しさん:2012/04/24(火) 13:53:59.25
改行コードでググレ

733 :デフォルトの名無しさん:2012/04/24(火) 14:24:05.92
>>721
UTF8のASCII範囲(0x00-0x7F)のコードは
それ以外で使われないので
SJISと同じように読めばいいよ
改行コードは大概LF,かCR/LFなので
テキストモードで開いてfgetsすれば問題ない

734 :デフォルトの名無しさん:2012/04/24(火) 14:40:25.01
すまん
今調べたら読み込んでるファイルが空っぽだった
そりゃNULL返るよな
俺は数時間何していたんだ
中身のあるファイル読み込んだらいけたわ

735 :デフォルトの名無しさん:2012/04/24(火) 15:07:52.65
うむ

736 :デフォルトの名無しさん:2012/04/24(火) 16:15:24.39
コードとか標準ライブラリとか文字コードとか改行とかCRLFとかOSでの違いとかテキスト/バイナリとか
全く関係のない次元の話じゃねーか

ついでに
ホントウに中身がないのは
オマエだw


737 :デフォルトの名無しさん:2012/04/24(火) 16:17:40.22
いや、俺は中身はあるぞ
ただたまにこういうどん臭いミスをするだけ
こういうミスは天才に多いからね♪

738 :デフォルトの名無しさん:2012/04/24(火) 16:58:58.05
良かった、天才じゃなくて。

739 :デフォルトの名無しさん:2012/04/24(火) 17:21:20.41
737みたいな奴とは仕事したくないな

740 :デフォルトの名無しさん:2012/04/24(火) 17:34:46.92
>>736
うわぁ

741 :デフォルトの名無しさん:2012/04/24(火) 17:37:29.49
天災

742 :デフォルトの名無しさん:2012/04/24(火) 17:38:17.54
人災だろ


743 :デフォルトの名無しさん:2012/04/24(火) 17:39:09.31
臭い天才?腐ってるのか。


744 :デフォルトの名無しさん:2012/04/24(火) 20:13:00.76
うどん臭い天才

745 :デフォルトの名無しさん:2012/04/24(火) 22:53:21.98
ふーん

746 :デフォルトの名無しさん:2012/04/25(水) 14:19:06.07
初級の質問で申し訳ないです
http://9cguide.appspot.com/05-q.htmlの[3]プログラム書取の問題を

#include <stdio.h>

int main(void)
{
double water,milk;
water=198;
milk=138;
printf("%d\n",(int)(1000-(water+milk*2)*1.05));
return 0;
}

と解答しました、よければ誰か添削お願いします
こうした方が読みやすいだとかでもうれしいです!

747 :デフォルトの名無しさん:2012/04/25(水) 14:44:14.01
個人的には、それで問題ないと思う。
強いて言えば、コメントを書いておくぐらいかな。

748 :デフォルトの名無しさん:2012/04/25(水) 14:50:05.32
そこに解答例があるのになぜ聞くのだろうか。

749 :デフォルトの名無しさん:2012/04/25(水) 15:16:08.83
変数がdoubleなのが気に入らない
キャストのタイミングが気に入らない

750 :デフォルトの名無しさん:2012/04/25(水) 16:05:14.73
特に間違いも無い。
個人的に
water=198;
milk=138;

water=198.0;
milk=138.0;
としたい。

751 :デフォルトの名無しさん:2012/04/25(水) 16:10:01.41
四捨五入に言及してるのだから
四捨五入なり五捨六入なり小数点以下切り上げなり、
そういう関数が無い解答例はかなりおかしい
どこにも「これで四捨五入されました」とかが書いてない、
これはそのサイトに不備があることに他ならない、
だからあなたのプログラミングの外の能力は上がらない
もっとマシな参考書を参考したほうがいい、
そのソースはさっさと捨てろ

752 :デフォルトの名無しさん:2012/04/25(水) 16:39:14.94
言及って…
するかどうかは自由って書いてあるじゃん
そもそも回答例は四捨五入じゃねーし

753 :デフォルトの名無しさん:2012/04/25(水) 16:55:41.10
>>751
不備なのはお前。

754 :デフォルトの名無しさん:2012/04/25(水) 20:40:35.39
インターンシップでソフトウェア開発の現場で仕事体験するおwwwwwwwwwwwwwwww

755 :デフォルトの名無しさん:2012/04/25(水) 23:56:04.81
うむ

756 :デフォルトの名無しさん:2012/04/26(木) 03:13:58.25
>>754
一見仕事してなさそうなところだといいね。

757 :ビル・ジョブス:2012/04/26(木) 03:19:00.55
obj-cも俺に聞いて良いよ!

758 :デフォルトの名無しさん:2012/04/26(木) 03:35:46.22
うん

759 :デフォルトの名無しさん:2012/04/26(木) 12:24:12.84
多分ここのが参考になると思う

第 20 回・国際分かりにくい C コードコンテスト
http://www.ioccc.org/2011/whowon.html

760 :デフォルトの名無しさん:2012/04/26(木) 13:35:44.10
>>756
なんで?

761 :デフォルトの名無しさん:2012/04/26(木) 14:58:23.48
なんでも。

762 :デフォルトの名無しさん:2012/04/27(金) 16:34:08.69
決まった順番に複数のLEDを光らせたいです。

LEDを光らせる関数を作ってそこに int型のLEDの数だけある1次元配列を投げて光らせようとしています。

光らせるパターン分だけ1次元配列を用意するために、パターンとLEDの数で2次元配列にして、
その中から、光らせるタイミングで、1次元配列を抜き出して光らせたいのですが、コンパイルが通りません。

こういった場合にはポインタを使うといいのかなと思ったのですが、使い方がまちがっているでしょうか

const int patt[3][3]={{1,0,1},{0,1,1},{1,1,0}};

void main(){
 LED_Blink(&patt[1][0]);
}

void LED_Blink(int pattern[3]){
~~~
}

763 :デフォルトの名無しさん:2012/04/27(金) 16:38:29.00
>>762
エラーメッセージを貼れ
そして consi int [] 渡すなら const つけろ

764 :デフォルトの名無しさん:2012/04/27(金) 17:12:44.15
関数をmainより前で宣言してないだけだったりしてw

765 :762:2012/04/27(金) 18:59:22.42
エラーですが、こんなのが出ています。

error: invalid types 'const int[int]' for array subscript

環境はArduinoIDE Ver.1.0です。

1次元const配列をそのまま引渡しではエラー出ませんでした。

constをつけるというのは
void LED_Blink(const int pattern[3]){
というのはやってみたのですが、エラー変わりませんでした

766 :デフォルトの名無しさん:2012/04/27(金) 19:00:11.96
>>762
プロトタイプがないのに pattern に型があるから
それと pattern の次元が足りない

# こんなのを瞬時に指摘できない回答者が戯れ言ぬかしてんじゃねえ

767 :デフォルトの名無しさん:2012/04/27(金) 19:03:10.65
一次元配列として取り出したいんだから、pattern[3]でいいんじゃ?

768 :デフォルトの名無しさん:2012/04/27(金) 19:05:38.61
>>766
偉そうにレスするときはミスすると恥ずかしいぞ

769 :デフォルトの名無しさん:2012/04/27(金) 19:14:09.76
あははは
俺も焼きが回ったな

# はあ、飲みにでも行こうか・・

770 :デフォルトの名無しさん:2012/04/27(金) 19:20:18.99
ダサ...

771 :デフォルトの名無しさん:2012/04/27(金) 19:30:17.05
>>769
ある程度の人間ならやきがまわることもあるかもしれないが
最初からカスだった場合にはどうなんだろう

772 :デフォルトの名無しさん:2012/04/27(金) 19:36:51.18
手元の環境ではconstつけて、使う前に宣言しとけばコンパイル通るし動くけどな。

773 :デフォルトの名無しさん:2012/04/27(金) 21:21:26.43
>手元の環境ではconstつけて、使う前に宣言しとけばコンパイル通るし動くけどな。

読点の使い方は教わらなかったのか?

774 :デフォルトの名無しさん:2012/04/27(金) 21:31:47.34
>>773
気にするなよ

775 :デフォルトの名無しさん:2012/04/27(金) 22:09:24.94
>>773
constつける話と前方宣言する話は別だから分けたかったんだよ。
どうするのが正しいのか教えてよ。

776 :デフォルトの名無しさん:2012/04/28(土) 10:06:28.57
#include <stdio.h>
#include <string.h>

struct student{
char name[10];
};

int main(void) {
struct student data[3];

scanf("%s", d[0].name);
if( !strcmp(d[0].name, "0") ) printf("ZERO!\n");
}

上記のような処理をしたいのですが、
構造体配列の文字列をif文で比較する場合に、
strcmpを使わずに実現するにはどのようにすればいいのでしょうか?

また構造体配列はポインタという考え方でよろしいのでしょうか?
どうぞよろしくお願いします。

777 :デフォルトの名無しさん:2012/04/28(土) 10:23:38.52
struct student data[3],ckv={{"0"}},msk={{"\0\0" ~'\0'}};
if (d[0]^ckv&~msk)puts("ZERO");

778 :デフォルトの名無しさん:2012/04/28(土) 10:40:02.01
>>777
すみません、コンパイルエラーになるのですが・・・

779 :デフォルトの名無しさん:2012/04/28(土) 10:47:36.93
if( *((short *)d[0].name)==*((short *)"0") ) printf("ZERO!\n");



780 :デフォルトの名無しさん:2012/04/28(土) 11:08:13.22
>>779
どうもありがとうございます!

781 :デフォルトの名無しさん:2012/04/28(土) 13:07:58.43
いえいえ

782 :デフォルトの名無しさん:2012/04/28(土) 13:40:30.26
>>776

1)文字列比較をstrcmpを使わずに実現したい
理由は何?それ次第で回答が変わってきそう。

2)先頭一文字だけ比較すればよい?それなら
d[0].name[0] == '0'でいいかも。ただし、終端されているか確認しないことになる。

3)
>構造体配列はポインタという考え方でよろしいのでしょうか?
もちろんダメです。
struct {
char name[10];
char *p;
}hoge;

hoge.nameは配列だし、hoge.pはポインタです。


783 :デフォルトの名無しさん:2012/04/28(土) 14:52:08.26
構造体配列は構造体の配列のことで、構造体の中の配列のことじゃないんじゃ?

784 :デフォルトの名無しさん:2012/04/28(土) 15:22:41.08
>また構造体配列はポインタという考え方でよろしいのでしょうか?
配列名を書けば配列先頭のポインタ値が得られる程度に思っとけばいい。

785 :デフォルトの名無しさん:2012/04/28(土) 15:48:38.90
strcmpって書くのが長くていやだとわがまま言ってるだけじゃ

786 :776:2012/04/28(土) 16:59:07.49
>>782-784
回答どうもありがとうございます!
>>782さんの(2)のような書き方を知りたかったので、本当にありがとうございます。

http://homepage3.nifty.com/mmgames/c_guide/16-03.html
またこのサイトを見ると、d[0].year と d->year が同じ意味とのことで、
-> はポインタのリスト構造でよく見かけるので気になったんです。

787 :デフォルトの名無しさん:2012/04/28(土) 17:02:16.20
アロー演算子
ドット演算子


788 :デフォルトの名無しさん:2012/04/28(土) 17:08:04.73
>>783>>786
すみません。「構造体の配列」と「構造体メンバの配列」を混同していました。

どっちにしても、配列とポインタは別物です。
>>784さんのとおりですが、例外があります。
int a[10];
int *p = a;
とした場合に
sizeof(a),sizeof(p)
&a,&p
が問題になります。

789 :デフォルトの名無しさん:2012/04/28(土) 20:37:38.53
>>786
>>782の(2)の書き方、、、先頭一文字の比較でよかったの?
そうならそうと最初に書いてくれれば

790 :デフォルトの名無しさん:2012/04/28(土) 23:26:03.74
割り込みしてすみません。
ほぼ素人です。
スレチでしたらすみませんが、教えてくださったら嬉しいです。
3uwzclt4ht

おそらくエンコードされた文字列なのですが、これはどうすれば元の文字列にすることができますか?
逆に、元の文字列をどうすればこの文字列にすることができますか?

791 :デフォルトの名無しさん:2012/04/28(土) 23:34:20.56
>>790
エンコード方法が分からないと無理
シーザー暗号 とか base64 とか
トリップ割りたいなら crypt とか

792 :デフォルトの名無しさん:2012/04/28(土) 23:45:48.40
首尾よくエンコード方法がわかっても
100年かけてもムリとかあっからなwww


793 :デフォルトの名無しさん:2012/04/28(土) 23:47:55.65
クラウドやGPUでブルートフォースするし キリッ

794 :デフォルトの名無しさん:2012/04/28(土) 23:55:41.48
>>791
>>792
やっぱり難しいですよね…
もう少し自分で試行錯誤してみます。
こんなアホな質問にわざわざお時間いただいてありがとうございました。

795 :デフォルトの名無しさん:2012/04/29(日) 00:35:54.37
ハッシュだったら算出方法がわかっても元には戻せません

796 :デフォルトの名無しさん:2012/04/29(日) 00:38:31.87
ハッシュとか関係ないから
情報を間引いてるかどうかの違いだけ

797 :デフォルトの名無しさん:2012/04/29(日) 00:40:00.29
え?w

798 :デフォルトの名無しさん:2012/04/29(日) 00:53:24.72
>>797
キーが最大でN個の時に
バケツをN個用意ししてみよう
それは可逆だよね

799 :デフォルトの名無しさん:2012/04/29(日) 00:59:48.57
>>798
ハッシュてのは同一の値には同一のハッシュ値を返すって以外何も保証されないものです。
N個全部で同じハッシュ値を生成することもありえます

800 :デフォルトの名無しさん:2012/04/29(日) 01:16:06.38
>>799
アンカ間違ってない?

801 :デフォルトの名無しさん:2012/04/29(日) 01:17:08.95
>>800
間違ってないよ
単純にハッシュ生成アルゴリズムが2で割るってだけだと考えてみよう
N/2しかバケツは使われません

802 :デフォルトの名無しさん:2012/04/29(日) 01:20:40.92
>>801
何を言ってるの?
もっと単純に、なにもせずにそのまま返すというハッシュ関数を考えてみ
可逆ですよね

803 :デフォルトの名無しさん:2012/04/29(日) 01:22:25.74
>>802
だから、ハッシュってのは同じデータには同じ値を返すとしか定義されてないの
バケツの数がデータの数より多くても全て使われる保証は全くないの
ハッシュを全く理解してないの?

804 :デフォルトの名無しさん:2012/04/29(日) 01:23:52.69
? バケツの数がデータの数より多くても全て使われる保証は全くないの
○ バケツの数がデータの数より少なくても全て使われる保証は全くないの

805 :デフォルトの名無しさん:2012/04/29(日) 01:26:02.59
小難しそうな言葉を最近覚えたばかりで
ハッシュって言ってみたかっただけ なんだろうからさ
もうスルーしようよ。

806 :デフォルトの名無しさん:2012/04/29(日) 01:28:40.72
ハッシュ関数 - Wikipedia
ttp://wikipedia.gwbg.ws/hez

807 :デフォルトの名無しさん:2012/04/29(日) 01:32:09.66
入門スレだからしょうがないけどハッシュぐらいは理解しよう

808 :デフォルトの名無しさん:2012/04/29(日) 01:32:26.70
>>803
ハッシュ関数=非可逆
これは
802の簡単な例でも分かるように
必ずしも真ではないよね?
ハッシュ関数次第なのよ。
>キーが最大でN個の時に
と言っているように
データ数ではなく
表現可能なすべてのバケツを用意したら
可逆でしょ

809 :デフォルトの名無しさん:2012/04/29(日) 01:36:22.92
可逆、非可逆とバケツの数は無関係
ハッシュ関数にのみ依存します

810 :デフォルトの名無しさん:2012/04/29(日) 01:36:53.04
>>809
確かにそうだな。

811 :デフォルトの名無しさん:2012/04/29(日) 01:39:37.36
と、思ったけど
キーの表現可能な数 = ハッシュ値として表現可能な数
で重複しようがないから
可逆だな。

812 :デフォルトの名無しさん:2012/04/29(日) 01:42:47.86
バケツが余っていても同じバケツを複数回使うか余ってるバケツを使うかはハッシュ関数のみが決定します

813 :デフォルトの名無しさん:2012/04/29(日) 01:46:46.39
どっちにしてもハッシュは不可逆

814 :デフォルトの名無しさん:2012/04/29(日) 01:49:49.34
あぁ、そだね。

815 :デフォルトの名無しさん:2012/04/29(日) 01:54:14.03
簡単に言うとチェックサムという加算を使ったハッシュ値が可逆かどうかを考えればわかります
一部可逆ハッシュという可逆であることを保証する特殊なハッシュもあることはあるけど一般的には非可逆です

816 :デフォルトの名無しさん:2012/04/29(日) 02:31:41.13
Q. ハッシュ値から元キー復元は可能ですか?
A. ハッシュ関数次第
これでFA

817 :デフォルトの名無しさん:2012/04/29(日) 03:43:17.01
ディープ・パープル

818 :デフォルトの名無しさん:2012/04/29(日) 15:11:59.77
fgetsの仕様として、\nまで読み込んでその\nの改行コードを\0に置き換える仕様があったと思いますが、
これってもしかしてバイナリモードでファイル読み込んだときには起こらない仕様ですか?
いまやってみたら\r\nのまま残ってたもので。。

819 : ◆QZaw55cn4c :2012/04/29(日) 15:30:18.36
>>818
テキストモード/バイナリモード、というのがそもそも MS-DOS とか CP/M とかからの負の遺産。
制御コード二つでやっと改行できるとか、ファイル末は ^Z とか、テレタイプをひきずった変仕様としか。
改行にしても OS によって、\r\n、\n、\r といろいろだ。いいかげ勘弁してほしい
最近はわりきって、\r, \n がどう混在しようが対応しておくのが、いろいろな意味で幸せなのではないか? \n\r とかはみかけないけど。

ちなみに手元の cygwin/windows xp x32 では
>\r\nのまま残ってたもので。。

820 :デフォルトの名無しさん:2012/04/29(日) 15:41:35.62
>>818
\nを\0に置き換えるってのはないよ。他のなんかと勘違いしてるかも。

>>819
ぐちゃぐちゃとうるさいなぁ。

821 :デフォルトの名無しさん:2012/04/29(日) 15:45:32.50
>>820
ありがとうございます。
strtok?みたいなやつが置き換わるんでした
fgetsは関係なかったですね。
勘違いしてました

>>819
ごちゃごちゃうっせーんだよボケ

822 :デフォルトの名無しさん:2012/04/29(日) 16:04:35.62
>>819
んな無意味な駄文はチラシの裏にでも書いてろやカス

823 :デフォルトの名無しさん:2012/04/29(日) 16:08:39.29
>>819嫌われすぎ
確かにそんなこと聞いてないのに長々語る奴はうざいけど

824 :デフォルトの名無しさん:2012/04/29(日) 16:43:35.21
>>823
テキストモード()
バイナリモード()
でいいのにね

825 :デフォルトの名無しさん:2012/04/29(日) 16:44:36.04
たまに聞きかじった単語があるとうれしくなるんだろ

826 :デフォルトの名無しさん:2012/04/29(日) 16:48:10.47
(笑)の省略形で、バイナリモード キリッ()って空のカッコがあるじゃん?
俺プログラムのやり過ぎか(void)って読んじゃうんだよね〜(ドヤッ
地獄のミサワにこれがないのは何故だ

827 :デフォルトの名無しさん:2012/04/29(日) 16:58:41.16
>>826
やり過ぎwww
足りてないよ

828 : ◆QZaw55cn4c :2012/04/29(日) 16:59:59.85
>>826
f() と f(void) は同じいや違うんぬんかんぬんhttp://toro.2ch.net/test/read.cgi/tech/1246115922/199


829 :デフォルトの名無しさん:2012/04/29(日) 17:01:22.04
>>828
そこでニワカっぽさをさりげなく演出してるのさ(大嘘)

830 :はちみつ餃子 ◆8X2XSCHEME :2012/04/29(日) 17:23:40.21
昔の cygwin ではインストールのときにテキストのタイプを選べてそれによって挙動が変わったりしてた。
http://musashi.sourceforge.jp/cygwin/cygwin.html
最近のはインストーラにこの項目が無くなってる。
環境変数 binmode も廃止されているのでグローバルに挙動を変更することは出来ない。
http://cygwin.com/cygwin-ug-net/using-cygwinenv.html
確かに問答無用で全部変わるのはあんまりよい戦略とは言えないよな。

ディレクトリをマウントするときに個別にモード設定が出来るので、
cygwin の外とのやりとりのときに変換はかけるが、
cygwin 内では改行は \n というのが基本的な考え方。
http://sohda.net/cygwin/setenv.html


831 : ◆QZaw55cn4c :2012/04/29(日) 17:25:40.60
>>821
strtok()?
そんなもの使うのか?私は使わない、使ったことがない、そもそも使えない。
仕様からして糞だと見抜け。代替には cutToken() を使え。
http://toro.2ch.net/test/read.cgi/tech/1313183984/39
http://ideone.com/Rzg4n

832 :デフォルトの名無しさん:2012/04/29(日) 17:27:49.36
アホか
strtokを使うとは誰も言ってないだろ
そういうのは余計なお世話なんだよハゲ

833 :デフォルトの名無しさん:2012/04/29(日) 17:28:32.46
ハゲじゃなく頭パイパン

834 :デフォルトの名無しさん:2012/04/29(日) 17:32:50.84
テキストモードの問題は根底に「C の標準こそ実は方言」というオチがあるので
負の遺産がどうたらいう見解は逆だと思う

まあ、現実は系譜より実効支配力で決まることだが

835 : ◆QZaw55cn4c :2012/04/29(日) 17:37:32.04
>>834
kwsk(_ _)

改行コードはひとつで機能しかつ一種類であればどれほど楽かと思わずにはいられないのですけれども、どうしてこうなってしまったのでしょうか?
この問題、いにしえの raw / cooked と関係あるのでしょうか?

836 :デフォルトの名無しさん:2012/04/29(日) 17:40:17.95

いま実効支配しているのはなに?


837 : ◆QZaw55cn4c :2012/04/29(日) 17:41:51.62
そりゃ iOS の \r では?

838 :デフォルトの名無しさん:2012/04/29(日) 17:47:19.56
unix が lf
mac が cr

後発の MS は cr+lf でとりあえずいいとこどりを狙った

839 :デフォルトの名無しさん:2012/04/29(日) 17:47:29.77
知ったかぶりがひどすぎるw

840 :デフォルトの名無しさん:2012/04/29(日) 17:50:19.19
知ったかぶりを楽しむのも一興よ

841 :デフォルトの名無しさん:2012/04/29(日) 17:51:20.76
楽だからって勝手にルールを変えるとどうなるかってお手本だね
B で printf("*n"); とかやってた頃に endl みたいな発想はしなかったらしい

842 :デフォルトの名無しさん:2012/04/29(日) 17:53:29.55
MS-DOSの方がMacより先だろうし、今時のMacはCrじゃないし。

843 :デフォルトの名無しさん:2012/04/29(日) 17:54:00.70
入門スレなの忘れないでよね

844 :デフォルトの名無しさん:2012/04/29(日) 17:56:38.67
話についてけないからって水差すな無能
消えろよks


845 :デフォルトの名無しさん:2012/04/29(日) 18:05:58.39
ふぇぇぇんこわいよおおお

846 :はちみつ餃子 ◆8X2XSCHEME :2012/04/29(日) 18:22:08.16
物理的に制御することを考えたら、
行を送る LF とキャリッジ (カーソル) を左端に戻す CR の組合せ
で改行を表すのはそれはそれで理にかなってる。

847 : ◆QZaw55cn4c :2012/04/29(日) 18:27:41.91
ラインフィード、と、キャリッジリターン、でしたかね、確か。
とはいえ、なんだか悲しいなあ。

>>839
失礼な。話題をつくってやったんだからモリタポ払え

848 :デフォルトの名無しさん:2012/04/29(日) 18:39:56.86
モリタポスレに籠もってろよカス

849 :デフォルトの名無しさん:2012/04/29(日) 19:24:30.37
後から報酬を請求するってかなり悪質ではないか?

850 :デフォルトの名無しさん:2012/04/29(日) 19:33:41.21
後払いはむしろ良心的だし
ここから先は有料ですよというのもごく普通

851 :デフォルトの名無しさん:2012/04/29(日) 20:01:24.99
>>850
自作自演のksクズゴミは失せろ
巣にこもって出てくんな
そのまま飢えちまえ


852 :デフォルトの名無しさん:2012/04/29(日) 20:01:33.36
>ここから先は有料ですよ
ちょっと待って!本番するなら追加で諭吉4枚よ!

>後から報酬を要求する
フフフ…気持ちよかったぁ?ちなみに本番は諭吉4枚だったの。それぐらい持ってるわよね?

後者は悪質っていうかイラっとくる

853 :デフォルトの名無しさん:2012/04/29(日) 20:56:20.41
商取引の基本がわかってねえな
イラッで済むやつをカモって言うんだよ

854 :デフォルトの名無しさん:2012/04/29(日) 21:56:40.48
・ポインタによるアドレス計算で、

int a[3] = {1, 2, 3};
int *x;
x=&a[0];
printf("%d\n", *x);
x++;
printf("%d\n", *x);

このように書いてあったのですが、
x=&a[0]; のところは、x=a; ではダメなのでしょうか?
同じ結果になると思うのですが、
いけない理由があればどうぞ教えてくださいませ

855 :デフォルトの名無しさん:2012/04/29(日) 22:01:57.08
試せばいいじゃん
つーか試せ


856 :デフォルトの名無しさん:2012/04/29(日) 22:12:16.72
いえ、この処理だと試した結果は同じ結果になるのですが、
他の処理をした際に上手くいかないのではないかと思ったので、
x=a;でもいいのか配列の先頭のアドレスを参照すべきなのか聞いた次第です。

857 :デフォルトの名無しさん:2012/04/29(日) 22:28:19.24
これの何がいけないのかわからないです。

char *str[3];
int i;

printf("文字を入力してください。\n");
for(i=0;i<3;i++){
scanf("%s",&str[i]);
}

//ここからエラー
for(i=0;i<3;i++){
printf("入力された文字は%sです\n",str[i]);
}

return 0;
}

858 :デフォルトの名無しさん:2012/04/29(日) 22:37:33.38
>>857
charへのポインタの配列

859 :デフォルトの名無しさん:2012/04/29(日) 22:40:05.70
なんでもない間違えた

860 :デフォルトの名無しさん:2012/04/29(日) 22:44:45.49
>>857
printf("文字を入力してください。\n");
for(i=0;i<3;i++){
str[i] = (char*) malloc (100);
scanf("%s",str[i]);
}

//ここからエラー
for(i=0;i<3;i++){
printf("入力された文字は%sです\n",str[i]);
free(str[i]);
}

861 :デフォルトの名無しさん:2012/04/29(日) 22:44:52.80
誰かモリタボ入れてやれよ
連休明けに消費者センターに行ってセンターじゃ対応できないから警察に被害届出せばいいじゃん

862 :デフォルトの名無しさん:2012/04/29(日) 22:46:23.46
架空請求詐欺www

863 :デフォルトの名無しさん:2012/04/29(日) 22:46:28.10
>>857
X printf("入力された文字は%sです¥n",str[i]);
O printf("入力された文字は%sです¥n",&str[i]);


864 : ◆QZaw55cn4c :2012/04/29(日) 22:49:44.54
>>857
http://ideone.com/6LQon

865 : ◆QZaw55cn4c :2012/04/29(日) 22:55:34.04
>>863
お前はなにをいっている?

>>857
字面上での形式を合わせて、とは考えないことだ。

まず入力された文字群がどこにどのように格納され、そして出力されることを想定しなければならない。
そういう意味では C はかなり具体的なハードウェアイメージがなければ理解が困難だ。
はじめて言語を習うのなら、そして今、言語の選択を変更できるのなら java とか他の言語がお勧めだ。
二つ目以降ならそのままがんばれ。

866 :デフォルトの名無しさん:2012/04/29(日) 23:38:32.19
俺だったら%cとか使うかなどうだろう
そのあたりはCの流派でいろいろとちがうんじゃないかな
だから師の教えの通りに%sをそのまま使った方がいいと思うよ おれは


867 :デフォルトの名無しさん:2012/04/29(日) 23:56:26.30
そもそも>857が何をしたいのかも判らないのに何を言っているんだ。

868 : ◆QZaw55cn4c :2012/04/30(月) 00:10:27.37
>>867
何をしたいのか >>857 自身が記述できない可能性がある。
とすれば、ある程度のエスパーは止むを得ない。

869 :デフォルトの名無しさん:2012/04/30(月) 00:17:52.19
>>831
strtokのどの変に問題があったの?kwsk(_ _)

870 :デフォルトの名無しさん:2012/04/30(月) 00:24:27.07
>>868
エスパーしたのはどこだ?
プロンプト文言から日本語を除外したことか?
それとも領域を用意したことか?
入力長に制限を課したことか?
相変わらず初心者には最小限の修正をすべきということを学ばないな。

871 :はちみつ餃子 ◆8X2XSCHEME :2012/04/30(月) 00:24:30.03
内部に状態を持つような関数はだいたいイケてない。


872 :デフォルトの名無しさん:2012/04/30(月) 00:29:40.55
したがってクロージャもイケてない


873 :デフォルトの名無しさん:2012/04/30(月) 00:31:28.08
>>871
状態を持つというか、内部で文字列を変更されるのはイケてないかもしれない。
けれど、その点は別にQZはなんとも思っていないのではないか。

874 :デフォルトの名無しさん:2012/04/30(月) 00:34:38.76
状態ってのはNULL渡すことだと思うよ

875 :デフォルトの名無しさん:2012/04/30(月) 00:39:18.61
>>869
>strtokのどの変に問題があったの?kwsk(_ _)

>>831 じゃないけど、スレッドセーフじゃないところと、引数の文字列を変更するところかな。

876 : ◆QZaw55cn4c :2012/04/30(月) 00:40:46.76
>>869
strtok() が状態を持つ、という仕様。

877 :869:2012/04/30(月) 00:44:24.19
いろいろレスありがとうございました。
あと誤字すみませんでした。

878 : ◆QZaw55cn4c :2012/04/30(月) 00:45:59.24
>>870
>プロンプト文言から日本語を除外したことか?
それは手元の処理系の都合だ。まあ英語にしても誤解はないだろうから問題ないだろう。

>それとも領域を用意したことか?
>入力長に制限を課したことか?
それこそが問題だ。これは必須の修正だ。
この点を考慮せずして C なぞ書けない、と >>865 で述べたつもりなのだが、読めなかったのか?
いや、そもそも C の本質を理解していないのか?

>相変わらず初心者には最小限の修正をすべきということを学ばないな。
お前さんには C は向かない、java をお勧めする。

879 : ◆QZaw55cn4c :2012/04/30(月) 00:47:40.46
>>873
なんとも思っていないのなら、わざわざ cutToken() などという関数を自力で記述する必要もない。
>>831 のリンク先を読め。

880 :デフォルトの名無しさん:2012/04/30(月) 00:48:31.97
>>878
であれば、それはエスパーでもなんでもない、ただの回答だわ。
1行目を懸念したのであれば、それはエスパーといってもいいかもしれんね。
なぜjavaが出てきたのかは分からんが、初心者が困っているときには必ずしも最適解を与えるべきではないということぐらい学べ。

881 :デフォルトの名無しさん:2012/04/30(月) 00:49:25.50
>>879
*q = '\0';


882 :デフォルトの名無しさん:2012/04/30(月) 00:51:46.07
なもんで、>>821のような言葉を頂戴する事態になるんだわ

883 :はちみつ餃子 ◆8X2XSCHEME :2012/04/30(月) 00:54:25.09
>>872
Cの「状態を持つ関数」とクロージャは同じではないけどな。
いずれにせよ、 strtok はリエントラントとかスレッドセーフとか以前の問題で、
ふたつの文字列を交互に扱うということさえ出来ないってのは格好悪い設計。

884 :デフォルトの名無しさん:2012/04/30(月) 00:55:24.60
Qにとってはそれがエスパーレベルの回答だと思えるんだろ
いつもエスパーすればモリタポもらえるぐらいの普通のコードが書けるかもな

885 : ◆QZaw55cn4c :2012/04/30(月) 01:03:42.31
>>875
>引数の文字列を変更するところかな。
実は、これはそんなに問題とはおもっていない。

>スレッドセーフじゃない
これも必要に応じて対応するから、すでに準備されている関数がスレッドセーフかどうかが明示されておれば問題とはしない。

あらためて考え直すと、かなり主観的な判断をくだしているようだ。
そういう意味では、

>>871
>イケてない

が極限にまで正確な記述であると、心の底から同意する次第である。

886 : ◆QZaw55cn4c :2012/04/30(月) 01:06:15.29
>>880
>初心者が困っているときには必ずしも最適解を与えるべきではない
確かにこの点は判断は分かれるだろう。それ自体については認める。

私は最適解を提示する立場。

887 :デフォルトの名無しさん:2012/04/30(月) 01:08:49.79
>>885
> >引数の文字列を変更するところかな。
> 実は、これはそんなに問題とはおもっていない。
これと>>879の違いをkwsk

ぶれただけ?

888 : ◆QZaw55cn4c :2012/04/30(月) 01:10:20.63
>>881
与えられた引数(とそれに関連するコンテキスト)を内部で変更してしまう、という点については、それさえわかっておれば対応可能だから問題とはしない。

889 :デフォルトの名無しさん:2012/04/30(月) 01:12:40.85
俺がそういう思想の元に関数を作って公開していたのであれば、
>>873に「そう、そこは問題視していない」とレスするがなぁ。

890 : ◆QZaw55cn4c :2012/04/30(月) 01:12:46.52
>>887
>>879 で示した >>831 のそのまたリンク先は
>引数の文字列を変更
している。
>>885 と >>879 になんら差異はない。

891 :デフォルトの名無しさん:2012/04/30(月) 01:14:01.64
せいぜいつっこむなら、>>873が状態の話を別の話にずらしてしまったことについてだけれど、
それについてはエスパーするほどでもないだろうから、一般には捨て置いていいとおもう。

892 :デフォルトの名無しさん:2012/04/30(月) 01:20:54.85
>>873 QZは引数を変更することについてはなんとも思ってないんでない?
>>879 なんとも思ってないのに作るわけないだろボケが!!!

>>875 引数の文字列を変更するのはちょっと問題かもね
>>885 問題だとは思ってないよ

>>885>>879になんら差異はない(キリッ

やっぱどうかしてるわ。

893 :デフォルトの名無しさん:2012/04/30(月) 01:27:09.02
strtokなんて初めて知ったんだけど、C言語マスターするには標準ライブラリ関数全部覚えなきゃだめ?

894 :デフォルトの名無しさん:2012/04/30(月) 01:27:53.99
マスターじゃねーよ
そこからようやく始まるんだよ

895 : ◆QZaw55cn4c :2012/04/30(月) 01:28:29.35
>>892
1) 状態を持つこと
2) 引数として渡された文字列を、内部で変更してしまうこと

の両方が >>873 で記述されているが、そのうち、私は状態を持つことについて問題視している。
ただし、今となって白状するが、当初 >>831 の時点ではそれを明確に記述できない状態であった。
問題点の記述化に関しては >>871 に助けてもらったことを認め、 >>871 に感謝する次第である。

896 :デフォルトの名無しさん:2012/04/30(月) 01:28:52.89
まずはいったんながめる。
そうすれば、時々使いどころに気づくと思うから、使う。
頻度が低いものは忘れていくから、たまにながめなおす。
そんな感じでいいと思うよ

897 : ◆QZaw55cn4c :2012/04/30(月) 01:29:30.12
>>893
存在することを知っており必要に応じて参照・試行する手間さえ厭わなければ全然 OK

898 :デフォルトの名無しさん:2012/04/30(月) 01:32:15.88
>>894 >>896 >> 897
なるほどー、ありがとうございます。

899 :デフォルトの名無しさん:2012/04/30(月) 01:43:15.21
>>894
mainを書いたときから、いや、C言語ってのがあるんだ?ってところからすでに始まっている。

900 :デフォルトの名無しさん:2012/04/30(月) 13:37:10.18
>>895
副作用のある関数を全て否定するのか? (肯定しろと主張しているのではない)

901 : ◆QZaw55cn4c :2012/04/30(月) 13:43:13.57
>>900
状態を持つことと副作用を持つこととは違う。状態を持たせる場合は静的変数を表に出して記述したい。


902 :デフォルトの名無しさん:2012/04/30(月) 14:00:21.39
ところでなんでQZaw55……はキャップつけてんの?なんかの権威なの?

903 :デフォルトの名無しさん:2012/04/30(月) 14:08:48.88
>>901
char* qz_strtok(char **, const char *);
てことなら俺もそう思うが
char* qz_strcat_need_free(const char *, const char*);
みたいのはやだな

904 : ◆QZaw55cn4c :2012/04/30(月) 14:19:38.50
>>902
http://toro.2ch.net/test/read.cgi/tech/1313183984/
しょーばいのためです霧

905 : ◆QZaw55cn4c :2012/04/30(月) 14:28:46.47
>>903
>char* qz_strcat_need_free(const char *, const char*)
これって、例の
char *p = qz_fgets(fp); //内部で malloc() して関数外に丸投げ
free(p);
のことですか?

確かに、win32api の一部の関数群などにみられる
n = NeedBufferFunction(NULL, ...)
buff = malloc(n);
result = NeedBufferFunction(buff, ...); // ここで目的の作用を発揮させる。
free(buff);

という流儀があるのは、あー、認識していますけれども、あー、そこまでやるというのも、うー、どうかなと、あーうー。

906 :デフォルトの名無しさん:2012/04/30(月) 14:50:42.08
>>905
ガッしたくなるな

本来
n = EstimateBuffer(that, fragment1, fragment2);
buff = malloc(n);
BuildBuffer(that, buff, fragment1, fragment2);
free(buff);
とすべきところ、エクスポートテーブルをけちるためとはいえ

907 :デフォルトの名無しさん:2012/04/30(月) 14:53:49.19
>>904
そのスレでだけキャップつければいいんじゃないの?
よそのスレでも宣伝のためにキャップつけるなんてことせずにさ
反感もたれて逆効果だと思うけど?

908 :デフォルトの名無しさん:2012/04/30(月) 14:56:45.09
つけてもつけなくてもアホな発言で叩かれるんだから、つけてあったほうがNGリストが効くのでありがたい

909 :デフォルトの名無しさん:2012/04/30(月) 15:04:40.05
NGに役に立つが、都合の悪いときはキャップ外して自演にまわることもできるからな……
どのスレでも触れちゃダメなやつが湧くもんだね

910 : ◆QZaw55cn4c :2012/04/30(月) 15:07:08.71
>>907
>>908 という意見もあるし、便宜をはかるのも一興かと
本気で煽るときははずします

911 : ◆QZaw55cn4c :2012/04/30(月) 15:14:35.22
>>906
今きがついたんですが、
>>905 の NeedBufferFunction() は内部に static な領域を持たなければならなくなりますね。これはもっとも嫌うところ。
とすると、>>906 のアンカー「that」 の存在が必須か?現時点でよくわかっていないから実装してみようか?んー、んー。

912 : ◆QZaw55cn4c :2012/04/30(月) 15:17:54.11
>>909
煽るためには自演も辞さない。でも炎上のなかで新しい概念が浮かび上がるという収穫は捨てたもんじゃないでしょう?
炎上するだけで終わってしまう、という迷惑な結果が大半ではありますけれども。

それはともかく自演認定はわりと外れていますねえ、実のところ。

913 :デフォルトの名無しさん:2012/04/30(月) 15:20:09.97
証明も反証もできない自演認定の敗者は釣られた者

914 :デフォルトの名無しさん:2012/04/30(月) 15:22:28.69
引数をいんすうって読んじゃった場合、どのようにして誤魔化すべきでしょうか?

915 :デフォルトの名無しさん:2012/04/30(月) 15:25:25.03
wikipediaだと「いんすう」でもいいように書いてあるけど。

916 :デフォルトの名無しさん:2012/04/30(月) 15:29:21.70
どっかの解説サイトで引数は「ひきすう」と読み、いんすうと読むのはバカ。笑われてろって書いてあったんだ
どうでもいいことだから次の質問お先にどーぞ

917 :デフォルトの名無しさん:2012/04/30(月) 15:30:48.49
>>914 は、いいか悪いかじゃなく、ごまかし方を尋ねている

918 : ◆QZaw55cn4c :2012/04/30(月) 15:50:32.47
>>914
argument は independent variable のことだから略して「引数」だ!
dependent variable (って単語はあるのか?しらない。)はパラメータ parameter という。

プログラム言語では argument も parameter も同じ意味のようなきがしますけれども。

919 :デフォルトの名無しさん:2012/04/30(月) 15:52:03.45
QZが元気だな
仕事無くなったのか

920 :デフォルトの名無しさん:2012/04/30(月) 16:14:49.36
のんきな奴だな
世間では「昭和の日」の振替休日なんだよ

休日に働く人だっているし
平日に休む人だって普通にいるが
それ以前の問題だ

921 :デフォルトの名無しさん:2012/04/30(月) 17:08:59.18
parameterは関数を定義したときに用いられるplace holderとしての
変数のことを指し、argumentは関数にinputする具体的な値を指す。
英語圏の人も、厳密でない人は区別を曖昧にするし、はっきりと区別する
ことは必要ではないと思うけどね。

俺は日本語の「引数」というのはどうも好きになれない。
他の訳語はうまいなって思うのもあるけど、これは意味的にも
読み方的にも意味不明に感じる。

922 :デフォルトの名無しさん:2012/04/30(月) 17:19:06.49
英語圏にもバカはいるってだけ

ISO/IEC9899 において argument と parameter は区別されているし
望ましくない言葉遣いを牽制もしている

923 :デフォルトの名無しさん:2012/04/30(月) 17:48:22.55
>>921
もっと解りやすく。

924 :デフォルトの名無しさん:2012/04/30(月) 17:48:47.40
>>921
argcじゃなくてparamcにすべきってこと?

925 :デフォルトの名無しさん:2012/04/30(月) 18:08:45.22
int func(int a) { return a * 2; } // aはparameter(仮引数)

int x = func(100); // 100はargument(実引数)

こうじゃね?


926 :921:2012/04/30(月) 18:21:32.49
例えば、

int add(int i, int j) {
return i + j;
}

を考える。ここで、iやjは関数を呼び出すまでは具体的な値を持たない
空の箱みたいなものものでしょ?
place holderというのはそういう意味で、iやjはこの関数に使われている
parameterとなる。
一方、この関数を具体的に呼び出すとき、例えば

add(1, 2)

においてiやjに代入される1や2のことを、argumentという。

>>923これでよい?

927 :923:2012/04/30(月) 19:28:04.87
よきにはからう。
ありがとう。> >>925,926

928 :デフォルトの名無しさん:2012/04/30(月) 21:31:39.50
文字列 SRC を文字列中の文字 SEP で区切って,配列 RET に格納する関数 split を作成せよ.
返却値は分割数である.ただし,分割数は最大 MAX までとする.

この関数を作って実行したのですがうまくいきません。
どこが間違っているのでしょうか。

http://codepad.org/C5gSM3UF

929 :はちみつ餃子 ◆8X2XSCHEME :2012/04/30(月) 22:14:49.62
>>928
どこが間違ってるかとか解説するのダルいから、とりあえず、その仕様に沿った関数を俺なりに書いてみた。
http://codepad.org/8aWRx8YL

あと質問の本筋ではないが、 main 関数の型をちゃんと書かないとこのスレではもめる元になる。

930 :デフォルトの名無しさん:2012/04/30(月) 22:18:40.93
横着しねえでちゃんと解説しろよ
スレ主旨を勘違いしてんじゃねー

931 :デフォルトの名無しさん:2012/04/30(月) 22:27:43.90
やりたいことが微妙に食い違ってる気がする

932 :デフォルトの名無しさん:2012/04/30(月) 22:30:35.94
面倒クセェからstrtokのラッパでいいだろもう


933 :はちみつ餃子 ◆8X2XSCHEME :2012/04/30(月) 22:32:14.40
この手の質問はとても困る。 間違い箇所を強いて言うと全体的にとしか…。
i は文字列毎のインデックスで、 count が分割数であるべきなんだけど混同しているのが根本的な原因じゃないかなぁとは思う。

934 :デフォルトの名無しさん:2012/04/30(月) 23:19:36.17
>>928をちょっといじってみた

どこが悪いかははちみつさんの言うとおり全体的におかしいのでアドバイスできませんが。
多分こういう感じにしたかったのかな?
http://codepad.org/CZ4ZbAsQ

935 :デフォルトの名無しさん:2012/05/01(火) 01:25:27.81
>>933
こいつは何でトリップ付けてんの?
何かの権威なの?

936 :デフォルトの名無しさん:2012/05/01(火) 01:50:11.72
う る せ ー ク ズ

937 :デフォルトの名無しさん:2012/05/01(火) 05:22:51.17
共用体ってオワコンですか?

938 :デフォルトの名無しさん:2012/05/01(火) 05:28:01.95
オワコンだかなんだか知りませんが、使い途を思いつけない人には無用のものでしょう。

939 :デフォルトの名無しさん:2012/05/01(火) 06:34:44.27
お 前 が 無 用 の オ ワ コ ン だ ク ズ

940 :デフォルトの名無しさん:2012/05/01(火) 07:35:18.33
共用体は終わったコンテンツです.

941 :デフォルトの名無しさん:2012/05/01(火) 07:41:17.93
使えない奴の戯言だな。

942 :はちみつ餃子 ◆8X2XSCHEME :2012/05/01(火) 07:51:03.10
>>937
私も >>241 で述べた様に最近知ったのですが、 C11 ではようやく無名共用体が規格に取込まれたようです。
C++ では当初からある機能であり、 C においても処理系の一部 (Turbo C 等) はかなり古くから拡張として提供していた機能です。
規格改定の際に検討される範囲内に入っているくらいには使われていると考えていいでしょう。

私が知っているところでは yacc が生成するコードで共用体が使われているので、それ見ればどういう用途で使うか参考になるかもしれません。
C++ なら共通のクラスを基底にもつクラスを定義して dynamic_cast するような状況でしょうか。

943 :デフォルトの名無しさん:2012/05/01(火) 07:55:07.11
使う場面ないよ

944 :デフォルトの名無しさん:2012/05/01(火) 08:24:21.37
>>928
d = split(str, ret , c[0], m);
printf("分割数は%dです。\n", d);
printf("分割元文字列は%sです。\n", str); /* 分割した1つ目しか出てこない */
こうなるのは想定してる?

945 :デフォルトの名無しさん:2012/05/01(火) 10:51:44.72
>>937>>943
メッセージループ処理とかで、関数テーブルを使うような場合によく使う。
プロトタイプ宣言を揃える必要があるため、引数を共用体にして、型が異なる引数を
処理できるようにしている。
割りと一般的な手法だと思う。


946 :デフォルトの名無しさん:2012/05/01(火) 11:03:50.50
>>935
SCHEMEスレが過疎ってるから出張してきたんだろ

947 :はちみつ餃子 ◆8X2XSCHEME :2012/05/01(火) 11:25:58.95
>>932
strtok だとうまくない。
素直に strtok を使って実装するとこうなるが

int split(char* str, char* ret[], char sep, int max) {
int count = 0;
char* t, tok[] = {sep, '\0'};

t=strtok(str, tok);
while(t!=NULL) {
ret[count++]=t;
if(count>=max) break;
t=strtok(NULL, tok);
}
return count;
}

例えば分割数が最大2で、カンマで分割するとした場合、
aaaa,bbb,ccc は aaaa と bbb,ccc に分割されず aaaa と bbb になってしまう。

948 :デフォルトの名無しさん:2012/05/01(火) 12:09:09.70
int split(char *str, char *ret[], char sep, int max){
int count = 0;
char *t, *x;
char tok[2] = {sep};

t = strtok(str, tok);
while(t != NULL){
ret[count++] = t;
if(count >= max)
break;
t = strtok(NULL, tok);
}
x = strtok(NULL, tok);
if(x != NULL)
*(t + strlen(t)) = sep;

return count;
}


949 :948:2012/05/01(火) 12:10:55.22
ごめん。
バグってます。

950 :デフォルトの名無しさん:2012/05/01(火) 12:27:39.17
すぐに直せば許すよ

951 :デフォルトの名無しさん:2012/05/01(火) 12:46:24.35
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1286541687
ものすごいアホのC言語使い(ohhara_008)発見。

952 :デフォルトの名無しさん:2012/05/01(火) 13:02:39.11
大丈夫、他も阿呆だらけだ。

953 :デフォルトの名無しさん:2012/05/01(火) 13:15:27.98
C++ と言うか C で今までで一番「ああその発想はなかった」てのは,int hoge[] = { #include "hoge.csv" };

http://d.hatena.ne.jp/tt_clown/20100904/1283587136

954 :デフォルトの名無しさん:2012/05/01(火) 13:19:49.07
>>951
プログラマーってなんでこうも言葉のコミュニケーションが苦手なんだろうな?
その説明が相手に伝わるかどうかに興味が無いんだろうな

955 :デフォルトの名無しさん:2012/05/01(火) 13:21:38.72
>937
DirectXのライブラリでも使用してたはずだが。

956 :デフォルトの名無しさん:2012/05/01(火) 13:22:54.41
>>953
学生の時、悪い例としてそういう記述を習った。

957 :デフォルトの名無しさん:2012/05/01(火) 13:31:28.70
>>956
で、なんでそれが悪いのかもちろん説明できるよな?
是非とも蒙昧なオレ様に教えてくれよ


958 :デフォルトの名無しさん:2012/05/01(火) 13:32:40.99
>>954
プログラムできないやつがいいそうなこと。

959 :デフォルトの名無しさん:2012/05/01(火) 13:35:41.49
>>951
むしろレスがつきすぎてて気持ち悪い

960 :デフォルトの名無しさん:2012/05/01(火) 14:46:19.17
つーか、どのレスも語りたがりだったり勘違いだったりで気持ち悪い。

961 :デフォルトの名無しさん:2012/05/01(火) 14:49:30.73
前に俺に改行コードで云々ぬかしてきやがったクズと似てるな
おっさんになるとぐだぐだと長くしゃべりたがるからな
プログラマーも高齢化が始まってるんだろう

962 :デフォルトの名無しさん:2012/05/01(火) 15:04:07.65
アホがなんか言ってるな。

963 :デフォルトの名無しさん:2012/05/01(火) 15:04:17.78
出汁にされただけでは?

964 :デフォルトの名無しさん:2012/05/01(火) 17:01:36.13
>>961
自分のことは見えないと言う、いい見本乙

965 :デフォルトの名無しさん:2012/05/01(火) 17:15:10.74
うひょ

966 :デフォルトの名無しさん:2012/05/02(水) 00:05:53.75
出汁(だし)

967 :デフォルトの名無しさん:2012/05/02(水) 01:57:30.35
はい

968 :デフォルトの名無しさん:2012/05/02(水) 13:21:08.52
で?

969 :デフォルトの名無しさん:2012/05/02(水) 17:50:00.46
日本では底辺職業
底辺職業ドカタらしいくて良いじゃないか

970 :デフォルトの名無しさん:2012/05/02(水) 18:42:49.61
( ゚∀゚)o彡° 底辺!底辺!

971 :デフォルトの名無しさん:2012/05/02(水) 20:42:18.00
この国にプログラマより身分の低い職業は存在しない

972 :デフォルトの名無しさん:2012/05/02(水) 22:59:06.66
っ介護
っ清掃

973 :デフォルトの名無しさん:2012/05/03(木) 02:54:45.51
>>971
いすにすわって仕事ができるね

974 :デフォルトの名無しさん:2012/05/03(木) 08:44:36.18
>>971
そうなのか
嘆いていないで地位改善に努めりゃいいじゃん

975 :デフォルトの名無しさん:2012/05/03(木) 09:35:57.73
板ちがいですよ!

976 :はちみつ餃子 ◆8X2XSCHEME :2012/05/03(木) 10:25:01.54
マ板へGo!!

977 :デフォルトの名無しさん:2012/05/03(木) 22:12:17.20
現代のえたひにん

978 :デフォルトの名無しさん:2012/05/04(金) 00:02:16.96
c言語使えるようになりたいのですが
まずは、basicとか始めるべきなのでしょうか?

979 :デフォルトの名無しさん:2012/05/04(金) 00:02:58.85
C言語からはじめるべき。

980 :デフォルトの名無しさん:2012/05/04(金) 00:05:27.32
日本語と英単語から始めよう。

981 :デフォルトの名無しさん:2012/05/04(金) 00:19:24.62
C言語は上級者向けすぎるから
perl python ruby とかのラクなところから入る
そのあとC、それなりに分かった気になったら学習用としてZ80
Cを極めたいなら機械語は絶対にやっとけ


982 :デフォルトの名無しさん:2012/05/04(金) 00:28:29.85
調べてみると
c、c++、c#とか
cの仲間がいろいろあるようなのですが
どれから始めるべきでしょうか

983 :デフォルトの名無しさん:2012/05/04(金) 00:30:58.79
C言語からはじめるべき。

984 :デフォルトの名無しさん:2012/05/04(金) 00:35:45.26
プログラミングしたいだけなら
perl python ruby とかのラクなところから入る


985 :デフォルトの名無しさん:2012/05/04(金) 00:38:28.09
ありがとうございました

986 :デフォルトの名無しさん:2012/05/04(金) 00:41:30.95
C言語でゲームプログラミングをするうえでハードウェアの知識って必要ですか?
ハードウェアは基本情報の午前とかの知識を言ってます

987 :デフォルトの名無しさん:2012/05/04(金) 01:01:29.72
>>986
必要
PS3なんかはハードのアーキテクチャが難しすぎた……とかいう話もある

ttp://dic.nicovideo.jp/a/gb%E9%9F%B3%E6%BA%90
ゲームボーイの音源いじるだけでコレな
CPU回りはもっともっともっとクソな機械語が待ってる
あとはテメーで調べて判断しろ


988 :デフォルトの名無しさん:2012/05/04(金) 01:11:10.64
>986
目的次第。
ゲーム作るなら必須。
ちょこっと計算するだとか、ファイル操作レベルならいらない。

989 :988:2012/05/04(金) 01:12:41.21
>ゲームプログラミング
ゲームと明言されてたorz

WindowsならDirectXやOpenGLの知識が必要だな。

990 :デフォルトの名無しさん:2012/05/04(金) 01:17:07.06
>>987
>>988
返信ありがとうございます

991 :デフォルトの名無しさん:2012/05/04(金) 01:23:16.40
ゲーム会社で掃除かなんかのアルバイトから始めたほうがいいかもね

992 :デフォルトの名無しさん:2012/05/04(金) 01:37:14.00
それは掃除のおねーちゃんがしてくれる。

993 :デフォルトの名無しさん:2012/05/04(金) 01:52:08.39
AWKもいいよ。Linux, FreeBSDなら、最初からはいってるとおもう

994 :デフォルトの名無しさん:2012/05/04(金) 01:53:27.44
Cのコンパイラもはいってる

995 :デフォルトの名無しさん:2012/05/04(金) 02:17:51.36
次スレはよ


996 :デフォルトの名無しさん:2012/05/04(金) 03:37:39.98
>>994
最近のLinuxディストリにはコンパイラ抜かれてるやつもあるぜ
まあパッケージ一発で入るが

997 :デフォルトの名無しさん:2012/05/04(金) 04:06:18.94
次スレ
C言語なら俺に聞け(入門編)Part 101
http://toro.2ch.net/test/read.cgi/tech/1336071926/

998 :デフォルトの名無しさん:2012/05/04(金) 08:49:28.37
UME

999 :デフォルトの名無しさん:2012/05/04(金) 08:53:52.91
100スレ目もつつがなく終わったな
大変喜ばしい


1000 :デフォルトの名無しさん:2012/05/04(金) 08:57:59.62
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

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

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)