C言語なら俺に聞け(入門編)Part 100
レス数が1000を超えています。これ以上書き込みはできません。
0001営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 21:01:32.89★前スレ
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/
0002営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 22:14:04.750003営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 23:08:53.13乙
0004営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 23:21:06.70乙
0005営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 00:22:16.85え?独り言はチラシの裏に書けって?どうも
0006営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 01:06:28.97std::stringが使いにくいってこと?
それなら同意。
0007営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 01:30:32.63Cと比べれば全然マシだと思うけどなぁ
0008営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 03:35:38.670009営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 04:31:39.18char buff[十分なバッファ];
とかしてsnprintfの戻り値チェックとかめんどくさいっす
0010営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 04:37:22.900011営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 04:39:54.710012営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 05:01:42.70あれってコンパイルするとマクロみたいに展開されて
デバッグ凄く大変になるんじゃなかったっけ?
昔ATLとか出始めの時に使おうと思ったけど
メンテナンス性が凄く悪そうな印象だったからやめた記憶がある。
なんかライブラリと自分のコードの境目が曖昧になるのって
あんまり居心地がよく無い
0013営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 05:07:43.040014営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 05:32:14.91どういうこと?
できたらサンプルソースお願い。
0015営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 12:16:01.08#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;
}
0016営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:08:20.20ヌル文字で初期化ってどうなのかなあ。
0x20で初期化するのってどう?
0017営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 16:16:43.780018営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 17:01:47.64asciiの積もりだろうから空白文字だろうけど、それで初期化することは無意味。
先頭にナル文字を書いておけば、長さ0の文字列として扱える。
0019営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 22:29:08.21んーと、それを簡単に書くと
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するのも微妙
0020営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 22:53:54.410021営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 22:54:09.060022営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 23:02:22.150023営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 23:07:52.560024営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 23:20:53.340025営利利用に関するLR審議中@詳細は自治スレへ
2012/03/31(土) 23:32:04.010026営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 01:58:27.03まいったか!?
0027営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 02:05:52.100028営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 08:38:49.750029営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 09:34:49.490030営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 10:32:31.720031営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 12:13:28.81selection:
__STATE_IF expression __STATE_THEN expression __STATE_ELSE expression
とした場合にthen、else両expressionが還元されるので、
if x then a=1 else a=2のような構文がインタープリター動作の場合破綻してしまい困ってます。
これを解決する一般的な良い方法があったら教えてください。
0032はちみつ餃子 ◆8X2XSCHEME
2012/04/01(日) 12:39:17.18小手先のトリックを使えばなんとかならんでもないけど…
例えば
cond: __STATE_IF expression __STATE_THEN
ifstatement: cond expression __STATE_ELSE expression
という風にふたつに分離してしまえば条件節の結果を先に得られるので、
それが真であれば else 節はよみとばす (パースだけして副作用を発生させないようにフラグを立てるとか) というような実装にできる。
0033営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 13:27:39.48フラグで読み飛ばすって、具体的にどうやるか思いつかないです。
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
(簡単のためにインタープリターにしようと思ったのだけど、コンパイラー作る方が逆に簡単っぽい)
0034営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 13:38:45.22lexのパーサーモードに%x <if_then>や %x <if_else>を用意して
字句解析の段階でダイレクトに if_expression の読み飛ばしを指定してみてはどうかと。
gotoをラベルテーブルに対するyyin操作で実装するような感じで。
0036営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 18:42:26.45(別にポインタを用意するのはナシで)
もう長年使ってないから忘れてもーた…(´Д`)
0037営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 18:49:06.320038営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 18:50:14.09あんま変わんね
&HOGE[i].fuga
0039営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:10:58.83004036
2012/04/01(日) 19:15:16.83�d�d
0041営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 21:53:47.780042営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 22:03:41.77また困ったことがあればいらっしゃい
0043営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 23:24:31.090044営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:08:04.29> また,この本は,プログラム内の定数にマクロ定数を使えと言う。今でもそゆ古典的なことを勧めてる人がいるのかと,ちょっとびっくりしたんだけれども,何も知らない子に変なこと教えるなといいたい。
このブログにこんなことが書いてあったのだけど、普通はどうするんでしょうか。
0045営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:17:02.130046営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:28:03.59#defineではなく、enumで、数値に名前をつける。constもつかえる
「数値は、マクロではなく定数として定義しよう。Cプログラマは、マジックナンバー
の値を管理するのに伝統的に#defineを使ってきた。しかしCのプリプロセッサは
強力だが乱暴なツール(中略)
CとC++では、整定数をenum文で定義できる。C++では任意の型の定数をconstで
宣言できる。
const int MAXROW = 24, MAXCOL = 80;
」
『プログラミング作法』p. 41(ブライアン・W・カーニハン、ロブ・パイク)
0047営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:28:57.72オブジェクトサイズは言語に計算させよう(中略)
2や4ではなく、sizeof(int)
(中略)
char buf[1024];
fgets(buf, sizeof(buf), stdin);
バッファサイズは依然としてマジックナンバーだが、宣言に1回登場するだけで
済む」
『プログラミング作法』p. 43(ブライアン・W・カーニハン、ロブ・パイク)
0048営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:38:17.48C++ならいいけど、Cのconstは外部リンケージだから定数には使いにくいっていうか。
配列の要素数とか使えないところもあるし。
0049営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:47:29.02未来から来て、過去の人を笑うのは簡単。
100%バグのないプログラムもない。
人間謙虚でありたいものですね。
0050営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 15:11:02.71具体例ほしいなー
0051営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 15:30:05.01const int TBL_SIZE = 10;
int tbl[TBL_SIZE]; ← エラー
0052営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 15:55:08.31あー、ごめん
それがエラーになるような実行環境の具体例ね。
0053営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 15:59:22.29constはコンパイラーオプションだからな
0054営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:03:23.39アホなん?
http://codepad.org/hAuu0X9H
0055営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:04:00.48バカのくせに上から目線w
0056営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:05:49.62これもC++の仕様と混同してるだけなんじゃないの?
0057営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:08:25.35そいつ、C++知らねーんじゃねーの?
今時Cの本もないだろに。
0058営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:13:34.58初めて知ったわ
file scopeだとダメなんだね
0059営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:14:45.520060営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:16:30.12C++だとマクロよりconstやらinline関数の使用が推奨されてるから、
Cでもそうだと思ってるんじゃないの? >>44 のブログの人。
0061営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 16:17:13.730062営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 17:22:08.720063営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 17:34:19.810064営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 18:19:09.30#defineで普通に問題なく事は進んでいくし
0065営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 18:34:48.86済むってくりだからね。
0066営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 18:42:09.29ほとんど #define でやってるように見受けられるけど
0067営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 18:44:18.30プロトタイプを変更したらconst付けてないのが渡せなくなるしマジうざいんだけど
0068営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:04:12.36なんか違ってないか?
0069営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:05:06.65こう言う動作だっけ?
もうC++書いてないから忘れたけど
関数の引数でconst宣言するのって
関数内部で参照先の値を変えませんよって言ってるだけじゃなかったっけ?
呼び出し側でパラメーターに非const渡せないとか有るんだけっけ?
0070営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:08:01.790071営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:14:20.49さすがカニチャーハンさん
尊敬しております(^人^)
0072営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:45:10.030073営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:46:50.63ろくに知りもしないなら書くなよ。
0074営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:47:58.770075営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 19:58:05.940076営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:03:33.16メンバ変数を書き変えませんよの const メソッドとごっちゃになってる気配
0077営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:06:41.210078営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:09:25.50と思って「プログラミング作法」捨てたんだよな。
もったいないことした。
0079営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:18:51.510080営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:26:02.51ほら また 僕のそばで〜
0081営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:29:00.450082営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:30:43.33俺も欝でITは辞めたけど、未だにプログラムは書いてる。
でも辞めた際、結構本捨てたなぁ…
0083営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:32:32.62レス遅くなってすみません。色々あって職を変えることになり、覗く暇がなかったもので^^;
なるべく自分で答えを見つけたいのでどうしても分からなくてどうしようもない時はまたお願いしていいですか?優しい言葉ありがとうございます!
0084営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:51:26.12オブジェクトを実際に値で渡すとスタックを大きく消費するしそのたびにコンストラクターや
コピー演算子が呼ばれてしまうが、constを付けることでオブジェクトのアドレスをスタックにコピーするだけですむのだ
関数内部でオブジェクトが変更されないことが保証されているので、
呼び出し側はあたかも引数に渡したオブジェクトをプリミティブ型のように扱うことが出来る。
いわゆる近代的な言語で設計されているStringオブジェクトやIntegerオブジェクトのようなプリミティブ型を
具象化したクラスが、非コンストメンバーを持たないことで、プリミティブ型のような動作を
するのはとても興味深い。このような動作をさせるのにコンスタントオブジェクトという考え方はとても重要である。
0085営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:52:28.25脳みそにウジでも湧いてんのか
Cのconst語れよ低能
0086営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 20:52:37.75C++スレでやれ
それは const とともに & も必要じゃないかい?
0088営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:06:38.150089営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 22:06:32.90なんか>>51とか>>54で不安になって確認しなおしちゃったよ
0090営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:19:32.910091営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:26:18.32真の意味の可変長配列(スコープの途中で要素数を変更したりできるもの)ではないけど…
0092営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:28:24.90http://privatepaste.com/bfbce325f4
0093営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:29:25.42そう、それのこと
0094営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:29:40.12珍しくあってる。
0095営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:31:26.78いや、>>54の話。
0096営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:49:10.900097営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 09:39:40.06これ、ちゃんと最適化されて静的配列になるのかね。
ヘッダーファイルで#define のかわりにconst使うとすると、
static const int n = 100;
とか
extern const int n;
とかしないといけないじゃん。
下のようにすると最適化は不可能だよね。
C99のお作法的にはどうするのが正解なんだろ。
0098はちみつ餃子 ◆8X2XSCHEME
2012/04/03(火) 12:44:57.53処理系によって、状況によって最適化されるよ。
VC や gcc は翻訳単位をまたぐ最適化もできる。
0099営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 14:27:30.290100営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 14:43:57.68ncurses
0101営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 16:31:09.980102営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 17:11:32.510103営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 22:35:34.420104営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:02:56.88サイトとか教えて
0105営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:04:46.23↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
↓
「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
↓
「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
↓
神の誕生
0106営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:18:51.300107営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:23:43.290108営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 23:29:21.260109営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:17:35.180110営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:22:45.74組み込み系なら一層ね。
0111営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:23:40.87ただ盲目的に知識だけ身に付けてもそれで何か勝手に生み出されるかっていうとそういうわけではないよね
0112営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 00:52:23.09オートマトンとかグラフとか、汎用性が高いと信じられているものと
それに付随するアルゴリズムは、知っておくだけでも有益
0113営利利用に関する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*で定義しようとしたらエラーが出ました。
0114営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 18:54:18.96×そのように定義するのが適切でしょうか?
○どのように定義するのが適切でしょうか?
0115営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 18:54:36.280116営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 19:17:36.35手のつけられないゴミカスが出来上がる
お前がアホなうちは
そんなクソをこの世に生み出すのは
やめ☆とけ
0117営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 19:26:24.22void *ip3;
ip3 = malloc(sizeof(int));
*ip3 = 2;
これがエラーになる理由を考えよう。
0118営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 19:47:02.18void *で宣言して使う時にキャストすりゃできるけどさぁ…
ip1とip2のmallocはいらないだろw
0119営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 19:48:37.64> 「int型からポインタ何個分離れているか」はドントケア
うんうん、ドントケアだよドントケア。
そんなこと考えないからね。
0120営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 19:56:20.53*int malloc_i2(int**);void free(int**)
**int malloc_i3(int**);void free(int***);
0121営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 22:05:14.41ここだけ抜き取ってみると線形リストでことたりるんじゃね? と思ってしまう
0122営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 22:16:38.57よくわからんが、やりたい事は↓のようなことじゃないか?
int *pi, **ppi, ***pppi;
// int用領域確保
pi = malloc(sizeof(int));
// intの値設定
*pi = 2;
ppi = π
pppi = &ppi;
printf("%d\n", ***pppi);
0123営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 22:18:14.92ppi = π
って右辺は化けている。
化けないようにアンパサンドを全角で書くけど。
ppi = &pi;
です。
0124営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 22:29:39.700125営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 22:31:20.86モロにギリシャアルファベットのパイになってる
0126営利利用に関するLR審議中@詳細は自治スレへ
2012/04/04(水) 23:49:01.63アンパ **;ってHTMLの特殊文字の書き方だったのを思い出して、
下記のように書き換えました。
int i, *pi, **ppi, ***pppi;
// int 値設定
i = 2;
// 各ポインタ設定
pi = &i;
ppi = π
pppi = &ppi;
printf("%d\n", ***pppi);
0127営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 00:03:37.860128営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 00:59:15.58mallocとかでメモリ確保するのに実メモリサイズ以上の
メモリ取ろうとしたい場合ってどうすりゃいいの?
例えば、PCに8GBの実メモリ積んでて、10GBのメモリを確保したい時とか。
仮想メモリとか、実メモリで説明してくれ。
ダメなら、どういうエラー処理すればいいのかもよろしく。
0129営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:01:24.20設計見直して、実メモリ内で収まるようにする。
0130営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:02:20.31以上。
0131営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:11:18.41kwsk
0132営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:17:07.11ggrks
0133営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:17:39.17環境依存だ
mmap でもググってろ
0134営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 01:22:55.020135営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 02:08:13.69パフォーマンスが大きく異なるのですが一体何が原因なのでしょうか?
以下strlenの自作関数strlen2
int strlen2(char *Buff){
int i=0;
while(Buff[i]!='\0'){
++i;
}
return i;
}
0136営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 02:09:36.350137営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 02:25:26.40具体的にどのようなコードにすればよいのでしょうか?
0138営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 02:31:16.56Cの標準ライブラリ関数は非常によく使われるので、
実装がチューニングしてある事も多い
内部でSSEのような拡張命令を使ってたりね
あと、コンパイラが標準ライブラリ関数を検出して、
インライン展開などの最適化をかけている事がある
0139営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 03:00:50.03PCがWindowsマシンをさしているのなら、実メモリサイズの制限は受けないよ。
0140営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 05:08:07.80線形リストをやりたいのではなく、ポインタを使ってアクロバットな事をやればポインタへの理解が深まるかなぁと思ったのですが・・・どうもトンチンカンな事をしていたようです。
ip1とip2のmallocは確かに要りませんでした。ip1 = &ip2;で良かったですね。
0141営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 05:40:27.35元の型がわからないから、そういうのを構造体に持たせて、線形リストにしてはどうかという提案だと思っていたよ。
いかにもめんどくさそうでしょ。でもポインタへの理解を深める目的だったらやってみてもいいんじゃないの。
0142営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 09:01:49.23repne scasb
あたりを使えば速くなると思うけど、最適化で既に使われるのかな?
0143営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 09:36:36.95以下のことをif文をつかわずにやりたいです。
if(hoge & 3) {
hoge -= 3;
}
0144営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 09:46:30.180146営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 10:05:10.990147営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 11:15:56.630148営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 11:39:11.45最早どうでもいいだろうけど>143のコード断片では例えばhogeが1のときに破綻するよ。
0149営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 12:01:26.700150営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 12:14:42.660151営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 12:44:48.81もう一歩前へ
0152営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 13:03:32.574の倍数じゃなかったら3を引くってことをやりたいわけじゃないのね
0153営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 13:05:36.750154営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 15:27:58.640155営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 17:52:55.65hoge &= ~(1<<2)
なんじゃないのか?
0156営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:02:43.28hoge 1 2 3 4 5 6
>>143 結果 -2 -1 0 4 2 3
>>144 結果 0 0 0 4 4 4
0157営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:38:17.55#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));
}
0158営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 19:10:19.64どういう結果になって欲しかったんだろう・・・?
0159営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 20:13:18.71こんなのしたかったんじゃないかな?
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; }
0160営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 01:33:56.62forで回してnilやNULLを代入してみたのですがダメでした。
0161営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 01:36:51.77↓
0162営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 02:02:46.040163営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 02:07:12.670164営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 03:10:42.76ゼロクリアしたいならゼロいれればいいのに。
allocと別タイミングでゼロクリアしたいんだという話ならmemsetで
0165営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 03:19:30.040166営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 05:16:16.500167営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 05:17:53.020168営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 05:50:21.50VBだかCOBOLだかでなかったっけ?
0169営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 05:56:03.34int *p = malloc(100);
memset(p, 0, 100);
NILは使ったことあるな。
ただし、気象用語だったが…
0170営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 06:15:33.65CRが0x0d,LFが0x0aってのと同じ
nilは思いつくところでRuby,Lisp,Delphi,Luaで使われてる
0171営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 06:19:05.88アホか。
0172営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 06:47:23.020173営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 07:13:23.080174営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 08:29:06.23こっちの方が問題だろ。なにが起きたんだよ。
0175営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 08:55:41.40これでしょ
0176営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 09:20:52.470177営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 11:27:46.920178営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 11:53:08.770179営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 12:20:19.050180営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 13:37:57.580181営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:05:42.27問題になる処理系あげてみろ。
>>179
なぜ関係ない話を出す?
0182営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:18:12.09?
0183営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 15:59:06.640184営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:04:31.140185営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:21:34.92ググったんですけど、よくわかりません・・・orz
0186営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:28:00.84環境は?
Linuxとかなら、「gcc ソースコード」でコンパイルされ、
a.outっていう実行形式が生成されるはずだが。
0187営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:33:27.04VC++ 2005以降をインストールしろって言われました
自分の環境は、フリーのBccDevです
0188営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 16:39:00.270189営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 17:20:25.320190営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 17:25:46.190191営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 17:26:33.500192営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 17:54:15.63それを聞くようなレベルなら、VC++ 2005 Expressを入れたほうがいいよ。
金がかかるものでもないので。
0193営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 22:28:19.890194営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 05:04:18.87めずらしいのですか?
0196営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:54:37.480197営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:56:11.300198営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 14:20:02.830199営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 21:45:18.340200営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 23:00:48.250201営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 23:06:08.240202営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 09:35:43.01少し見渡せばわかるものを
0203営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 09:56:36.770204営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 09:57:23.061行あたりの仕事量が少ないから。
0205営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 10:02:21.410206営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 10:22:34.84なくなって効率が落ちた。
C++を覚えたら1万行くらいまでは効率落ちなくなった。
0207営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 10:29:17.61Perlだと400行くらいで頭がパンクするわ。
0208営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 10:34:11.30頭使わなくていい部分でないとそんなスピード出せねー
0209営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 10:41:20.36頭使う分のコードはせいぜい300行だ
0210営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 10:51:37.240211営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 11:17:31.240212営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 11:43:14.630213営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 13:15:36.16書くよ。
0214営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 13:52:14.87数万行に膨らんだ後でも改変が容易かどうかで評価されるべき
0215営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 15:37:01.48手際が悪いとすぐ数倍に膨れあがる
0216営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 17:42:58.870217営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 19:35:24.71C言語で三角関数を使わずに画面上に楕円(軸が斜めも含む)を書くプログラムを教えてください。
そもそも可能なのでしょうか?
0218営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 19:37:38.47可能です
0219営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 19:39:46.74何も考えないで書くならピクセルを端から端までなめつつ
2つの焦点からの距離の和が一定の範囲に入っている所を塗ればそれっぽくなるんじゃ
線の太さとかはきれいにならないと思うけど
0220営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:10:46.71http://fussy.web.fc2.com/algo/algo2-2.htm
こんなん。ブレゼンハムの応用かな
0221営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:32:34.33>>220使ってみた。
http://codepad.org/x2ebuTXq
0222営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:35:02.33軸を傾けようぜ
0223営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:36:22.35それはお前への宿題な。
0224営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:38:56.97例示されてもな
0225営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:41:14.910226営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 20:50:41.76宿題やっとけよ。
0227営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 21:00:18.31できるのならやってみろよ
0228営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 21:20:46.730229営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 21:41:53.14QZみたいな奴が2人以上いるのかどうか
0231営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 22:31:56.27楕円描画アルゴリズムに?
0232営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 22:47:06.440233営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 22:58:12.932.他者との好意的なコミュニケーションを期待している
3.
0234営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:03:42.780235営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:10:59.980236営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:18:35.09プログラミングで扱うなら
全ての描画方法に名前を付けなきゃいけない
0237営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:43:29.070238営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:46:26.820239営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:47:04.40知らんかった
0240営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:47:23.750241営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 23:55:01.690242営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 00:15:50.09C11 は有るよ。 まだ JIS に反映されてないから日本語の資料はあんまりない。
こないだ読んでて無名共用体とか C で今まで使えなかったことを知った。
たぶん C11 をそこそこちゃんと実装してるのは gcc くらいだと思う。
0243営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 00:21:34.08そうなんだ。
今度調べてみるわ。
0244営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 01:14:16.11アルゴリズム考えるのに数学の力がなきゃ歯が立たないよ。
例えば、m×n行列とn×l行列の積を求めるアルゴリズム考えられるか?
もうお手上げだよ
ちなみにループが三重構造になるんだぜ
0245営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 01:24:28.43アホか
0246営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 01:25:36.97結果のm*l行列について、第i行j列の値を出すには
i行k番目とj列k番目の積を足していくんだから、そりゃ三重ループになるよ
Strassenのアルゴリズムが思いつかないというなら、
それはそうかもしれない
0247営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 01:35:21.18研究にしたところでライブラリ使えばいい話。
0248営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 03:05:07.63あぐらをかいていると、関節が固まるような感じがして
だんだん痛くなり30分もすると立つことすらできなくなります。
足を投げ出して(これがすでに大変)数分も放置すれば
回復するのですが、これは何科にかかるべきでしょうか。
0249営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 03:12:53.23大言博ならその後にしろよ
0250営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 03:14:46.330251営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 03:42:32.15たぶんただの老化だと思う
0252営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 08:43:48.64nilはObjective-Cの値です。スレチかなとも思いましたが、
オブジェクトをCの配列に入れるのに配列要素(オブジェクトのポインタ)がゼロクリアされていなければいけないらしく
そのために確保と同時にゼロクリアするcallocを使わないとダメと書いてあったのですが、malloc+アルファの処理でcallocと同じことが出来ないか?
と思い、その範囲(mallocを使ってcallocと同じ事をする)ならCの範疇だろうということで質問させて頂きました。
素直にcalloc使えということになるのでしょうか?
0253はちみつ餃子 ◆8X2XSCHEME
2012/04/10(火) 09:14:13.17ちょっと確認だが >>160 の「ダメでした」というのはオブジェクトを配列に入れることが出来なかったという意味か?
どういう挙動から出来ていないと判断した? 何かエラーメッセージでも出るのか、それとも seg fault になるのか?
>>174 も言っていることだが、何が起きているのかわからんので回答のしようがない。
C では特に代入にゼロクリアが必要とか無いし Objective-C の仕様でゼロクリアがどう関係してくるのかなんて知らんがな。
C スレ的には for 回しても memset でもゼロクリアはできるんでそこから先は素直に Objective-C のスレで訊けよ。
0254営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 10:23:49.15三重ループくらいなら直接for文書くが、4重以上の時はループ1個で済ませたりする。
0255217
2012/04/10(火) 11:00:20.51>>222さんが云われているように、軸を傾けるにはどう対処すればいいでしょうか?
なるべく整数だけの計算で済ませたいのですが、可能でしょうか?(sqrt()とか使わない条件です。)
0256営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 12:48:37.43> ゼロクリアされていなければいけないらしく
スレチだとおもうなら、このソースを出したほうがいいんじゃないの。
> そのために確保と同時にゼロクリアするcallocを使わないとダメ
なのになんでcalloc使わないの?反骨精神?
0257営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 13:13:23.570258営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 13:14:51.790259営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 15:30:21.520260営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 15:45:10.980262営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 16:21:49.31冷静に考えれば気が狂った仕様だよな・・・
0263営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 16:46:50.690264営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 16:48:15.890265営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 16:49:34.99何?この矢印モドキ。
0266営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 17:10:57.590267営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 17:16:39.270268営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 17:28:17.33一人があちこちのスレにいたりするのかな。
そんなことはなくて何人もいるからこそ春なのかな…
0269営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 17:29:40.260270営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 17:35:17.51そんなこと言ってるからお前は間抜けのままなんだよ。
0271営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 17:51:31.280272営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 18:28:10.25読みやすさならCではとうていかなうまい。
全てオブジェクトだから統一感もある
コメントも#で始まって読みやすいぞォ
識別子に?が使えるのも素晴らしい
if stack.empty? ・・・とか書ける訳だ
Cも見習って欲しいな
0273営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 18:35:32.620274営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 18:59:13.53Pythonのほうが読みやすいし
0275はちみつ餃子 ◆8X2XSCHEME
2012/04/10(火) 19:46:18.520276営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 20:36:42.42なるほど、おまえさんには難しすぎるようだな
4種類じゃなく無数にあるぞ
0277営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 20:38:58.51断る!
0278営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 21:14:36.14メソッドにしか?は使えねーぞ
0279営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 22:33:48.29fscanf(fp, format, ...)みたいなこと簡単にできないかー
0280営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 22:40:30.690281営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 22:42:24.810282営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 22:50:36.47>>280 >>281
0283営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 00:16:16.960284営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 01:47:38.03俺もHTMLの中に書くだけの簡単なスクリプト言語でしょ
なんて馬鹿にしてたんだけど、これがC言語とPerlのいいとこ取りで
機能的にも足りないところはほとんど無い感じ。
WEB言語なんてイメージとどまらずにC言語の標準入出力ライブラリーにPerlの文字列操作、
画面ライブラリーにHTMLを使えると思えば良いんじゃないのかな。
キーワードはHTML5、JavaScript、そしてPHP。
これが世界の最先端開発環境で間違い無しだよ
0285営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 02:16:37.13開発チームがセキュリティにかなり無関心というのも気にくわない
0286営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 02:30:39.05C言語は型にうるさすぎて
しかも肝心の型がデフォで少なすぎる
てな話になる
100文字の文字列と100個の数字
同じように見えるけど
100個の数字のほうはCじゃムリじゃん
0287営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 03:00:18.39ひょっとして100桁の数値といいたのか?
0288営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 03:09:21.79こういう数字のカタマリは
どーなるんだよ
っちゅーことだよ
0289営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 03:17:36.700290営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 04:02:46.750291営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 04:04:54.37PHPだと文字列なら文字列、数値なら数値
Cだと文字列なら文字配列、数値なら8進数の数値
0292営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 04:25:52.010293営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 08:12:50.35桁数で言えば実際強いよねCOBOL
0294営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 08:13:40.690295営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 16:24:18.640296営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 16:28:04.03科学技術計算はfortran使うって、昔は住み分けてたんだけどね
0297営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 16:35:48.680298営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 17:02:57.39数値の表示方法(エラー表示)はどうすればいいのですか?
Cだと
文字表示
printf("hello");
数値表示
int i = 10;
printf("%d", i);
Winodows APIだと
文字表示
MessageBox(NULL, "hello", NULL, MB_OK);
数値表示
???
0299営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 17:04:17.84sprintf で文字列に変換する
0300営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 17:20:24.63#include <stdio.h>
#include <stdlib.h>
0301営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 17:35:47.37char c[100];
sprintf(c, "%d", 10);
MessageBox(NULL, c, NULL, MB_OK);
でも3行かかってしまいました
printf("%d", 10);のように
みなさん、どうやって一行で表示してますか?
0302営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 17:38:04.760303営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 17:54:38.080304営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 18:20:30.150305営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 18:22:56.610306営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 19:00:11.59デバッグ用なら AllocConsole と freopen しとけば
普通に printf や perror が使える
# もっとも俺はそんなことしない
# GUI はデバッグ情報が膨大すぎるので
# 絞り込みの工夫・・・というかデバッグ自体をきちんと設計する必要がある
0307デフォルトの名無しさん
2012/04/11(水) 20:54:42.11http://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
0308デフォルトの名無しさん
2012/04/11(水) 21:27:43.300309デフォルトの名無しさん
2012/04/12(木) 00:02:57.50while (*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と出力されないのは、文字列リテラルは書き換えができないからでしょうか。
0310はちみつ餃子 ◆8X2XSCHEME
2012/04/12(木) 00:10:29.79> while (*dest++);
これが問題じゃね?
考えると *dest == '\0' であることがわかった後に ++ してるんだから、
この文が終わった時点で dest が指しているのはヌル終端の一個後ろだろ。
while (*dest) dest++;
に書き換えればいいと思うよ。
実際に動作させずに言ってるし酒飲んでるから間違ってたらごめんな。
0311デフォルトの名無しさん
2012/04/12(木) 00:15:12.40X while (*dest++);
0312デフォルトの名無しさん
2012/04/12(木) 00:16:15.52#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;
}
0313デフォルトの名無しさん
2012/04/12(木) 00:16:37.910316デフォルトの名無しさん
2012/04/12(木) 00:33:20.570317デフォルトの名無しさん
2012/04/12(木) 00:38:38.930318デフォルトの名無しさん
2012/04/12(木) 00:53:07.41はじめのwhile (*dest++);
これが間違っていたのですね。
>>313さんの仰るとおり、カッコつけた書き方はやめて、誰が読んでもわかるようなコーディングを身に着けていきたいと思います。
それにしても、Cはどうしてこう、複雑に書けるようになっているのでしょうか。
実行速度が求められるから?
0319デフォルトの名無しさん
2012/04/12(木) 00:58:28.67勉強ならstrcatのソースを読めばいいのに。
0320デフォルトの名無しさん
2012/04/12(木) 00:59:20.63それが当時の計算機に一番素直な形だったからだよ。
0321デフォルトの名無しさん
2012/04/12(木) 01:13:13.49ライブラリにある、システムコールのない関数のアルゴリズムを考えることくらいはできた方がいいかなと思いました。
これまでにstrlen(),strcpy(),memset(),atoi()など、簡単に実装出来そうな関数は作ってみたのですが。
どうやったら実力がつくのかなあ。
ちょっとパスカルを勉強して、コーディング作法を身につけたりしたほうがいいのかなあ。
優秀なマになりたいのです(´Д` )
0322デフォルトの名無しさん
2012/04/12(木) 01:14:46.98strcatのソース読んだのか?
0323デフォルトの名無しさん
2012/04/12(木) 01:18:17.470324デフォルトの名無しさん
2012/04/12(木) 01:21:48.880325デフォルトの名無しさん
2012/04/12(木) 01:28:15.90アルゴリズムの本買ってソートを順番にやっつけてこうぜ
0326デフォルトの名無しさん
2012/04/12(木) 02:33:06.15その複雑に見えるのは、難しそうに見えているだけじゃないかな。
惜しいところはいくつかあるけど、素直な方針でやれてるので、その調子でとしか。
0327デフォルトの名無しさん
2012/04/12(木) 05:14:04.93その意気やよし
自分でコードを書くこともいいが他人のコードを読むのもいいぞ
LinuxやFreeBSDなどの様々なコマンドのソースを読んでみるがよい
0328デフォルトの名無しさん
2012/04/12(木) 07:50:41.78http://toro.2ch.net/test/read.cgi/tech/1328276597/
0329デフォルトの名無しさん
2012/04/12(木) 11:32:27.47頼むから後置++ ごときで「複雑」とかやめてくれ
マシン自体がもともとそのようにできているのだから (例: PC, SP)
0330デフォルトの名無しさん
2012/04/12(木) 11:37:38.35そこじゃなくて評価順の理解がまだ不十分なだけだと思うよ。
あとその例はおかしいよな。たとえ前置インクリメントと読み替えたとしても、それである必要性がない
0331デフォルトの名無しさん
2012/04/12(木) 11:41:20.51空想論か? それとも RISC の PC が前置だとでも言いたいのか?
ポインタの更新が直列と思い込んでいるほど ++ が不可解に見えるだけだ
0332デフォルトの名無しさん
2012/04/12(木) 11:54:58.79問題は、CPUがどうかじゃないよ。
C独特の手っ取り早く済ませるスタイルも書けないまでも読めないとね。
0333デフォルトの名無しさん
2012/04/12(木) 12:01:32.60順序が逆だ。書けなければ読めない。
モトローラの石は後置インクリメント、前置デクリメントじゃなかったっけ?
0335デフォルトの名無しさん
2012/04/12(木) 12:36:33.62書かないまでも読めるべき。書けるのは前提。
0336デフォルトの名無しさん
2012/04/12(木) 12:57:25.44char *r = s;
char *a = "2回○ね〜っ";
for (; *s; ++s);
while (*s++ = *a++);
return r;
}
0337デフォルトの名無しさん
2012/04/12(木) 13:05:08.66たった1つしか知らないくせにモトローラのとかwww
0338デフォルトの名無しさん
2012/04/12(木) 13:34:45.76綺麗に書こうぜ。
void my_strcat(char *dest, char *source)
{
while (*dest) dest++;
for (;;) {
*dest = *source;
if (*dest == '\0')
break;
dest++;
source++
}
}
0339デフォルトの名無しさん
2012/04/12(木) 13:38:31.940340デフォルトの名無しさん
2012/04/12(木) 13:44:13.07今まで意識せずにeを使ってましたが別にどっちでもいいんですよね?
0341デフォルトの名無しさん
2012/04/12(木) 13:49:24.330342デフォルトの名無しさん
2012/04/12(木) 14:09:01.60で、後置はどうなんだ? デクリメントか?
C 独特というのは間違いだぞ
>>337
もう一度聞く、空想論か?
0343デフォルトの名無しさん
2012/04/12(木) 14:16:38.550344デフォルトの名無しさん
2012/04/12(木) 14:33:17.950345デフォルトの名無しさん
2012/04/12(木) 14:35:16.02K&R本の付録A参照マニュアルのA13:文法(295ページからの6ページ)を
なにも見ずに空で書けるようになるまでは、K&R本を捨てない方がいいですよ
とだけ言っておく
0346デフォルトの名無しさん
2012/04/12(木) 14:37:07.890347デフォルトの名無しさん
2012/04/12(木) 16:21:55.20こいつ、何言ってんの?
0348デフォルトの名無しさん
2012/04/12(木) 16:40:26.68それでC言語やればいいみたいってとこまでわかったんだ
そんでコンパイラってのがいるってのもわかったんだ
俺に最適なコンパイラを教えてくれ
勿論フリーで
俺のスペックは14歳の女子だ
0349デフォルトの名無しさん
2012/04/12(木) 16:44:43.590350デフォルトの名無しさん
2012/04/12(木) 16:45:46.82クラスメイトの奴がアプリ開発しやがってなんかちょっと羽振りがよさそうだから羨ましくなったんだ
きいたら半年くらいあればアプリ開発までいけるって言ってたから
俺も頑張ってその金でカラコン買いたいんだ
0351デフォルトの名無しさん
2012/04/12(木) 16:48:22.21早く教えてくれよ
0352デフォルトの名無しさん
2012/04/12(木) 16:50:06.47そんでその写真が大物監督の目にとまって映画デビューするんだ
そのためにはコンパイラは避けては通れないんだ
0353デフォルトの名無しさん
2012/04/12(木) 16:57:31.62学校にはちゃんと行けよ。
0354デフォルトの名無しさん
2012/04/12(木) 17:04:18.10Visual C++ 2010 Express
をインストール中だ
いいのか?これで?
0355はちみつ餃子 ◆8X2XSCHEME
2012/04/12(木) 17:09:37.730356片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:09:58.892008のDVDのISOイメージをダウンロードしてこれを使え:
http://www.slysoft.com/ja/virtual-clonedrive.html
0357片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:11:32.830358デフォルトの名無しさん
2012/04/12(木) 17:14:13.08マジか さんクソ
今いれたの早速削除するわ
俺のOSはW7だけど大丈夫だよな?
>>357
バカ売れするアイフォンアプリを作りたいんだが
どんなんが売れるんだ?
0359デフォルトの名無しさん
2012/04/12(木) 17:15:44.05閉まっちゃうから早くいかないと
C言語の本借りてくるわ
あとラノベと
0360片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:18:53.16Visual C++じゃ無理。
0361片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:21:55.580362デフォルトの名無しさん
2012/04/12(木) 17:21:57.14最後の一行が致命傷だ
提案力ないやつはどんなに頑張っても決して報われない
0363デフォルトの名無しさん
2012/04/12(木) 17:30:47.280364はちみつ餃子 ◆8X2XSCHEME
2012/04/12(木) 17:34:46.47売れ筋を見極める目がないようではだめぽ。
つーか、そんなんわかるんだったら自分で作るわ。
0365デフォルトの名無しさん
2012/04/12(木) 17:52:54.890366デフォルトの名無しさん
2012/04/12(木) 17:53:29.40マジで?
マックねえとアイフォンアプリ作れんの?
困るじゃねえか
>>362
いいの とりあえずCから学ぶの
0367片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 17:59:12.43http://blog.makotokw.com/2008/07/01/windowscygwiniphoneipod_touch/
0368デフォルトの名無しさん
2012/04/12(木) 18:01:27.01違うのか?
0369片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 18:05:35.25iPhoneアプリを開発するには、iPhone SDKが必要。
iPhone SDKを動作させるには、Mac OS Xかその互換OSが必要。
初心者は、おとなしくMac買うんだな。
0370デフォルトの名無しさん
2012/04/12(木) 18:05:59.51アイフォンは持ってるよ 4S
じゃあマックを手に入れるのが先なのか
という事はその金はアンドロイドアプリの開発で稼ぐしかないのかな
0371デフォルトの名無しさん
2012/04/12(木) 18:07:45.750372デフォルトの名無しさん
2012/04/12(木) 18:09:19.27自宅業務内職のために、まずワープロ買わせる、みたいなビジネスモデルだな。
0373デフォルトの名無しさん
2012/04/12(木) 18:13:06.16ラノベよも
0374デフォルトの名無しさん
2012/04/12(木) 18:15:50.23ひたすら悪さばっかりするクソガキやってると
その頃の生活の知恵が後に糧となっている
0375デフォルトの名無しさん
2012/04/12(木) 18:19:54.840376デフォルトの名無しさん
2012/04/12(木) 18:22:47.290377デフォルトの名無しさん
2012/04/12(木) 18:23:05.45インテルCPU積んでるマックならいいのか?
スペックとかうんこでも
0379片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 18:34:21.080380片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 18:35:21.290381デフォルトの名無しさん
2012/04/12(木) 18:37:07.34ねだって買ってもらった7のミニノートがあるんだフロンティアの
1年以上使ってないからまずそれを売ろう
あとX箱のソフトとか売って
さらにアイフォン3Gの本体あるから売るわ
そんで中古のマックMINIとか買えばいいな
0382デフォルトの名無しさん
2012/04/12(木) 18:37:44.23いや 色々ありがとう
パンツのひとつもあげたいくらいだ
逆じゃない?例:スタックポインタ
0384デフォルトの名無しさん
2012/04/12(木) 18:39:14.70最近スカイリムを買ってもらって夢中だから気づかないだろう
0385330
2012/04/12(木) 18:40:09.54ええと、なんかがんばってたんだな。
たとえばSPが後置インクリメントである環境を用意するよね。
>>329は、マシン自体がそうなってるから、
それを複雑というのはやめてくれという主張だよね。
これがどれだけおかしな主張だったり例であるかがわからないの?
0386片山博文MZボット ◆0lBZNi.Q7evd
2012/04/12(木) 18:40:19.550387デフォルトの名無しさん
2012/04/12(木) 18:49:36.220388デフォルトの名無しさん
2012/04/12(木) 18:50:57.522万以下で買えるかな・・・
0389デフォルトの名無しさん
2012/04/12(木) 18:51:17.98方言が強くてわからへん、何言うとんねん
0390デフォルトの名無しさん
2012/04/12(木) 18:56:42.08なんかさ アンドロイドのアプリは端末の使用がいっぱいあって開発がめんどくせえんだろ?
どっかの会社が開発コストかかりすぎて儲からんってアンドロイドからは撤退してたじゃん
0391デフォルトの名無しさん
2012/04/12(木) 20:39:15.74あれ、ネイティブコードをばりばりつかってるゲームだからじゃね?
0392デフォルトの名無しさん
2012/04/12(木) 21:48:04.920393デフォルトの名無しさん
2012/04/12(木) 23:22:15.10multibytetocharおよびwidechartomultibyteを使ってutf-8に変換して、
またファイルに書き出してます。
ですが、ファイルの末尾を書き出すと、その末尾の文字は正しく書き出されるのですが、
その後ろに数倍とぐらいゴミみたいなデータが書き込まれてしまいます。
これってどんな原因が考えられるでしょうか
0394デフォルトの名無しさん
2012/04/12(木) 23:31:27.58マニュアル嫁
0395デフォルトの名無しさん
2012/04/12(木) 23:33:16.69余分に書き出している。
0396デフォルトの名無しさん
2012/04/12(木) 23:33:42.25shift-jisにはいくつかの種類があんのか?
それとも「shift-jisで書かれたとあるテキストファイル」なのか?
日本語くらいはしっかり使えアホ
> 数倍とぐらいゴミみたいなデータ
そのバイト列は具体的にどんなもんで
いつも同じなのか
それとも違うのか
そんくらい書けよバカ
0397デフォルトの名無しさん
2012/04/12(木) 23:49:04.220398デフォルトの名無しさん
2012/04/13(金) 00:18:29.96実際 int *m; m=malloc〜〜だと
ポインで与えられるので、目的の領域に数値を書き込めなくない? と思うのですが。
0399はちみつ餃子 ◆8X2XSCHEME
2012/04/13(金) 00:20:07.91なんでやね〜ん。
そんなことより、ただの typo だとわかっていても「ポインで与えられる」という言葉が妙にツボった。
0400デフォルトの名無しさん
2012/04/13(金) 00:27:05.52確保された領域の記憶保護については未規定ということか
よく思いついたね、でっていう
0401デフォルトの名無しさん
2012/04/13(金) 01:13:28.26この辺のいきさつは規格に何か書いてあったような記憶がある
malloc()で確保した領域に書き込み出来る事が保証されてないのなら
多くのプログラムが書けなくなってしまうからな
0402デフォルトの名無しさん
2012/04/13(金) 01:30:58.60随分上から目線のやつがいるんだな
俺よりレベル下のくせによ
まあいい
明日また来るよ
0403デフォルトの名無しさん
2012/04/13(金) 01:34:20.52int *tの場合は、ポインタ経由で同じ領域に書き込めるのは何故かなと。
0404デフォルトの名無しさん
2012/04/13(金) 01:39:31.83バカ発見
char *p; が既に領域確保済みなら
*p = 'a'; と書き込み可能
あんたが言ってるのは文字列のコピーであって、全く意味が異なる
0405デフォルトの名無しさん
2012/04/13(金) 02:16:31.68> shift-jisにはいくつかの種類があんのか?
まるで「種類なんてないだろ?なんでこう取れる書き方をした?」とでも言いたそうだけど。
0406デフォルトの名無しさん
2012/04/13(金) 02:31:00.750407デフォルトの名無しさん
2012/04/13(金) 02:40:39.330408デフォルトの名無しさん
2012/04/13(金) 02:49:04.320409デフォルトの名無しさん
2012/04/13(金) 13:54:19.18デバッガでブレークポイントで停止しても最初の100バイトぐらいしか見れません
どうにかして末尾部分を見る方法ないっすか?
0410デフォルトの名無しさん
2012/04/13(金) 14:08:25.68デバッガの使い方は他のスレで。
つーか、あんたがどんなデバッガ使っているかわからんのに答えろとでも?
0411デフォルトの名無しさん
2012/04/13(金) 14:29:08.14デバッグつったらVCしかねーだろ
0412デフォルトの名無しさん
2012/04/13(金) 14:55:10.940413デフォルトの名無しさん
2012/04/13(金) 14:58:23.600415デフォルトの名無しさん
2012/04/13(金) 15:01:37.08File* fp = fopen("dbg.txt", "wb");
for(int i=0; i<3000; i++)
fputc(data[i], fp);
fclose(fp);
たった4行でできるのに馬鹿じゃね
0416デフォルトの名無しさん
2012/04/13(金) 15:12:57.09ファイルに出力するときにもう解読不可能な文字になってるから、
文字コードを見たいんだよ
0417デフォルトの名無しさん
2012/04/13(金) 15:15:38.410418デフォルトの名無しさん
2012/04/13(金) 15:25:37.92こんな感じでいいんじゃね?
0419デフォルトの名無しさん
2012/04/13(金) 16:24:16.48じゃぁ、メモリみても意味なくね?
0420デフォルトの名無しさん
2012/04/13(金) 16:43:30.70VCならウォッチにptr+2900, 100とかデバッグ→ウィンドウ→メモリとか
0421デフォルトの名無しさん
2012/04/13(金) 16:51:27.430422デフォルトの名無しさん
2012/04/13(金) 16:53:52.860423デフォルトの名無しさん
2012/04/13(金) 17:15:03.000424デフォルトの名無しさん
2012/04/13(金) 17:35:51.40次、どの本読めばええの…
0425デフォルトの名無しさん
2012/04/13(金) 17:50:53.20ありがと
0426デフォルトの名無しさん
2012/04/13(金) 18:05:27.15コンパイラのマニュアル
他人の書いたソース
0427デフォルトの名無しさん
2012/04/13(金) 18:07:39.42本屋でぺらぺらめくって、知ってることと知らないことが書いてある本を探す
0428デフォルトの名無しさん
2012/04/13(金) 18:14:03.87PC9801プログラマーズバイブル
0429デフォルトの名無しさん
2012/04/13(金) 18:28:56.860430デフォルトの名無しさん
2012/04/13(金) 18:31:53.31「一番いいのはサラリーマン」
「サラリーマンなんか今すぐやめなさい」
0431デフォルトの名無しさん
2012/04/13(金) 18:34:43.16Effective C++
0432デフォルトの名無しさん
2012/04/13(金) 18:35:24.54いい本だがC++じゃん。
0433406
2012/04/13(金) 19:34:26.44ありがとうございました。繰り返しとか条件分岐は分かる程度です。
0434424
2012/04/13(金) 19:50:51.20とりあえず本屋よってみる
0435デフォルトの名無しさん
2012/04/13(金) 19:51:42.87誰か助けてくれよ
0437デフォルトの名無しさん
2012/04/13(金) 20:17:35.21変換の過程で得られるであろうバイト数(or 文字数)を利用して fwrite() してるのか
\0 終端を期待して fprintf() してるのか
0438デフォルトの名無しさん
2012/04/13(金) 20:36:07.37fwriteのバイナリモードで書き出してる。
fprintfって\0まで書き出してくれるっていう仕様だっけ?
やってみる。
0439デフォルトの名無しさん
2012/04/13(金) 20:40:46.24じゃあヌル文字の前に何故かゴミが入ってるってことか。
くそっ
UTF-8変換の過程で末尾に変なゴミが入る原因って何だよ!!
末尾以外の文字は完璧に変換できてるっていうのに!!
0440デフォルトの名無しさん
2012/04/13(金) 20:40:54.21なぜこれではリストの連結ができないのでしょうか
リストを表示するプログラムはこの中にあるのと同じような条件でやっています。
実行結果は
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);
}
0441デフォルトの名無しさん
2012/04/13(金) 21:16:45.78■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
★ 本日13日(金)よる10時より 《人権救済機関設置法案反対ツイッターデモ》開催 ★
ツイッターしている人は、ハッシュタグに#人権救済機関設置法案反対#nhk24をつけて、この法案の
危険性、抗議の法案などをいっせいに呟きましょう。
ツイッターと連動している「NEWS WEB24」に取り上げてもらいましょう 。
■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
0442デフォルトの名無しさん
2012/04/13(金) 21:38:14.71リストpの後にqをつなげているように見えないけど?
0443デフォルトの名無しさん
2012/04/13(金) 21:48:46.55こんな感じ?
http://codepad.org/uvJYomYM
0444デフォルトの名無しさん
2012/04/13(金) 22:00:27.030445デフォルトの名無しさん
2012/04/13(金) 22:24:20.27なんであらたにmallocしてるのかがよくわからないんだけど
こんな感じじゃいかんの?
http://codepad.org/wRssci0L
0446デフォルトの名無しさん
2012/04/13(金) 22:33:33.53うん、それ
0447デフォルトの名無しさん
2012/04/13(金) 22:42:46.73Win32 の WideCharToMultiByte とか MutiByteToWhideChar 使ってるのか?
これの戻り値は終端の \0 を含まない文字数を返すから
文字列として(つまり \0 で終わることを保障するように)扱いたいのならば
必要なバッファの大きさは 戻り値+1 であり
変換前に領域を 0 で埋めるか バッファ[戻り値] = 0 と終端を付加しないと
その後の文字列処理(例えば strlen 等 \0 終端前提の関数)が成立しないぞ
win32api はそういうのが多いのかな?
*(DWORD *)buff = N;
n = SendMessage(hwndEdit, EM_GETLINE, i, (LPARAM)buff);
InnerBuff[n] = 0;
のセットに気がつくまで苦吟した。
0449デフォルトの名無しさん
2012/04/13(金) 23:23:07.08文字を操作するのはほとんどそういうの
所々「文字数」だったり「バイト数」だったりで
動的確保時に要注意の奴があったようななかったような
0450デフォルトの名無しさん
2012/04/14(土) 01:12:41.72それやってもダメだった。
なんかゴミが書き出されないときと書き出されるときがあるんだよな。
それぞれ読み込んでるファイルは違う。
コードはこんな感じ
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;
}
0451デフォルトの名無しさん
2012/04/14(土) 01:16:44.89もちろんこれでもだめ。
ゴミが出るときはあるファイルを読みこんで書き出すとゴミが発生する
でも発生しないときのファイルの末尾は、
ゴミが出るときのファイルと一緒で改行コードで終わらせてる
だから何が原因かマジでわからん
0452デフォルトの名無しさん
2012/04/14(土) 01:18:24.49一緒に出しときゃあ24時間も丸々ムダにせずにすんだのに
0453デフォルトの名無しさん
2012/04/14(土) 05:31:48.13ここは
memset(p16,0,sizeof(WCHAR)*(nsize+1));
じゃないと全部ゼロクリアできないんじゃないの?
0454451
2012/04/14(土) 07:33:59.96うん
その通りだ
でもそこ修正してもダメだった。
この関数を呼び出す前の、テンプレートファイルを読み込む部分のコードは、
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関数に渡してるんだがおかしくないよね?
0455451
2012/04/14(土) 07:41:26.13そのままUTF-8に変換せずに書き出してもゴミはなかった。
だからテンプレートファイルに最初からゴミが入ってるってことはないと思う。
よって、やっぱりさっきの変換関数のどこかがおかしいんだと思う
0456デフォルトの名無しさん
2012/04/14(土) 09:46:17.85basic = new char[(int)size+1];
memset(basic,0,(int)size+1);
だな。
0457451
2012/04/14(土) 10:23:43.31うおおおおおおおおおおおおおお!!
これだ!
やってみたらゴミ消えたよ!!
マジありがとう!!!
基本のファイル読み込みの時点で間違ってたとは情けない
ご迷惑をおかけしました
0458デフォルトの名無しさん
2012/04/14(土) 10:30:26.340459デフォルトの名無しさん
2012/04/14(土) 12:35:40.25ださっ
0460デフォルトの名無しさん
2012/04/14(土) 12:47:54.24答えられなかったお前もレベル低いよ
0461デフォルトの名無しさん
2012/04/14(土) 12:51:31.43basic = new char[size + 1];
basic[size] = 0;
0462デフォルトの名無しさん
2012/04/14(土) 14:10:45.36細かいことだけどサイズがわかってるんだからmemset使うのは無駄な処理だね
末尾に'/0'を入れてやるだけでいい
0463デフォルトの名無しさん
2012/04/14(土) 20:19:23.89あんたどこの文化圏の人?
0464デフォルトの名無しさん
2012/04/14(土) 20:32:37.35え・・・ 何・・・?
0465デフォルトの名無しさん
2012/04/14(土) 21:00:16.790466デフォルトの名無しさん
2012/04/14(土) 21:27:11.53このあたりが再生数多いな
0467デフォルトの名無しさん
2012/04/14(土) 21:28:31.38とうとう狂ったか
0468デフォルトの名無しさん
2012/04/14(土) 22:02:40.500469デフォルトの名無しさん
2012/04/14(土) 23:33:42.950470デフォルトの名無しさん
2012/04/15(日) 00:20:38.70おやすみなさい
0471デフォルトの名無しさん
2012/04/15(日) 00:47:55.54AC|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箱ならビット演算余裕で思いついたんですけどね
0472デフォルトの名無しさん
2012/04/15(日) 01:36:04.470473デフォルトの名無しさん
2012/04/15(日) 02:04:56.36こんなのでいいの?
0474デフォルトの名無しさん
2012/04/15(日) 02:30:24.01玉の数=箱の数+1で良ければ!
組み合わせの数は、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
0477デフォルトの名無しさん
2012/04/15(日) 13:15:13.51ちょっと待って
0478デフォルトの名無しさん
2012/04/15(日) 13:28:09.34codepad でエラー取り切るのむずいもうちょっと待って
0479デフォルトの名無しさん
2012/04/15(日) 13:34:28.92これでいいのかな。コメントに日本語って使って大丈夫かな?
微妙に C++ 混ざってるけど勘弁して。max / min って C だとどこに入ってたっけ…
0480はちみつ餃子 ◆8X2XSCHEME
2012/04/15(日) 13:44:12.45意外なことだが C には無い。 (少なくとも C99 には)
索引の当該ページ
http://uploader.sakura.ne.jp/src/up94166.png
0481C言語初心者
2012/04/15(日) 15:53:16.31出力させるとnullとなり、文字列が出力されません。
どこに間違えがあるのでしょうか。
http://codepad.org/fYMt6DlJ
0482デフォルトの名無しさん
2012/04/15(日) 15:55:20.62subst の型と戻り値
0483C言語初心者
2012/04/15(日) 16:59:38.68あと戻り値はどのようにすればうまくいきますか??
0484デフォルトの名無しさん
2012/04/15(日) 17:24:20.62char *p = str;
while(*p){
if(*p == c1){
*p = c2;
}
p++;
}
return *str;
}
http://codepad.org/hPDYENXk
>>484
×return *str;
*str って何?
0487デフォルトの名無しさん
2012/04/15(日) 17:39:17.76見落とした
0488デフォルトの名無しさん
2012/04/15(日) 17:42:37.05(void* はやめれ)
0489デフォルトの名無しさん
2012/04/15(日) 17:54:45.643の4乗通り全部試してるのか、結構無駄があるな
今日はこれをビット演算に改造して使わしてもらおう
もっと速いの考えた人待ってるよ
ちなみに実行は12玉・3箱くらいが主に
0490デフォルトの名無しさん
2012/04/15(日) 18:13:55.070491デフォルトの名無しさん
2012/04/15(日) 18:15:39.81全部0で初期化される事が規格で保証されているよ
でも、警告出るコンパイラもあるのでmemsetした方が鬱陶しくないと思う
0492デフォルトの名無しさん
2012/04/15(日) 18:33:31.00そのコンパイラを窓から投げ捨てるかオプションで黙らせるべき
memset なんか、それこそ保証ないんだから
0493デフォルトの名無しさん
2012/04/15(日) 18:45:39.85警告を出さないためにはこうじゃないかな。
int a[3][4] = {{0}};
>>492
投げ出す前に正しく書くべきじゃないかな。
0494デフォルトの名無しさん
2012/04/15(日) 18:49:16.21「正しい」の定義を聞こうか
0495デフォルトの名無しさん
2012/04/15(日) 20:22:21.79ていうか、{}だけでいいだろ。
「最初の要素を0で、それ以降を0で初期化」
って冗長な表現だと思わないか?
0496デフォルトの名無しさん
2012/04/15(日) 20:23:05.20それも仕様から外れてる
0497デフォルトの名無しさん
2012/04/15(日) 20:35:52.45別にはずれてないだろ・・・
0498デフォルトの名無しさん
2012/04/15(日) 21:18:11.16C++とは違うのだよ
0499479
2012/04/15(日) 21:49:08.63いやそんなに試してないよ
確かに、途中で 「入れてないアイテム数 == 空の箱数」 になれば、後は順番に入れていく1通りが確定するから、
その処理を入れれば、試行じゃなくて純粋に列挙できる…と思う
0500479
2012/04/15(日) 21:51:12.76補足:
現に、1つめのアイテムは、1つめの箱にしか入れてない
また、2つめのアイテムは、1つめまたは2つめの箱にしか入れてない
0501デフォルトの名無しさん
2012/04/15(日) 23:27:52.21これをfgetsで読み込んだ場合ちゃんと一行ごとに読んでくれるんですか?
0502デフォルトの名無しさん
2012/04/15(日) 23:30:24.750503デフォルトの名無しさん
2012/04/15(日) 23:31:03.07アホ
0504デフォルトの名無しさん
2012/04/15(日) 23:44:12.03これも正しく比較されますか?
0505デフォルトの名無しさん
2012/04/15(日) 23:58:26.81アホ
0506デフォルトの名無しさん
2012/04/15(日) 23:59:07.110507デフォルトの名無しさん
2012/04/16(月) 00:00:02.19アホ
0508デフォルトの名無しさん
2012/04/16(月) 00:16:36.710509デフォルトの名無しさん
2012/04/16(月) 00:18:23.18アホ
こうかな。
0510デフォルトの名無しさん
2012/04/16(月) 01:04:17.41アホ
0511デフォルトの名無しさん
2012/04/16(月) 01:07:33.10アホアホ言うツンデレって見たこと無いな・・・
大阪系のツンデレになるのかな
0512デフォルトの名無しさん
2012/04/16(月) 01:09:55.58初代いいんちょの名をほしいままにする東鳩のいいんちょを忘れるとは
0513デフォルトの名無しさん
2012/04/16(月) 18:21:24.30うん
0514デフォルトの名無しさん
2012/04/16(月) 18:23:11.91moveは移動ってわかるんだけど、pushも似たようなんじゃないのですか?
調べてもスタックがどうたらよくわからない。
0515デフォルトの名無しさん
2012/04/16(月) 18:26:42.00なにもかも分かってない
0516デフォルトの名無しさん
2012/04/16(月) 18:27:13.17で、固めることをpushって入ってたんだよねー
アメリカの伝統的牧畜の影響
0517デフォルトの名無しさん
2012/04/16(月) 18:28:01.48char a[3]
a[0]='s';
a[1]='t';
a[2]='u';
char b[2];
b[0]='r';
b[2]='d';
この場合、strcpy(a,b);はエラーですか?
0518デフォルトの名無しさん
2012/04/16(月) 18:29:48.84それ以外考えられんのだが。
push abc 3
abc番地に3を書き込む。
違うっけ?
0519デフォルトの名無しさん
2012/04/16(月) 18:29:50.36運がよければ動く
確実にするには文字列の終端が必要
0520デフォルトの名無しさん
2012/04/16(月) 18:31:53.750521デフォルトの名無しさん
2012/04/16(月) 18:33:39.56char *s;
char *t;
s="good";
t="bad"
strcpy(s,t);だとOK?
配列型文字列はstrcpyダメで、ポインタ型文字列はstrcpyOK?
0522デフォルトの名無しさん
2012/04/16(月) 18:34:03.040523デフォルトの名無しさん
2012/04/16(月) 18:36:01.18さらにNG度UP!
0524デフォルトの名無しさん
2012/04/16(月) 18:36:31.960525デフォルトの名無しさん
2012/04/16(月) 18:43:13.250526デフォルトの名無しさん
2012/04/16(月) 18:45:12.26アウト
>>524
探すものがasciiのみであるならば。
0527デフォルトの名無しさん
2012/04/16(月) 18:49:15.59>>521もダメで、>>517もダメなら何が正しいんだよ。
文字列はポインタか配列でしか表現できんだろうに
0528デフォルトの名無しさん
2012/04/16(月) 18:50:28.97strcpyじゃなくて
strcmpです。
よろしくお願いします。
0529デフォルトの名無しさん
2012/04/16(月) 19:07:04.22> 探すものがasciiのみであるならば。
ascii範囲外でも問題ないよ
0530デフォルトの名無しさん
2012/04/16(月) 19:08:49.27>>529
ありがとうございます。
ascii範囲外でも問題ないってどういう仕組みなんでしょうか?
勝手に文字コード判断して比較してくれてるんですか?
0531デフォルトの名無しさん
2012/04/16(月) 19:17:24.720532デフォルトの名無しさん
2012/04/16(月) 19:19:45.770533デフォルトの名無しさん
2012/04/16(月) 19:26:28.79おk
サンキュ
0534デフォルトの名無しさん
2012/04/16(月) 19:54:34.48天才
0535デフォルトの名無しさん
2012/04/16(月) 19:56:21.89>>517はまず文字列じゃないのでアウト。
>>521はリテラルに対する書き換えなのでアウト。
0537デフォルトの名無しさん
2012/04/16(月) 21:51:41.50int 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じゃないの?
0538デフォルトの名無しさん
2012/04/16(月) 21:56:12.59なぜ成立ししないかは、浮動小数点数 誤差あたりでぐぐってしらべれ
0539デフォルトの名無しさん
2012/04/16(月) 22:22:49.88初めてCを習ったとき、それ注意されたわ
懐かしい。
0540デフォルトの名無しさん
2012/04/16(月) 22:32:44.34break;
にでもしとけ
0541デフォルトの名無しさん
2012/04/16(月) 22:55:01.33※VS2010
0542デフォルトの名無しさん
2012/04/16(月) 22:58:56.93もっとまともなC99対応コンパイラ使って下さい
0543デフォルトの名無しさん
2012/04/16(月) 22:59:28.560544デフォルトの名無しさん
2012/04/16(月) 23:03:51.89好きなときに保存した色を簡単にだしたいんだけどどうすればいいんだろう
0545デフォルトの名無しさん
2012/04/16(月) 23:06:11.14タグ付けとパーサ作ればおk
0546デフォルトの名無しさん
2012/04/16(月) 23:37:41.80色々調べてみたけどちんぷんかんぷんだから今は諦めます
ありがとう
0547デフォルトの名無しさん
2012/04/16(月) 23:51:30.35文字列としても使いたいなら、文字列と色情報配列を持つ構造体にするとか。
0548デフォルトの名無しさん
2012/04/17(火) 01:14:18.110549デフォルトの名無しさん
2012/04/17(火) 01:33:07.38printf( "\033[043m ABC\t" ); /* 背景色黄色で ABC と表示し、タブを表示します。*/
printf( "\033[034m DEG\t" ); /* 青色で DEF と表示し、タブを表示します。*/
printf( "\033[031m GHI\n\n" ); /* 赤色で GHI と表示し、2回改行します。*/
0550デフォルトの名無しさん
2012/04/17(火) 19:12:19.74を考えており、main関数で宣言自体をして確保、解放自体は別の関数でするようなものを作ってみたのですが
どうもしっくり来ないんですがもっといい方法はあるのでしょうか。
http://codepad.org/D6VOZ2X6
0551デフォルトの名無しさん
2012/04/17(火) 19:17:12.940552デフォルトの名無しさん
2012/04/17(火) 19:42:18.40関数名をalloc_hogeとfree_hogeとかに変えたらいいんじゃないだろうか
0553デフォルトの名無しさん
2012/04/17(火) 19:50:17.03確保と解放が完全な対になってないあたり?
0554はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 20:14:05.67C はそういうものじゃね?
C++ ならもうちょっと「しっくりくる」ように書けそうに思うけど。
0555550
2012/04/17(火) 20:20:47.88free関数の引数が*hogでいいが確保では**hogにしないといけないのか
確保関数でアドレスの先頭を表すのにhog[0]を使わないといけないのか
です。
0556はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 20:30:51.83一般的な感覚だと
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();
じゃないかなぁ。
0557デフォルトの名無しさん
2012/04/17(火) 20:31:15.83こんな感じとか。
名前は、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;
}
0558はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 20:34:55.46確かに initial って名前だと確保とは別っていう印象を受けるね。
C++ から用語を取って construct でもいいかも。
0559デフォルトの名無しさん
2012/04/17(火) 20:37:32.060560デフォルトの名無しさん
2012/04/17(火) 20:43:32.00ありがとうございます。名前はわかりやすくしときます。
struct hoge* initial_main(void){ }
ような使い方を知りませんでした。
こっちのほうがぱっと見わかりやすいです。
0561デフォルトの名無しさん
2012/04/17(火) 21:05:40.25mallocとかと変わらんよ。
0562デフォルトの名無しさん
2012/04/17(火) 21:50:02.50construct はやだな、extern "C" したときのうんこ臭が耐えがたい
0563デフォルトの名無しさん
2012/04/17(火) 21:52:09.110564デフォルトの名無しさん
2012/04/17(火) 22:12:25.720565デフォルトの名無しさん
2012/04/17(火) 22:50:14.48> create_hogeとかalloc_hogeにしたほうがいいと思うけど
create,alloc,init(ialize),newなどは好みだけど
hoge_createやhoge_allocのほうがいいと思うな。
0566デフォルトの名無しさん
2012/04/17(火) 22:52:23.06hoge_create = hogeが作る
0567はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 22:59:51.50伝統的には create_hoge の方が主流に思えるのは確かだけど…。
0568デフォルトの名無しさん
2012/04/17(火) 23:01:43.590569デフォルトの名無しさん
2012/04/17(火) 23:04:43.680570はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 23:06:34.62俺の好みでは確保したメモリの構造を見せる場合には alloc と free で
ハンドルとして扱ってもらう場合には create と close って使い分けな感じ。
0571デフォルトの名無しさん
2012/04/17(火) 23:06:39.120572デフォルトの名無しさん
2012/04/17(火) 23:08:09.28gtk_init
Py_Initialize
lua_open
SDL_Init
0574デフォルトの名無しさん
2012/04/17(火) 23:14:23.020575デフォルトの名無しさん
2012/04/17(火) 23:27:45.93じゃぁ
組み込みではなく生成したインターフェースが
NAME_newな形になるCSTLはどう?
create_hoge
より
hoge_create
のほうが扱いやすいと思うよ
補完しやすいし。
0576デフォルトの名無しさん
2012/04/17(火) 23:32:59.54オブジェクト.メソッド
なんだが、お前らオブジェクト指向言語使わんの?
0577デフォルトの名無しさん
2012/04/17(火) 23:37:05.610578デフォルトの名無しさん
2012/04/17(火) 23:37:50.58ンなの聞いてねーよks
スレタイすらも読めないのかよ池沼
ヒャッペン音読して出直せバカ
0579はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 23:41:04.09マクロを使って生成しているとは言え、それも CSTL というライブラリが提供している API っていう気もする。
ただ、いずれにせよ上述の「主流に思える」というのはそうでもないかな、という気がしてきた。
0580はちみつ餃子 ◆8X2XSCHEME
2012/04/17(火) 23:58:47.15補完しやすいというのは疑問があるぞ。 構造体とそれに対する操作の組を名前にするわけだろ。
だとすると hoge_ まで入力したときの候補は create_ まで入力した候補より分量が多くなる。
補完候補は少ない方が良いと考えると create_hoge の方が補完しやすいと言えないか?
0581デフォルトの名無しさん
2012/04/18(水) 00:19:00.97GtkWidget *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文字程度の長さが最も読みやすいと経験的に感じる。これ以上長いと短期記憶を余計に消費して疲れるし、これ以上短いと意味が不明で疲れる。
0582デフォルトの名無しさん
2012/04/18(水) 01:10:33.430583デフォルトの名無しさん
2012/04/18(水) 01:32:30.77単なるモジュールプレフィクスだよ。
関数名が被らんようにと言うのが主目的で、操作対象を表すわけじゃない。
せいぜいどのモジュールに属する関数かという程度。
モジュール外部と結合する意味でAPI的と言えるだろうけど、
CSTLが提供している云々は関係ないな。
外部結合だから出力の命名規則がそうなってるだけだ。
なんで、意味合いが違うのは同意なんだけど、Cの世界じゃ
モジュールに分けたらプレフィクス付ける方が主流だと思うよ。
0584デフォルトの名無しさん
2012/04/18(水) 02:07:17.52ない。
0585はちみつ餃子 ◆8X2XSCHEME
2012/04/18(水) 13:09:12.05俺は API 的というのを広い範囲で、外に公開する名前くらいの意味で言ってた。
言葉の使い方を除けばだいたい認識は一致していると思う。
0586デフォルトの名無しさん
2012/04/18(水) 20:03:47.61gimpって規模は異常に巨大だけど、徹底的にコードを単純な書式にして、モジュール化も徹底してるおかげで
局所単位でいぢれるし、局所単位で見ればそれほど超高度なことをしてる箇所は少ないので、意外と改造できるのでハック初心者の練習におすすめ。
とにかくコード書式が、これでもかというほど単純なように徹底されてる。
関数中で使う変数の宣言は、必ず関数の先頭位置で行うようになってるし、
GtkWidget *scale;
scale = gimp_prop_spin_scale_new ();
を
GtkWidget *scale = gimp_prop_spin_scale_new ();
と書くことすらしない。徹底的に一行の情報量を減らすというアプローチで書かれてる。
一見すると過剰な程にコードが簡易化されてるが、そのおかげで、所見でもある程度読める。ただし全体の行数は膨大。
>GtkWidget *scale;
>scale = gimp_prop_spin_scale_new ();
>を
>GtkWidget *scale = gimp_prop_spin_scale_new ();
>と書くことすらしない。
auto変数の初期化すら嫌いな -pedantic な人たちなのでしょう、多分。
0588デフォルトの名無しさん
2012/04/18(水) 21:46:14.130589デフォルトの名無しさん
2012/04/18(水) 21:49:24.30関数スコープの途中で変数宣言できるようになったのってC++が出てきてからじゃね?
1行の情報量を減らすってのはなるほどなぁとは思う。
0590デフォルトの名無しさん
2012/04/18(水) 22:12:00.570591デフォルトの名無しさん
2012/04/18(水) 22:13:38.560592デフォルトの名無しさん
2012/04/18(水) 22:24:29.300593デフォルトの名無しさん
2012/04/18(水) 22:36:08.960594デフォルトの名無しさん
2012/04/18(水) 23:32:26.550595デフォルトの名無しさん
2012/04/18(水) 23:33:08.580596デフォルトの名無しさん
2012/04/19(木) 00:02:06.720597デフォルトの名無しさん
2012/04/19(木) 00:45:13.120598デフォルトの名無しさん
2012/04/19(木) 00:51:23.990599デフォルトの名無しさん
2012/04/19(木) 00:54:48.710600589
2012/04/19(木) 00:57:41.83割り込みハンドラーが呼ばれたら順番にそれを呼べば良いんじゃね?
0601デフォルトの名無しさん
2012/04/19(木) 00:58:47.42http://www.nurs.or.jp/~sug/soft/super/longjmp.htm
0603デフォルトの名無しさん
2012/04/19(木) 01:04:11.920604デフォルトの名無しさん
2012/04/19(木) 01:04:55.240605デフォルトの名無しさん
2012/04/19(木) 01:30:15.28#if (TESTDEF == 1)
aaa();
#else
bbb();
#endif
上の例では TESTDEF が 1 だったら、aaa() を実行して、
そうでない値のときには bbb() を実行してくれることを期待して記述し、そのように動作します。
しかし TESTDEF が未定義の場合にも bbb(); が実行されてしまいました。
てっきり未定義エラーのようなものが発生すると思ったので驚きました。
上記のようなことをする場合に、
TESTDEF が未定義である場合にコンパイルエラーとする方法はありませんでしょうか?
0606デフォルトの名無しさん
2012/04/19(木) 01:33:19.91ccc();
#else
ddd();
#endif
なるプリプロセッサを延々と書き連ねる
0607デフォルトの名無しさん
2012/04/19(木) 01:35:44.19#errorを使う。
http://codepad.org/YkpizD6p
0608デフォルトの名無しさん
2012/04/19(木) 02:15:29.40やはり前処理1行だけで判断させてエラーにするのは難しそうですね。
>>607のコードのやりかたで自分でエラー行を書く方法で考えてみます。
ありがとうございました。
0609デフォルトの名無しさん
2012/04/19(木) 02:38:18.420610デフォルトの名無しさん
2012/04/19(木) 03:05:07.760611デフォルトの名無しさん
2012/04/19(木) 03:28:31.23#if (TESTDEF == 1)
aaa();
#else
bbb();
#endif
#endif
0612デフォルトの名無しさん
2012/04/19(木) 04:13:03.330613デフォルトの名無しさん
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;
}
0614デフォルトの名無しさん
2012/04/19(木) 04:59:40.34for ( 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];
}
0615デフォルトの名無しさん
2012/04/19(木) 05:00:01.66同じ事をやっている下は代入されません・・・
変数の宣言は、グローバル変数で宣言しました
int dainyuu_data[RECV_LENG];
一方、値が代入される変数は、
union を使い、やっています。
union U_recv_dt {
unsigned char data[RECV_LENG];
};
メモリの設定とか、必要なのでしょうか?
0616デフォルトの名無しさん
2012/04/19(木) 05:15:43.14recv_dt のこと?
dainyuu_data は int の配列
recv_dt は unsigned char の配列
代入されているかの検証で
元データを文字列と期待し printf にて先頭アドレスを渡したとすると、異なる出力になるのは当然だと思うが
配列の index 総なめで、個々に出力してみたの? (printf("%d\n", daynyuu_data[i] ってこと)
0617デフォルトの名無しさん
2012/04/19(木) 05:50:29.80で代入時、参照時にdainyuu_dataのaddress確認してみたら?
異なると思うよ。
0618デフォルトの名無しさん
2012/04/19(木) 06:06:59.39>>617
有り難うございます。
>dainyuu_data は int の配列
recv_dt は unsigned char の配列
unsigned char の配列でも試してみましたが、駄目でした。
>総なめで、個々に出力してみたの? (printf("%d\n", daynyuu_data[i] ってこと)
デバグモードのブレークポイントで配列の中を確認しました。
入っていない様です、また画面に表示も出ません(値は0です)
返信有り難う御座います・・・
疲れたので寝ます・・・
0619デフォルトの名無しさん
2012/04/19(木) 07:04:42.880620デフォルトの名無しさん
2012/04/19(木) 10:10:58.610621デフォルトの名無しさん
2012/04/19(木) 10:45:52.190622デフォルトの名無しさん
2012/04/19(木) 10:59:41.130623デフォルトの名無しさん
2012/04/19(木) 11:13:08.280624デフォルトの名無しさん
2012/04/19(木) 19:20:12.590625デフォルトの名無しさん
2012/04/19(木) 22:17:47.250626デフォルトの名無しさん
2012/04/19(木) 23:03:21.290627デフォルトの名無しさん
2012/04/20(金) 17:55:05.45C言語を独学で勉強できますか?
0628デフォルトの名無しさん
2012/04/20(金) 19:03:38.06できます。具体的には以下の通りです。
「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得
↓
「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する
↓
「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得
↓
「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ
↓
「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター
↓
「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する
↓
神の誕生
0629デフォルトの名無しさん
2012/04/20(金) 21:55:24.56+土方の誕生
0630デフォルトの名無しさん
2012/04/20(金) 22:39:06.550631デフォルトの名無しさん
2012/04/20(金) 22:44:57.750632デフォルトの名無しさん
2012/04/20(金) 22:45:39.310633デフォルトの名無しさん
2012/04/20(金) 22:49:01.61あとはUI関連の古典 誰のためのデザイン でも読んどけ
プログラム知識だけで面白可笑しく作れるとか思ったら
そいつはアホ
0634デフォルトの名無しさん
2012/04/20(金) 22:51:05.140635デフォルトの名無しさん
2012/04/20(金) 22:53:06.67いやそういう知識なら俺は知らんよw
0636デフォルトの名無しさん
2012/04/20(金) 22:58:50.78どんなゲームでも絶対使うもん。マインスイーパとか。
0637デフォルトの名無しさん
2012/04/20(金) 22:59:23.41それはおまえさん自身が決めることだ
少しでもマシンの動かし方を憶えたら
こんなことできないか? とアイディアから始めるんだ
必要な知識はそれによって決まる
ゲームプログラマってのはコンピュータのプロではなく
遊びのプロであることを片時たりとも忘れてはならない
0638デフォルトの名無しさん
2012/04/20(金) 23:06:59.79プログラマとは別
0639デフォルトの名無しさん
2012/04/20(金) 23:08:07.03しかも超偉そう。
0640デフォルトの名無しさん
2012/04/20(金) 23:10:55.970641デフォルトの名無しさん
2012/04/20(金) 23:18:05.79そこそこの組織に入るにはどうするかが問題となる
で、面接でくだんの質問をしたらまず祈られるだろう
スレチとか言っている連中はそこがわかってない
内容的に1人で勝負できる人がスポンサーをつのる様相がわかってない
0642デフォルトの名無しさん
2012/04/20(金) 23:23:36.78スレチじゃなくて板違いだったね…
0643デフォルトの名無しさん
2012/04/20(金) 23:30:38.38と企画から言われた時は、ハードウェアのマニュアルをそいつに投げ付けた事は良い思い出。
0644デフォルトの名無しさん
2012/04/20(金) 23:40:30.490645デフォルトの名無しさん
2012/04/20(金) 23:41:01.13通信路の定義の違いまで何とかできてしまったのは無知のおかげで今の俺なら発狂してた
そこそこの組織にいる人ならハード担当と癒着でない仲の良さを大事にする
0646デフォルトの名無しさん
2012/04/20(金) 23:43:00.93その時代の話、結構興味あるので、酉とかつけてもらえますか?
0647デフォルトの名無しさん
2012/04/20(金) 23:44:55.590648デフォルトの名無しさん
2012/04/20(金) 23:50:13.31〜おじさんの楽しい昔話〜
ってつけるようにしてもらえませんか
0649デフォルトの名無しさん
2012/04/20(金) 23:51:23.08でもいいです。あと、もしおばさんだったらごめんなさい。その場合はおばさんと表記を改めていただけるようお願いします。
0650デフォルトの名無しさん
2012/04/20(金) 23:52:54.490651デフォルトの名無しさん
2012/04/20(金) 23:55:05.770652デフォルトの名無しさん
2012/04/20(金) 23:58:48.561行目がどうのって意味わかんねえし
セクハラ野郎は嫌いだぜ
0653デフォルトの名無しさん
2012/04/21(土) 00:03:29.270654デフォルトの名無しさん
2012/04/21(土) 00:04:05.350655デフォルトの名無しさん
2012/04/21(土) 02:09:25.93ありがとうございます
0656デフォルトの名無しさん
2012/04/21(土) 02:09:28.860657デフォルトの名無しさん
2012/04/21(土) 02:15:53.72それコピペ
0658デフォルトの名無しさん
2012/04/21(土) 16:17:43.250659デフォルトの名無しさん
2012/04/21(土) 20:18:03.43いえいえ
0660デフォルトの名無しさん
2012/04/21(土) 23:07:24.27#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;
}
0661デフォルトの名無しさん
2012/04/21(土) 23:08:50.08i+2
0662デフォルトの名無しさん
2012/04/21(土) 23:16:29.27うおおおおおおおおおおおおお
しょうもないケアレスミスでした。
ありがとうございました
0663デフォルトの名無しさん
2012/04/21(土) 23:55:29.42(;゚ Д゚) …!? (つд⊂)ゴシゴシ
あれ? if (N < 2) の間違いだよね・・・ 俺の見間違え?
0664デフォルトの名無しさん
2012/04/21(土) 23:59:30.10昔見てたサイトがあるのですが思い出せないのです。
0665デフォルトの名無しさん
2012/04/22(日) 00:00:50.11あなたが見ていたのはここです
今度は忘れないようにURLを石板に刻んでおいてください
0666デフォルトの名無しさん
2012/04/22(日) 00:02:53.650667デフォルトの名無しさん
2012/04/22(日) 00:03:30.07面白そうなサイトですが、たぶん違います
ハノイの塔とか定番アルゴリズムを網羅してるサイトだったのですが
心当たりある人いないでしょうか?
0668デフォルトの名無しさん
2012/04/22(日) 01:17:12.55特定のサイトを捜したいなら相当詳しく書かんと特定不能だぞ
うろ覚えならもう自力でありったけの検索ワード入れてググるしか
0669デフォルトの名無しさん
2012/04/22(日) 01:20:54.98http://www.itmedia.co.jp/enterprise/articles/1009/04/news002.html
0670デフォルトの名無しさん
2012/04/22(日) 01:47:06.52エスパー力が足りないな
0671デフォルトの名無しさん
2012/04/22(日) 08:50:10.210672デフォルトの名無しさん
2012/04/22(日) 11:46:28.31if (1) goto A; else goto B;
A:
nop();
goto END;
B:
nop();
goto END;
END:
上記のC風ソースコードを、アセンブラコードへと変換するプログラムを書く。
gotoをpc命令へ変換するとして、ifの時点ではラベルのアドレスが不明。
どのようにしてアセンブラコードへ変換すればいいか。
0673デフォルトの名無しさん
2012/04/22(日) 11:51:22.93まあ、「アセンブラコード」とか言う意味不明のこと言い出す奴だかなぁ…
0674はちみつ餃子 ◆8X2XSCHEME
2012/04/22(日) 11:52:05.450675デフォルトの名無しさん
2012/04/22(日) 11:57:09.320676デフォルトの名無しさん
2012/04/22(日) 12:04:39.44再帰したとき巻き戻しが起こるのはなぜですか?
0677はちみつ餃子 ◆8X2XSCHEME
2012/04/22(日) 12:14:14.85少なくとも俺はわからん。
0678デフォルトの名無しさん
2012/04/22(日) 12:26:08.20スタック巻き戻しで再帰機能を実装しましょう
てな話だwww
もしも無限が扱えるようなファンタジーな計算機があるんなら
巻き戻す必要が無い
0680デフォルトの名無しさん
2012/04/22(日) 12:51:07.41cは入出力、演算、分岐、繰り返し等ができます。初級〜中級程度で実用的に使えるような書籍をお願いします。
0681はちみつ餃子 ◆8X2XSCHEME
2012/04/22(日) 13:54:00.92推薦図書/必読書のためのスレッド 67
http://toro.2ch.net/test/read.cgi/tech/1332822023/
0682デフォルトの名無しさん
2012/04/22(日) 14:01:56.31ありがとうございます
そっちに行ってみます
0683デフォルトの名無しさん
2012/04/23(月) 00:33:15.370684デフォルトの名無しさん
2012/04/23(月) 03:53:07.500685デフォルトの名無しさん
2012/04/23(月) 17:44:32.25Vista 32bit
VC++EE
1つのプログラムがmallocで確保できるメモリサイズ合計は2GBまでですか?
64bit版ではそれ以上確保できるのでしょうか
0686デフォルトの名無しさん
2012/04/23(月) 17:49:34.392GBも確保するな
0687デフォルトの名無しさん
2012/04/23(月) 18:00:14.780688デフォルトの名無しさん
2012/04/23(月) 18:47:48.02PAEという誤魔化し使うと、データ分が増やせる可能性がある
0689デフォルトの名無しさん
2012/04/23(月) 19:21:55.61納得しました
ありがとうございました
0690デフォルトの名無しさん
2012/04/23(月) 23:06:55.210691デフォルトの名無しさん
2012/04/23(月) 23:12:57.78理解も無くなぜも出典も問わずに納得しましたとだけ、
危険な気がする
0692デフォルトの名無しさん
2012/04/23(月) 23:28:14.370693デフォルトの名無しさん
2012/04/23(月) 23:32:48.96WIN32_FIND_DATAって初期化必要ないよな?
0694デフォルトの名無しさん
2012/04/23(月) 23:36:15.39(制限時間10分・5点)
0695デフォルトの名無しさん
2012/04/23(月) 23:36:41.18なぜか
WIN32_FIND_DATA *p
じゃなくて
WIN32_FIND_DATA p
の&p渡しならエラーでなかった
何でだろ?
まあサンキュ
0696デフォルトの名無しさん
2012/04/23(月) 23:37:21.280697デフォルトの名無しさん
2012/04/23(月) 23:39:52.240699デフォルトの名無しさん
2012/04/23(月) 23:47:44.60char *p;
strcpy(p, "hogehoge");
これ、なぜか落ちるよね。俺も何でかわからんもん。
0700デフォルトの名無しさん
2012/04/23(月) 23:48:54.57*pだと構造体自体のメモリが確保されてないってことね
余裕余裕
あばよ
0701デフォルトの名無しさん
2012/04/23(月) 23:55:12.21俺よりも一歩先に進んだなぁ。うらやましい
0702デフォルトの名無しさん
2012/04/24(火) 02:28:11.97p「■■■■」
strcpy(p, "hogehoge");
p「■■■■」← hogehoge\n
p「hoge」hoge\n
0703デフォルトの名無しさん
2012/04/24(火) 02:36:18.92うわwwwww
寝ぼけすぎて色々おかしいwwwww
p(ココを見よ)→「■■■■」(※メモリ上のどこか)
strcpy(p, "hogehoge");
p(ココを見よ)→「■■■■」← hogehoge\n
p(ココを見よ)「hogehoge\n 」
他(あれ?誰だよそこは俺の場所だろ。)
うん。寝よう。
0704デフォルトの名無しさん
2012/04/24(火) 02:36:46.03その話題は終わってる
0705デフォルトの名無しさん
2012/04/24(火) 03:03:33.22strcpy「hogehoge入れたれや」
p「お前が入れるかわからんわ」
malloc「おいpここの先頭になれ」
p「おkまかせろ」
strcpy「hogehoge入れたれや」
p「おkmallocに許可もらってるからこい」
0706デフォルトの名無しさん
2012/04/24(火) 03:06:36.730707デフォルトの名無しさん
2012/04/24(火) 03:48:15.150708デフォルトの名無しさん
2012/04/24(火) 04:00:12.77そこはただのネタ。
0709デフォルトの名無しさん
2012/04/24(火) 04:15:51.350710デフォルトの名無しさん
2012/04/24(火) 08:19:58.45一行目からNULLが帰ってきます
utf-8の文字コードで書かれたファイルはfgetsでは読めないんですか?
0711デフォルトの名無しさん
2012/04/24(火) 09:17:15.810712デフォルトの名無しさん
2012/04/24(火) 09:46:58.01じゃあなんでエラーになるんだろ
fgetsって改行コードまで読んで末尾にヌル文字入れるっていう仕様ですよね?
文字コードが違うのに改行コードとか判別できるんですか?
0713デフォルトの名無しさん
2012/04/24(火) 10:29:39.72ttp://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
0714デフォルトの名無しさん
2012/04/24(火) 11:42:34.690715デフォルトの名無しさん
2012/04/24(火) 11:42:51.83そのグーはとっくに読んでたんですが、
ccs=UTF-8っていうオプションを指定しようとしてもそんなのありませんって言われるんで
実行できませんでした。
fopenにそんなオプションないですよね?
0716デフォルトの名無しさん
2012/04/24(火) 11:45:17.640717デフォルトの名無しさん
2012/04/24(火) 11:45:49.47UTF-8 を wchar_t で扱おうとするとか訳が分からん
0718>>716
2012/04/24(火) 11:53:29.94どうやったらそんなオプション使えるのか教えてください
0719デフォルトの名無しさん
2012/04/24(火) 11:57:49.720720デフォルトの名無しさん
2012/04/24(火) 11:58:14.46お互いにうそはついてないけど、それを読ませたい相手には伝わってない
0721デフォルトの名無しさん
2012/04/24(火) 11:59:49.19utf-8の文字コードで書かれたファイルを
一行ずつ読みたいんです
方法を教えてください
お願いします
0722デフォルトの名無しさん
2012/04/24(火) 12:01:46.080723デフォルトの名無しさん
2012/04/24(火) 12:02:47.950724デフォルトの名無しさん
2012/04/24(火) 12:10:05.49strstrで改行コードまで読むことになりますが、
そのときに指定する文字はどうしたらいいんですか?
文字コードが違うんだから\nではひっかからないでしょう?
0725デフォルトの名無しさん
2012/04/24(火) 12:14:35.610726デフォルトの名無しさん
2012/04/24(火) 12:15:04.03早く教えろ
0727デフォルトの名無しさん
2012/04/24(火) 12:15:42.72話にならん
クズしかいねーなここ
0728デフォルトの名無しさん
2012/04/24(火) 12:17:31.320729デフォルトの名無しさん
2012/04/24(火) 12:20:15.63あ、今時別に珍しくはないか。
0730デフォルトの名無しさん
2012/04/24(火) 12:22:13.530731デフォルトの名無しさん
2012/04/24(火) 12:47:53.32ためせよ。
で、その思い込みがあるってことは結果にびっくりするだろうから、なんでそうなのかを調べろよ
0732デフォルトの名無しさん
2012/04/24(火) 13:53:59.250733デフォルトの名無しさん
2012/04/24(火) 14:24:05.92UTF8のASCII範囲(0x00-0x7F)のコードは
それ以外で使われないので
SJISと同じように読めばいいよ
改行コードは大概LF,かCR/LFなので
テキストモードで開いてfgetsすれば問題ない
0734デフォルトの名無しさん
2012/04/24(火) 14:40:25.01今調べたら読み込んでるファイルが空っぽだった
そりゃNULL返るよな
俺は数時間何していたんだ
中身のあるファイル読み込んだらいけたわ
0735デフォルトの名無しさん
2012/04/24(火) 15:07:52.650736デフォルトの名無しさん
2012/04/24(火) 16:15:24.39全く関係のない次元の話じゃねーか
ついでに
ホントウに中身がないのは
オマエだw
0737デフォルトの名無しさん
2012/04/24(火) 16:17:40.22ただたまにこういうどん臭いミスをするだけ
こういうミスは天才に多いからね♪
0738デフォルトの名無しさん
2012/04/24(火) 16:58:58.050739デフォルトの名無しさん
2012/04/24(火) 17:21:20.410740デフォルトの名無しさん
2012/04/24(火) 17:34:46.92うわぁ
0741デフォルトの名無しさん
2012/04/24(火) 17:37:29.490742デフォルトの名無しさん
2012/04/24(火) 17:38:17.540743デフォルトの名無しさん
2012/04/24(火) 17:39:09.310744デフォルトの名無しさん
2012/04/24(火) 20:13:00.760745デフォルトの名無しさん
2012/04/24(火) 22:53:21.980746デフォルトの名無しさん
2012/04/25(水) 14:19:06.07http://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;
}
と解答しました、よければ誰か添削お願いします
こうした方が読みやすいだとかでもうれしいです!
0747デフォルトの名無しさん
2012/04/25(水) 14:44:14.01強いて言えば、コメントを書いておくぐらいかな。
0748デフォルトの名無しさん
2012/04/25(水) 14:50:05.320749デフォルトの名無しさん
2012/04/25(水) 15:16:08.83キャストのタイミングが気に入らない
0750デフォルトの名無しさん
2012/04/25(水) 16:05:14.73個人的に
water=198;
milk=138;
は
water=198.0;
milk=138.0;
としたい。
0751デフォルトの名無しさん
2012/04/25(水) 16:10:01.41四捨五入なり五捨六入なり小数点以下切り上げなり、
そういう関数が無い解答例はかなりおかしい
どこにも「これで四捨五入されました」とかが書いてない、
これはそのサイトに不備があることに他ならない、
だからあなたのプログラミングの外の能力は上がらない
もっとマシな参考書を参考したほうがいい、
そのソースはさっさと捨てろ
0752デフォルトの名無しさん
2012/04/25(水) 16:39:14.94するかどうかは自由って書いてあるじゃん
そもそも回答例は四捨五入じゃねーし
0753デフォルトの名無しさん
2012/04/25(水) 16:55:41.10不備なのはお前。
0754デフォルトの名無しさん
2012/04/25(水) 20:40:35.390755デフォルトの名無しさん
2012/04/25(水) 23:56:04.810756デフォルトの名無しさん
2012/04/26(木) 03:13:58.25一見仕事してなさそうなところだといいね。
0757ビル・ジョブス
2012/04/26(木) 03:19:00.550758デフォルトの名無しさん
2012/04/26(木) 03:35:46.220759デフォルトの名無しさん
2012/04/26(木) 12:24:12.84第 20 回・国際分かりにくい C コードコンテスト
http://www.ioccc.org/2011/whowon.html
0760デフォルトの名無しさん
2012/04/26(木) 13:35:44.10なんで?
0761デフォルトの名無しさん
2012/04/26(木) 14:58:23.480762デフォルトの名無しさん
2012/04/27(金) 16:34:08.69LEDを光らせる関数を作ってそこに 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]){
~~~
}
0763デフォルトの名無しさん
2012/04/27(金) 16:38:29.00エラーメッセージを貼れ
そして consi int [] 渡すなら const つけろ
0764デフォルトの名無しさん
2012/04/27(金) 17:12:44.150765762
2012/04/27(金) 18:59:22.42error: invalid types 'const int[int]' for array subscript
環境はArduinoIDE Ver.1.0です。
1次元const配列をそのまま引渡しではエラー出ませんでした。
constをつけるというのは
void LED_Blink(const int pattern[3]){
というのはやってみたのですが、エラー変わりませんでした
0766デフォルトの名無しさん
2012/04/27(金) 19:00:11.96プロトタイプがないのに pattern に型があるから
それと pattern の次元が足りない
# こんなのを瞬時に指摘できない回答者が戯れ言ぬかしてんじゃねえ
0767デフォルトの名無しさん
2012/04/27(金) 19:03:10.650768デフォルトの名無しさん
2012/04/27(金) 19:05:38.61偉そうにレスするときはミスすると恥ずかしいぞ
0769デフォルトの名無しさん
2012/04/27(金) 19:14:09.76俺も焼きが回ったな
# はあ、飲みにでも行こうか・・
0770デフォルトの名無しさん
2012/04/27(金) 19:20:18.990771デフォルトの名無しさん
2012/04/27(金) 19:30:17.05ある程度の人間ならやきがまわることもあるかもしれないが
最初からカスだった場合にはどうなんだろう
0772デフォルトの名無しさん
2012/04/27(金) 19:36:51.180773デフォルトの名無しさん
2012/04/27(金) 21:21:26.43読点の使い方は教わらなかったのか?
0774デフォルトの名無しさん
2012/04/27(金) 21:31:47.34気にするなよ
0775デフォルトの名無しさん
2012/04/27(金) 22:09:24.94constつける話と前方宣言する話は別だから分けたかったんだよ。
どうするのが正しいのか教えてよ。
0776デフォルトの名無しさん
2012/04/28(土) 10:06:28.57#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を使わずに実現するにはどのようにすればいいのでしょうか?
また構造体配列はポインタという考え方でよろしいのでしょうか?
どうぞよろしくお願いします。
0777デフォルトの名無しさん
2012/04/28(土) 10:23:38.52if (d[0]^ckv&~msk)puts("ZERO");
0778デフォルトの名無しさん
2012/04/28(土) 10:40:02.01すみません、コンパイルエラーになるのですが・・・
0779デフォルトの名無しさん
2012/04/28(土) 10:47:36.930780デフォルトの名無しさん
2012/04/28(土) 11:08:13.22どうもありがとうございます!
0781デフォルトの名無しさん
2012/04/28(土) 13:07:58.430782デフォルトの名無しさん
2012/04/28(土) 13:40:30.261)文字列比較をstrcmpを使わずに実現したい
理由は何?それ次第で回答が変わってきそう。
2)先頭一文字だけ比較すればよい?それなら
d[0].name[0] == '0'でいいかも。ただし、終端されているか確認しないことになる。
3)
>構造体配列はポインタという考え方でよろしいのでしょうか?
もちろんダメです。
struct {
char name[10];
char *p;
}hoge;
hoge.nameは配列だし、hoge.pはポインタです。
0783デフォルトの名無しさん
2012/04/28(土) 14:52:08.260784デフォルトの名無しさん
2012/04/28(土) 15:22:41.08配列名を書けば配列先頭のポインタ値が得られる程度に思っとけばいい。
0785デフォルトの名無しさん
2012/04/28(土) 15:48:38.900786776
2012/04/28(土) 16:59:07.49回答どうもありがとうございます!
>>782さんの(2)のような書き方を知りたかったので、本当にありがとうございます。
http://homepage3.nifty.com/mmgames/c_guide/16-03.html
またこのサイトを見ると、d[0].year と d->year が同じ意味とのことで、
-> はポインタのリスト構造でよく見かけるので気になったんです。
0787デフォルトの名無しさん
2012/04/28(土) 17:02:16.20ドット演算子
0788デフォルトの名無しさん
2012/04/28(土) 17:08:04.73すみません。「構造体の配列」と「構造体メンバの配列」を混同していました。
どっちにしても、配列とポインタは別物です。
>>784さんのとおりですが、例外があります。
int a[10];
int *p = a;
とした場合に
sizeof(a),sizeof(p)
&a,&p
が問題になります。
0789デフォルトの名無しさん
2012/04/28(土) 20:37:38.53>>782の(2)の書き方、、、先頭一文字の比較でよかったの?
そうならそうと最初に書いてくれれば
0790デフォルトの名無しさん
2012/04/28(土) 23:26:03.74ほぼ素人です。
スレチでしたらすみませんが、教えてくださったら嬉しいです。
3uwzclt4ht
↑
おそらくエンコードされた文字列なのですが、これはどうすれば元の文字列にすることができますか?
逆に、元の文字列をどうすればこの文字列にすることができますか?
0791デフォルトの名無しさん
2012/04/28(土) 23:34:20.56エンコード方法が分からないと無理
シーザー暗号 とか base64 とか
トリップ割りたいなら crypt とか
0792デフォルトの名無しさん
2012/04/28(土) 23:45:48.40100年かけてもムリとかあっからなwww
0793デフォルトの名無しさん
2012/04/28(土) 23:47:55.650794デフォルトの名無しさん
2012/04/28(土) 23:55:41.48>>792
やっぱり難しいですよね…
もう少し自分で試行錯誤してみます。
こんなアホな質問にわざわざお時間いただいてありがとうございました。
0795デフォルトの名無しさん
2012/04/29(日) 00:35:54.370796デフォルトの名無しさん
2012/04/29(日) 00:38:31.87情報を間引いてるかどうかの違いだけ
0797デフォルトの名無しさん
2012/04/29(日) 00:40:00.290798デフォルトの名無しさん
2012/04/29(日) 00:53:24.72キーが最大でN個の時に
バケツをN個用意ししてみよう
それは可逆だよね
0799デフォルトの名無しさん
2012/04/29(日) 00:59:48.57ハッシュてのは同一の値には同一のハッシュ値を返すって以外何も保証されないものです。
N個全部で同じハッシュ値を生成することもありえます
0800デフォルトの名無しさん
2012/04/29(日) 01:16:06.38アンカ間違ってない?
0801デフォルトの名無しさん
2012/04/29(日) 01:17:08.95間違ってないよ
単純にハッシュ生成アルゴリズムが2で割るってだけだと考えてみよう
N/2しかバケツは使われません
0802デフォルトの名無しさん
2012/04/29(日) 01:20:40.92何を言ってるの?
もっと単純に、なにもせずにそのまま返すというハッシュ関数を考えてみ
可逆ですよね
0803デフォルトの名無しさん
2012/04/29(日) 01:22:25.74だから、ハッシュってのは同じデータには同じ値を返すとしか定義されてないの
バケツの数がデータの数より多くても全て使われる保証は全くないの
ハッシュを全く理解してないの?
0804デフォルトの名無しさん
2012/04/29(日) 01:23:52.69○ バケツの数がデータの数より少なくても全て使われる保証は全くないの
0805デフォルトの名無しさん
2012/04/29(日) 01:26:02.59ハッシュって言ってみたかっただけ なんだろうからさ
もうスルーしようよ。
0806デフォルトの名無しさん
2012/04/29(日) 01:28:40.72ttp://wikipedia.gwbg.ws/hez
0807デフォルトの名無しさん
2012/04/29(日) 01:32:09.660808デフォルトの名無しさん
2012/04/29(日) 01:32:26.70ハッシュ関数=非可逆
これは
802の簡単な例でも分かるように
必ずしも真ではないよね?
ハッシュ関数次第なのよ。
>キーが最大でN個の時に
と言っているように
データ数ではなく
表現可能なすべてのバケツを用意したら
可逆でしょ
0809デフォルトの名無しさん
2012/04/29(日) 01:36:22.92ハッシュ関数にのみ依存します
0810デフォルトの名無しさん
2012/04/29(日) 01:36:53.04確かにそうだな。
0811デフォルトの名無しさん
2012/04/29(日) 01:39:37.36キーの表現可能な数 = ハッシュ値として表現可能な数
で重複しようがないから
可逆だな。
0812デフォルトの名無しさん
2012/04/29(日) 01:42:47.860813デフォルトの名無しさん
2012/04/29(日) 01:46:46.390814デフォルトの名無しさん
2012/04/29(日) 01:49:49.340815デフォルトの名無しさん
2012/04/29(日) 01:54:14.03一部可逆ハッシュという可逆であることを保証する特殊なハッシュもあることはあるけど一般的には非可逆です
0816デフォルトの名無しさん
2012/04/29(日) 02:31:41.13A. ハッシュ関数次第
これでFA
0817デフォルトの名無しさん
2012/04/29(日) 03:43:17.010818デフォルトの名無しさん
2012/04/29(日) 15:11:59.77これってもしかしてバイナリモードでファイル読み込んだときには起こらない仕様ですか?
いまやってみたら\r\nのまま残ってたもので。。
テキストモード/バイナリモード、というのがそもそも MS-DOS とか CP/M とかからの負の遺産。
制御コード二つでやっと改行できるとか、ファイル末は ^Z とか、テレタイプをひきずった変仕様としか。
改行にしても OS によって、\r\n、\n、\r といろいろだ。いいかげ勘弁してほしい
最近はわりきって、\r, \n がどう混在しようが対応しておくのが、いろいろな意味で幸せなのではないか? \n\r とかはみかけないけど。
ちなみに手元の cygwin/windows xp x32 では
>\r\nのまま残ってたもので。。
0820デフォルトの名無しさん
2012/04/29(日) 15:41:35.62\nを\0に置き換えるってのはないよ。他のなんかと勘違いしてるかも。
>>819
ぐちゃぐちゃとうるさいなぁ。
0821デフォルトの名無しさん
2012/04/29(日) 15:45:32.50ありがとうございます。
strtok?みたいなやつが置き換わるんでした
fgetsは関係なかったですね。
勘違いしてました
>>819
ごちゃごちゃうっせーんだよボケ
0822デフォルトの名無しさん
2012/04/29(日) 16:04:35.62んな無意味な駄文はチラシの裏にでも書いてろやカス
0823デフォルトの名無しさん
2012/04/29(日) 16:08:39.29確かにそんなこと聞いてないのに長々語る奴はうざいけど
0824デフォルトの名無しさん
2012/04/29(日) 16:43:35.21テキストモード()
バイナリモード()
でいいのにね
0825デフォルトの名無しさん
2012/04/29(日) 16:44:36.040826デフォルトの名無しさん
2012/04/29(日) 16:48:10.47俺プログラムのやり過ぎか(void)って読んじゃうんだよね〜(ドヤッ
地獄のミサワにこれがないのは何故だ
0827デフォルトの名無しさん
2012/04/29(日) 16:58:41.16やり過ぎwww
足りてないよ
f() と f(void) は同じいや違うんぬんかんぬんhttp://toro.2ch.net/test/read.cgi/tech/1246115922/199
0829デフォルトの名無しさん
2012/04/29(日) 17:01:22.04そこでニワカっぽさをさりげなく演出してるのさ(大嘘)
0830はちみつ餃子 ◆8X2XSCHEME
2012/04/29(日) 17:23:40.21http://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
strtok()?
そんなもの使うのか?私は使わない、使ったことがない、そもそも使えない。
仕様からして糞だと見抜け。代替には cutToken() を使え。
http://toro.2ch.net/test/read.cgi/tech/1313183984/39
http://ideone.com/Rzg4n
0832デフォルトの名無しさん
2012/04/29(日) 17:27:49.36strtokを使うとは誰も言ってないだろ
そういうのは余計なお世話なんだよハゲ
0833デフォルトの名無しさん
2012/04/29(日) 17:28:32.460834デフォルトの名無しさん
2012/04/29(日) 17:32:50.84負の遺産がどうたらいう見解は逆だと思う
まあ、現実は系譜より実効支配力で決まることだが
kwsk(_ _)
改行コードはひとつで機能しかつ一種類であればどれほど楽かと思わずにはいられないのですけれども、どうしてこうなってしまったのでしょうか?
この問題、いにしえの raw / cooked と関係あるのでしょうか?
0836デフォルトの名無しさん
2012/04/29(日) 17:40:17.95いま実効支配しているのはなに?
0838デフォルトの名無しさん
2012/04/29(日) 17:47:19.56mac が cr
後発の MS は cr+lf でとりあえずいいとこどりを狙った
0839デフォルトの名無しさん
2012/04/29(日) 17:47:29.770840デフォルトの名無しさん
2012/04/29(日) 17:50:19.190841デフォルトの名無しさん
2012/04/29(日) 17:51:20.76B で printf("*n"); とかやってた頃に endl みたいな発想はしなかったらしい
0842デフォルトの名無しさん
2012/04/29(日) 17:53:29.550843デフォルトの名無しさん
2012/04/29(日) 17:54:00.700844デフォルトの名無しさん
2012/04/29(日) 17:56:38.67消えろよks
0845デフォルトの名無しさん
2012/04/29(日) 18:05:58.390846はちみつ餃子 ◆8X2XSCHEME
2012/04/29(日) 18:22:08.16行を送る LF とキャリッジ (カーソル) を左端に戻す CR の組合せ
で改行を表すのはそれはそれで理にかなってる。
とはいえ、なんだか悲しいなあ。
>>839
失礼な。話題をつくってやったんだからモリタポ払え
0848デフォルトの名無しさん
2012/04/29(日) 18:39:56.860849デフォルトの名無しさん
2012/04/29(日) 19:24:30.370850デフォルトの名無しさん
2012/04/29(日) 19:33:41.21ここから先は有料ですよというのもごく普通
0851デフォルトの名無しさん
2012/04/29(日) 20:01:24.99自作自演のksクズゴミは失せろ
巣にこもって出てくんな
そのまま飢えちまえ
0852デフォルトの名無しさん
2012/04/29(日) 20:01:33.36ちょっと待って!本番するなら追加で諭吉4枚よ!
>後から報酬を要求する
フフフ…気持ちよかったぁ?ちなみに本番は諭吉4枚だったの。それぐらい持ってるわよね?
後者は悪質っていうかイラっとくる
0853デフォルトの名無しさん
2012/04/29(日) 20:56:20.41イラッで済むやつをカモって言うんだよ
0854デフォルトの名無しさん
2012/04/29(日) 21:56:40.48int a[3] = {1, 2, 3};
int *x;
x=&a[0];
printf("%d\n", *x);
x++;
printf("%d\n", *x);
このように書いてあったのですが、
x=&a[0]; のところは、x=a; ではダメなのでしょうか?
同じ結果になると思うのですが、
いけない理由があればどうぞ教えてくださいませ
0855デフォルトの名無しさん
2012/04/29(日) 22:01:57.08つーか試せ
0856デフォルトの名無しさん
2012/04/29(日) 22:12:16.72他の処理をした際に上手くいかないのではないかと思ったので、
x=a;でもいいのか配列の先頭のアドレスを参照すべきなのか聞いた次第です。
0857デフォルトの名無しさん
2012/04/29(日) 22:28:19.24char *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;
}
0858デフォルトの名無しさん
2012/04/29(日) 22:37:33.38charへのポインタの配列
0859デフォルトの名無しさん
2012/04/29(日) 22:40:05.700860デフォルトの名無しさん
2012/04/29(日) 22:44:45.49printf("文字を入力してください。\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]);
}
0861デフォルトの名無しさん
2012/04/29(日) 22:44:52.80連休明けに消費者センターに行ってセンターじゃ対応できないから警察に被害届出せばいいじゃん
0862デフォルトの名無しさん
2012/04/29(日) 22:46:23.460863デフォルトの名無しさん
2012/04/29(日) 22:46:28.10X printf("入力された文字は%sです¥n",str[i]);
O printf("入力された文字は%sです¥n",&str[i]);
お前はなにをいっている?
>>857
字面上での形式を合わせて、とは考えないことだ。
まず入力された文字群がどこにどのように格納され、そして出力されることを想定しなければならない。
そういう意味では C はかなり具体的なハードウェアイメージがなければ理解が困難だ。
はじめて言語を習うのなら、そして今、言語の選択を変更できるのなら java とか他の言語がお勧めだ。
二つ目以降ならそのままがんばれ。
0866デフォルトの名無しさん
2012/04/29(日) 23:38:32.19そのあたりはCの流派でいろいろとちがうんじゃないかな
だから師の教えの通りに%sをそのまま使った方がいいと思うよ おれは
0867デフォルトの名無しさん
2012/04/29(日) 23:56:26.300869デフォルトの名無しさん
2012/04/30(月) 00:17:52.19strtokのどの変に問題があったの?kwsk(_ _)
0870デフォルトの名無しさん
2012/04/30(月) 00:24:27.07エスパーしたのはどこだ?
プロンプト文言から日本語を除外したことか?
それとも領域を用意したことか?
入力長に制限を課したことか?
相変わらず初心者には最小限の修正をすべきということを学ばないな。
0871はちみつ餃子 ◆8X2XSCHEME
2012/04/30(月) 00:24:30.030872デフォルトの名無しさん
2012/04/30(月) 00:29:40.550873デフォルトの名無しさん
2012/04/30(月) 00:31:28.08状態を持つというか、内部で文字列を変更されるのはイケてないかもしれない。
けれど、その点は別にQZはなんとも思っていないのではないか。
0874デフォルトの名無しさん
2012/04/30(月) 00:34:38.760875デフォルトの名無しさん
2012/04/30(月) 00:39:18.61>strtokのどの変に問題があったの?kwsk(_ _)
>>831 じゃないけど、スレッドセーフじゃないところと、引数の文字列を変更するところかな。
strtok() が状態を持つ、という仕様。
0877869
2012/04/30(月) 00:44:24.19あと誤字すみませんでした。
>プロンプト文言から日本語を除外したことか?
それは手元の処理系の都合だ。まあ英語にしても誤解はないだろうから問題ないだろう。
>それとも領域を用意したことか?
>入力長に制限を課したことか?
それこそが問題だ。これは必須の修正だ。
この点を考慮せずして C なぞ書けない、と >>865 で述べたつもりなのだが、読めなかったのか?
いや、そもそも C の本質を理解していないのか?
>相変わらず初心者には最小限の修正をすべきということを学ばないな。
お前さんには C は向かない、java をお勧めする。
0880デフォルトの名無しさん
2012/04/30(月) 00:48:31.97であれば、それはエスパーでもなんでもない、ただの回答だわ。
1行目を懸念したのであれば、それはエスパーといってもいいかもしれんね。
なぜjavaが出てきたのかは分からんが、初心者が困っているときには必ずしも最適解を与えるべきではないということぐらい学べ。
0881デフォルトの名無しさん
2012/04/30(月) 00:49:25.50*q = '\0';
?
0882デフォルトの名無しさん
2012/04/30(月) 00:51:46.070883はちみつ餃子 ◆8X2XSCHEME
2012/04/30(月) 00:54:25.09Cの「状態を持つ関数」とクロージャは同じではないけどな。
いずれにせよ、 strtok はリエントラントとかスレッドセーフとか以前の問題で、
ふたつの文字列を交互に扱うということさえ出来ないってのは格好悪い設計。
0884デフォルトの名無しさん
2012/04/30(月) 00:55:24.60いつもエスパーすればモリタポもらえるぐらいの普通のコードが書けるかもな
>引数の文字列を変更するところかな。
実は、これはそんなに問題とはおもっていない。
>スレッドセーフじゃない
これも必要に応じて対応するから、すでに準備されている関数がスレッドセーフかどうかが明示されておれば問題とはしない。
あらためて考え直すと、かなり主観的な判断をくだしているようだ。
そういう意味では、
>>871
>イケてない
が極限にまで正確な記述であると、心の底から同意する次第である。
>初心者が困っているときには必ずしも最適解を与えるべきではない
確かにこの点は判断は分かれるだろう。それ自体については認める。
私は最適解を提示する立場。
0887デフォルトの名無しさん
2012/04/30(月) 01:08:49.79> >引数の文字列を変更するところかな。
> 実は、これはそんなに問題とはおもっていない。
これと>>879の違いをkwsk
ぶれただけ?
与えられた引数(とそれに関連するコンテキスト)を内部で変更してしまう、という点については、それさえわかっておれば対応可能だから問題とはしない。
0889デフォルトの名無しさん
2012/04/30(月) 01:12:40.85>>873に「そう、そこは問題視していない」とレスするがなぁ。
0891デフォルトの名無しさん
2012/04/30(月) 01:14:01.64それについてはエスパーするほどでもないだろうから、一般には捨て置いていいとおもう。
0892デフォルトの名無しさん
2012/04/30(月) 01:20:54.85→>>879 なんとも思ってないのに作るわけないだろボケが!!!
>>875 引数の文字列を変更するのはちょっと問題かもね
→>>885 問題だとは思ってないよ
>>885と>>879になんら差異はない(キリッ
やっぱどうかしてるわ。
0893デフォルトの名無しさん
2012/04/30(月) 01:27:09.020894デフォルトの名無しさん
2012/04/30(月) 01:27:53.99そこからようやく始まるんだよ
1) 状態を持つこと
2) 引数として渡された文字列を、内部で変更してしまうこと
の両方が >>873 で記述されているが、そのうち、私は状態を持つことについて問題視している。
ただし、今となって白状するが、当初 >>831 の時点ではそれを明確に記述できない状態であった。
問題点の記述化に関しては >>871 に助けてもらったことを認め、 >>871 に感謝する次第である。
0896デフォルトの名無しさん
2012/04/30(月) 01:28:52.89そうすれば、時々使いどころに気づくと思うから、使う。
頻度が低いものは忘れていくから、たまにながめなおす。
そんな感じでいいと思うよ
0897 ◆QZaw55cn4c
2012/04/30(月) 01:29:30.12存在することを知っており必要に応じて参照・試行する手間さえ厭わなければ全然 OK
0898デフォルトの名無しさん
2012/04/30(月) 01:32:15.88なるほどー、ありがとうございます。
0899デフォルトの名無しさん
2012/04/30(月) 01:43:15.21mainを書いたときから、いや、C言語ってのがあるんだ?ってところからすでに始まっている。
0900デフォルトの名無しさん
2012/04/30(月) 13:37:10.18副作用のある関数を全て否定するのか? (肯定しろと主張しているのではない)
状態を持つことと副作用を持つこととは違う。状態を持たせる場合は静的変数を表に出して記述したい。
0902デフォルトの名無しさん
2012/04/30(月) 14:00:21.390903デフォルトの名無しさん
2012/04/30(月) 14:08:48.88char* qz_strtok(char **, const char *);
てことなら俺もそう思うが
char* qz_strcat_need_free(const char *, const char*);
みたいのはやだな
つ http://toro.2ch.net/test/read.cgi/tech/1313183984/
しょーばいのためです霧
0905 ◆QZaw55cn4c
2012/04/30(月) 14:28:46.47>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);
という流儀があるのは、あー、認識していますけれども、あー、そこまでやるというのも、うー、どうかなと、あーうー。
0906デフォルトの名無しさん
2012/04/30(月) 14:50:42.08ガッしたくなるな
本来
n = EstimateBuffer(that, fragment1, fragment2);
buff = malloc(n);
BuildBuffer(that, buff, fragment1, fragment2);
free(buff);
とすべきところ、エクスポートテーブルをけちるためとはいえ
0907デフォルトの名無しさん
2012/04/30(月) 14:53:49.19そのスレでだけキャップつければいいんじゃないの?
よそのスレでも宣伝のためにキャップつけるなんてことせずにさ
反感もたれて逆効果だと思うけど?
0908デフォルトの名無しさん
2012/04/30(月) 14:56:45.090909デフォルトの名無しさん
2012/04/30(月) 15:04:40.05どのスレでも触れちゃダメなやつが湧くもんだね
0911 ◆QZaw55cn4c
2012/04/30(月) 15:14:35.22今きがついたんですが、
>>905 の NeedBufferFunction() は内部に static な領域を持たなければならなくなりますね。これはもっとも嫌うところ。
とすると、>>906 のアンカー「that」 の存在が必須か?現時点でよくわかっていないから実装してみようか?んー、んー。
0912 ◆QZaw55cn4c
2012/04/30(月) 15:17:54.11煽るためには自演も辞さない。でも炎上のなかで新しい概念が浮かび上がるという収穫は捨てたもんじゃないでしょう?
炎上するだけで終わってしまう、という迷惑な結果が大半ではありますけれども。
それはともかく自演認定はわりと外れていますねえ、実のところ。
0913デフォルトの名無しさん
2012/04/30(月) 15:20:09.970914デフォルトの名無しさん
2012/04/30(月) 15:22:28.690915デフォルトの名無しさん
2012/04/30(月) 15:25:25.030916デフォルトの名無しさん
2012/04/30(月) 15:29:21.70どうでもいいことだから次の質問お先にどーぞ
0917デフォルトの名無しさん
2012/04/30(月) 15:30:48.490918 ◆QZaw55cn4c
2012/04/30(月) 15:50:32.47argument は independent variable のことだから略して「引数」だ!
dependent variable (って単語はあるのか?しらない。)はパラメータ parameter という。
プログラム言語では argument も parameter も同じ意味のようなきがしますけれども。
0919デフォルトの名無しさん
2012/04/30(月) 15:52:03.45仕事無くなったのか
0920デフォルトの名無しさん
2012/04/30(月) 16:14:49.36世間では「昭和の日」の振替休日なんだよ
休日に働く人だっているし
平日に休む人だって普通にいるが
それ以前の問題だ
0921デフォルトの名無しさん
2012/04/30(月) 17:08:59.18変数のことを指し、argumentは関数にinputする具体的な値を指す。
英語圏の人も、厳密でない人は区別を曖昧にするし、はっきりと区別する
ことは必要ではないと思うけどね。
俺は日本語の「引数」というのはどうも好きになれない。
他の訳語はうまいなって思うのもあるけど、これは意味的にも
読み方的にも意味不明に感じる。
0922デフォルトの名無しさん
2012/04/30(月) 17:19:06.49ISO/IEC9899 において argument と parameter は区別されているし
望ましくない言葉遣いを牽制もしている
0923デフォルトの名無しさん
2012/04/30(月) 17:48:22.55もっと解りやすく。
0924デフォルトの名無しさん
2012/04/30(月) 17:48:47.40argcじゃなくてparamcにすべきってこと?
0925デフォルトの名無しさん
2012/04/30(月) 18:08:45.22int x = func(100); // 100はargument(実引数)
こうじゃね?
0926921
2012/04/30(月) 18:21:32.49int add(int i, int j) {
return i + j;
}
を考える。ここで、iやjは関数を呼び出すまでは具体的な値を持たない
空の箱みたいなものものでしょ?
place holderというのはそういう意味で、iやjはこの関数に使われている
parameterとなる。
一方、この関数を具体的に呼び出すとき、例えば
add(1, 2)
においてiやjに代入される1や2のことを、argumentという。
>>923これでよい?
0928デフォルトの名無しさん
2012/04/30(月) 21:31:39.50返却値は分割数である.ただし,分割数は最大 MAX までとする.
この関数を作って実行したのですがうまくいきません。
どこが間違っているのでしょうか。
http://codepad.org/C5gSM3UF
0929はちみつ餃子 ◆8X2XSCHEME
2012/04/30(月) 22:14:49.62どこが間違ってるかとか解説するのダルいから、とりあえず、その仕様に沿った関数を俺なりに書いてみた。
http://codepad.org/8aWRx8YL
あと質問の本筋ではないが、 main 関数の型をちゃんと書かないとこのスレではもめる元になる。
0930デフォルトの名無しさん
2012/04/30(月) 22:18:40.93スレ主旨を勘違いしてんじゃねー
0931デフォルトの名無しさん
2012/04/30(月) 22:27:43.900932デフォルトの名無しさん
2012/04/30(月) 22:30:35.940933はちみつ餃子 ◆8X2XSCHEME
2012/04/30(月) 22:32:14.40i は文字列毎のインデックスで、 count が分割数であるべきなんだけど混同しているのが根本的な原因じゃないかなぁとは思う。
0934デフォルトの名無しさん
2012/04/30(月) 23:19:36.17どこが悪いかははちみつさんの言うとおり全体的におかしいのでアドバイスできませんが。
多分こういう感じにしたかったのかな?
http://codepad.org/CZ4ZbAsQ
0935デフォルトの名無しさん
2012/05/01(火) 01:25:27.81こいつは何でトリップ付けてんの?
何かの権威なの?
0936デフォルトの名無しさん
2012/05/01(火) 01:50:11.720937デフォルトの名無しさん
2012/05/01(火) 05:22:51.170938デフォルトの名無しさん
2012/05/01(火) 05:28:01.950939デフォルトの名無しさん
2012/05/01(火) 06:34:44.270940デフォルトの名無しさん
2012/05/01(火) 07:35:18.330941デフォルトの名無しさん
2012/05/01(火) 07:41:17.930942はちみつ餃子 ◆8X2XSCHEME
2012/05/01(火) 07:51:03.10私も >>241 で述べた様に最近知ったのですが、 C11 ではようやく無名共用体が規格に取込まれたようです。
C++ では当初からある機能であり、 C においても処理系の一部 (Turbo C 等) はかなり古くから拡張として提供していた機能です。
規格改定の際に検討される範囲内に入っているくらいには使われていると考えていいでしょう。
私が知っているところでは yacc が生成するコードで共用体が使われているので、それ見ればどういう用途で使うか参考になるかもしれません。
C++ なら共通のクラスを基底にもつクラスを定義して dynamic_cast するような状況でしょうか。
0943デフォルトの名無しさん
2012/05/01(火) 07:55:07.110944デフォルトの名無しさん
2012/05/01(火) 08:24:21.37d = split(str, ret , c[0], m);
printf("分割数は%dです。\n", d);
printf("分割元文字列は%sです。\n", str); /* 分割した1つ目しか出てこない */
こうなるのは想定してる?
0945デフォルトの名無しさん
2012/05/01(火) 10:51:44.72メッセージループ処理とかで、関数テーブルを使うような場合によく使う。
プロトタイプ宣言を揃える必要があるため、引数を共用体にして、型が異なる引数を
処理できるようにしている。
割りと一般的な手法だと思う。
0946デフォルトの名無しさん
2012/05/01(火) 11:03:50.50SCHEMEスレが過疎ってるから出張してきたんだろ
0947はちみつ餃子 ◆8X2XSCHEME
2012/05/01(火) 11:25:58.95strtok だとうまくない。
素直に 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 になってしまう。
0948デフォルトの名無しさん
2012/05/01(火) 12:09:09.70int 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;
}
0949948
2012/05/01(火) 12:10:55.22バグってます。
0950デフォルトの名無しさん
2012/05/01(火) 12:27:39.170951デフォルトの名無しさん
2012/05/01(火) 12:46:24.35ものすごいアホのC言語使い(ohhara_008)発見。
0952デフォルトの名無しさん
2012/05/01(火) 13:02:39.110953デフォルトの名無しさん
2012/05/01(火) 13:15:27.98http://d.hatena.ne.jp/tt_clown/20100904/1283587136
0954デフォルトの名無しさん
2012/05/01(火) 13:19:49.07プログラマーってなんでこうも言葉のコミュニケーションが苦手なんだろうな?
その説明が相手に伝わるかどうかに興味が無いんだろうな
0955デフォルトの名無しさん
2012/05/01(火) 13:21:38.72DirectXのライブラリでも使用してたはずだが。
0956デフォルトの名無しさん
2012/05/01(火) 13:22:54.41学生の時、悪い例としてそういう記述を習った。
0957デフォルトの名無しさん
2012/05/01(火) 13:31:28.70で、なんでそれが悪いのかもちろん説明できるよな?
是非とも蒙昧なオレ様に教えてくれよ
0958デフォルトの名無しさん
2012/05/01(火) 13:32:40.99プログラムできないやつがいいそうなこと。
0959デフォルトの名無しさん
2012/05/01(火) 13:35:41.49むしろレスがつきすぎてて気持ち悪い
0960デフォルトの名無しさん
2012/05/01(火) 14:46:19.170961デフォルトの名無しさん
2012/05/01(火) 14:49:30.73おっさんになるとぐだぐだと長くしゃべりたがるからな
プログラマーも高齢化が始まってるんだろう
0962デフォルトの名無しさん
2012/05/01(火) 15:04:07.650963デフォルトの名無しさん
2012/05/01(火) 15:04:17.780964デフォルトの名無しさん
2012/05/01(火) 17:01:36.13自分のことは見えないと言う、いい見本乙
0965デフォルトの名無しさん
2012/05/01(火) 17:15:10.740966デフォルトの名無しさん
2012/05/02(水) 00:05:53.750967デフォルトの名無しさん
2012/05/02(水) 01:57:30.350968デフォルトの名無しさん
2012/05/02(水) 13:21:08.520969デフォルトの名無しさん
2012/05/02(水) 17:50:00.46底辺職業ドカタらしいくて良いじゃないか
0970デフォルトの名無しさん
2012/05/02(水) 18:42:49.610971デフォルトの名無しさん
2012/05/02(水) 20:42:18.000972デフォルトの名無しさん
2012/05/02(水) 22:59:06.66っ清掃
0973デフォルトの名無しさん
2012/05/03(木) 02:54:45.51いすにすわって仕事ができるね
0974デフォルトの名無しさん
2012/05/03(木) 08:44:36.18そうなのか
嘆いていないで地位改善に努めりゃいいじゃん
0975デフォルトの名無しさん
2012/05/03(木) 09:35:57.730976はちみつ餃子 ◆8X2XSCHEME
2012/05/03(木) 10:25:01.540977デフォルトの名無しさん
2012/05/03(木) 22:12:17.200978デフォルトの名無しさん
2012/05/04(金) 00:02:16.96まずは、basicとか始めるべきなのでしょうか?
0979デフォルトの名無しさん
2012/05/04(金) 00:02:58.850980デフォルトの名無しさん
2012/05/04(金) 00:05:27.320981デフォルトの名無しさん
2012/05/04(金) 00:19:24.62perl python ruby とかのラクなところから入る
そのあとC、それなりに分かった気になったら学習用としてZ80
Cを極めたいなら機械語は絶対にやっとけ
0982デフォルトの名無しさん
2012/05/04(金) 00:28:29.85c、c++、c#とか
cの仲間がいろいろあるようなのですが
どれから始めるべきでしょうか
0983デフォルトの名無しさん
2012/05/04(金) 00:30:58.790984デフォルトの名無しさん
2012/05/04(金) 00:35:45.26perl python ruby とかのラクなところから入る
0985デフォルトの名無しさん
2012/05/04(金) 00:38:28.090986デフォルトの名無しさん
2012/05/04(金) 00:41:30.95ハードウェアは基本情報の午前とかの知識を言ってます
0987デフォルトの名無しさん
2012/05/04(金) 01:01:29.72必要
PS3なんかはハードのアーキテクチャが難しすぎた……とかいう話もある
ttp://dic.nicovideo.jp/a/gb%E9%9F%B3%E6%BA%90
ゲームボーイの音源いじるだけでコレな
CPU回りはもっともっともっとクソな機械語が待ってる
あとはテメーで調べて判断しろ
0988デフォルトの名無しさん
2012/05/04(金) 01:11:10.64目的次第。
ゲーム作るなら必須。
ちょこっと計算するだとか、ファイル操作レベルならいらない。
0989988
2012/05/04(金) 01:12:41.21ゲームと明言されてたorz
WindowsならDirectXやOpenGLの知識が必要だな。
0990デフォルトの名無しさん
2012/05/04(金) 01:17:07.06>>988
返信ありがとうございます
0991デフォルトの名無しさん
2012/05/04(金) 01:23:16.400992デフォルトの名無しさん
2012/05/04(金) 01:37:14.000993デフォルトの名無しさん
2012/05/04(金) 01:52:08.390994デフォルトの名無しさん
2012/05/04(金) 01:53:27.440995デフォルトの名無しさん
2012/05/04(金) 02:17:51.360996デフォルトの名無しさん
2012/05/04(金) 03:37:39.98最近のLinuxディストリにはコンパイラ抜かれてるやつもあるぜ
まあパッケージ一発で入るが
0997デフォルトの名無しさん
2012/05/04(金) 04:06:18.94C言語なら俺に聞け(入門編)Part 101
http://toro.2ch.net/test/read.cgi/tech/1336071926/
0998デフォルトの名無しさん
2012/05/04(金) 08:49:28.370999デフォルトの名無しさん
2012/05/04(金) 08:53:52.91大変喜ばしい
1000デフォルトの名無しさん
2012/05/04(金) 08:57:59.6210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。