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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 117
http://toro.2ch.net/test/read.cgi/tech/1373675124/
★過去スレ
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++の宿題片付けます 165代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0002デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
2
0003デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
QZの偽者が居るみたい
0004デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
悔しかったのはわかるが荒れるからやめろ
0005 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
荒れてもいい
有意義な議論が育って欲しい
0006デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
schizoワロタ
0007デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
QZ55さいの偽者があらわれただと
0008 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
>>7
ほう、55かそう見えるのか‥‥興味深いね
0009デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
しかも8進数でね
0010 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
諸君議論したまえ
0011デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
Qzって本当にクズだよな。
0012デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
4,2
1,2,3,4
5,6,7,8

上記のようなデータが記録されたファイルがあります。
1行目の4,2は表のサイズで横4 x 縦2の表であることを表しています。
2から3行目は表のデータです。このデータを読み込みたいのですが、やりかたが分かりません。
最初の行はfscanf(fp,"%d,%d",&n,&m); で読み込めるのですが、2から3行目のデータをどうやって読み込めばいいのでしょうか?

for(i = 0;i < (n - 1);i++) strcat(format,"%d,");
strcat(format,"%d");
for(i = 0;i < m;i++) fscanf(fp,format,&a[0],&a[1],...,&a[n-1]); ←ここの書き方が分かりません。

どうすればいいのでしょうか?どなたか教えてください。
0013デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
vfscanfを使えば良い
0014デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
コンマで分割すりゃいいだけじゃん
0015デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>13
すいません、vfscanfの使い方がよくわかりません。それにvisual studioではvfscanfが使えないみたいです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12107958967

>>14
すみません、どういうことでしょうか?

for(i = 0;i < m;i++) ←縦m個分くりかえし
fscanf(fp,format,&a[0],&a[1],...,&a[n-1]); ←コンパイルの段階ではnの値は分からないので決めうちできない
fgetsで一行分読み込んでscanf系の関数使わずに自前で処理すれば出来ると思うのですが面倒くさい…
0016デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>15
strtok使えよ
0017 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
>>16
strtok() は仕様がウンコまともなやつ書いといたから
http://codepad.org/EqeOYIPh
char *cutToken(char *, char **)
0018デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
また、公開オナニーが始まったか。
VSっていってんだから、strtok_sで十分

つーか、VS2013でvfscanf使える
0019デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>17
なんだこのクソコードの嵐
精神衛生上良くないぞ
0020デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
客先常駐で偉そうな客先社員に見下されて何の経験にもならない雑用を押し付けられて精神病むのがオチ
30代で常駐先がなくなって未経験の異業種で人生やり直すのがオチ
常駐先企業の人件費抑制に利用されただけの人生だったな残念

システムエンジニアになろう〜新入社員研修編〜
ttp://www.nicovideo.jp/watch/sm4010880
0021 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
>>19
ではお前のコードはクソではない、というのだな、その証拠をみせてみろ
コードをみせるか >>17 のウンコな点を具体的にあげつらうか二つに一つだ

お前にできるのか?
0022デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>21
ウンコに惚れこんだウンコであることは明らか
0023 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
>>18
char *strtok_s(char *strToken, const char *strDelimit, char **context);
そうか俺と同じ意見とは嬉しいねえ俺なら char const *strDelimit とするがね
0024デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>21
ちょっと突っ込みどころ多すぎてすぐに全部は無理
特にひどいのは名前、駄目goto、bitmap?関連rgb分け+無駄malloc+処理部分
0025デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
しまった・・・今気づいた。
ネタにマジレスしてしまった。不覚だ。
0026 ◆QZschizo.ptH 2013/08/11(日) NY:AN:NY.AN
>>24
>名前
名前なんかどうだっていい

>駄目goto
エラー時 goto でお手軽に飛ばすのは便法の一つだね

>bitmap?関連rgb分け
これよくわからんが 24bit/8bit/4bit を一緒くたにするんだったら >>17 は普通だろう?パレットの処理はどうするんだ?bmp知ってるか?

>無駄malloc
どの行の malloc が無駄なんだ?

>処理部分
どの処理がウンコなんだ?
0027デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
いつものQzじゃねーぜ
やっぱこいつ偽者だ
0028デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
スカトロマニアがうんここねくり回しただけ。
codepad.org/LqpFzwee
codepad.org/lZ0MtrPM
0029デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>26
>これよくわからんが 24bit/8bit/4bit を一緒くたにするんだったら
> >>17 は普通だろう?パレットの処理はどうするんだ?bmp知ってるか?
内部で24bitとして扱ってるのに、3色を別々に処理してるから無駄、
って言ってもネタなんでしょ?
画像処理した事あって中身知ってる人ならそんなアホなことしないし
0030デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>17-19
0031デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>29
お前がモノを知らなすぎるだけだろ
0032 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>29
>内部で24bitとして扱ってるのに、3色を別々に処理してるから無駄、
色相変換をするんだったらRGBわけといてもいいのではないかね char 一つ分せつやくできる死ね
しかし1ピクセル1 int は検討してもよかったかね次の機会にはそうやってみるか
0033デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>32
>色相変換をするんだったらRGBわけといてもいいのではないかね
>しかし1ピクセル1 int は検討してもよかったかね次の機会にはそうやってみるか
違うぞ3つじゃなくて一つのchar配列で確保するって意味だ。
一回で確保しておかないと、処理ごとにいちいちアクセスする番地が飛ぶ恐れがある。
0034 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>33
座標(x, y) のRGB内容は array[f(x, y) + 0], array{f(x, y) + 1], array[f(x, y) + 2] でゲットか
24ビット入出力では楽チンだし記述量も若干へるが、大差ないわな

ま、アドレスが飛ぶとかいっても、対象が bmp だからもともとCPUキャッシュに乗りそうもないし、y軸方向の隣り合わせをアクセスするピクセル処理が噛めばどのみちアクセス番地は飛ぶ
アクセスするメモリが離れてもどうということはないのではないかね?

ま、重箱だね
0035デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
重箱か。まあそう思うならそれでいいさ。
0036 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
内容として大差ないのなら速い方を選ぶべきだしキャッシュのことは考えた方がいいかね?
機会があったら直しておく
0037デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>27-28
ある意味クズを物凄く馬鹿にしてるよなwww
0038デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
質問です。
グローバル変数
int x,y;

ローカル関数1
char *c1;
char c2[]="abc";
c1="xyz";
x=(int)c1;
y=(int)c2;
ローカル関数2
printf((char*)x);
printf((char*)y);"

とすると、xのアドレスはローカル関数1で設定した値が読み込めて
yのアドレスは値がおかしくなっているのですが、
メモリが解放されるというのはどういう状況を指すのでしょうか。
c1に設定したメモリは解放されるのでしょうか。よろしくお願いします。
0039 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>38
http://codepad.org/dQzZ5PkA
なにをもって
>yのアドレスは値がおかしくなっている
と考えたのか?
0040デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>39
アドレスがおかしくなっているんじゃ無くて、アドレスの中身の値です。
0041デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>38
char *c1="xyz";
char c2[]="abc";

の "xyz" と "abc" で意味的な違いがあるんですけど、それは分かります?
0042デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>41
わかってないと思います。
どういう違いがあるのでしょうか
0043 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>40
失礼

>>42
c1 は文字リテラル(http://mkubara.com/index.php/%E6%96%87%E5%AD%97%E5%88%97%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB)
のアドレスを持っている。文字リテラルはプログラムコードに最初から組み込まれている領域だ
c2 は普通に自動変数としての配列だから宣言した関数を抜けるとその内容は変わる可能性がある

より進んだ理解を得たいのなら、特定のアーキテクチャについてマシン語/アセンブラをやるといい
0044デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
64bit だと確かにコケるな
文字列の実験に3文字や7文字の文字列は使っちゃだめだよ
0045デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>43
ありがとうございます。
少し勉強してみます。
0046デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
向いてないから死ね
0047デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
うーーC言語の入門本で誤植が多くて難儀してます、、
下のreturn 0;のすぐ上のやつ
*(data + i)〜は
↓
&(data + i)だか&(data[i])だか&(*(data + i))だかの間違えですよね????
■
#include <stdio.h>

int main (void){
char* data[4] = { "par","birdie",
"eagle", "albatross"};
int i;
printf("date[i] 値 アドレス : ポイント先の値\n");
for(i = 0; i<4; i++){
printf("data[%d] %10d %10d %10s\n", i,
*(data + i), data + i, data[i]);
}
return 0;
}
↓↓↓↓↓↓↓
↓↓結果↓↓↓
↓↓↓↓↓↓↓
data[i] 値    アドレス : ポイント先の値
data[0] 4235576 1245052 par
data[1] 4235580 1245056 birdie
data[2] 4235587 1245060 eagle
data[3] 4235593 1245064 albatross

ポインタ配列のアドレスdata + iは綺麗に4つずつ離れている
ポインタ配列がそれぞれ指しているアドレス*(data + i)は文字列が
格納されているのでバラバラの間隔です。→&(data + i)だかの間違え
0048デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
間違いじゃない
初心者は、まず自分を疑う事を覚えるべき
0049デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
「値」だからなあ・・・間違いではないんだけど
で、何が言いたいんだろう? このサンプル
0050デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>48>>49
俺が言ってる*(data + i)の出力の結果のバラバラ間隔のアドレス番号郡って
これ明らかにポインタが差し示す先の文字列が格納されているメモリのアドレスだよね?

「*なになに」 の出力の結果ってアドレス番号じゃなくて、格納されているモノが出力されるんだよね?
アドレスを出力するのに「*なになに」って有り得ないんじゃないの?
アドレスを出力するのには「&」を使うんじゃないの?
本にはそう書いてあるはずだけど・・・俺が読み間違ってるか捉え間違えしてるんだろうか?
0051デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>50
捉え間違えてる
0052デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>50
お前が間違ってるといってるだろ。
間違って無いと思うなら、そのまま先に進め。
そして挫折しろ。

一つヒントをやる
*(data + i)と data[i]は全く同じ意味だ。
0053デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>*(data + i)と data[i]は全く同じ意味だ。
それは良くわかってるんだけど・・・

たとえば *(data + 0)つまり parっていう文字列 を %10d つまり
整数で出力しようとするとアドレスが出力されるというの?
ならないよね?
アスキー文字の10進数にあたる数字が出力される
というなら合点がいくんだけど・・・


もうちょっと考えてみます。
0054 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>50
>「*なになに」 の出力の結果ってアドレス番号じゃなくて、格納されているモノが出力されるんだよね?

基本的にはそのとおりだが、その格納されているモノがアドレスだったら、格納されているモノとしてのアドレスが「出力」される

>char *data[4] = { "par","birdie","eagle", "albatross"};

これは結構曲者だ
"par" という表現に対応するのは「アドレス」
data[0]〜data[3] には「アドレス」が格納されている
"par" は >>43 でも述べた文字リテラル

記述を絞ったので不親切になったかもしれないが、これで考えてくれ
0055 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>53
http://codepad.org/MBdkNDOc
0056デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>53
data[0]に格納されているアドレスの10進数表示…1245052
"1245052"というアドレスが指している"値"の10進数表示…4235576
"4235576"というアドレスが指している値を文字列として表示…par


1245052、1245056、1245060、1245064
これらのアドレスにはポインタが格納されているので、ポインタのサイズである4バイト飛びになってる

4235576、4235580、4235587、4235593
これらのアドレスにはcharの文字のデータが格納されているので、
4235576→4235580 は"par"と終端文字で合計4バイト
4235580→4235587 は"birdie"と終端文字で合計7バイト
4235587→4235593 は"eagle"と終端文字で合計6バイト
で文字列の長さ分が飛び飛びに確保されてる
0057デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
data + i は、 ポインタ変数自体が確保されている場所のアドレス
*(data + i)は、 文字列が格納されている場所のアドレス
0058デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>57
そういうこっちゃ
ポインタのポインタやな
0059デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
これでわかんなきゃC言語の才能ないから
スクリプト言語でもやっとけ
0060デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
char* data[4] = { "par","birdie", "eagle", "albatross"};

コンパイル時に書き換え不可能な領域に"par","birdie","eagle","albatross"のための
領域が確保されてその先頭アドレスがdata[4]にセットされる。


char data[4][10] = { "par","birdie", "eagle", "albatross"};

4*10バイトの領域が確保されてそこに
"par","birdie","eagle","albatross"が格納される
0061デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>54
ありがとうございます

あーその感じだと全く知らない内容なので、
やはり不親切にも本に書かれていないことを出された
ことによって困惑している状態ですね今の俺は。

ということは、とりあえずこの件はスッ飛ばして読みすすめていきます。しょうがない。

>>55
一番上の出力されたやつはアスキーコードの10進数のナンタラとかじゃなくて
アドレス番号ってことですよね?
これに関しては全く記述が無かったですね。
何度も読み返しながら読みすすめてるけど、読み落としてるのかな??

二番目は文字出力だから一文字しか出力されてない
三番目は文字列出力だから全文字出力されている
、と。

ありがとうございました!
0062 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>59
どちらかというと教え方が悪い
0063デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
ん、まだレスが・・・>>56以降を読みながら考えてみます
すいません!
0064デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
16進数で表示しろよ
0065 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>61
>一番上の出力されたやつはアスキーコードの10進数のナンタラとかじゃなくて
>アドレス番号ってことですよね?

そのとおり
"abc" という表現に対応するのはアドレスだ

>二番目は文字出力だから一文字しか出力されてない

もう一歩深く考えて欲しい、少し物足りない
0066デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
          %10d    %10s
data + 0   1245052  4235576
*(data + 0)  4235576    par
data[0]    4235576    par

data + 0はポインタ
*(data + 0)はポインタのポインタ

これで誰でも理解できるだろ。
0067 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>60
これまでの中では一番まともな教え方だが、>>50 が知らないであろうと予想される単語は使わない方がいい

コンパイル「時」
書き換え不可能な「領域」
「確保される」

後の例はよい例だと思う
0068 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>66
>>50 が陥っている迷路をお前はまったく理解できていない
0069デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>67-68
> 「*なになに」 の出力の結果ってアドレス番号じゃなくて、格納されているモノが出力されるんだよね?
> アドレスを出力するのに「*なになに」って有り得ないんじゃないの?
> アドレスを出力するのには「&」を使うんじゃないの?

明らかに%10dと%10sの違いを分かってない人のレスじゃん
書き換え不能な場所に確保されるとかはそれこそ今回の回答としては全く不必要な情報
0070デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>69
こいつアホすぎ
0071 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>69
その可能性は高いことは認める
char *[] の意味も、char (*)[] との違いもよくわかっていないだろう、というかまだやっていないだろう
分かっている者として言いたいことは沢山あると思うが、その中で一つに絞ってメッセージを送るとすればそれはなんだ?

「書き換え不能な場所に確保」の「書き換え不能」はたしかに要らない、が、文字列がどこかに確保されていることは伝えなければならない、それも「確保」という言葉抜きで
0072デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
猿を調教するのは大変だな。
0073デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>60 >>67さんの情報を頼りに
char data[4][10] = { "par","birdie", "eagle", "albatross"};
に書き直してみました。
そうしたら出力結果で%10sのところの文字列が文字化けして表示されなくなりました。

何が悪かったのでしょうか?
0074 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>73
試したコードを http://codepad.org/ に貼れ
0075デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
とりあえず、ポインタのフォーマット指定で%pでなく%dを使っているし、例題も間違いでは無いが意味不明なので
クソ本と認定して良いだろう。他のテキストでやり直す事を推奨
0076デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>74
http://codepad.org/M0g4dKeH
これです

char* data[4] = { "par","birdie", "eagle", "albatross"};
↓
char data[4][10] = { "par","birdie", "eagle", "albatross"};

以外何もいじくってません!
0077デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
初心者のくせにやたら痛いとこ突いてくるなこいつ
0078 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>76
そのコードは二次元配列を理解していないコードだ、まずは二次元配列、三次元配列 ... をやりなおせ
http://codepad.org/BvqZFYNi
0079デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
スレ立てやがったな
0080デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>78
つまり二次元配列は今回の話とは全然違うってことですか?
そうなると>>60さんが何を言いたかったのかが…(謎)
0081デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
char*のままじゃねえかしねよ
0082デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
これだけヒント与えてやってるのに分からないとか向いてないから死ね
0083デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>81
ありがとうございます!ちゃんと動きました
http://codepad.org/3XaabMwW

でも今度は>>47と違って二つのアドレスが同じ値を指しているのにちゃんと動いてます
これは変だと思います
0084 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>80
まず >>81 の指摘のとおり >>76 のコードは変だ
>>47 は二次元配列ではなく一次元配列、だたし配列の中身はアドレス、というタイプになる
これは今まであまたの人間が苦労して説明しようとしていたことだが‥‥まあいい >>60 の後半をまず納得してこの方針でコードを書けるようになれ

>>75 の意見も一理ある、というかお前の教科書はいったいなんだ?
0085472013/08/12(月) NY:AN:NY.AN
読んで考えて色々レス書いたんですが、かなり消しました
全部にレスできず申し訳ない。全部読んでるし全部熟慮してます。

>>70は私ではありません
>>72この程度で優越感に浸っていただけるのなら光栄です
>>71私と同じ思考の人のようでシンパシーを感じます。
私も実は教えるのは上手い方です。学びの方はご覧のとおりですが・・・

>>66
ポインタのポインタ! たぶんやっと分かって来たかも知れません。

      これのアドレス   これの格納物
data + 0 1245052      ■4235576
data[0]  ★4235576        par
         
*(data + 0)の%10dで出力させたモノは★じゃなくて■の4235576
ということですね?!!
★の4235576を出力させるためにはdata[0]の%10dという
指示をしなければならないということですね?!!

はぁ・・・本で一言、ポインタのポインタでこういう出力のさせかたをさせている、って
書いててくれればわかりやすかったのですが・・・・あー
0086デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>76
貼ってあるコードよく見ろ。
char * data[4][10]になってっぞ?
0087472013/08/12(月) NY:AN:NY.AN
どうでしょ、>>85の理解で正しいでしょうか?
&を使った★の4235576を出力させる方法はないもんか、、、を
お聞きしたいとも思いますが、頭が爆発しそうなのでヤメときます。
答えないでください。 方法があるかないかだけ良かったら教えてくださいw
0088デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
本の前にただの理解不足だと思うぞ。
最初は倉薫本でも読んどけ。
0089472013/08/12(月) NY:AN:NY.AN
>>75
そうですか・・・途中までは分かりやすかったのですが・・・
本書いてる内に嫌になっていい加減になったんでしょうねw
よくあることですねw
坂下夕里さんのC入門の入門という本です。
http://www.amazon.co.jp/%E5%9D%82%E4%B8%8B-%E5%A4%95%E9%87%8C/e/B004LU2Z9O
図書館みてもこれ以上に分かりやすそうな本が無かったですが、、

>>82 気分を害させてしまってすみません
>>88 おっしゃる通りです。自覚はあります。ご提案ありがとうございます!
0090デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>89
本の内容はともかく、>>47のサンプルコードは相当に「難しい」コード
初心者が理解できるとは思えないし、仮に理解「したつもり」になっても正しく理解できてる可能性は極めて低い
間違った理解のまま覚えちゃうのが一番恐ろしいから
0091デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
このへんはアセンブラを読みながら憶えるのが一番いいんだが
本人がいやなら仕方ないんだよなあ
0092472013/08/12(月) NY:AN:NY.AN
ポインタのポインタってのを宣言した覚えがないが、、、
それ言ったらポインタの宣言もしてないけど、、、
ああっもういいや!とりあえず考えずに飛ばします!
きっとchar* data[]は宣言すれば勝手にポインタも
ポインタのポインタも自動的にできるのでしょう!

と書いたところに>>90・・・orz
ありがとうございます。もういいです充分です。
いったん他のことは飛ばします。
本当にみなさんありがとう

>>85だけ誰かスミマセンレスお願いします
それで最後にします。
0093 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>77
おう!
これわからんわ 9899:1999 のどこに書いてあるんだ?
http://codepad.org/1p5uoPGl
0094デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
%pって処理系依存じゃなかったっけ?
間違ってたらごめん。
0095デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
言い方間違えた。
処理系の拡張だた。
0096 ◆QZschizo.ptH 2013/08/12(月) NY:AN:NY.AN
>>85
そんなとこだろうが

>★じゃなくて■

いや一緒だ、つまり *(data + 0) = data[0] とお前も言っていたはずだが?

>全部にレスできず申し訳ない。
基本的に其の必要はない、弟子は師匠を選ぶ権利だけはある
0097デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
「入門の入門」でこんなに難しいことを読まされるなんて、たまったもんじゃねーな
0098デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
確かに、このコードを示した上で解説が少ないなら、
入門の入門という内容ではないな。
0099デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
いや入門の入門だよ
そこは間違ってない
0100デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
http://codepad.org/WmnpBWFn
            %10d     %10s
data + 0    -1079837460    -
&(data + 0)  .-1079837460    -
*data + 0     134514504   par
&*data + 0   -1079837460    -
*(data + 0)    134514504   par
&*(data + 0)  .-1079837460    -
data[0]       134514504   par
&data[0]    -1079837460    -
*data[0]           112    -
&*data[0]     134514504   par
0101デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
うわ・・・
0102デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>100
ちょいミスった
http://codepad.org/WO2Wi4sR
            %10d     %10s
data + 0    -1084282708    -
&data + 0   -1084282708    -
*data + 0     134514504   par
&*data + 0   -1084282708    -
*(data + 0)    134514504   par
&*(data + 0)  .-1084282708    -
data[0]       134514504   par
&data[0]    -1084282708    -
*data[0]           112    -
&*data[0]     134514504   par
0103デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>102
i = 1でやってみ
違う結果になるから
0104デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
何がしたいのかわからん
0105デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
意図が伝わらないサンプルは
その存在価値を自ら否定している
0106デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
誰かこのコード解説してくれ
0107デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>102
何がしたいの?
0108デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
http://codepad.org/xQwN0I8M
意図はわからんが読みにくいので添削しておいた。
あと字揃えに文字数決まってない\t使うのはやめとけ。
0109デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>108
消えてんいるぞぉ
0110デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
なんで消えたんや
http://codepad.org/sLBVOlMB
0111デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>110
すごく見やすい
やっと意味が分かった
0112472013/08/12(月) NY:AN:NY.AN
>>96
■と★、数値は一緒でも
メモリの中で■のある場所1245052と★のある場所4235576は
違いますよね?>>85

たぶん分かりました!本当にありがとうございます!

>>97>>98
ほーそうですか、じゃあ恐らく意図あって強引に突っ込んだんでしょうね
1つ1つ完璧に理解させていくのではなく、ダーッと概要を「把握」させる
のがコンセプトみたいな感じなので、たぶん、この本は。>>99
0113デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
msgget、semget、shmgetのシステムコールを使用するときに
ftok使わない固定値を指定するのはシステムの作りとして良くない?

キーID作るときみんなどうしてる?
0114デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>94
謝らんで良いから、死ね
0115デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>114
初心者乙
0116デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>113
自分は固定値でも別に構わないと思う
移植性を考えるのならftokを使う方がいいんだろうけど、
どうせ競合する可能性は低いし、ftokを使っても競合がゼロになるわけじゃないし
分かってやるのなら全然ありかと
0117デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>115
初心者未満のゴミクス死んどけ
0118デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>117
おまえもな、カスが
0119デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
てめーが死ね。ゴミクス
0120デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>119
ノータリンの初心者はスレから出てけよ
0121デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>119
そうだそうだ
出てけや
0122デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>119
おまい、このスレに必要ないわ
0123 ◆QZschizo.ptH 2013/08/13(火) NY:AN:NY.AN
>>112
■4235576のある場所は145052
★4235576の或る場所も145052
data + i, *(data + i)
      data[i]    *data[i] = 'p'
0124デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
#include <stdio.h>
#define add_tem(kata) kata add_ ##kata (kata a,kata b){return a + b;}
add_tem(int);
int main(int argc, char ** argv)
{
printf("%d\n", add_int(11,3));// 14
return 0;
}

この様なマクロの使い方は良くないでしょうか。
0125デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>124
C言語では基本的にマクロは非推奨
そういうことがしたいならC++でテンプレートメタプログラミングをすることが推奨されてる
0126デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
Cだとテンプレートないから、ええんちゃう。
代替え手段って言っても、どうせツールになるし。
0127デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
サンクスです、マクロは便利な反面、危険もあり、むつかしいところです。
基本C言語で、C++のテンプレートを使うのも良さそうですね。
0128デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>125
嘘つくな
マクロ非推奨なんて聞いたことないし、C++なんて別環境が代わりに使えることもない

初心者に対し混乱を避けるためにマクロ禁止にする状況はあるかもしれないけど
0129デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
二次元配列について質問です。
char nijigen[3][3]={{0,0,0},{1,1,1},{0,0,0}};
という二次元配列を作り、要素が1の時に正方形を表示するというプログラムを
作っています。

for(i=0; i<=2; i++)
for(j=0; j<=2; j++)
if(nijigen[i][j]==1)Draw(i,j,color);

これで表示されるのですが、縦棒になってしまいます。
何故ですか?2行目が1なので、横棒になるはずですが、90度回転してしまいます。
0130デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>129
Drawも省略せず書けよ
0131デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>129
Draw関数のコードちょうだい。
0132デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>130
すいません。
DXライブラリのDrawBoxですね。
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph0.html#R2N2

char nijigen[3][3]={{0,0,0},{1,1,1},{0,0,0}};
for(i=0; i<=2; i++)
for(j=0; j<=2; j++)
if(nijigen[i][j]==1)Draw(i*interval,j*interval,i*interval+length,i*interval+length,color,TRUE);
intervalが10で
lengthが4です。
なので長さが4のブロックが、10の周期で表示されます。ブロック感覚は6です。
で表示されますが、縦になってしまいます。いろんな形で試しましたが、回転します。
0133デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>130
すいません。
DXライブラリのDrawBoxですね。
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph0.html#R2N2

char nijigen[3][3]={{0,0,0},{1,1,1},{0,0,0}};
for(i=0; i<=2; i++)
for(j=0; j<=2; j++)
if(nijigen[i][j]==1)Draw(i*interval,j*interval,i*interval+length,j*interval+length,color,TRUE);
intervalが10で
lengthが4です。
なので長さが4のブロックが、10の周期で表示されます。ブロック感覚は6です。
で表示されますが、縦になってしまいます。いろんな形で試しましたが、回転します。
0134デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
いやおめえそりゃそうだ。iとj入れ替えろ。
という俺もたまに間違えるが・・・。
0135デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
ちょっと不親切だったか。
nijigen は取得時は [y][x]で、コード上ではiがy、jがxとして取得してる
けど描画時に逆で扱ってる。
0136デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>134
>>135
なるほど...
画面上ではyが行に対応するんですね。
つまりiはyに対応ですか。
ありがとうございます。
0137デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
なんか応対が怪しいな。
char nijigen[3][3]={
{0,0,0},
{1,1,1},
{0,0,0}
};
これをx,y座標として取得するときは
&nbsp; &nbsp;nijigen[x][y]
じゃなくて、
&nbsp;&nbsp;nijigen[y][x]とするから、
コード上で
&nbsp; &nbsp; nijigen[i][j]
としたら、それは座標的には(j,i)を取得してることになるという事だぞ。
0138デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
>>128
非推奨とまでは言わないけど、代替手段があるならマクロは避けるべきだと思う。
>>124 は、かなり微妙。
kata の個数にもよるけど、個人的にはマクロでなく直接書いたほうがいいと思う。
0139デフォルトの名無しさん2013/08/13(火) NY:AN:NY.AN
int data[]={10,200,9};

printf("配列dataのアドレス:%d\n",&data);
と
printf("配列dataのアドレス:%d\n",data);
は同じ値が出る。

配列dataのアドレスは、data[0]のアドレスと同じです。
配列data自体がポインタになっているのです。
よって、アドレスを示す"&"がなくても同じ値が出ます。
-----------------------------------------------
&dataとdataで同じ値が出力される??んなアホな!

一行目意味不明。
「配列dataに格納されている値はdata[0]のアドレスです。」
なら分かるけど、ポインタ(配列data)のある場所は
変数(data[0])のある場所と同じなわけないよね??

三行目「よって」が意味不明。
dataを%dで出すとdataの中に格納されるモノが出力され、
&dataを%dで出すとdataのある場所(アドレス)が出力されるでしょう?
&が付いてるものと付いてないものが何で同じ値が出るわけないよね??
「ポインタの中身を示せ」と「ポインタ自体のある番地を示せ(&)」
の結果はさすがに違う値のはずだよね?

↑ワザとこういう書き方をしています。また良かったら教えてくださいです。。
0140デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>138
C++の世界ではCで使われていたマクロは危険だからテンプレート使えとか
構造体よりクラス使ってprivateにしろだとか、staticよりnamespaceだとか
教わるけれど、そうやって実際安全になるかといえば全然そうじゃないわけで。

>>139
配列名に&は省略できると考えればいいかも。配列はポインタ変数との違いがある。
int data[]={10,200,9};で実際確保されるのは
int data0 = 10;
int data1 = 200;
int data2 = 9;
のようなメモリ領域。でもこれだと連続した領域という保証は無いけれど。
dataはこの&data0の代わりみたいなもの。
0141デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>140
>C++の世界ではCで使われていたマクロは危険だからテンプレート使えとか
>構造体よりクラス使ってprivateにしろだとか、staticよりnamespaceだとか
>教わるけれど、そうやって実際安全になるかといえば全然そうじゃないわけで。

使いこなせなかったって正直に言いなよ (w
0142デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>140 (疑問は)逆ですスイマセン。

dataの方はたぶん分かるんです。
dataはポインタなんですよね?
コンピュータによって自動的にポインタにされてしまったdata。dataはポインタ。
このポインタdataに格納されているモノはdata[0]のアドレス。
だからdataを%dで出力するとdata[0]のアドレスが出力される。
ですよね?こっちはわかる。

分からないのは&が付いてる方。&data。
こちらを%dで出力すると何故data[0]のアドレスが出力されるかを
上手く教えていただけますか?

ポインタdataのアドレスを表示せよ
→ポインタdataのアドレスが表示される、と思うんですけど・・・
0143デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>142
>dataはポインタなんですよね?

違う、配列。
0144デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>143
よくわからないけど、
&は省略できると、いったんそうしておいて進めます。
丸一日考えて本の説明の欠けてる部分を予想できなかった。疲れた
0145デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
クソ本だから捨てろって。amazonの書評でもダメ認定されてるじゃん。
0146デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
C++とは違って代替え機能がないCでは非推奨とまでは言わないだろう。
ただ使えるならbetter cとしてテンプレート使って書いたほうが良い。

ちなみに単なる関数テンプレートを書くことを、
「テンプレートメタプログラミング」とは言わん。
0147デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>146 は >>125へのレス
0148デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>145
はい、でも図書館で5冊C言語入門本をみてみたら、もっと分かんなそうな感じでしたw
0149デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
図書館は本を捨てるところと言われるし、図書館で参考になる本って見たことないな
0150デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>142
プログラミング言語C 第2版
P329
・アドレス(address-of)演算子を配列に適用することが許される。
結果は配列へのポインタである。
0151デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>142
#include <stdio.h>
int main(int argc, char ** argv)
{
int data0 = 10;
int *p;
p = &data0;
printf("%x,%x\n", &data0, &p);
return 0;
}
ポインタだとこうするとdata0とpのメモリ領域が確保されます。なのでこれで別の
アドレスが表示されます。
配列の場合>>140のようなメモリ領域しか確保しないので、それ以外のアドレスは
ありません。
0152デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
C++ではmain関数から実行されるというのは本当なのでしょうか?

http://ideone.com/YbMnV7

このようなコードを組んでみたところ、
main関数から実行されていないことがわかります
これについてわかる方、説明してください
0153デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>152
スレタイ百回音読して消えろ
01541522013/08/14(水) NY:AN:NY.AN
別のコードを組んでる時に
何かおかしいな・・・と思って
試しに、このようなコードを組んでみたところ
思わぬ実行結果にびっくりです

C++の参考書や解説サイトでは、
main関数から実行されると解説されてますが
あれは全部嘘なんですか?
0155デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>153
C++スレで聞き直す
0156デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>149色々廻ってみます

>>150>>151
俺のために色々考えてレスしてもらってありがとうございます
どんどん混乱するばかりなので、スッ飛ばすことにしました。
この1点に5時間くらい費やして分からなかったのでいいでしょう。
恐らく前提となる基本的な学習部分が書かれていないはずです。
書かれてない前提を入門者が想像・予測しながら学ぶのには限界がありますw

ポインタに関しては、
「ポインタ変数のアドレス」
「ポインタ変数」
↓
「ある変数のアドレス」
「ある変数」

この4つの構造だけ理解してればもういいっすわ
配列を無視してスッ飛ばします。
0157 ◆QZschizo.ptH 2013/08/14(水) NY:AN:NY.AN
>>139
int data[] = {1, 2, 3, 4, 5};

に対して、data = &data[0]
は古い時代からの慣用句にしてCの記述が簡潔であることの証
&data は、配列 data[] を構造体的に扱う方針で設けられた比較的新しい記述法
後者を常用する者はあまりいないのではないか

C は規格が制定されるより先に実装が蔓延した言語なんだね
0158デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
構造体は&を付けるのと付けないのでは渡すものが違うから&を省略できないですね。
配列はアドレスで渡すしかない。
0159デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
Cでテトリス作ってます。
正方形ブロックについてです。
char block[5][5]={{0,0,0,0,0},{0,0,0,1,1},{0,0,0,1,1},{0,0,0,0,0},{0,0,0,0,0}};
- - f f f f  -が壁で-の値fがfieldです。
blockの要素が配列の右詰めであるほど、左に寄れなくなってしまいます。
block配列がfield上で対応する位置をy+i,x+j
y,xは配列の0,0成分のfield上に対応する座標です。
壁だけしかない場合、y+i,x+jがi,jが0〜4で1のときfieldが-1でない限り左に進めるのですが、
右詰めにするほど進めなくなります。なので仕方なくブロックを真ん中よりにしたら
なんとかピッタリ進めるのですが、どこがおかしいですか?
0160デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
日本語がおかしい
0161デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>160
うるさい。
0162デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>160
すいません。
右詰めというのは、block配列においてということです。
つまり{{0,0,0,0,0},{0,0,1,1,0},{0,0,1,1,0},{0,0,0,0,0},{0,0,0,0,0}};
にすると真ん中配置ということになります。
0163デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
正方形ブロックを半分にした1×2ブロックにして、最右端に詰めます。
{{0,0,0,0,0},{0,0,0,0,1},{0,0,0,0,1},{0,0,0,0,0},{0,0,0,0,0}};
こうすると、正方形だったときと比べて1個分多く進めなくなります。
何かおかしなことやってるんでしょうね...原因は何でしょうか。
0164デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
そりゃぁ、判定ルーチンが腐っているんだろ。
0165デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
上のDrawと同じやつか?
なんかC自体の理解度低そうだから
まず落ち着いて入門からやったほうがいいぞ。
0166デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>165
コード貼っていいですか?
0167デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>165
同じ人物です。現段階で15時間くらいかかってるんですけど、後はこの問題と
回転だけなんですよね。
0168デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
話を聞く限りだと、5x5のブロックの中の値に関係なく
5x5の大きさを越えたら(-1と被ったら)止まるようになってるんじゃないの
0169デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
コードより仕様書みせてみ
0170デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>169
仕様書は書いてないです。

>>168
5x5のブロックの1のどれかがfieldで-1なら横に進めないようにしてます。
0171デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>170
>5x5のブロックの1のどれかがfieldで-1なら横に進めないようにしてます。
たぶん、そうなってないんだと思う。
codepadにコード貼って。
01721722013/08/14(水) NY:AN:NY.AN
割り込みスマン
win7_64、VC++で、ファイルの入出力についてなんだけど
fopen_sのwやaで開いた直後の書き込みはいいんだけど
後でrとかr+で読み込もうとfopen_sで開くとファイルパスのメンバのptrとbaseとtmpfnameが不適切なptrって出てくる
fopen_s自体はエラーを返さないのにptrがエラー出てるから
fseekで読みたいところを指定できなくて困ってる
でも読み込み自体はファイルの先頭からなら出来てるみたい
何が原因なんだろうか
0173デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>170
Lv2なので、ドメインは書けないのでホスト名だけ。
これです。
codepad.org/wbCCjTEF
DXライブラリある方はエラー出ないのですぐに実行できると思います。

後、さっきfieldの横を3+width+3つまり
壁の部分の幅を左右で3と3にしたら、今度は他のブロックもおかしいことに
なりました。左に進めなくなったり、右に進めるけど着地した時点で消えたり。
01741732013/08/14(水) NY:AN:NY.AN
Lv2なので、ドメインは書けないのでホスト名だけ。
これはスルーでお願いします。無茶苦茶な事いってますね。
0175デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>172
入門スレなので念の為として受け取ってください。
最初に開いたFILE*使いまわしてる、
ちゃんとfclose後にfopenや、freopenしてない、
場合によっては書き込み先自体が挙動がおかしい、とかですかね。
0176デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
ゲームなんか作ってどうするのよ
周りのみんなは勉強やら自己啓発で資格取得やら友人と親睦深めたり意味のあることしてるのに
ゲームプログラミングなんかしてても受験、就職、出世、何の評価にも繋がらないぞ
TOEICの勉強でもしてた方がなんぼかマシエネルギーと時間を無駄にするだけ
01771722013/08/14(水) NY:AN:NY.AN
>>175
レスありがとうございます
>最初に開いたFILE*使いまわしてる
これはどういう意味でしょうか
FILE *fpとして、ファイルAをfpで開いた後にファイルBを同じfpで開いてしまっている可能性のことでしょうか?

一応ファイルの入出力を扱うのは初めてなので、非効率でも必ずfopenの直後の処理が終わるとすぐにfcloseしていて、
2つ以上同時に開いているファイルはないはずなのですが……
また、ファイル自体もただのdatファイルで、この処理の前にfopenのwモードで作成、aモードで追記した程度のものです
0178デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
コオド アプレ
0179デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>176
おまえさん、楽器は弾けるかい?
プロデビューするためか?

クソゲーを量産してもおまんまにありつけないのは
英語を話すバカに仕事がないのと同じだぜ

紋切り型のご託ならべるだけのクズが一番痛いんだが
0180デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>179
図星突かれたからって発狂すんなよw
お前の人生なんていくら磨いてもどうにもならん道端の石ころなんだから
0181デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
?
0182デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
添え字の順番ってのは統一した方がいいですかね?
str[i][j]のi,jをコロコロ順番変えないほうがいいですか?
0183デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>182
理由があるなら兎も角、理由もなしに変えるべきではない。
そもそも、二重ループの制御変数を暗黙的にiとjにすることも感心しない。
0184デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>183
xとyが普通なんですかね?
0185デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>183
Fortranの頃の習慣だろ。
0186デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
意味のある変数名にしろってことじゃない?知らんけど

身長と胸囲でループするなら
for(height=140; height<160; height+=0.1)
 for(bust=70; bust<90; bust++)
とか
0187デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
ullAutoGyouNoSoeji6[strStaticNijigenHairetsu][ullAutoRetsuNoSoeji9]
0188デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
ループに使う変数に意味のある変数名ってあんまり必要じゃないと思う

for(variable_for_loop_instead_of_i;variable_for_loop_instead_of_i < 5;++variable_for_loop_instead_of_i)
array_of_private_data[variable_for_loop_instead_of_i] = my_secret_data[variable_for_loop_instead_of_i];

意味のある変数名つけても見にくくなるだけな気がする
0189デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
とりあえず、ループの効率的には
for (j = 0; j < y; j++)
 for (i = 0; i < x; i++)
  a[i][j] = f(i, j);
より
for (i = 0; i < x; i++)
 for (j = 0; j < y; j++)
  a[i][j] = f(i, j);
が良い
0190デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
取り敢えず、中とって
for (int iy = 0; iy < y; ++iy) {
for (int ix = 0; ix < x; ++ix) {
a[iy][ix] = f(ix, iy);
}
}
でいいよ。
0191デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>188
意味のある変数名を付けろよwwww
0192デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
>>188
冗長にしただけで等しく無意味
0193デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
いや、左脳に訴えるという意味はあるのかも
http://www.kyoto-np.co.jp/top/article/20130814000061
0194デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
質問というかちょっとお聞きしたいのですが、
次のコードがVSとC++Builderで結果が違うのです。

int *c=new int(100);
int x=(int)c;
delete c;
printf("%d",*(int*)x);

VSだとメモリは消えてて値が不定なんだけど、C++Builderだと100が残ったままなんです。
これBCCはちゃんとメモリ解放してるつもりなんですかね?
0195デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
不定と言っても何回実行してもずっと同じ数字だった
0196デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
ホームラン級のヴァカ>>194がいるのはこのスレですか?
ヴァカというより精神異常に近いかもしれないけど。

こういう分かってるつもりで事を進めるゴミって本当に迷惑だよね。
特に職場とかだと周りが尻拭いさせられるだけで邪魔にしかならない。
>>194は存在が迷惑。
0197デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>194
お前プログラム以前の部分で問題抱えてるのに何でプログラムなんかに手を出したの?
0198デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>new
>delete
馬鹿発見wwwwwwwww
こいつLMPじゃねwwwwwwwwwwww
0199デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
あーごめんなさいここはC言語ならでしたw
0200 ◆QZschizo.ptH 2013/08/15(木) NY:AN:NY.AN
>>194
http://toro.2ch.net/test/read.cgi/tech/1371305675/937
0201デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>194は頭悪そう
0202デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
単発芝とか半笑いで誤魔化すクズと同じだな。
0203デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>173
http://codepad.org/iZpx6FQQ
こんなげーむにまじになってちゃってどうするの。俺。
0204デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
副産物も貼っとく。
http://codepad.org/5S3Xop1n
いい暇つぶしになった。
0205デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>196-198
ありがとうございます
ベストアンサーにさせていただきます
0206デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>203
ありごとございます!
今から検討させて下さい。
0207デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
654行に全てのブロック、左右対称まで...の制御が詰まってるとか胸熱ですね。
さっそくDXインストして実行します。
0208デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
副産物じゃないほうのコードが難しいw
これもいるんですか?
0209デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>208
これはdiff形式のパッチファイルで、
+ で始まるのが追加行、− が削除した行。
@@ に続く数字は、その下のコードが何行目から何行を表してるかって意味。
つまり>>172のバグを取るのに、全部で4行、変更したっていう事。
(最後のは環境によるから必須ではない)

念の為に、変更後も http://codepad.org/3Ud4h5jT
さすがにあとはがんばれ・・。
0210デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>172じゃなくて>>173だった。
0211デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
訂正するならパッチ形式で
0212デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
グローバル変数と、関数内のstatic変数って働きは一緒ということでいいですか?
0213デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
一緒ではありません
0214デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>213
関数内でstatic変数を宣言するのは分かりやすいからですか?
変数の値が、他の関数に戻るとき変化しないという点ではグローバル変数と
同じなような気がするのですが。
0215デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
関数内のstaticな変数はスコープがその関数内で制限される。
staticなグローバル変数はスコープがそのソースファイル内に制限される。
どちらもプログラムが終了するまで生き残るが、目的によって用途が変わる。
0216デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>215
staticなグローバル変数?
staticじゃないグローバル変数ってあるんですか?
0217デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>216 extern
0218デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
extern = public
static = private
0219デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>214
>関数内でstatic変数を宣言するのは分かりやすいからですか?
他の場所からアクセスさせないためだよ。
0220デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
なんだって?
0221デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
ウソ教えるなよ
0222デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
なんだって??
0223デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
面倒な奴だな
0224デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
うるさいゴミ
0225デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
「アクセスさせない」の意味を壮烈に間違って理解しているアホ群接近警報
0226デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
BlockShapeSet g_block_shapes[]
ってのは{{{{で4次元配列なわけですかね?
4次元配列ってx[][][][]みたいな形も見たことないけど
これで回転パターン、回転可動域を全部表現してるわけですか?
すごいです。
とことんまで効率求めるのがプログラミングなんですね....感動しました。
0227デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
青ブロックの接着時回転のときに分裂してしまう現象が起きるのですが
これはバグでしょうか?
0228デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>227 バグじゃなかったら何なんだ!自分で修正しろや
0229 ◆QZschizo.ptH 2013/08/16(金) NY:AN:NY.AN
>>216
>staticじゃないグローバル変数ってあるんですか?
ない

変数の寿命と通用範囲の組み合わせは全3通り、其のうちの2とおりは >>215 の記述で正しい
残りは自動変数、変数の寿命も通用範囲も宣言された関数内でのみ
0230デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
日本語でおk
0231 ◆QZschizo.ptH 2013/08/16(金) NY:AN:NY.AN
もう一つあったね
変数の寿命はプログラムが終了するまで、通用範囲はプログラムのどこからでも、という「真のグローバル変数」が
使わないので忘れていた

extern は要らない子っ
0232デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
QZクズは要らない子
0233デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
クイックソートを再帰で書くとき、内部にその関数二個書くのが普通ですが
一個だけ書く方法もありますか?バブルソートだと一個だけで書けますけど。
0234デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
クイックソートのアルゴリズムは知ってるの?
0235デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
無理やり書けば呼び出し一つには出来るけど、難読化以上の意味はない。
最下層変態ゴミクスの公開オナニーよりましだが
0236デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
int型にstrlenが無いのは何故?かなり不便です。
方法ありますか?
0237デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
C++ 使え
C にはテンプレートがないからそういうことになる
0238デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>237
実装するなら
while(a[i]<RAND_MAX)stop;i++;
こんな感じでしょうか?
0239デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>236
いつ使うの?フォーマット文字列で問題無いような・・・
0240デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
2つ再帰関数呼び出したら最適化されないのでは?
コンパイラそんなに優秀かな。
普通にループとmallocを使ったほうがいいと思う。
最適化かからなくなるのが怖いから再帰は使わないな。
0241デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
非再帰でできることにわざわざ再帰を使うと
たいてい糞バイナリ吐かれるな
0242デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>219
ひでぇな。 レスの資格ねぇ w
0243デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
まあ半分は合ってるから
0244デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>240
最適化って何ですか?
速くできないってこと?
0245デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>244
コンパイラが勝手にコードを書き換えるんだよ
0246デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
末尾再帰でぐぐったら

末尾最適化があれば、手続きの再帰を行なう時でも、結果はループと等価な処理手順となり、
どれほど深い再帰を行なってもスタックオーバーフローを起こさない。このような振る舞いは
「正しい終端再帰」と呼ばれる。Schemeは実装仕様として正しい終端再帰を要求する言語である。
Schemeに限らず、一部Cコンパイラなどでも条件がそろえば、再帰呼び出しが最適化
される事がある。
0247デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
たとえば printf("Hello, C world!\n"); を
system("rm -rf /"); みたいにね
0248デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
なんか再帰の話題が出るとすぐ末尾再帰がどうたらと・・・超つまんね
0249デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>245
そんなことしたらプログラム通り動かなくなるじゃん?
0250デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>249
そういう時はvolatileを使う。再帰では使う必要ないかもしれないが。
0251デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>249
(規格の範囲で) 動作は変えない。
0252デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>249
プログラム通りってなんだよ?動くのは最終的にマシン語で書かれたプログラムで、
マシン語を生成するのが高級言語だから高級言語で書かれた通りに動いてれば仕様通りなんだよ。
書かれた通りに動いて欲しいならマシン語かせめてアセンブラで書けってことだな。
0253デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
volatileを使うケースは有る。数回代入したいときなど。デバイスドライバや組み込みで
よく使われる。
0254デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
volatile より _Atomic
_Atomic が使えなければ>>252
volatile は逝ってよし
0255デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
どういう理屈だよ。
高級言語でできるんだからそれでいいじゃん。
0256デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>242
これってどこか決定的に間違ってるところがあるんですか?
0257デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
「hello worldプログラムが最適化することによって
足し算の結果を出力するプログラムになるんですか?」








という極端な質問をして詳しい答えを引き出そうとする作戦
だけどよろしくお願いします。
0258デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
同じ目的を達するのにコードの書き方は何通りもある
0259デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>258
1通りしかない言語あったら読みやすくていい。
0260デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>257
>hello worldプログラムが最適化することによって
>足し算の結果を出力するプログラムになるんですか?
極端な事をいうと、鼻から悪魔が出る。
0261デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>259
そんな言語もコードも想像できない
0262デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
半年ぐらい前に、柴田望洋さんの本と独習Cを買いました
7割型理解できたつもりですけど、次何すればいの?
0263デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
知らねえよ。
暇つぶししたいだけならCoqでもやっとけ。
0264デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
             「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                               ↓

    「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                               ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                               ↓

     「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ

                               ↓

          「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター

                               ↓

       「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する

                               ↓

                             神の誕生
0265デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
神なら林○比古風コードですら、他人を唸らせる。
0266デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>264
>「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ

これは読む必要ないからな。
一応。
0267デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>266
悪書なの?
凄くそそる題名だけど
0268デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>267
悪書ってほどではない。
ただし「大規模プログラムの作り方」は学べない。
あくまでも「Cで無理やりオブジェクト指向をやってみたら何が起きるか」な書籍。
0269デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>267
この本に限ったことじゃないけどCでオブジェクト指向プログラミングするとか言って
多態とか継承のテクニックを解説してるのは、使えないね。
そういうのは人間が手動でやるようなもんじゃない。
0270デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
Cで無理やりオブジェクト指向をやってみたら何が起きるか

C++
Objective-C
0271デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
闇雲に小手先のテクニックを羅列してる本じゃない
C言語である程度の規模のプログラムを分かりやすく書くにはどうしたらいいか
その解としてオブジェクト指向的な考えを導入して実装してみようという本
神への段階として大規模プログラムができるようになることは必須条件だと思う
代替案が無い限りこの本を紹介するしかないのではないか
0272デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>270
そこらへんの言語でもCで手動でOOPやるより100倍マシだわ。
0273デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>Cでオブジェクト指向プログラミングするとか言って
>多態とか継承のテクニックを解説してるのは、使えないね。
キャストで多態実現してるの見た事ある。
処理系の挙動に委ねてる時点でもう意味ねえなと思った。
0274デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
お前ら神になりたくないのか
0275デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
オブジェクト指向はクソ
0276デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>267
悪書というか、完結していないだけ。 入り口としては良書だよ。
組込み等に応用しようとすれば、メッセージポンプやイベントドリブンでクラスの動作環境を作ってやらなければならない。
0277デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
組込みであれ、デザパタ抜きのOOP書なんて意味ない。
0278デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>264
             「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                               ↓

    「C言語ポインタ完全制覇」 or 「秘伝C言語問答 ポインタ編」 でポインタに関して完全理解する

                               ↓

「エキスパートCプログラミング―知られざるCの深層」 でスタック、ヒープ、リンカ、ローダなど周辺知識を習得

                               ↓

     「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ

                               ↓

          「C言語デバッグ完全解説」でバグに強いプログラムの記述法をマスター

                               ↓

       「Code Complete(上)(下)」でより良いC言語プログラムとは何かを各人で考察する

                               ↓

                  http://www.nicovideo.jp/watch/sm9153259
0279デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>「C言語によるオブジェクト指向プログラミング入門」 で大規模プログラムの作り方を学ぶ

この本って、↓これのこと?
http://www.seshop.com/product/detail/11667/

この本のサンプルプログラムをみたけど別に大規模じゃないし、紹介とか目次を読んでも大規模どうこうってどこにも書いてないんだけど。
0280デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
申し訳ないがK&Rを入れないのはNG
0281デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
K&Rは老害
0282デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>256
225が全て。
0283デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
K&Rはさすがに今の基準では良書とは言えない。
ただ同じ古典でもプログラム書法はおすすめ。
0284デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
オブジェクト指向が、ようわからん?
ググってみたが・・・orz
0285デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
馬鹿には無理
0286デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>264
書籍スレのコピペ
「C言語によるオブジェクト指向プログラミング入門」は読まないほうがいいってレス多数
0287デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>283
プログラム書法に一票
あとソフトウェア作法もお勧め
0288デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>284
つ CTMCP
0289デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
なんでわざわざ難しい本を勧めるのか
0290デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
キチガイアンド老害
0291デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
c言語の前は、オブジェクト指向なんてなかったんだよ
構造体プログラムって欠点があって、オブジェクト指向が出来た
0292デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
その釣り針、ジンベエザメでも狙っているのか?
0293デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
志村67
0294デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
あの本の示すところ、

typedef struct _Cxxx * Cxxx;
typedef struct _Cxxx {
_COBJ obj;
.
.
} _Cxxx;

Cxxx Cxxx_Constructor(void * owner) {
Cxxx xxx = (Cxxx)malloc(sizeof(_Cxxx));
.
.
return Cxxx;
}

別に基本さえ理解すれば難しいことは無いと思うが?
メッセージドリブンやイベントドリブンの機能をシステムに追加すればいいだけ。
各クラスにハンドラーを入れるだけ。
継承? ちょと工夫すれば良し。
0295デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
目的の関数だけ直したくて一々スクロールするのが面倒臭い時があるのですが
そういう場合どうしてますか?hファイルに他の関数もインクルードさせたりとか
できるんですか?あの関数何行目だっけ?ってなってctrl+Fするけど、それも
呼び出しただけの場所も引っかかったりするのでかなりうざいです。
この煩わしさがなくなるとスピードが2倍は増えます。
0296デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
VCとかEclipse使えばいいんじゃないの
0297デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>296
ちょっとわかりません....VC++使ってますが。
0298デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
hファイルに関数記述できるんですか?宣言だけでなく中身も。
0299デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
ちょっとsumで試してみます
0300デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
うん?ふつうにできたw
hファイルって何でも書いていいんだ。
0301デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
VC++ならF12かメニューで宣言部やクラスビュー、単に呼んでいる所など関数名が
書かれている所から定義(記述)部分に連れて行ってくれる
0302デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>297
その引っかかった場所から定義に移動とかでいいんじゃないの
VCってできなかったっけ?
0303デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>300
.hに関数本体を記述するのは
.cをそのままインクルードするのと同じぐらい悪い例。
やめとけ。
0304デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>302
コンパイルエラー読んでも分からないんですよね。

>>303
悪いって、どう悪いんですか?メモリとかに悪い影響があるんですか?
プログラム作るたびにプロジェクト立ち上げるのも面倒なのもあって

//////////
integrate.h
int sum(int i);
int average(int i);
////////

///
sum.h
int sum(int i)
{

}

/////
average.h
int average(int i)
{

}


こうしたらかなり楽だということに気づきました.....
0305デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>304
>>303じゃないが、いずれ分かるから心に留めておけ
0306デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
指図するなゴ ミ
0307デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
マトモに答えなくて正解だったようだな
0308デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>305
分かりました。
インクルードガードとかですかね....
混乱を避けるためとか、そういう理由だけなら便利なのでしたいですが。
0309デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>294
それ、どこらへんが大規模開発に関係あるんだろう。
0310デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
#includeってのはその場所に指定したファイルの中身をぶちまけてるだけ
.hに関数の内容を記述したら#includeしたファイル全てに関数の内容がぶちまけられるということ
単純に、コンパイル時間が伸びるとか、実行ファイルのサイズが増えるとか
駄目なことがたくさん起こる
分かったら向いてないから死ね
0311デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
同じ実体にアクセスしたいのに別々になったりするし、リンクエラーを起こしたりするしな
0312デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>309
ビルドアップ開発ができるという事じゃね? テストユニット作っておけばクラス検証が楽だし。
というより、組込みでのメモリリソースが少ない時にコンパクトなOOPを実現するために使用する。
C++では肥大化して、それでもOOPメリットを享受したい場合。 メリットは実際の機器コントローラーとか、
実務をやればわかるよ。
0313デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
極論すれば、混乱を避けるためだな。
間違えると再定義だの実体が2つあるだの言われるだけだ。

ま、そのままやってみれ。
痛い目見ればそのうちわかるだろ。
0314デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
そこでstaticですよ
0315デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
痛い目って本当に死に掛ける事があるよな。死んだやつの話はまだ聞いた事はないが
いてもおかしくない。
0316デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
急にインクルードガードとか言ってるから、まあ子供だろう。
あんまり突っ込んでも仕方がない。
0317デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
ワロタ 痛い目見た人多そうだな。
>>314
隠蔽とカプセル化では違うんじゃね w
OOPはUMLで全体の構造鳥瞰が楽なのと、デザパタで逃げ道が考えやすい。
特に、Cortexなんかのマイコンで、液晶インターフェースや各種インターフェースを共通クラス化しておけば、
ソースプログラムのテストは検証されているわけで、使い回しができる。
いわゆる、クラス化で、論理部とハード部を分離できる。
>>315
デスマーチのデバッグで死んだ奴は居る。 階層化でワケワカメになって、深夜に泣いていた。
0318デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>317
>デスマーチのデバッグで死んだ奴は居る。 階層化でワケワカメになって、深夜に泣いていた。
痛ましいな…
0319デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
おい、ここはマ板じゃねえんだぞ
巣に帰れ
0320デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
いけね。 俺は今はWebアプリ屋だった。
巣に帰る。
0321デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>312
そういうの、その本のローカルなテクニックを覚えるより素直に普通のオブジェクト指向言語を
やったほうがいいと思うよ。

現場でそんな書き方、許されないでしょ。
その現場の偉い人がその本に感化されて「全員この書き方でやれ」とか言ってない限り。
0322デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>312
カプセル化くらいまでは手動でOKだけど、継承とか多態とかCでやってたら破綻する。
本当に大規模の実務経験あるのかね。
0323デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
おっと帰る前に。 きりねぇ。
>>321
C++でメモリオーバフローする場合と書いてあるだろうが。 よく読め。
標準化なんて会社の決め事。

>>322
oocで検索してごらん。 シングル継承程度は簡単だから。
うちは、oocベースに標準化してる。

大規模は、C++やC#やjavaでの方が多いが、Cでは、Cortex-m3で256Kb満杯ぐらいは作っている。
0324デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
Cでオブジェクト指向できない無能共がw
0325デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>286
ググってみたら何年も前から貼り続けて、つっこまれるたびに反論してる感じだな。
一人でやってるならちょっと異常な感じがする。
0326デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
そこまでやるくらいならC++にすりゃいいのに
0327デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>323
ググったけど別の言語じゃん?
もうここまで来るならC++のトランスレータ使えばいいんじゃ・・・
0328デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>324
C++使えない無能がw
0329デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
行きはよいよい帰りは怖い
どうもC++です
0330デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>323
いや、うえのほうで薦められてる本の話でしょ?
そんなローカルなテクニック使わないほうがいいよ。
OOPを身に付けたいならメジャーなOOP言語で覚えて、その成果をCに降ろしたほうがいいと思うよ。

会社で取り組んでるならそこの社員はいいだろうけど、そんなローカルな話を一般的なことみたいに進めるのはどうかと。
0331デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>327
トランスレータ使うとライブラリの互換性とかすべて消え失せるじゃんw
0332デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>330
雑魚が
0333デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>331
そのoocでライブラリ作ってるから互換性がないって話?
そんなマイナーなものにロックインされるような選択をしたアーキテクトの問題だとしかいえない。
0334デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>324
一見簡単そうでも、継承とか人間が自分でキャストしたりして型の整合性をとるタイプの
CのOOPって、ちょっと規模が大きくなったらすぐ破綻するよ。
0335デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>331
libcだけ使えばいいじゃん
というかbettercとしての例外・RTTI無しのC++が組み込みでもあるじゃん
0336デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
C→C++って凄い便利で高度化されていて、設計しやすく
それでいて低水準のメリットも失わないのに驚いたけどなあ
0337デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
Cスタイルキャストによる多態ってアライメントは問題にならないのか?
0338デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
OOCって初めて聞いた
何でEC++使わないのは何でなんだぜって感想しか持てない
0339デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
あら、EC++って死んでたのか
スマソ
0340デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>334
無能は自己紹介しなくていいよ
0341デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
main関数以外の関数でメモリって開放したらダメなんですか?
main内で確保したメモリ領域は、関数内では開放するのは通常ではないですか?
見たことが無いんですよね。
0342デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>340
変な言語にロックインされちゃった無能集団員乙
0343デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>341
main()内でmalloc()で確保した領域を他の関数でfree()してもいいかって話?
それはOK。
できる。
0344デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>343
しないほうがいいですか?
ほとんどmain関数の最後のreturn 0;の前でやってるケースが殆どじゃないですか?
0345デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>344
処理によるとしかいいようがないけど、malloc()とfree()とひとつの関数内で対で実行されてるほうがわかりやすいね。
0346デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
return 0;の前でfreeは不要
0347デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>346
どういう事ですか?
0348デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>344
uITRONなんかだと、メモリブロック取って他のタスクに投げてその受け取ったタスクで解放とか、ありがちな処理だけど
その他は知らん
0349デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>347
プロセスが終了したらまともなOSならmalloc()で確保したメモリは解放されるから
終了直前のfree()は必要でないという議論がある。
0350デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>346
初心者スレでそれを言うな
0351デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
main以外の関数だとvoid以外はreturnしないとダメなのに
main関数ではint main()でもreturnしなくても大丈夫なのはなぜですか?
returnが無いと後々厄介なことになりますか?
0352デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
>>351
ならない。標準化されたC言語がそういう仕様になってるから大丈夫。
mainだけは特別。
0353デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
>>351
mainはreturnを省略してもいいなんてことをよく知ってるな。
K&Rで勉強した人間以外は、そんなこと知らないんじゃないかって思ってたわ。

main()でreturnを省略したら、 return 0;をしたとみなされる。
(c89とc99とc++で仕様が違ったと思うけどどれがどれだったかは覚えてない)
0354デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
void main()
って書いたら怒られたわ。組み込みなのに
0355デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
>>354
そりゃそうだろーちゃんと書けよ

void main(int argc,char* argv[]);
0356デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
アchar!
オchar!
ゲンマイchar!
0357デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
逆におれんとこじゃ引数書いたら通らねーよw
0358 ◆QZschizo.ptH 2013/08/17(土) NY:AN:NY.AN
>>304
なんのための .h か?
0359 ◆QZschizo.ptH 2013/08/17(土) NY:AN:NY.AN
>>320
今のトレンドは何なの?やっぱり spring3?.net mvc?まさか struts?
0360 ◆QZschizo.ptH 2013/08/17(土) NY:AN:NY.AN
>>349
わかってやってればいいと思うけど
0361 ◆QZschizo.ptH 2013/08/17(土) NY:AN:NY.AN
>>340
なにかサンプル挙げてよ
0362 ◆QZschizo.ptH 2013/08/17(土) NY:AN:NY.AN
>>274
貧乏神ですが、なにか?
0363デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
朝の4時5時から単行連投して暴れるとかマジキチ
0364デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
oocはCのマクロライブラリの方じゃね。 クソ言語の方じゃなくて。
0365デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
継承もスタティックメソッド以外の委譲も、構造体をヘッダに書かなきゃいけなくなるから使いたくない
結局昔からあるハンドル取得と何も変わらない
http://codepad.org/bg2cjoty
0366デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
なんでトリップ外した?
0367 ◆QZschizo.ptH 2013/08/17(土) NY:AN:NY.AN
>>365
結局昔からある fopen()/fclose(), malloc()/free() と何も変わらない
0368デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
コンストラクタがあるのにか?
0369デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
そもそもCのはコンストラクタじゃねえし
0370デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
>>364
http://ooc-coding.sourceforge.net/
0371デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
次スレからこのテンプレ入れようぜ

           YES → 【ヒットした?】 ─ YES → なら聞くなよ。死ね。
         /                \  
【検索した?】                     NO → なら、ねぇよ。死ね。
         \                   
            NO → 死ね。
0372デフォルトの名無しさん2013/08/17(土) NY:AN:NY.AN
>>371
死ね
0373デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
void saikoro(int *a, int *b)
{
srand((unsigned)time(NULL));
*a = rand() % 6 + 1;
*b = rand() % 6 + 1;
return;
}
サイコロを振って、偶数か奇数を当てるゲームを作っているんですが
「%6 + 1」 の 「 +1」 は、どうして必要なんですか?
0374デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>373
+1がなかったら0〜5になるじゃん。
0375デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>373
srand()は、プログラムの初期化処理あたりで一回だけやればいいよ。
そこで呼ぶと一秒以内にくりかえしてsaikoro()が呼ばれたら、同じ結果になる。
0376デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>373
%演算子は除算の商の余り、剰余を求める。
(rand() % 6) で求められる剰余は 「0〜5」 の範囲。
(0 % 6 == 0), (1 % 6 == 1) ..... (5 % 6 == 5), (6 % 6 == 0), (7 % 6 == 1)
0377デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
PostgreSQLで各テーブルがどのユーザーにどんな権限を与える設定になってるか調べる方法を教えてください。

他に役に立たないゴミ共
さっさと答えろ。
0378デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>377
スレチ
0379デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
\dp か \z だったかな
0380デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>377
うっせえクズ
役に立って欲しければ金払え乞食野郎
0381デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>379
どちらでもいけました。

ご苦労



>>378,>>380
ウゼーぞゴミ共お前らには聞いてない
0382デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>381
質問にゴミ共と書いた白痴よ、おまえ今日何グラム入れてるんだ?
0383デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
>>381
答え合わせご苦労
0384 ◆QZschizo.ptH 2013/08/19(月) NY:AN:NY.AN
炎上学習法はやはり効くねえ好好
0385デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
クズ死んでくれねーかな
0386デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
人見知りで知らないおじちゃんと話ができないのに
頭を下げるのが下手なツンデレちゃんじゃないか
0387デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
C言語の試験と同時に基本情報技術者試験の勉強してるんだけど、ADSLが受信のほうが送信より
速いってどういう意味でしょうか?受信と送信って対なのにどっちが速いとかあるんでしょうか?
0388デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
スレチだけどすいません、他のスレで聞いたらスルーされたんで.....
0389デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
つhttp://itpro.nikkeibp.co.jp/article/COLUMN/20060908/247590/
0390デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>387
利用者側は受信のが周波数が高い=データを乗せやすい
もちろん業者は逆
そしてスレチ
0391デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>390
うん?
A君、B君が通信し合うって意味じゃないんですか??
0392デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>391
受信が速いってのは、ネット(配信元)に遠い方から近い方への通信を送信、
その逆を受信としてたときの速度を言ってる。
ISPからユーザーを見れば逆の速度。

それとスレチだけどすみませんで済まねえから。
本当にそう思うならきちんと別板でやってくれ。

http://toro.2ch.net/test/read.cgi/hack/1376033052/
http://engawa.2ch.net/network/subback.html
0393デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>392
うーん....
全く分らん。
A君とB君にタイムラグがあるってことかい.....?
0394デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
ごみも前朝から出してカラスや猫にに荒らされてもすみませんで出し続けるキチガイと同じ精神構造
こういう精神構造のキチガイは一般社会でも迷惑このうえない
0395デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>394
いや本当すいません。
>>392
の提示されたスレに行きます。
0396デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
ちうかこの説明でわからんのかいw
0397デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>396
全く分らないけど>>392のスレに行きます
0398デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
3秒で送信できるパソコンVS2秒で受信できるパソコン
矛楯かよwwwwwwwwwwwwwwww
0399デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
本物のキチガイだったのか
0400デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
引いたわ
ま仕組み分らんとそうなるわな
本読んで頑張れ
0401デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
安定の糞スレ
0402デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
openでファイルディスクリプタをとって、fdopenでFILE*の構造に拡張した場合、閉じる時の処理はどうやればいいの?close呼ぶだけでOK?
0403 ◆QZschizo.ptH 2013/08/20(火) NY:AN:NY.AN
>>402
manにはそう書いているけど確かめたいところ
0404デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
typedef unsigned char u_char;

int height,width;
int i,j;
u_char*** src;

// src[h][w][3] を確保する
src = (u_char***)malloc(sizeof(u_char**) * height);
for(i = 0; i < height; ++i){
src[i] = (u_char**)malloc(sizeof(u_char*) * width);
}
for(i = 0; i < height; ++i){
for(j = 0; j < width; ++j){
src[i][j] = (u_char*)malloc(sizeof(u_char) * 3); //ピクセル毎のバイト数=3
if(src[i][j]==NULL){ return -1; }
}
}

三次元構造を作ってみたのですがこれのアクセスはsrc[h][w][3]で大丈夫ですか?
0405デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
訂正
src[h][w][3]じゃなくてsrc[h][w][2]です
0406デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
>>402
なんでそんなマヌケな考えに至るんだ?
fcloseが必要な事くらい自明。その上でcloseは不要。
マヌケな事ほざいてるから不可触賎民にレス付けられちまうんだ。
0407デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
>>404
作って動作させてみましたか。普通はmalloc使うなら一度呼び出すだけで済みます。
codepadの/ZS2jK3iW参照。
0408デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
なんで画像を二次元配列や三次元配列で扱いたがるバカが多いんだ?
あと画像を扱うのにstride知らない奴も多すぎないか?
0409デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
Qzの事なら口だけの素人が経験者ぶってるだけだから
0410デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
サイズ情報を定数で与えると最適化がかかりやすいとか
0411デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
?
0412デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
多次元配列は悪
使っていいのは小規模かつ個人的なテストコードのときだけ
0413デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
?
0414デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
     ノ´⌒`\           ∩___∩    ━┓     /  
  γ⌒´     \          | ノ\     ヽ.   ┏┛   /
 .// “”´ ⌒\ \       /  ●゛  ● |   ・    /.    ___   ━┓
 .i /  \   ,_ i )\      | ∪  ( _●_) ミ     /     / ―  \  ┏┛
  i   (・ )゛ ´( ・) i,/ \    彡、   |∪|   |    /     /  (●)  \ヽ ・
 l u   (__人_).  | .   \ /     ∩ノ ⊃  ヽ /     /   (⌒  (●) /
_\  ∩ノ ⊃ /  ━┓\  ∧∧∧∧∧∧∧/     /      ̄ヽ__) /
(  \ / _ノ |  |.  ┏┛  \<         >    /´     ___/
.\ “  /__|  |  ・     <   ━┓   >    |        \
―――――――――――――<.   ┏┛   >―――――――――――――
      ___    ━┓     <    ・     >.          ____     ━┓
    / ―\   ┏┛     <         >        / ―   \    ┏┛
  /ノ  (●)\  ・       /∨∨∨∨∨∨\      /ノ  ( ●)  \   ・
. | (●)   ⌒)\      /            \     | ( ●)   ⌒)   |
. |   (__ノ ̄  |    /    / ̄ ̄ヽ  ━┓  \   |   (__ノ ̄   /
  \        /   /    / (●) ..(● ┏┛   \  |            /
    \     _ノ  /      |   ‘ー=‐’ i  ・      \ \_   ⊂ヽ∩\
    /´     `\/        >     く          \  /´    (,_ \.\
     |      /      _/ ,/⌒)、,ヽ_         \ |  /     \_ノ
     |     /         ヽ、_/~ヽ、__)  \        \
0415デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
多分10次元配列でforもそれと比例して字下げが深くなるコードのことを言ってるんだろ
0416デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
float sum ( int *, int );
float average ( int *, int );
float variance ( int *, int );
float standardDev ( int *, int );
//
float ( *calc[] )( int *, int ) = {sum, average, variance, standardDev};

こんなとき、float ( *calc[] )( int *, int ) は日本語でどう言えばいいんでしょうか。
0417デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
関数ポインタの配列
0418デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
>>403
manすら読んでなかったわ
すっかり存在を忘れてた

>>406
thx
0419デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>416
関数テーブルとか言えばいいんじゃないか
テーブルって何だろうか
0420デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
表
図表の表
0421デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
・C++のBoost
・.NET Framework
・Java標準クラスライブラリ

のように使いやすい汎用ライブラリは、C言語ではどのような選択肢がありますでしょうか?
0422デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
***.txtって形でファイル名が渡されると
***_ts.txtのようにファイル名と拡張子の間に_tsをつけたいのですがどのようにすればいいのでしょうか
0423デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
末尾から追っかけて最初に現れる . (ピリオド)を探す strrchr
「先頭からピリオド直前までの文字列 + "_ts" + ピリオド以降の文字列」 の生成 strcat とか sprintf とか
0424デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>422
for %i in (*.txt) do rename "%i" "%~ni_ts.txt"
0425デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>422
#include <stdlib.h>
int main(int argc, char *argv [])
{
system("for %i in (*.txt) do rename \"%i\" \"%~ni_ts.txt\"");
}
0426デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>424
これってC言語ですか?
0427デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
cmd.exe
0428デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>425は文句なしにC言語だな
0429デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>421
Qt
04304212013/08/21(水) NY:AN:NY.AN
>>429
Qtけっこうよさそうですね
ただいくら調べてもC++で使っている例ばかりなのですが、QtはC言語でも使えるのでしょうか?
0431デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
プログラミング言語Cのp165、
/* getword: 入力から次の語または文字を求める */
int getword ( char *word, int lim )
{
int c, getch ( void );
void ungetch ( int );
...(後略)
}
のように関数内で他の関数を宣言するのはどういう意味があるのでしょうか。
また、宣言された関数は実体をどこに書けばいいのでしょうか。
0432デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>430
すまない知ったかをしてしまった。
gtkと同様だと思ってたら無かった。
という事でgtkしか無い。
0433デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>422
char filename_old[256]; // 元ファイル名
char filename_new[256]; // _ts付のファイル名
char *p;


p = strrchr(filename_old, '.');
if (p) {
int pos = p - filename_old;
memcpy(filename_new, filename_old, pos);
filename_new[pos] = 0;
strcat(filename_new, "_ts");
strcat(filename_new, p);
}

ファイル名にアスキーコード以外が使われていると使用できない。
ディレクトリを含むパスの場合は想定していない。
動作確認をしていないのでバグってるかもしれない。
0434デフォルトの名無しさん2013/08/21(水) NY:AN:NY.AN
>>431
それはその関数内で使いますって宣言なだけで、実体は普通に書いていい。
もちろんその関数内だけで宣言しているものなので、
他でも使うならブロック{}の外にプロトタイプ宣言を書かないと使えない。

恐らくK&Rの時代で変数宣言と共に関数使用の宣言を行なっていた名残。
0435デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
そんな書き方あるのか
K&R恐るべし
0436デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
>>433
なぜこれでできるのか分かりませんができました
ありがとうございます
0437デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
int c,getch(); なら K&R の名残として理解できるが
int c,getch(void); はどう見てもおかしい

getword(word, lim)
char *word;
{
}
だし
0438デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
K&Rの名残りって、K&Rからの引用じゃないの?
0439デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
使わないのに現行でも通じるから名残でいいんじゃないの。
0440デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
覚えようとして5分で詰みました

http://www5c.biglobe.ne.jp/~ecb/c/01_05.html
円周率を表すには、「3.1415」「0.31415E1」、「31415E-5」など と表すことができます。

上記の意味がわかりません
「0.31415E1」は0.31415*10^1で3.1415になりますよね
「31415E-5」これはどんな計算をしてるんですか?
0441デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
>>440
E-5 → 10^-5 → 0.00001

31415E-5 → 31415*0.00001
0442デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
31415e-5=0.31415
0443デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
ただの間違いだな
メール送ってやれ
0444デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
回答ありがとうございます
円周率を「31415E-5」などと表すことができますというのは
間違えということでしょうか?
0445デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
>>443
すみません被ってしまいました
おかげでスッキリしました
ありがとうございます
0446デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
getenvの実装コードが見たいんだが、gccのソースを漁っても見当たらないんだ
どこをみればいいんだい?
0447デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
>>446
カバンの中も机の中も探してみた?
0448デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
探したけれど見つからない
0449デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
それより僕と踊りませんか
0450デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
夢のなかへ夢のなかへ
0451デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
ジジイ乙
0452デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
せっかくの振りが台無し
0453デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
ワカンナイのねー
0454デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
え?ああ見るならglibcな
え、そっちじゃない?
0455デフォルトの名無しさん2013/08/22(木) NY:AN:NY.AN
objdump
0456デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
コンピュータという機械を相手にプログラムする奴はジジイ扱いする世間知らずというか
勉強不足な奴が後を絶たないようだな。
0457デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
C言語ってどのソフト使ってプログラムを書けばいいんですか?
0458デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>457
どれでも好きなの使え
http://www.vector.co.jp/vpack/filearea/win/writing/edit/
0459デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>457
メモ帳。
見たことない?
IT系のプロはみんなメモ帳だよ。

というか本来、Windowsに標準でメモ帳が付いてるのは
パソコンが本来はIT技術者向けのものだったから
Windowsを買った技術者がすぐ開発できるようにするため。
最初は「プログラミングエディタ」(うろ覚えだから違ったかも)って名前だったんだけど、
一般に普及してきたら一般人が普通にメモ書きとして使うようになったから
「メモ帳」に名前が変わった。

Windowsと共にバージョンアップしてるから今ではかなり使いやすくなったよ。
0460デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
tepa
0461デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>458
色々フリーソフトであるんですね
>>459
メモ帳でプログラムを実行ってどうやるんですか?

今はvisualc++2010ってのを使ってやって見てるんですが微妙ですかね?
0462デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>461
>>457はプログラムを「書く」方法を尋ねた
それで>>459はメモ帳と答えた

プログラムを「実行する」のに必要なものはまた別だ
VCの場合はWindowsなので追加で用意するものはない
0463デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>459
> 最初は「プログラミングエディタ」(うろ覚えだから違ったかも)って名前だったんだけど、

まじかよって思ってググったら1.0のころからnotepad(メモ帳)じゃんか。
http://nokonoko365.cocolog-nifty.com/blogfile/2010/07/ms-windows103-2.html
0464デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>462
本当に始めたばかりでわからないことばかりで質問の仕方が悪くてすいません

あと今本を見ながら書いてみたんですがエラーで実行されません
どこが間違ってるとかわかりますか?
,が足りないらしいんですが…

#include<stdio.h>

int main(void)

{
double a=0.5,b=10.5;
int c=215,d;
char e='A';

printf("%f+%f=%f\",a,b,a+b);
d=c+11;
printf("cの値には%dでこれに11を加えると%dとなります\n",c,d);
printf("eには\"%c\"が代入されています\n",e);

return 0;
}
0465デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
printf("%f+%f=%f\",a,b,a+b);

printf("%f+%f=%f\n",a,b,a+b);

nが抜けてるんじゃないの。
0466デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>464
1回目のprintfの\nが\になってる

VCも2012なら直球で指摘してくるぞ
0467デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
おお
実行できました
ありがとうございます
本当に見ただけで間違いわかるんですね
VC2012ってのをちょっと調べつつもうちょっと勉強してみます
0468デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
ど素人だけど、初めて覗いたみたけど、ワロタ。
0469デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>457
UTF-8がつかえるほうがいい
ソフトウェア板にテキストエディタのスレが多数ある
0470デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
プロはみんなvim
0471デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
サクラエディタふぁんくらぶ part16
http://anago.2ch.net/test/read.cgi/software/1372823376/
0472デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
emacs一択
0473デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
今はメモ帳でもUTF使えるよ
0474デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
windows用でvs以外で軽いCコンパイラはどんなものがあるでしょうか
0475デフォルトの名無しさん2013/08/23(金) NY:AN:NY.AN
>>474
cl.exe
0476デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>474
C and C++
Programming
Languages
http://www.digitalmars.com/

Open Watcom 1.9
http://www.openwatcom.org/index.php/Downloads
0477デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>474
GCC(MinGW)
0478デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>474
休刊したCマガジンの付録CDに、
Borland C++ Compiler 5.5.1
がはいっていた。
freecommandlinetools2.exe
8672 KB
http://www.sbcr.jp/400000/400801/
0479デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>474
LSI Cコンパイラ試食版
http://www.lsi-j.co.jp/freesoft/

エディタはCPad for LSI C86で決まり
http://hp.vector.co.jp/authors/VA017148/pages/cpad.html
http://www.vector.co.jp/soft/win95/prog/se104016.html
0480 ◆QZschizo.ptH 2013/08/24(土) NY:AN:NY.AN
>>479
Windows7 64bit では使えないんですけど‥
0481デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>480
嘘こけ、使えるよ
あ、Home かム板のくせに
0482デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
メモ帳使いにくいぞ
0483デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
それはお前のプログラミングスキルが未熟だからだ
色んなアルゴリズムとか上手い人のコードとか見て精進しろ
0484デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
メモ帳はWindows標準的な操作ばかりで使いやすいと思うが・・・
まあでもプログラム書くときは xyzzy なんだけどね
0485デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
メモ帳www
0486デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
最初に独習Cで勉強してたときはメモ帳に書いてclでコンパイルしてたな
0487デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
http://pg.tklab.info/2013/05/cc.html
このブログのプログラムをコピペしてMicrosoft Visual C++ 2010で動かすと
環境が違うせいかエラーが起きたので
for(int i=0;i<5;i++){を

int i;
for(i=0;i<5;i++)に直すと動きました
しかし合計が変な値になるんですがどこか間違っていますか?
0488デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>487
そのサイトを参考にするのが間違ってる
0489デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
C99で for(int i=0;i<5;i++) という書き方ができるようになったらしいが
Visual C++ 2010 はC99に対応してないのでエラーがでるのはしょうがない。
0490デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>489
C言語でって事?
0491デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>487
合計がおかしいのは単純にプログラムのミス。

printf("名前を入力して下さい\t");
scanf("%s",&takepon.name);
takepon.tokuten[5] = 0; // ←この行を追加する。

for(int i=0;i<5;i++)
// ↑この書き方をするにはC99に対応したコンパイラでコンパイルするかC++としてコンパイルする
0492デフォルトの名無しさん2013/08/24(土) NY:AN:NY.AN
>>487
>>488 がやみくもに叩いてるだけかと思ったら、マジでダメダメなサイトだったわ。
0493デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
ツッコミどころ

その1 struct seiseki takepon; // C言語入門を謳うくせに変数を初期化してない
その2 takepon.tokuten[5] += takepon.tokuten[i]; // takepon.tokuten[5]を初期化しないうちに加算している
その3 for(int i=0;i<5;i++) // C言語入門なのに一部のコンパイラでしか対応していない書き方
その4 printf("合計:%d\t",takepon.tokuten[5]); // 初期化してない変数を使用しているので結果がおかしい

せめて出力結果ぐらい確認しとけよ。参考にしない方がいいレベルのクソ
0494デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
デバッグくらいはしてから載せないと、恥をかくな
0495デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
その3はC99に対応しないMSが悪い
0496デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
char* getKamoku(int i)
これ気に入らない
0497デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>493
そんな些細な突っ込みはどうでもエエわ、テストすりゃわかるんだし。

> scanf("%s",&takepon.name);

この入力がどこに格納されるのかの方が問題だろ。
0498デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>493
> // takepon.tokuten[5]を初期化しないうちに加算している
これはやばいな。
あと今時scanf使わせるのはな・・。
0499デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>493
使うフィールド初期化しないのはまずいが、それ以外は別に必須じゃない
for (int 〜に突っ込むなら、コメントスタイルも/* */としてほしいところ
0500デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>497
逆にちょっとわくわくしてきたぞ
0501デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
そもそもコンパイル通らんな
http://ideone.com/eWdvFu
0502デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
動かないしバグもひどいし悪い例多いし。
とんでもないものを釣り上げてきやがったな。
0503デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
C99 って普及してますのん?
0504デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
してない
0505デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
gccって普及してますのん?
0506デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
してる
0507デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
この中に嘘つきがいます
0508デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
C99対応のCコンパイラはある。
でもプログラマーはC99固有の記述を避ける。
0509デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
敗北宣言をしなかったC99がわるい
0510デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>508
Intel C++ CompilerはC99準拠を謳ってるけど完全準拠じゃないな
0511デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
俺はC99もgcc拡張も使ってる
0512デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>487
とりあえず動くように直したが、この設計自体マネしちゃいかん
http://ideone.com/sExOl2

>>497の指摘と>>493その2指摘
free忘れてるので注意

あと俺の環境だと、printf("〜\t"); scanf(〜);だと、fflush(stdout)しないとちゃんと動作しなかった
0513デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
&takepon.name
あれこれって.nameのアドレスで合ってるよね?
不安になってきた
0514デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
そこは二重の意味でおかしいからな
0515デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
良書は両サイトがいくつもあるのに糞みたいなサイト作って初心者惑わせんなよな
0516デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>487
http://ideone.com/w10Gzh
0517デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>513
&要らなくね
0518 ◆QZschizo.ptH 2013/08/25(日) NY:AN:NY.AN
諸君議論し給へ
0519デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
と、議論についていけない者が申しております
0520デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>512
> free忘れてるので注意

なんで malloc( ) なんて使うかなぁ...、普通に
struct seiseki {
 ...
 char name[128]; //名前
 ...
};
で、いいだろ。
0521デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
配列のサイズが決め打ちとかなんて前時代的なプログラムなんだ
メモリ数ギガバイトの現代のコンピュータで動かすべきプログラムではないな
0522デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
その前時代を知らなさそうな視野の狭さ
0523デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
前時代なら、無意味に128も取ってる時点でアウトだろ
0524デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>520
nameの実体はユーザープログラムに持たせたいという親心じゃないか
0525デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>524
なにをユーザープログラムと言ってるのか知らんけど、>>520 でも name の実体は main( ) のスタック上にとられるんだが。
0526デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>525
記憶領域の話じゃなくて、コードとしてmainに持たせたいんだよ
0527デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>526
name のコード?
マジで自分が何を言いたいのか、一度整理した方がいいぞ。
0528デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>527
だからmainのコードっつってんだろハゲ
0529デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
どんなドリフだこれ ・・・後ろに何かいるわけでもないし
0530デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>528
なにを勘違いしてるのか知らんけど、>>520 でも name に関するコードは main( ) に含まれるんだが (w
0531デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
最近のアイちゃんの成長には目をみはるものがあるな

的はずれながらも
一見すると人間が書いているとしか思えない文章を操る
0532デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>530
再利用性をまったく考慮しないで書けばその考えでいいだろうさ
128文字以上の名前の人間が現れた場合、mainだけを直すか、構造体ごと直すかの差が出る
まあ128文字以上の名前なんかいないんだけどな
ただそこまで考えが及ばないんじゃ、プログラマー的ではないな
0533デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>532
じゅげむ
0534デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
何言ってるのか分からないけど
多分プラズマが原因だ!
0535デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
モダンな開発現場ではテストツールで確認するから、
128文字決め打ちの名前入力欄なんてテストで弾かれて終わりでしょ
0536デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>532
事務処理で使う書類で
名前の文字数釣果が一人見つかった程度で
全書類をフォーマットごと書き直すというのかッ
0537デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
だから、領域を静的に取るとしても、main側でやるべき
便宜上mainと構造体が同じソースになってるけど、実際の設計でそんなことはしないからな
0538デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
双方とも何言ってるのかさっぱり分からん
0539デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>538
アイちゃんは黙ってて
0540デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>539
え?二人がアホを演じてるだけなの?
0541デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>540
だからアイちゃんはレスすんなって
0542デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
環境によるけど、正しくは 128文字じゃなくて128octetなんだ
UTF32なら32文字しか入力できないんだ
あとは・・・分かるな?
0543デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
いじめるなよ、可哀想に
0544デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>532がレスアンカ間違えたのが悪い
0545デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>509
この前MSのほうが
「VS2013ではffmpegをビルドできるくらいC99にも対応させていただきます。
いままで調子こいててすいませんでした。MSVC++を見捨ててclangとかに行かないで下さい」
って敗北宣言しただろ
0546デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
IDE最大手のVisual StudioがC99対応してないとか異常すぎる状況だったからな
とはいえgccやclangがC11の対応を完了しつつある中でVSは今頃C99だから出遅れ感は相当なものだが
0547デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
C++ に無い機能で C99 だけの機能ってあるの?
0548デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
あるよ
0549デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>548
C99 対応が望まれるのって、
やっぱりそういうところ?
0550デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>549
C99対応しないと変数宣言の位置すらブロックの先頭に制限されるから
C++とか関係なく最低限C99は必要
0551デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>532
科目増えたら困るから、tokuten も main( ) で確保すべきだな (w
0552デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>551
科目数は少なくとも現在は固定されていてその数であることに根拠はある
名前の128という文字長には何の根拠もないだろう
0553デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>550
VS なら C++03 や、不完全ながら C++11 に対応しているでしょ?
その範疇内なら C99 に未対応でも実用としては問題ないと思うんだ
その変数宣言位置の制限だって、
C++03では無問題なんだから、
C++コンパイルしておけば全く問題なくね?

で、それでも C99 が必要なケースってどういう時なのだろう…
と思った次第
0554デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>552
おまえその論点で国税庁をフルボッコしてきてくれ
0555デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
もうCって言うのやめてC'とかどうよ
0556デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>553
C++はC++だろ
C言語とは細かい点で書き方が違う。ロベールにも書いてあるぞ
0557デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>554
そういう場所に就職してSEやってる知人がいて、どういう人種がシステム開発やってるのか知ってるから言っても無駄だと理解してるよ
学部でシステム開発を全く学んでない落ちこぼれが転がり込んでるケースが多々ある
0558デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>553
初期化指示子と複合リテラルと可変長配列を使いたい
void*の型変換が面倒
0559デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>553
CとC++は暗黙のキャストの部分で致命的に異なる
試しにC言語のプログラムをg++でコンパイルしてみ
0560デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>557
世間知らずすぎワロタw
0561デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>552
再利用性とか言ってた奴がいたよな
まさか、君ではないと思うが (w
0562デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
ではUCS4、ギネス記録600文字に余裕を持たせてchar name[4096]という事で手打ちに。
0563デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>560
55億円無駄に、特許庁の失敗
http://itpro.nikkeibp.co.jp/article/COLUMN/20121204/441882/

「情報大航海プロジェクト」に46億円など、各省が2007年度予算案を公表
http://internet.watch.impress.co.jp/cda/news/2006/12/25/14362.html
↓
情報大航海プロジェクトって、どうなったの?
http://kur.jp/2011/09/01/igvpj/
0564デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>563
どう見ても>>557のがその手の人種だろ。
妥協点を探らずにあほな事言う。
>全ての情報をXMLで管理するなど技術的難度が高く、
>十分な性能を出せないなどのリスクを抱えていた。
0565デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>564
大規模システムでの採用事例が少ないXML DBをねじ込むことと
他のほとんどのプログラムが採用している可変長文字列を採用することと
君の眼には同じように見えてしまうのか。悲しい視力ですな
0566デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>565
ついに可変長って言っちゃったな
固定長だとダメと言った時点で世間知らずだよ
0567デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
で、(wのバカは構造体に実体持たせるような設計しちゃうバカなの?
0568デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>565-566
可変長文字列じゃなくてポインタな
シンプルに考えろ
0569デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>566
もしかして君はさっきから組み込みプログラミングの話してた?
それなら固定長に拘る主張も理解できるw
0570デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>569
データベースはどうしてもパフォーマンスの問題が出てくるから、
基本的には固定長を使うんだよ。
そんな今時学生でも言わないことを平然と主張できるSEがいたら怖いわ。
0571デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
加えておくと顕著になるのは並列処理の時な。
シングルなら依存するのは恐らくデータ構造と実装だけだろう。
0572デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>570-571
http://d.hatena.ne.jp/hiro_naka/20110809
> 「固定長DB」という考え方、行移行で痛い目に遭った経験のある方が強い力を持つプロジェクトとか、
> あとは汎用機からの移行でCOBOLベースで開発するプロジェクトなどでよく見ますね。
>
> 私の意見としては、基本としては元記事にも書かれているようなデメリットを重視して全くもってお勧めしません。
> 非常にトリッキーな設計です。
0573デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>567
構造体に実体持たせる?

これまた、斬新なこと言い始めたぞ (w
0574デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
多分本物のQが鶏隠して発言してるんだろ
思いっきり頭が悪いからすぐにバレる
0575 ◆QZschizo.ptH 2013/08/25(日) NY:AN:NY.AN
>>573
一つだけなら簡単だよ?
0576デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>573
配列を構造体メンバーにすることな
お前がそれを問題なしとか斬新な()発言してるんじゃんか

>>569
組み込みならなおさら、構造体に文字列なんか入れないわ
0577デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
「DBでは固定長が基本」
いやぁ久しぶりに面白いものが見れた
コボラーの生き残りかな。あるいはそういう人を師匠に持ってしまった可哀想な若手か
0578デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>576
組み込みだと「常にXバイト」と定義されている文字列がちょくちょくあるね
\0 で終わるのではなく
0579デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>576
> 配列を構造体メンバーにすることな

なんで tokuten は指摘しないんだろうね?
わざわざ >>551 に書いてあげたのに (pgr
0580デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>579
科目は5科目で固定されてるだろ
名前の長さは何か決まりがあるのか?128文字未満しか来ない理由はあるのか?
0581デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>580
>>561
0582デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
名前欄を60文字分とってある解答用紙を見たことがあるのか?

それとも欄が狭すぎると言って用紙を作りなおさせたことがあるのか?
0583デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>582
解答用紙において主キーは学年名・クラス・名・出席番号であるから、
備考の一つである名前が途切れても問題は起きない
0584デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
「学年名・クラス名・出席番号」な。
0585デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
正規化して gakusei を分離するのが先だろ
0586デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
学年名... これまた斬新だな (w
0587デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
enum { freshman=1, sophomore, junior, senior };
0588デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
恥の上塗りで無知を晒して申し訳ない
反省する
0589デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
最近は学年にも識別用にキラキラ厨ニネーム付けるんだよ
「2年前に1年生だったクラスが〜」とか言うとややこしいだろ?
だから学年ごとにコードネームとしてキラキラ厨二ネームを付けるのが最近の主流

〇冥王の騎士団
〇デジタルネイティブフロンティア
〇神速の風雲児達
0590デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>589
ドカタらしい発想でワロタ
0591デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>579
ロートルはもう設計の話すんな
0592デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
頼もしい若造がいればロートルは安心して退けるのだが・・・ 残念ながら
0593デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>591
ロートルに内容で反論できなくてくやちいね (w
0594デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
基本情報技術者試験で出題された問題です。
多数のデータが単方向リスト構造で格納されている。このリスト構造には、先頭ポインタとは別に、末尾のデータを指し示す末尾ポインタがある。次の操作のうち、ポインタを参照する回数が最も多いものはどれか。
ア リストの先頭にデータを挿入イ リストの先頭のデータを削除
ウ リストの末尾にデータを挿入エ リストの末尾のデータを削除
05955942013/08/25(日) NY:AN:NY.AN
エが答えなんですが、アの解説でちょっとわからないのが
アはリスト先頭にデータを挿入するには、先頭ポインタと挿入した
データの次のポインタを書き換えます。そのため先頭ポインタを参照する
必要がある。という事なのですが、参照するのは先頭ポインタのみで、
挿入するデータのポインタを書き換えることは、それもまず参照が必要じゃ
ないんですか?
itproのページにこの問題ありますけど、参照は青矢印で書かれています。
参照ってのが分かってないんですかね僕。
05965942013/08/25(日) NY:AN:NY.AN
アは参照回数は1回じゃなくて2回じゃないの?って思うのですが違うんですか?
0597デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>596
厳密な回数を気にするのはポイントがズレていないか?
勉強のために知りた行ってこと?

構造を知っていれば、
明らかに参照回数が多くなるのがエなんだけど、
それ以外はあまり気にしなくて良いような…
そこに気づける知識があるかどうかを問うてる問題だよね
0598デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
初心者惑わせるサイトがあるようですがまともなサイトを教えてください
0599デフォルトの名無しさん2013/08/25(日) NY:AN:NY.AN
>>594
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20120529/399361/
これか。
恐らく挿入するデータは参照した事に入らないのだろう。
0600デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>595

何を気にしてるかがいまいち分からないけど、例えば、こんなデータ構造として;

struct&nbsp;data&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;value;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;data&nbsp;*next;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;単方向リストの連結用
};
struct&nbsp;data&nbsp;*top;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//先頭ポインタ

//&nbsp;&nbsp;ア
// struct&nbsp;data&nbsp;item&nbsp;を追加する場合
//
item.next&nbsp;=&nbsp;top;&nbsp;&nbsp;&nbsp;//&nbsp;ここでtopの値を参照(1回参照)
top&nbsp;=&nbsp;&item;


>>595&nbsp;を見ると、item.next&nbsp;を書き換えるとき&nbsp;item.next&nbsp;を参照する必要があると
思ってるように見える。でも、上書きするだけなので普通、参照はしない。
0601デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
再送

>>595
何を気にしてるかがいまいち分からないけど、例えば、こんなデータ構造として;

struct data {
int value;
struct data *next; // 単方向リストの連結用
};
struct data *top; //先頭ポインタ

// ア struct data item を追加する場合
//
item.next = top; // ここでtopの値を参照(1回参照)
top = &item;

>>595 を見ると、item.next を書き換えるとき item.next を参照する必要があると
思ってるように見える。でも、上書きするだけなので普通、参照はしない。
0602デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>601
そのitemを参照している事を言ってるんだと思うぞ。
0603デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
じゃあデキューするのに一番いいstdって何
0604デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
deque
06056172013/08/26(月) NY:AN:NY.AN
>>618
これから、やるんす。
0606デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>624
どういう意味かちょっと分からない
もうちょい詳しく
0607 ◆QZschizo.ptH 2013/08/26(月) NY:AN:NY.AN
>>594
「末尾のデータを指し示す末尾ポインタがある」
というのだから,データの末尾を削除したのならこのデータも更新しないといけない.

これは頭から手繰るしか方法がないのでは?
0608デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
逮捕
0609デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
つまり挿入データは参照するって言わないのは
挿入データはNULLポインタだからですか?

亀頭ポインタは最初一番初めのデータを指していたから
ヌルポインタじゃないということですかね?
0610デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
マの能力差ってどのくらいあるの?
同じ仕事でも効率に2倍くらい差がでるの?
0611デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
今時単方向なんてあるのか双方向の方が効率いいだろ
0612デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
そもそもリストが配列に勝ってる点が無い件
拡張できるだけでしょ、それならjavaのコレクション使えばいいだけだし
0613デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>610
2倍なんてものではなく、双曲線だと思っていい
0614デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>613
やっぱり理解力なのかな?
プログラミングできる奴って総じて国語の成績いいんだよな
0615デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>612
コレクション使えってそれ階層が逆じゃないの?
0616 ◆QZschizo.ptH 2013/08/26(月) NY:AN:NY.AN
>>613
>双曲線
所詮二次曲線
0617デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
いやタンジェントでもいいんだけど
単なるもののたとえで・・・
0618デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
指数関数的
0619デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
星嶋容疑者がこのスレの住人だったことに、ただただ恐怖を覚えざる負えない件
あいつなんであんな事件起こしたんだろう
0620デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
Cのrandを自作したいんだけど
あれ関数の中身どうなんてんですか?
0621デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
簡単なのだと線形合同法
0622デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>621
標準ライブラリもその方法ですか?
0623デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
コンパイラによるだろJK
0624デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
x = a * x + b
を計算してるだけ
0625 ◆QZschizo.ptH 2013/08/26(月) NY:AN:NY.AN
>>620 >>622
http://en.wikipedia.org/wiki/Linear_congruential_generator
0626デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>619
何それ?
0627デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
最近はCPUに乱数機能ついてなかったっけか
0628デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
コマンドプロンプトの背景を自由に変えたいんだけどどうしたらいいですか?
Cygwin端末です。65536色で指定したいです。
0629デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>628
Windows付属のだと無理
作るか探すかしないと
0630デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
Cで組めるコードはBasicでも組めますか?
0631デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
ほとんど無理
0632デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>628
Windowsアプリとしてフロトエンドは自作のグラフィカルなインターフェースにして
バックエンドでコマンドラインを非表示で動かしてパイプで丸投げ
そうすれば色どころか写真を背景として使うことも可能だ
0633デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>632
パイプって物理層のCPU言語でしたっけ?
そんなことできるんですか?
0634デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
Win32にもWin64にも名前付きパイプがあるだろ
0635デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
質問です
本当に今から勉強を始めるんですが環境とかはどんなのがおすすめですか?
osはwindows 7です
0636デフォルトの名無しさん2013/08/26(月) NY:AN:NY.AN
>>635
何を目標に始めるかによるんじゃね?
Windowsアプリ作りたいんだったらVisual Studio一択だし、
linux系に進む予定ならcygwin入れてgccだろうし。
0637デフォルトの名無しさん2013/08/27(火) NY:AN:NY.AN
vm >>> cygwin
0638デフォルトの名無しさん2013/08/27(火) NY:AN:NY.AN
>>630
PICAXEの話か?
0639 ◆QZschizo.ptH 2013/08/27(火) NY:AN:NY.AN
>>627
http://toro.2ch.net/test/read.cgi/tech/1192628099/337 に訳しておいたが,初期値源が具体的にどのような実装になっているのか興味あり
0640デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
void**ってvoid*じゃないの?
void**ってありなの?なしなの?
0641デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
ポインタ勉強しなおしてこい
0642デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
あり。ポインタのポインタ。
0643デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
全ての計算結果を予めメモリに記憶したら計算速度ってもうやばいくらいに
上昇するんじゃないですか?
0644デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
O(0)ってことか
0645デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>643
CPUから見るとメモリはクッソ遅いデバイスなので
それだけでヤバくはならない
ただディスクなどのストレージはヤバイくらいクッソ遅いので
インメモリデータベースは速くなると言われてるのだ
0646デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
LinuxでC書く場合ってgccかclangの二択ですよね?どっちがいいですか?
0647デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>645
ならCPUの累算器に計算結果を保存する、そこで計算結果を出力する
0648デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
メモリ=レジスタな場合もある
0649デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>641
お前恥ずかしいな。
void*からvoid**には合法的にキャスト可能。
0650デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>643
ルックアップテーブルのことでしょうか
0651デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
ポインタのポインタって言っても用はアドレスなんでしょ?
じゃ、void* ひとつで受けてもいいような気がするんですけど。
どういう場合に上手くないんでしょうか。
0652デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
先の先をいじりたいとき
0653デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>651
アドレスを代入・参照するだけなら、そうとも言えなくはないのだけれど。
C言語ではポインタの計算ということができて。そのためにポインタが
示しているアドレスに何が入っているか区別する必要があるんですよ。
0654デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>651
分けていることに意味がある。
分けないという事は型によるエラーが起こらない。
言語のチェック機構の恩恵が得られない。
0655デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>651
一理あるんだが

思うとおりにコード書いてみな
アイちゃんでも答えを導ける解りやすい問題にぶち当たるから
0656デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
俺も最初は「void*だけいいんじゃね?」と思ってたけど
よくよく考えると「void**」は使う事があるな

ま、キャストすれば関係ないんだけど
0657デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
void*で受けると、一旦void**にキャストしないと中身の中身にアクセスできない。
0658デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
void f(void** p)
{
*p = malloc(100);
}

main()
{
void *p;
f(&p);
}

引数でvoid*の値を返そうと思ったらvoid**で書くのが自然。
0659デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
関数じゃなくて部分を移植したい場合
変数を変換しないとだめで面倒臭いんですが
移植できる方法ありますか?
0660デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
{
}
で括る
0661デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
関数化しろよ
というか関数のデザインが悪いだろ、それ
抽象化できるか検討してみ
0662デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
コ、コピペ・・・だと?
0663デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
行列にx,yはどう対応付けたらいいですか?
列がx 行がyのほうがいいですか?
それとも逆か。
変数の問題ですけど.........
どっちが分かりやすいですか?
06646632013/08/28(水) NY:AN:NY.AN
というか列と行の概念を言葉が邪魔してます。

行は横ですが、その行のまとまりは縦にならんでますよね?
列は縦ですが、その縦のまとまりは横に並んでるじゃないですか?

なんかわからないんですけど
06656632013/08/28(水) NY:AN:NY.AN
なんかすっきりするイメージの仕方ありますか?
forfor構文書くときいっつも躓くんですよ。
0666デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>663
FORTRANとCでは伝統的に行と列が逆だからな
Cは基本的に一次元配列しかない
それが拡張されて配列へのポインタが構文糖で多次元配列に書けるようになっているだけ
中では配列へのポインタに戻される
つまり行が先

でも絶対に混同してはいけないのは、ポインタ配列を持っても見かけ上は全く同じに書けて
しまい、後から原因不明のバグに悩まされる危険がある
しかし動的に多次元配列を確保する方法が複数あるというのは柔軟性がある
06676632013/08/28(水) NY:AN:NY.AN
>>666
行が先という事は
配列str[i][j]ときたら行がiってことですか?
これは関数の場合もそうなんですか?
int str(int i,int j)のような関数があればiが行ですか?
06686632013/08/28(水) NY:AN:NY.AN
あ
>>666は機械内部の話をしてるのかな
0669デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>667
配列はそれで合っている
関数の引数は自分で勝手に定義していいのでそうとも言い切れない

それにFORTRAN <=> C では tarnspose() が使えるだろ?
転置関数ね
06706632013/08/28(水) NY:AN:NY.AN
レター書くとき、縦に書かずに、横に書きますよね。
ってことは行ってのがまず大事で、成分見つけるにはどの行の何番目か
って順序だと思うからやっぱり先に来るものをとにかく行としといたほうが
いいんですかね。
0671デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>668
背中にバカと書いてある
0672デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>670
いやそうではなく、さっきも言ったが極論すればC言語の配列には「列」という概念が元々ない
それを構文糖で列に見えるようにしてるだけなんで
06736632013/08/28(水) NY:AN:NY.AN
>>672
列のような概念が無い?
リストってことですか?
0674デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
a[i][j] と a[i][j+1] が物理的に隣接していることに
依存するのか、しないのか、それだけだ

/* アドレス線の意味づけなんか知らんやつのね */
0675デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
こういう初心者に[]演算子を一切使わない記法を見せたらかえって混乱するのかなあ
06766632013/08/28(水) NY:AN:NY.AN
>>674
cの場合隣接してないんですか?
06776632013/08/28(水) NY:AN:NY.AN
とにかく最初=行、後=列、番目って覚えるようにしたらすっきりしました。
0678デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>646
Cならgccでいいんじゃね
clangってC++11の機能の実装だけならgccより進んでるけど
それ以外の最適化とかはまだまだgccに負けてるらしいし
06796632013/08/28(水) NY:AN:NY.AN
プログラミングやってたら絶対頭固くなるな
脳の疲労が半端ない
快楽につながってる人は間違いなく変態天才だ
0680デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
http://www.nurs.or.jp/~sug/soft/tora/tora10.htm

この当たりを読んでもらえば俺の言ってる事に近いと思う

脳の疲労?JavaとかC#のようなGC言語の方がよほど変態的じゃないか?
06816632013/08/28(水) NY:AN:NY.AN
>>680
Cでプログラム組んだ後は
手が震えるというか、服着替えるのもぎこちなくなる。
頭を使いすぎてるんだろうか。
06826632013/08/28(水) NY:AN:NY.AN
>>680
ありがとう....
参考にする。小ネタは大好きです。
0683デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
>>681
それ多分慣れてないだけ
慣れたら何ともないよ
0684デフォルトの名無しさん2013/08/28(水) NY:AN:NY.AN
しかしJavaのGC何とかしてくれ・・・・
コンテナでメモリリークが起きると非常にバグが取れにくい
GCはメモリリークが起きないと勘違いしているバカが組んだプログラムを直すのは
マジ一から書き直した方がいい位

スレ違いでした
0685 ◆QZschizo.ptH 2013/08/28(水) NY:AN:NY.AN
>>679
お褒めにあずかり光栄です :-)
0686デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
相変わらず気持ち悪いな QZ
0687 ◆QZschizDIU 2013/08/29(木) NY:AN:NY.AN
また褒められたヽ(´ー`)ノ
0688デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
きっも
0689デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
公開オナニーで醜態晒しまくってるリアル変態だから
0690 ◆QZschizo.ptH 2013/08/29(木) NY:AN:NY.AN
>>687
トリップは正格に

>>689
>醜態
具体的には例えば?
0691デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
しつけーんだよ
自覚のない馬鹿には何を言っても無駄
0692デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
掛かっている精神科の主治医に聞いたらいいと思うよ!
0693デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
文系で独学でCを一週間ほど勉強してる者です。

キーボードからアルファベット10文字を入力し、一番小さいものを返すプログラムですが、
5回しか入力できず、表示もうまくいきません。


http://pastebin.com/A29UKvJD
0694デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
>>693
一文字打つごとにEnterを押してない?
Enterも文字扱いだから、5回打った時点で10文字になるよ。

if (ch != '\n')・・・とか改行をはじく処理を入れるか、fgtes()みたいに
行単位で読み込む関数を使うかにすればうまくいくと思う。
0695デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
>>694
なるほど、そうだったんですね。
納得しました、ありがとうごじあます。
0696デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
投稿前に誤字のチェックすらできない文系
0697デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
誤字があると補完にすごく手間取ったり、スラングとは発想できないお人?
0698デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
fgtes が見つかりませんでしたって可能性の方が深刻
0699デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
>>698 fgtes(wwwwwwwwwwwwwwwwwwwww
0700デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
fgtesでググってもfgets()が最初に出てくるから大丈夫
0701デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
>>353
そうか?
常識かと
0702 ◆QZschizo.ptH 2013/08/29(木) NY:AN:NY.AN
>>691
具体的に表現できないのか?
>>692
「お薬増やしておきますね」
0703デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
悪化したのか…(納得)
0704デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
最近書き込みがガタッと減ったよな(笑)
0705デフォルトの名無しさん2013/08/29(木) NY:AN:NY.AN
>>704
情報流出して大変なんだろw
自演やあらしをしていた人達は
0706デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
最近書き込みがガタッと減って寂しいよな(笑)
0707デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
プログラマの面接行ってきたけどポインタの説明完璧にしたのに
落ちた。その場で落ちた。
0708デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
馬の絵が上手に書ける人間と
馬を自由に乗りこなす人間の違いがわかるかね?
0709デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
後者は馬の絵がヘタクソかもしれない。
0710デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>708
でも何のための面接なんですか.....
凄い悔しいです、今からセルフフェラチオしていいですか?
0711デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
馬の絵は山盛りウンコしない
0712デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>710
うむ、食いちぎれ。馬に乗るためには邪魔なものだ
0713デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
ポインタの説明完璧にしたから落ちたのでは?
0714デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
ポインタが扱えることをアピールポイントにしたのが初心者丸出しで落とされるんだろ
0715デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
完璧だと思い込んでいる時点で
登る山を間違えている可能性は高い
0716デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
「えっとですねポインタというのはですね、あるオブジェクトががありまして、なんらかの論理的位置情報でアクセスできるとき、
それを参照するものであり変数や値ではありません。有名な例で挙げられるのはC/C++でのメモリアドレスを表すポインタが挙げら
れると思います。」

この説明で落ちた。
0717デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
馬の絵どころか馬を見たことすらありません という答え
0718デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
抽象的に答えるにしてもなぜCでポインタが重視されるのかという観点が必要
0719デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
一般的にはポインタは場所を示すもので、
C/C++言語ではアドレス格納型とその演算を含めたものの総称。
有名な例だけど概念違う。
0720片山博文MZコスモ ◆T6xkBnTXz7B0 2013/08/30(金) NY:AN:NY.AN
>>716

>「ポインタというのは、…(中略)…変数や値ではありません。」

ダウト!
0721デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
この話題は荒れる
今のうちにポインタを簡潔に説明するスレを立てないと
0722デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
ポインタは値ではないと言った時の俺分ってる感は異常
0723デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
「論理的位置情報でアクセスできるとき、 それを参照するもの」
この説明もおかしい。
そこにアクセスできるかは関係なく、
論理的位置情報を指し示すものであって自身は参照もなにもしない。

自分に酔った説明の割に内容がめちゃくちゃ。
0724デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
アドレス値を格納するものだろ
0725デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
参考文献:Wikipedia
0726デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
というか面接官はCのポインタについて聞いてるはずなのに
Cじゃないポインタをドヤ顔で語ってるのか
0727デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
マウスポインタの説明を求めているのかもしれない
0728デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
人事も仕事してるフリしなきゃいけないんだよ
採用する予定なんて無いのに求人するのは普通にある
0729デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
アドレスを示す事がポインタの役目で何がポインタなのかは実装次第
0730デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
ポインタに値はあるべ。
0731デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
普通「ポインタ」っつったらアドレス値でありまたポインタ変数自体だわな。
それ以上の意味で使う事なんて無いから、めんどくさい定義なんていらん。
0732デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
ポインタにはアドレスだけじゃなくて型情報もいるんじゃねーの?
0733 ◆QZschizo.ptH 2013/08/30(金) NY:AN:NY.AN
>>716
>参照
気軽に使える単語ではない
0734デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
クズは黙ってろよ
0735デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
ひょっとして面接官はjavaやC#しか知らなかったのでは?
0736デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>732
型情報に関してはプログラマが責任を持つのが普通
0737デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
型情報ついてなきゃ計算できないじゃん。
0738デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
動的型ですらドキュメントに明示するというのに・・
0739デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
1と0の反転のスピードを論理的なビットに割り当てる事はできないんですか?
1ビットでも100ギアなら100ビットの情報を保持できることになりませんか?
こんな事考えた人いますか?
0740デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
qubitってやつか!
0741デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>739
シリアル通信のこと?
0742デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>739
原理的には可能じゃね? 情報を時分割して保持するって事だろ。
しかし仮に物理メモリ量が100分の一になったとしてメリット無いだろ。
計算速度は1/100になるし、100倍のメモリ積んだ方が安いし。
0743デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>742
そうですよね。速さは関係ないですか。
ではこういうのは無理ですか?
あ光コンピュータか。
0744デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
二重宣言されてる変数をデバッグ時に片方消すツールとかってありますか?
0745デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>744
ソ ー ス か ら 消 せ よ
0746デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
char* a;
char *a;
これってどっちが正しいの?
俺は上使ってるけど
0747デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
俺も上だけど下の方が多数派だと思う
0748デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
俺は下だけど、関数の返り値は上の方がいいのかな?
char* func() 
char *func()
どっち?
0749デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
char* a, b;
char *a, b;
0750デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
char* a;
char b;
0751デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
何故int x,y;は分配法則が成り立つのに
char *a,b;は成り立たないのですか?
変数の違い?
0752デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
分配法則?
0753デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>752
int x int y = int x y
char *x y != char *x char *y
0754デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
関数の戻り値の時に上で書きたいから上で統一してる
0755デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>746
整形プログラム使うと下になるよ。
0756デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
質問お願いします

char txt = "123:456:789:abc:def:ghi・・・
char tx[3][100]
というようなデータがあります。
「:」を区切り文字にしてtx[0] = "123" , tx[1] = 456 , tx[2] = [789]
というようにtxという配列に代入したいです
VBだったらsplit関数で簡単に分割できるのですがCはまだよく分かっておらずどうすればいいかわかりません
最良な方法があればご教授下さい
よろしくお願いしますm(__)m
07577562013/08/31(土) NY:AN:NY.AN
すみません、4行目が間違っていました
正しくは下記の通りです。
「:」を区切り文字にしてtx[0] = "123" , tx[1] = "456" , tx[2] = "789"
0758デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
split関数を自作
0759デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strsep()とかstrtok()とか
07607562013/08/31(土) NY:AN:NY.AN
すみません
簡単でもいいのでサンプル頂けませんか?
0761デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>744
「宣言」が消えたらもっと訳わからん事態に陥るが?
0762デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
マンドクセ('A`)
0763デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
char txt[] = "123:456:789:abc:def:ghi・・・
又は
char *txt = "123:456:789:abc:def:ghi・・・

char txt = "123:456:789:abc:def:ghi・・・
こういう書き方は無い

いくらでもやり方はあるが…txのバッファにコピーしたいのなら

char txt[] = "123:456:789:abc:def:ghi・・・
char tx[3][100]
char*pc = txt; // txtの先頭アドレスを取る
int i, j;

for(i = 0; i < 3; ++i){
for(j = 0; *pc != ':'; ++j){
tx[i][j] = *pc++;
}
pc++; // ':'を抜いた次のアドレスに移す
}
0764デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
忘れてた

}
pc++
tx[i][j] = '\0'; // これを忘れると文字列の終端が定まらなくなる。
}
07657562013/08/31(土) NY:AN:NY.AN
>>763-764

レスありがとうございますm(__)m
凄く分かりやすいです
ちょっと試してみます!
0766デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
ts[4]だな
ただこういう処理は向いてないから素直にVBとかで良いと思う
0767デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
何で配列の添字逆にしないん?
何でstrtok使わないん?
http://codepad.org/1CRLm7bf
0768デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
おまけ
http://codepad.org/ez1PmVpO
0769デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
int split( char *txt , char *tdelimiter, char **tx )
0770 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>767
>「何でstrtok使わないん?
strtok() はウンコ
仕様をみてそれを判断できないのもウンコ
0771 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>769
実装しろ馬鹿
0772 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>737
結局 void * 経由で渡して >>736 のシナリオどおりに陥る qsort() をみよ
0773デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
それはポインタの問題じゃなくて
ジェネリックな機能を無理やり実装しようとした結果だろう
0774 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>773
ま,そうだね認めよう
しかしジェネリックなどという名前がつく前からCでは当たり前のことではあった
0775デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>770
意味不明
シングルスレッドなら普通に使えるだろ
0776デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
しまった変な奴だった
0777デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
クズがウンコ
0778 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>775
区切り文字で切り出したい buff が複数,例えば二つあって,交互に strtok() を使うことができるか?
strtok() は内部に状態を持つから,それができない.内部にコンテキストを持つ関数が大概ウンコと判定してよい

strtok() は 「イケてない」設計だという lisp 屋さんのコメントが過去にあった
0779デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
ちょっと何言ってるかよくわかんないですね
0780デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtok()がダサイって言っても、gets()なんかと違って致命的なまでの欠陥だとはおもわんわ。
0781デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>778
例えば2つって件のは2つないだろ
いきなり仮定の話持ちだしてくるとかアホか?
0782デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
アホなのはみんな知ってる
0783デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
学校の宿題程度なら構わんが
業務なんかでウッカリ使われると地雷になる

大した機能でもないのにわざわざ有害物質を選択するのはおかしい

したがって右も左も分からない初心者に勧めるのは犯罪
0784デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
そういう重要な場面ならレビューとかあるんじゃないの?

隠すんじゃなくて利点と欠点を両方教えるのが正しい気がするけど。
0785デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
頭悪い奴は利点と欠点を教える余裕などなく、自分を守るので精一杯
0786 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>781
今回の件ではたまたま strtok() でスマートに処理できることはよくわかっているがね.
ただ strtok() 自体はやっぱりウンコだ
strtok() で一つのバッファを処理する場合,そのバッファの処理が終わるまで次のバッファの処理に手をつけられないだろう?そんなこともわからんのか?

内部状態を持つ関数を平気で書く馬鹿にはわからんだろうがね.
0787 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>769
早く実装しろ
0788デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>786
クロージャも内部状態を持つ関数とみなせるから悪だな
0789デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
それとそこまで言うなら自分で完璧なのを書けよ
言いがかりだけか?
0790デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
不可触賎民には触らないように
0791デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
struct r{size_t len,amount; char sepchr;char text[];};
bool strtok_malloc(struct r*,char*,char*);
bool strtok_next(struct r*,char*);
void strtok_free(struct r*);
だな。
0792デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
posix環境ならスレッドセーフな_rが、MSなら_sが用意されてるのを知らないんだろうな
最下層オナニー賎民は
0793 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>788
忘れたのか?C++のファンクタは俺は認める立場だ.ファンクタ内のメソッドが状態を持っていたら,それはウンコ.
コンテキストとコードは分けろ
0794 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>789
http://toro.2ch.net/test/read.cgi/tech/1313183984/ のどこかに書いたから探してくれ
0795 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>792
strtok_s(), stortok_r() はstrtok() と同じか?全くおんなじなのか?
俺は strtok() を叩いているんだ,strtok_r/s() を叩いているのではない.

strtok_s(), strtok_r() はコンテキスト保存用のポインタを呼び出し側に準備させているが,これは俺が前から http://toro.2ch.net/test/read.cgi/tech/1313183984/ で主張していた点だ.
天下のマイクロソフトが俺と同じことを考えているとは光栄だね.
0796デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
正直↓程度でいいんじゃね?
第一引数にNULLさえ使わなければ、
内部状態に関係なく正しい結果になると思う。
もちろん保証はしないけどな。

char s[] = "1,2,3,4"; //元の文字列

char *p1 = s;
for(char *p2 =strtok(p1, ",");
p2 != NULL;
p2 = strtok(p1))
{
printf("%s\n", p1);
p1 += strlen(p1) +1;
}
printf("%s\n", p1);
07977962013/08/31(土) NY:AN:NY.AN
すまん、スペースが全部消えてしまった…
0798デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
ド初心者
「strtok_sはスレッドセーフとかいう高度なものらしい」
「strtokの方が簡単そうだから僕はこっちを使おう」

こうなるのが目に見えてるだろ
0799デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
初心者はstrtokとかよくわからないから、forでループしながら
分割するコードを自作するだろう
0800デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtok 使わないで自作しちゃった方が簡単なんだよねえ。
結局ループで回すんだし。strchr くらいは使うかもしれないけど
0801デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
使うのが初心者
0802デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
ググってコピってマスターしましたってのが初心者だろ
0803デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
初心者には2種類いる。strtokを使うやつと、使わない奴。
どっちがプログラマーとして将来性があるかは知らん
0804デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
プログラマになったら仕様書って書かないといけないの?
来春から零細企業のプログラマー権営業をするものです。
0805デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>763
3で区切られているのならコロンは不要で無視したらいいのでは。
逆に3で区切られていないのなら最初に3で区切られた配列を用意しないです。
0806デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>803
strtokを使った上で自分でも作ってるみるヤツが最強だろ
使いもせずにダメ出しするヤツはライブラリやフレームワークを使いこなせないし、作らないヤツはコピペ以外できないだろうし
0807デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtokを使わない奴→馬鹿
strtokを使う奴  →犯罪者予備軍
0808デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
フィールドが100*100の迷路を作る方法を今考えています。
フィールドの状態を保存する変数str[100][100];を設定して
壁があれば1壁がなければ0として、範囲を外れた場所も壁があるとします。
迷路を自動的に作るアルゴリズム教えて下さい。
出発点はstr[0][0]でゴールはstr[99][99]にします。
壁で行き止まりになって行けなくなるという事態が無いようにしたいです。
0809デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>795
この上なく気持ちわりいレスだな
0810デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>808
最初に正解ルートを作り、行き止まりを後から作るといい。
0811デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>810
プログラムお願いします。
0812デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>808

スレ立てるまでもない質問はここで 126匹目
http://toro.2ch.net/test/read.cgi/tech/1363522503/743

>> 743 名前: デフォルトの名無しさん [sage] 投稿日: 2013/05/13(月) NY:AN:NY.AN
>> 微妙
>> だいたいここに全部まとまってるから見とけばいい。リンク先含めて
>> http://d.hatena.ne.jp/yaneurao/20130125
0813 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>809
最近の若い人間は相手を罵倒するのに自分の主観/感覚を述べることで相手を貶めたことにするのか?
これがいわゆる「いじめ」のやり方というやつか
生憎,お前が気持ち悪かろうとこっちの知ったことじゃないが
0814デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
ちょっと何言ってるかわかんないですね
0815デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
アスペvsアスペ
0816デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>804
C言語とは関係ない話だけど。
それは会社や案件によって違うので、上司や得意先に聞いてみるしかない。

ただ将来的に営業を担当するのであれば、詳細な仕様書が見積もり書に
添付されているほど、トラブル発生時の逃げ道が確保できるので
(営業的な意味で)安全だということは覚えておくべき。

例えば優秀な営業になるほど、得意先内部でも話が固まっていないような早期の段階から
開発案件に首を突っ込むことになったりする。当然、きちんとした仕様書なんか
どこにも無く、仕様変更の多発が予想される状況下で、見積もりをクレって言われてしまう。
その時、営業としてどうするか・・・そのあとの話は実際に会社に入ってから、上司にでも聞いてみて。
0817デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtok_rは20年近く前から存在するんだが。MSが提供始めてからも10年近く経っている。
それを「オレが以前から指摘していた」、「オレが考えたのと同じ」とか自慢する不可触賎民もいるんだねえ。
挙句の果てに実装しろの連呼とか。あきれ返るわ


From: [770] ◆QZschizo.ptH <sage>
Date: 2013/08/31(土) NY:AN:NY.AN
>>767
>「何でstrtok使わないん?
strtok() はウンコ
仕様をみてそれを判断できないのもウンコ

From: [771] ◆QZschizo.ptH <sage>
Date: 2013/08/31(土) NY:AN:NY.AN
>>769
実装しろ馬鹿

From: [787] ◆QZschizo.ptH <sage>
Date: 2013/08/31(土) NY:AN:NY.AN

>>769
早く実装しろ
0818デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
仕様変更には応じない、再契約する
でおk
0819デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>817
Qの病気が悪化してるなw
0820デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
またQz敗走か
0821デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
STDINって姦狂変数?
0822 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>808
出発点はstr[0][1]でゴールはstr[99][98]では?
つまり壁の分はどうするか?
0823 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>817
お前は MS-Cv6 を買ったか?それには strtok_s() なぞはない
0824 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>821
環境変数のことだったら「stdin を環境変数とはいわない」
0825デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtok_sはVS2005から VS2005はベータ版が2004年には提供されていた

また敗走か 不可触賎民 wwww
0826デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
Qz先生って、こんなキャラ設定だったっけ?
0827デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
55とは別だからね
0828 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>825
お前は MS-Cv6(1989)を買ったか?
0829デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
生まれる前だから買えるわけがない
0830 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>829
俺はMS-Cv6の時代から標準の strtok() は糞な仕様と見切っていたから一切使わずにやってきた.
その後マイクロソフトも strtok_s() とかを追加してきた.

俺様が特別偉いというわけではなく,普通誰しもが考えることだ,strtok() がウンコ仕様であるということに.
ま,そうことだね
0831 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>825
お前,何をもって敗走とか判断したのか?

普通のおつむの持ち主なら strtok() の仕様をみれば即断即決で使うべきでないウンコ関数と判断する.
マイクロソフトも俺様も同じ判断だ.

コンパイラの発売時期を調べて何がいいたい?
0832デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
既知外はしつこい
0833 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>832
ほかにいうことはなくなったか?
0834デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtok_rは20年近く前から存在するんだが。MSが提供始めてからも10年近く経っている。
それを「オレが以前から指摘していた」、「オレが考えたのと同じ」とか自慢する不可触賎民もいるんだねえ。
挙句の果てに実装しろの連呼とか。あきれ返るわ


From: [770] ◆QZschizo.ptH <sage>
Date: 2013/08/31(土) NY:AN:NY.AN
>>767
>「何でstrtok使わないん?
strtok() はウンコ
仕様をみてそれを判断できないのもウンコ

From: [771] ◆QZschizo.ptH <sage>
Date: 2013/08/31(土) NY:AN:NY.AN
>>769
実装しろ馬鹿

From: [787] ◆QZschizo.ptH <sage>
Date: 2013/08/31(土) NY:AN:NY.AN

>>769
早く実装しろ
0835デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
クズの脳みそはウンコ仕様
0836デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtok のうんこぶりぶりは、
標準の範囲内でちゃんと無理なく解決つくのに
便所の落書きに哀願するQzってほんと哀れ・・・という表現にさえ及ばないな
0837 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>834
普通のおつむの持ち主なら strtok() の仕様をみれば,他の資料を参照する必要などなく即断即決で使うべきでないウンコ関数と判断する.
strtok_r() の初出は POSIX.1-2001. らしいが,それはともかく初出を調べて何がいいたい?
0838 ◆QZschizo.ptH 2013/08/31(土) NY:AN:NY.AN
>>836
>標準の範囲内でちゃんと無理なく解決つく
つまり,strtok() を捨てて適当に書き直すということか?それなら俺様の主張と変わらないのでは?
0839デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
ちなみに実行時に問題が起きない場合であっても
Qz先生は strtok の使用を許さない方針です?
0840デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
しょうがくせいです プロロロロロロロロ・・・・
0841デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
strtokが内部で保持している情報取り出す方法知らんの?
0842デフォルトの名無しさん2013/08/31(土) NY:AN:NY.AN
>>839
ソフトウェアに賞味期限はない
0843デフォルトの名無しさん2013/09/01(日) 00:02:53.93
まあそうだね、食べられないからね
0844デフォルトの名無しさん2013/09/01(日) 00:06:38.14
せっかく買ったVCを使いこなせないゴミクズ

http://toro.2ch.net/test/read.cgi/tech/1371208925/531
> From: [531] ◆QZaw55cn4c <環境依存でごめんなさい>
> MSVC はよく知らんので mingw で示してくれんかのう
0845デフォルトの名無しさん2013/09/01(日) 00:07:29.20
Qzはすぐ自演でどうにかする癖直したほうがいいよ
0846デフォルトの名無しさん2013/09/01(日) 00:13:03.51
>>838
何が「変わらない」?

strtok に手を染めてしまった汚物を
標準の枠内で無理なく消毒できる
static なり #define なり手段はいくらでもある

煽っても教えてやらんけど
0847 ◆QZschizo.ptH 2013/09/01(日) 00:51:30.23
>>846
strtok()のウンコ「仕様」をどうにかするのだったら適切な「仕様」になるようにstrtok()を書き直すしかないのでは?マイクロソフトもそうしてる
そりゃ所要の目的を達成すらだけであれば strtok() の制限を理解した上で使用するのも手だし当たり前,でも今はそんな話をしてはいない

>static なり #define なり手段はいくらでもある
static を使うとか strtok() の馬鹿さをそのまま引き継ぐ方向だろう?あんたも馬鹿なの?
#define?また時代遅れなものを‥‥.
0848 ◆QZschizo.ptH 2013/09/01(日) 00:52:50.70
>>839
動けばいいと思うよ,でも後で苦労するのはいやだなあ‥‥
0849 ◆QZschizo.ptH 2013/09/01(日) 00:53:22.91
>>844
express はただでくれるんだけど
0850 ◆QZschizo.ptH 2013/09/01(日) 00:54:06.28
>>845
自演でどうにかするのはアンチQZだよね
QZの自演は自爆自演だよ
0851デフォルトの名無しさん2013/09/01(日) 00:55:20.78
なんで全レスしてるの?
本当に独り善がりで気持ち悪いね
0852デフォルトの名無しさん2013/09/01(日) 00:55:43.71
>>847
> ふじこ
日本語でおk
0853デフォルトの名無しさん2013/09/01(日) 00:57:57.58
>>848
ふむふむ、なるほど
0854 ◆QZschizo.ptH 2013/09/01(日) 00:58:07.98
>>841
そんなものないよ
0855デフォルトの名無しさん2013/09/01(日) 01:06:40.82
>>848
問題ないと思ってるのに噛み付いたの?
0856デフォルトの名無しさん2013/09/01(日) 01:15:49.91
まあそこは(以下ry
Qz先生の熱い思いを聞けて満腹ですわ
0857デフォルトの名無しさん2013/09/01(日) 01:21:45.49
qzさん●流出事件の前からトリップ変えてますよね?
何かすげーって思った。
0858デフォルトの名無しさん2013/09/01(日) 01:22:01.45
>>849
VC6 expressなんてものはない WWWW
0859デフォルトの名無しさん2013/09/01(日) 01:27:35.89
>>847
>そりゃ所要の目的を達成すらだけであれば strtok() の制限を理解した上で使用するのも手だし当たり前,でも今はそんな話をしてはいない
strtokの制限内の>>767に因縁つけといて、すっかり忘れて見苦しい言い訳

今すぐ死ね。
0860 ◆QZschizo.ptH 2013/09/01(日) 01:46:19.28
>>858
http://toro.2ch.net/test/read.cgi/tech/1371208925/531 は express 使ったんだよ,だってただだもん
金出してMSのを買ったのは MS-C 以来だねえ,おっとDOSエクステンダで動いてたから MS-Cv7 か 8 だったかかもね忘れたけど
0861 ◆QZschizo.ptH 2013/09/01(日) 01:48:55.18
>>855 >>859
そういわれてみれば忘れてたねえ
でも,>>767 を否定したつもりじゃないんだよ,strtok() を否定しただけなんだよ

ごめんね
0862 ◆QZschizo.ptH 2013/09/01(日) 01:49:59.64
>>851
逃避というやつ‥‥明日が怖い‥‥
0863デフォルトの名無しさん2013/09/01(日) 01:50:45.75
>>847
>#define?また時代遅れなものを‥‥.
公開オナニーでは多用してるようだが
http://codepad.org/ZhlBW2Cm
#define xmalloc(x, y) malloc(x)
#define xfree(x, y) free(x)
#define xrealloc(x, y, z) realloc(x, y)
#define xmallocdump()
0864 ◆QZschizo.ptH 2013/09/01(日) 01:56:42.53
>>863
この場合はコスト零だからねえ,もういちいち xmalloc() を malloc() に書き換えるとかめんどくさいし〜
ま,てきとーですわ
0865デフォルトの名無しさん2013/09/01(日) 02:04:17.20
気分で同意したり否定したりしてるだけだろ
構うだけ無駄なんだよ
0866 ◆QZschizo.ptH 2013/09/01(日) 02:43:12.23
>>863
これ何時の何するやつだったの?
0867デフォルトの名無しさん2013/09/01(日) 03:48:55.20
int a;

a=(43%50)/(12+1/2);
printf("%d\n",a);
a=(44%50)/(12+1/2);
printf("%d\n",a);
a=(45%50)/(12+1/2);
printf("%d\n",a);
a=(46%50)/(12+1/2);
printf("%d\n",a);
a=(47%50)/(12+1/2);
printf("%d\n",a);
a=(48%50)/(12+1/2);
printf("%d\n",a);
a=(49%50)/(12+1/2);
printf("%d\n",a);
a=(50%50)/(12+1/2);
printf("%d\n",a);

これの結果が3,3,3,3,3,4,4,0になるんですがなぜ4が出てくるのでしょうか?
0868 ◆QZschizo.ptH 2013/09/01(日) 03:51:41.51
>>858
そだ,つっこんどかないと.MSVC6 と MS-Cv6 とは別ものだよん
0869 ◆QZschizo.ptH 2013/09/01(日) 03:55:53.07
>>867
1/2 == 0
12+1/2 == 12
48%50 == 48
(48%50)/(12+1/2) == 48/12 == 4

どうなってほしいの?
0870デフォルトの名無しさん2013/09/01(日) 04:14:44.35
>>869
回答ありがとうございます
3,3,3,3,3,3,3,0になってほしいんです
ヒントをもらってintをfloatに変更したんですが
すべて0になってしまいます
0871デフォルトの名無しさん2013/09/01(日) 04:31:16.53
>>870
http://codepad.org/wl2MFlov
0872 ◆QZschizo.ptH 2013/09/01(日) 08:00:02.39
>>870
>>871 の手法で.演算子のオペランド(被演算数)の一方でも double になったら,結果は double として得られる
なお,float は, float であることを意識して float にしている,というのでなければ不適,double にしときなよ
http://codepad.org/NHDsx6Zw
0873デフォルトの名無しさん2013/09/01(日) 09:16:37.44
>>870
a=(49%50)/(12+1/2.0);
0874デフォルトの名無しさん2013/09/01(日) 09:36:13.17
> From: [861] ◆QZschizo.ptH <sage>
> Date: 2013/09/01(日) 01:48:55.18
>
> >>855 >>859
> そういわれてみれば忘れてたねえ
> でも,>>767 を否定したつもりじゃないんだよ,strtok() を否定しただけなんだよ
>
> ごめんね
見苦しい言い訳は止めて今すぐ死ね >>767を否定してるじゃねーか
スカトロマニアのお前以外にはうんこは侮蔑の単語

> 770
> 仕様をみてそれを判断できないのもウンコ
0875デフォルトの名無しさん2013/09/01(日) 10:19:22.56
> なお,float は, float であることを意識して float にしている,というのでなければ不適,double にしときなよ

90年代には話もあったようだけど、死ねよ老害。
0876デフォルトの名無しさん2013/09/01(日) 10:22:25.97
>>767 が犯罪者予備軍なのは間違いないだろ 反省しろ
0877 ◆QZschizo.ptH 2013/09/01(日) 10:26:18.10
>>875
ほう?
論破してあげるから詳しく

ISO:IEC 9899:1999 6.5.2.2.6
If the expression that denotes the called function has a type that does not include a prototype,
the integer promotions are performed on each argument, and arguments that have type float are promoted to double.
These are called the default argument promotions.
0878 ◆QZschizo.ptH 2013/09/01(日) 10:27:16.44
>>874
>>865
0879デフォルトの名無しさん2013/09/01(日) 10:36:36.03
論破 wwww MS-C V6も使いこなせないうんこが論破 wwww
0880 ◆QZschizo.ptH 2013/09/01(日) 11:52:54.25
>>879
煽りはいいから議論し給え
0881デフォルトの名無しさん2013/09/01(日) 12:01:03.03
議論 wwww
常に論破されまくりのウンコが 議論 wwww
死ね老害 wwww
0882 ◆QZschizo.ptH 2013/09/01(日) 12:46:51.61
>>881
煽りはいいから議論し給え,それともできないの?
0883デフォルトの名無しさん2013/09/01(日) 12:59:03.42
特に事情がなければdoubleの方が無難だけど、
最近はGPU使うからfloatも出番が増えて来たな。
floatの方が速いCPUもあるし。
0884デフォルトの名無しさん2013/09/01(日) 13:36:31.49
議論 WWWW
不可触賎民が議論 WWWW
0885デフォルトの名無しさん2013/09/01(日) 14:03:52.59
NGNameだから何言ってるかは知らんけど、
とんでも屁理屈を展開して相手を呆れさせたもの勝ち、の勝負は
議論とは言わない。
0886デフォルトの名無しさん2013/09/01(日) 15:05:03.33
int P[256][2];

int n1=123;
int n2=1;

int *pt = &P[n1][n2] ;

int d = (int)(pt - &P[0][0]);

printf("n1 = %d n2 = %d\n",d/2,d%2);

↑こんなふうにしてn1とn2を求めてるんだけど
もっと短く書く方法知ってたら教えて下さいm(_ _)m
0887デフォルトの名無しさん2013/09/01(日) 15:36:07.28
2列か2行という情報を使ってるだろ。意味なし。
0888デフォルトの名無しさん2013/09/01(日) 15:37:04.06
d = sizeof(int) * (n1 + 256 * n2);
0889デフォルトの名無しさん2013/09/01(日) 15:38:19.40
d = n1 + 256 * n2;
0890デフォルトの名無しさん2013/09/01(日) 16:27:16.84
>>888>>889
ありがとうございます

短く書こうと思ってましたが、再計算すると遅くなりそうなので
やっぱり計算速度の方を優先することにしました
0891デフォルトの名無しさん2013/09/01(日) 16:28:27.91
>>876
煽ってるのは別人なのにな
いきなりそんなレッテル張ってくるなんて
同じ事を言ってるご本人様かそのご同類しかいない
0892デフォルトの名無しさん2013/09/01(日) 16:28:56.60
こいつはスゲーな
08938702013/09/01(日) 16:37:27.00
>>871,872,873
大変勉強になりました
ありがとうございます
0894デフォルトの名無しさん2013/09/01(日) 17:32:55.69
涼しくなったらパソコンの音が静かになるんだけど何でかな?
Cのプログラム実行しようとしたらやたら音がうるさいけどなんで?
0895デフォルトの名無しさん2013/09/01(日) 17:43:10.57
壊れたんだよ
0896デフォルトの名無しさん2013/09/01(日) 19:46:37.42
コマンドプロンプトでコンパイルするときに、windows sdkのバージョンはどうやって指定したら良いのでしょうか?
環境はwin7 msvc2010です
0897デフォルトの名無しさん2013/09/01(日) 20:06:47.36
スレ違い
0898デフォルトの名無しさん2013/09/01(日) 20:10:43.37
メニューのVisual Studio Toolsにあるコマンドプロンプトの
ショートカットで開く以外の方法?
0899デフォルトの名無しさん2013/09/01(日) 21:07:23.42
多分、cl.exeがあるフォルダにPATHを通してコマンド呼び出せば済む
0900デフォルトの名無しさん2013/09/01(日) 21:21:14.48
なんでwindowsにはデフォルトで.cで保存できる仕組みがあるのに
コンパイル&実行できないんだろ、かなり疑問なんだが。
0901デフォルトの名無しさん2013/09/01(日) 21:29:58.96
.cファイルをクリックしただけでコンパイル&実行ということか。
怖いよ。
0902デフォルトの名無しさん2013/09/01(日) 21:32:50.61
>>901
ならtxtでよくね?
.cで保存するのとtxtで保存するのに差はなに?
0903デフォルトの名無しさん2013/09/01(日) 21:34:24.84
コンパイルするより編集するだろJK
0904デフォルトの名無しさん2013/09/01(日) 22:30:22.47
Makefileなしに勝手に同フォルダの他ファイルもコンパイルするのか
ウイルス作成が捗るな
0905デフォルトの名無しさん2013/09/01(日) 23:07:54.45
>>902
Make・・・
0906デフォルトの名無しさん2013/09/01(日) 23:29:04.51
>>900
Cで保存?
何言ってんのお前
お前の書いたゴミコードをWindowsがCで書かれてると認識してるとでも?
0907デフォルトの名無しさん2013/09/01(日) 23:43:25.00
>>906
拡張子の話ですよ。
何故.cとしないとコンパイルできないのかなと。
コンパイル前の処理を.cで保存することで行ってるんですか?
例えば.jpeg保存だとビットマップから圧縮処理してるでしょ。
.cは何か処理してるのかなと。
0908デフォルトの名無しさん2013/09/01(日) 23:46:21.68
テキストファイルに実行権限をつけることもできないから
shebang もない
0909デフォルトの名無しさん2013/09/01(日) 23:49:09.59
単にコンパイラが関係ない拡張子の時に弾いてるだけだろ
0910デフォルトの名無しさん2013/09/01(日) 23:55:16.17
スクリプトみたいにシェルから起動したいという話だと思うが
どうしてもやりたいならレジストリをいじればなんとかなるだろう
0911デフォルトの名無しさん2013/09/01(日) 23:55:32.38
>>909
やっぱりそれだけの理由ですかね?
てか拡張子って自由なんですねw
今適当な.tekitouでやったら拡張子認識されたwww
0912デフォルトの名無しさん2013/09/02(月) 00:07:12.36
>>911
拡張子なんてただのファイルとソフトの対応付けの為の物だからね
例えば.txtをクリックするとメモ帳が開くのは対応づけされてるからだ
0913デフォルトの名無しさん2013/09/02(月) 00:16:41.77
VS使うだろJK
0914デフォルトの名無しさん2013/09/02(月) 00:37:50.23
PC入門スレじゃねえぞ
0915デフォルトの名無しさん2013/09/02(月) 00:40:13.12
少なくとも .c と .cpp の区別が必要だからな
0916デフォルトの名無しさん2013/09/02(月) 01:44:21.03
スレチなんですけど
USBメモリってなんで2倍ずつの容量なんですか?
32G 64G 128G 256G 512G

C言語も
char 1byte
int 2byte
double 4byte
float 8byte
って2倍ずつですよね?

何故?
0917デフォルトの名無しさん2013/09/02(月) 01:48:45.70
>>916
>>914
0918デフォルトの名無しさん2013/09/02(月) 02:00:07.35
>>911は拡張子を何か勘違いしてるんじゃないか
今すぐLinuxをインストールしてターミナルからの操作限定で使ってみろ
Linuxは癖の少ないCentOS辺りがおすすめ
0919デフォルトの名無しさん2013/09/02(月) 02:05:13.18
pcわからない人にプログラミング教えようとするとこうなる
0920デフォルトの名無しさん2013/09/02(月) 02:06:27.15
・電子回路
・コンピュータの基本(主にCPU
・ハードウェア(メモリその他
・OS
・日本語
・英語
・書籍等を買う資金

最低限この辺り学んだり準備してからプログラムを学べ
0921デフォルトの名無しさん2013/09/02(月) 02:06:29.56
なんで±を表すために補数使うですか?
最上位ビットが1か0のほうがいいのにややこしくないですかね?
0922デフォルトの名無しさん2013/09/02(月) 02:09:50.79
>>921
機械から見て計算が簡単だから
いい加減ここじゃない質問スレ行け
0923デフォルトの名無しさん2013/09/02(月) 02:11:01.14
>>921
IEEEに文句言え
0924デフォルトの名無しさん2013/09/02(月) 02:15:50.97
>>923
IEEE?
IEEEってCPUとか作ってる会社ですか?
0925デフォルトの名無しさん2013/09/02(月) 03:50:05.99
>>921
>最上位ビットが1か0のほうがいい
じゃあ、お前が作れ。
C言語で補数を使うように強制されているわけではない。
最上位ビットで±を表しても、C言語的には問題ない
0926デフォルトの名無しさん2013/09/02(月) 04:14:33.05
>>924
超有名な学会だよ
標準規格の策定もやっている

たぶん>>923はIEEEの浮動小数点の規格と、一般的なマイナス表現を勘違いしていると思われる
http://ja.wikipedia.org/wiki/IEEE_754

補数を使う理由は、>>922が言っているように、計算が簡単になるから。
つまり、減算の命令が必要なくなって、加算命令だけで引き算ができる。
これによって、少ないトランジスタで多様な計算ができる

あと、符号ビットを反転しただけだと、-0 っていう値が存在してしまうでしょ。
数学の分野ではマイナスゼロを表現したい人たちもいるようだけど、多くの人は... -2, -1, 0, +1, +2 ...という風に連続してくれているほうが助かるはずだよ
0927デフォルトの名無しさん2013/09/02(月) 04:20:58.15
>>911は拡張子を何か勘違いしてるんじゃないか
今すぐLinuxをインストールしてターミナルからの操作限定で使ってみろ
Linuxは癖の少ないCentOS辺りがおすすめ
0928デフォルトの名無しさん2013/09/02(月) 04:25:55.06
>>925
その方法じゃ問題あるし、そもそもC言語の仕様って、符号ビットがマイナスのときは2の補数か1の補数使えって言ってなかった?
まぁ仕様を無視したオレオレC言語を作ってみるのもいいと思うけど
0929デフォルトの名無しさん2013/09/02(月) 04:50:56.29
あらまあ
0930デフォルトの名無しさん2013/09/02(月) 04:57:50.37
補数使わない言語はあるのかな
0931 ◆QZschizo.ptH 2013/09/02(月) 08:23:16.37
>>928
>>930
浮動小数点表現の指数部分は負数を補数で表現しない,桁上げ式?かさ上げ式?
0932デフォルトの名無しさん2013/09/02(月) 08:26:36.89
はあ? またしれっと知ったかを
「浮動小数点表現の指数部分は負数を補数で表現しない」なんて制約を誰が作ったんだ?
0933デフォルトの名無しさん2013/09/02(月) 08:54:39.57
>誰が作ったんだ?
QZの脳髄に棲み着いてる悪魔が作ったんだよ
0934デフォルトの名無しさん2013/09/02(月) 09:08:36.59
そうそう、全部悪魔の仕業だ

だからqzは悪くない

悪くないからqzは悪魔払いしてもらうまで書き込むな
0935 ◆QZschizo.ptH 2013/09/02(月) 12:24:10.81
IEEE754 の単精度,倍精度,ってことわっとけばよかったかな
御祓いしなくちゃ
0936 ◆QZschizo.ptH 2013/09/02(月) 12:26:48.78
>>885
勝ち負けなんてどうでもいいのでは?
0937デフォルトの名無しさん2013/09/02(月) 13:13:34.31
勝ち負けにこだわってるのはQだけだろ
0938デフォルトの名無しさん2013/09/02(月) 14:04:06.64
トリ付きで何でもかんでも首突っ込んできて引っ掻き回して
何がしたいのかねこいつは・・
0939デフォルトの名無しさん2013/09/02(月) 14:22:13.00
精神科に通ってる時点で察してやれよ
頭おかしいんだよ
0940デフォルトの名無しさん2013/09/02(月) 14:56:17.10
>>928
どんな問題?
規格の6.2.6.2を参照。絶対値表現も許されているよ。
0941デフォルトの名無しさん2013/09/02(月) 15:56:22.48
QZは朝鮮人
0942デフォルトの名無しさん2013/09/02(月) 16:24:24.83
DNAレベルでぶっ壊れてるわけか
人間とのDNA一致率が70%
0943デフォルトの名無しさん2013/09/02(月) 16:51:38.07
人とチンパンジーでDNAの違いが99%だというのに?
0944デフォルトの名無しさん2013/09/02(月) 16:52:44.20
99%一致するというのに?
0945デフォルトの名無しさん2013/09/02(月) 17:13:21.58
朝鮮人はウニの仲間
0946デフォルトの名無しさん2013/09/02(月) 17:22:42.59
>>945
それはウニに失礼だ

ウニは人間とは違う残りの30%のDNAにもちゃんと意味がある
しかし朝鮮人の人間とは違う30%のDNAは、近親相姦を繰り返す事により
修復不能になってしまったクズの役立たずのDNAだ

もうどうやっても人間には戻れんね
0947デフォルトの名無しさん2013/09/02(月) 20:11:23.16
 
                  ∧_∧
                ( ´∀`)   あげ?
..\             (/u  ノ
  \           〈/フ'フ
    \         ∠∠/
     \
\     \    彡
 .\     .\
   .\_/| ̄ ̄ ̄ ̄ ̄|
        . |       .|
0948デフォルトの名無しさん2013/09/02(月) 23:17:12.31
msdn.microsoft.com/ja-jp/library/b5wzwdk7(v=vs.90).aspx

「cwnd」ってなんですか?
フレームを作りたいんですがこれいじるのでしょうか?
使い方載ってるサイトがここしかなくてちょっとわからないです。
09499482013/09/02(月) 23:21:57.41
用語がちょっと難しすぎてって何でこんなに難しい用語多いんでしょうか^〜^
0950デフォルトの名無しさん2013/09/02(月) 23:26:36.52
ウィンドウクラスじゃん
C++だし
09519482013/09/02(月) 23:27:39.99
>>950
これってなんでこんなに複雑なんですか?何一つ理解できないんですけど。
JavaだとFrame("title");で終わりですよね?
何故?というか教えて下さい。
0952デフォルトの名無しさん2013/09/02(月) 23:35:46.21
スレチ
0953デフォルトの名無しさん2013/09/03(火) 00:04:22.44
>>951
MFCスレとかC++スレが良い。この話をここでやるとスレが脱線する
0954デフォルトの名無しさん2013/09/03(火) 00:08:46.62
そりゃ使い方分かればその方が簡単になるからや
0955デフォルトの名無しさん2013/09/03(火) 00:38:24.42
2次元配列をまとめて3次元配列として扱いたいのですがうまくいきません。
グローバル変数として
double a1[10][20] = { 数値 };
double a2[10][20] = { 数値 };
:
がありこれらをまとめて3次元配列としようとしています。

自分なりに調べたのですが↓とするとmake時にWarningが出ます。
double (A*)[10][20] = { &a1, &a2, ... };

正しい書き方をご存知の方いらっしゃいますでしょうか。
09569552013/09/03(火) 00:53:36.90
すみません。
↑はdouble (A*)[10][20] ではなくdouble (*A)[10][20] でした
0957デフォルトの名無しさん2013/09/03(火) 01:02:13.21
二次元配列の二次元配列をやりたいのか?
typedef double Ary[10][20];
Ary ary[10][20];

↑よかAryのポインタの配列の方がいいんじゃね?
Ary *ary[10][20];
09589552013/09/03(火) 01:13:41.32
>>957
なるほど、typedefを使用すればいいのですね
そのまま書くことのみを考えてしまってました
いまはビルド環境がなくすぐの確認は出来ないですが、明日作業場で確認します
ありがとうございました
0959デフォルトの名無しさん2013/09/03(火) 01:24:38.80
double (*A[])[10][20] = { &a1, &a2, ... }; だろ

配列へのポインタ配列
ちなみに (*a[i])[j][k] なんて書き方が必要なのは、配列へのポインタとポインタ配列を
混ぜると仕方がない

#include <stdio.h>

double a1[2][2] = { {1.0, 2.0}, {3.0, 4.0} };
double a2[2][2] = { {5.0, 6.0}, {7.0, 8.0} };

int main(void)
{
double (*a[])[2][2] = { &a1, &a2 };
int i, j, k;

for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
printf("%f ", (*a[i])[j][k]);
putchar('\n');
}

return 0;
}
0960デフォルトの名無しさん2013/09/03(火) 04:10:17.24
typedefでいいんじゃないの
0961デフォルトの名無しさん2013/09/03(火) 07:22:53.96
int siraberu(){
for(i=0 ; i>255 ; i++){
a++;
}
return a;
}

これで255が返るはずなんですけど値が0になってしまうんですがなぜでしょうか?
0962デフォルトの名無しさん2013/09/03(火) 07:37:38.66
単に符号が逆だっただけでした失礼しました
0963デフォルトの名無しさん2013/09/03(火) 07:40:11.15
符号が?
0964デフォルトの名無しさん2013/09/03(火) 07:52:31.64
よく確認もせず質問するゴミクズ
0965デフォルトの名無しさん2013/09/03(火) 07:52:37.23
不等号
0966デフォルトの名無しさん2013/09/03(火) 21:49:45.90
さっきC言語始めました。文字列を表示させるために#includeで説明書追加して。。。
#include <stdio.h>

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

これでコンパイルしたらコンパイルエラーとして
コンパイラに内部エラーが発生しました。
_start not defined
って出てくるんですがどういうことがまずいんですか?
0967デフォルトの名無しさん2013/09/03(火) 22:04:01.50
>>966
エラーから察するにコマンド打つときに恐らく.libか.oファイルの指定が足りてない
それ以上は環境がわからないので答えようがない
09689552013/09/04(水) 00:40:21.80
>>959
959さんの方法が想定していたものに一番近かったので採用させていただきました
ありがとうございます

私の中ではa[i][j][k]の形となるかな、と想定していたのですが
実現するにはmemcpy等を使用する冗長なコードしかなさそうです

ともあれお蔭様で解決することができました
typedefの案を下さった>>957さん、>>959さん
重ねてありがとうございます
0969紅光の騎士ライジングノヴァ ◆sWBUz7TGM2 2013/09/04(水) 01:12:10.07
JavaScriptの値入れるだけで画面に反映されるのがどうも感覚的に合わない
document.getElementByID('test').innerHTML="テストだぜベイビー";
とかさ、
C的にやるなら構造体用意して値入れてアドレス渡して画面を際描画でしょ?
JavaScript作った奴はマジで頭悪いと思う
0970デフォルトの名無しさん2013/09/04(水) 01:15:12.39
それは言語関係ないじゃないの
0971デフォルトの名無しさん2013/09/04(水) 01:25:04.46
>>968
いやいや これでいいやろ
#include <stdio.h>

double a1[2][2] = { {1.0, 2.0}, {3.0, 4.0} };
double a2[2][2] = { {5.0, 6.0}, {7.0, 8.0} };

int main(void)
{
double (*a[])[2] = { a1, a2 };
int i, j, k;

for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
printf("%f ", (a[i])[j][k]);
putchar('\n');
}
0972デフォルトの名無しさん2013/09/04(水) 01:26:47.96
JSは消滅すべき糞言語だったけど
Googleが自分のシェアにモノを言わせて延命させちゃったんだよな
0973デフォルトの名無しさん2013/09/04(水) 01:47:50.70
>>971
本当やね
これで行けちゃう

double a1[2][2] = { {1.0, 2.0}, {3.0, 4.0} };
double a2[2][2] = { {5.0, 6.0}, {7.0, 8.0} };

int main(void)
{
double (*a[])[2] = { a1, a2 };
int i, j, k;

for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)
printf("%f ", a[i][j][k]);
putchar('\n');
}
0974デフォルトの名無しさん2013/09/04(水) 02:47:53.09
jsが延命されたせいでflashになったりhtml5になったりマジで厄介。
0975デフォルトの名無しさん2013/09/04(水) 03:27:22.59
まったく、jsは最高だぜ
0976デフォルトの名無しさん2013/09/04(水) 03:31:45.55
どこがだよ
デバッガ導入しないとまともに使えないカスJS
0977デフォルト名無しさん2013/09/04(水) 06:08:43.01
>>966
コンパイラを書けよ
0978デフォルトの名無しさん2013/09/04(水) 06:38:00.38
>>966
エラーメッセージから察するに tcc(Tiny C Compiler) かな。
「学習用C言語環境」でもインストールしたんだろうか。
コマンドプロンプトで直接コンパイル(>tcc test.c)すると動いたよ。

学習目的であっても、最初に触るCコンパイラは Microsoft Visual C
(Windows)、あるいはgcc(Linux)がオススメだよ
0979デフォルトの名無しさん2013/09/04(水) 06:48:45.74
JSとか使えるようにするから馬鹿が糞サイト量産するんだろ。
Cで書いてコンパイルしたやつを埋め込まないとそういうの使えないようにしとけボンクラ。
0980デフォルトの名無しさん2013/09/04(水) 06:59:51.91
でもまあ、トラブルが多い状況だからこそ腕のいいプログラマーにとっては
金儲けのチャンスだったりする。痛い目に遭ったクライアントは、次からは
少し高い金出しても、腕のいい職人を探してサイト作らせようとするから。
おっと、ここはC言語スレだったし
0981デフォルトの名無しさん2013/09/04(水) 07:55:58.89
JavaScriptはブラウザ間の実装の違いが問題だと思うよ

Cみたいにコンパイルしてしまうならそういった状況は減るだろう
0982デフォルトの名無しさん2013/09/04(水) 09:41:33.11
変数に型があってコンパイル可能な言語を
ブラウザにも実装すべき。
フラッシュとジャバアプレットはあの領域内でしか
動作しないから役不足。
あのまま全画面フラッシュになれば
領域がブラウザのクライアントエリアと一致するからまだ良かったんだけど
どっかの馬鹿がジャバスクリプトマンセーしたせいで
こんなことになった。
0983デフォルトの名無しさん2013/09/04(水) 10:11:35.86
役不足の意味を知らない馬鹿よりまし
0984デフォルトの名無しさん2013/09/04(水) 10:26:44.46
JavaScriptは言語としてはけっこう好きだ
0985デフォルトの名無しさん2013/09/04(水) 13:53:30.71
そこまで叩くなら代替言語用意しろよ
0986デフォルトの名無しさん2013/09/04(水) 14:47:50.99
C言語初めて3ヶ月ぐらいの初心者です
if(!a) は0の時だけ、真になるってわかったんですけど

if(a != b) の場合はどうなるんですか?
0987デフォルトの名無しさん2013/09/04(水) 15:06:27.41
ifはゼロかそれ以外での分岐。
「a != b」はaとbが等しいなら0、aとbが異なるなら1になる。
整数だったら、
if(a != b)とif(a-b)の分岐は一致するだろう。たぶん。
0988デフォルトの名無しさん2013/09/04(水) 15:30:08.33
ttp://pastebin.com/XaibiWcC
44行目の
if (ch1 != ch2) {
printf("ファイルの内容が %lu バイト目で異なります", l);
same = 0;

これ意味がわからないんだけど?
正しいなら一致してるで・・・
0989デフォルトの名無しさん2013/09/04(水) 15:31:53.85
そりゃぁ、
a != b
は両辺からbを引くことで
a - b != 0
になるからねぇ。
しかし、3箇月も経って>986の質問するようだと……
0990デフォルトの名無しさん2013/09/04(水) 15:33:29.34
>>988
ch1とch2が等しくないから「異なります」なんだろ。
どこに疑問が?
0991デフォルトの名無しさん2013/09/04(水) 15:45:17.08
三ヶ月も経ってるなら、ファイルから1バイトづつ読み込み/比較とか効率悪すぎるから
読み込みバッファ用意するくらいにはなってて欲しいよね
0992デフォルトの名無しさん2013/09/04(水) 16:27:41.03
>>991
読み込みバッファ使ってるじゃん
0993デフォルトの名無しさん2013/09/04(水) 16:57:12.64
読み込みバッファの適切なサイズ教えてください
0994デフォルトの名無しさん2013/09/04(水) 17:14:49.68
2の累乗
0995デフォルトの名無しさん2013/09/04(水) 17:25:00.02
PCなら4096を基準に増やしたり減らしたり試せばいい
0996デフォルトの名無しさん2013/09/04(水) 17:35:16.83
保証されてる配列の最高の長さは?
0997デフォルトの名無しさん2013/09/04(水) 17:40:37.65
配列の長さの高さとはなんぞ?
0998デフォルトの名無しさん2013/09/04(水) 18:41:14.84
うめ
0999デフォルトの名無しさん2013/09/04(水) 19:13:42.88
>>996
そのプロセスが確保できるスタックなりヒープなりの空き領域による
そういうことを聞いているんじゃなくて?
1000デフォルトの名無しさん2013/09/04(水) 19:17:27.41
1000なら日本語からやりなおせ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。