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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001v(^o^i)d NGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

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

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

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

C言語なら俺に聞け! Part 90
http://pc5.2ch.net/test/read.cgi/tech/1094025471/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/

0002デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

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

【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
0003デフォルトの名無しさんNGNG
前スレの982-983が馬鹿すぎて哀れ
0004デフォルトの名無しさんNGNG
>>1
乙

>>3
引きずるな ボ ケ
0005デフォルトの名無しさんNGNG
hosh
0006デフォルトの名無しさんNGNG
Linuxでシリアル制御のプログラムを作成してるのですが、CTS/ RTS制御について
確認したい事があるので教えて下さい。
RTS信号をON・OFFするにはioctlを使用すれば良いことは分かったのですが、
実際にRTS信号をON・OFFするタイミングはこちらがreadのときはOFF、受信を
止めて送信を開始したい場合はONにするという事でいいのでしょうか?

0007デフォルトの名無しさんNGNG
age
0008デフォルトの名無しさんNGNG
>>6
いいえ。
0009デフォルトの名無しさんNGNG
もう一個のスレに書き込んだけど,
こっちが本スレ?

Cでファイル入力を行うとき,
100,200,300
のような書式でデータが並んでいる場合fscanfを使えば
fscanf(pFile,"%d,%d,%d",&data1,&data2,&data3);
のように簡単に分割して取得できるのですが,
char str[128]="100,200,300"の用に変数にデータが入っていた場合も
同様に簡単に分割して取得できないでしょうか?
0010デフォルトの名無しさんNGNG
>>9
sscanf(str,"%d,%d,%d",&data1,&data2,&data3);
0011デフォルトの名無しさんNGNG
マス.ヘッダってカタカナで書くとなんかエロいね。
0012デフォルトの名無しさんNGNG
>>8
おまえ、ホントは分かってないだろ
0013デフォルトの名無しさんNGNG
>>12
おまえ、ホントに分かってないだろ
0014デフォルトの名無しさんNGNG
>>13
オマエモナ
0015デフォルトの名無しさんNGNG
>>14
>>6が正しいのであれば正しいという証拠言ってみろ
0016デフォルトの名無しさんNGNG
>>15
>>6が間違ってるのであれば間違ってうという証拠言ってみろ
0017デフォルトの名無しさんNGNG
>>16
プッわからないからってその手には乗らない
0018デフォルトの名無しさんNGNG
>>17
>>8みたいな意味の無いレスしか出来ないならレスすんなよ。
0019デフォルトの名無しさんNGNG
>>16
板間違ってるよ。
0020デフォルトの名無しさんNGNG
>>18
8はちゃんと質問に過不足無く答えてるようだが・・・
0021デフォルトの名無しさんNGNG
>>20
過不足無ないがその後のレスを見る限り性格は相当悪そうだな。
0022デフォルトの名無しさんNGNG
>>21
12がつっかかってるから売り言葉に買い言葉なんだろう
0023デフォルトの名無しさんNGNG
質問があります。よろしくお願いします。
VC++6.0で作っているのですが、2次元データを読み込む配列を作るために関数で、

data=(float**)malloc((N+1)*sizeof(float));
data+=1;
data[0]=(float*)malloc((N*L+1)*sizeof(float));
data[0]+=1;

for(i=0;i<N;i++)
 m[i]=m[i-1]+L;   

という方法で作っているのですが、sizeof(float)ではメモリを参照できないという
エラーが出て、sizeof(double)で確保すると動きます。
読み込むデータはfloat型で充分ですし、確保する配列のデータ数も読み込むデータ数と
合っています。なぜfloat型でメモリを確保するとエラーが出るのか分かりません。
よろしくお願いします。
0024デフォルトの名無しさんNGNG
4 aaa
2 bbb
3 ccc
2 ddd
という感じでランダムなインデックスの付いた膨大な配列をインデックスでソートしたいのですが、
このとき、同じインデックスが現れた場合、元の配列の後ろに位置しているデータを
優先として前の配列は削除するようにしたいのです。(配列も縮める)
どのようなアルゴリズムがベストでしょうか?
一旦別の一意のインデックスを付けてクイックソートしてから削除した方が良い?
どなたかアドバイスをお願い。
0025デフォルトの名無しさんNGNG
Printfを自作したいのですが、どうやればできますか。
0026デフォルトの名無しさんNGNG
>>25
そのPrintfはどんな機能なんですか。
0027デフォルトの名無しさんNGNG
>>25
http://openbsd.secsup.org/src/lib/libc/stdio/printf.c
http://openbsd.secsup.org/src/lib/libc/stdio/vfprintf.c
0028デフォルトの名無しさんNGNG
数行かぁ
0029デフォルトの名無しさんNGNG
でけた?
#define Printf(...) printf(__VA_ARGS__)
0030デフォルトの名無しさんNGNG
>>24
クイックソートできるってことはメモリに収まるってことだよね。
ソートしてから重複削除すれば?
0031デフォルトの名無しさんNGNG
>>30
メモリにはなんとか収まります。
やっぱりソート後の削除がベストですかね〜。。
0032デフォルトの名無しさんNGNG
>>24
大抵の場合は、一旦ソートしてから処理した方が速い。
ただ、クィックソートって安定じゃなかったような気が。
0033デフォルトの名無しさんNGNG
クイックソートは安定ではないので単純にやるのであれば
別の安定したソートアルゴリズムを。

実際に各要素をコピーしたりしないで、そのアドレスを配列にしたものを
ソートしてみては?
0034デフォルトの名無しさんNGNG
>>32
何が安定じゃないのか言ってもらわないとな
0035デフォルトの名無しさんNGNG
はぁ…
0036デフォルトの名無しさんNGNG
あとは、挿入ソートしつつ重複キーがあったら削除とかかな。
ただ、要素数が多いのならソートの時間が支配的になるので
速くて安定したソートを選んだほうがいいと思う。
0037デフォルトの名無しさんNGNG
>>34
クイックソートは難しいけどデバッグしっかりやれば大丈夫だろ。
0038デフォルトの名無しさんNGNG
不安定=ソートキーの値が同じとき順序が特定出来ない
0039デフォルトの名無しさんNGNG
>>37
そう言う意味?
0040デフォルトの名無しさんNGNG
>>38
それは不安定じゃなくて仕様でしょう
クイックソートが悪いわけじゃない
0041デフォルトの名無しさんNGNG
へんなことを言う人ガイルなぁ
0042デフォルトの名無しさんNGNG
>>40
はぁ…
0043デフォルトの名無しさんNGNG
>>40
一般的に不安定と呼んでいます
0044デフォルトの名無しさんNGNG
ちょっとテストするね☆
0045デフォルトの名無しさんNGNG
もう面白いことを逝ってくれるひとはいないのか?
0046デフォルトの名無しさんNGNG
>>40
単に、安定じゃないソート方法というだけ。
敢えて悪いか悪くないかを言うならば、安定かどうかも知らずに使う奴が悪い。
0047デフォルトの名無しさんNGNG
libcなどを使わず単体で実行できるputs文を作りたいんですけど
どんな感じに書けばよいでしょうか?
0048デフォルトの名無しさんNGNG
>>47
環境依存。
0049デフォルトの名無しさんNGNG
"仕様"か…
0050デフォルトの名無しさんNGNG
アルゴリズムに仕様もへったくれもあるか!
と、妹が言っております。
0051デフォルトの名無しさんNGNG
はい、そうです。
0052デフォルトの名無しさんNGNG
>>48
リアルモードx86のブート時を想定してます。
よろしくお願いいたしまんこ
0053デフォルトの名無しさんNGNG
配送です。
0054デフォルトの名無しさんNGNG
スレちがいなのでx86なら俺に聞けスレに逝って下さい。
0055デフォルトの名無しさんNGNG
>>52
BIOS経由でいけたような気もするし、VRAMに直接書いてた気もする。
いずれにしてもCとは関係ないので他の適切なスレへどうぞ。
0056デフォルトの名無しさんNGNG
そうさせて頂きます。
ありがとうございまんこ
005724NGNG
参考になりました。
とりあえず、安定したソート(マージソート辺り)で
最後の結合でうまく重複しないようにしてみます。
どうもありがとうございます。
0058デフォルトの名無しさんNGNG
マジ?なんでマジソートをエラんだのか…
005924NGNG
>>58
クイックソートだと最後にデータの重複チェックをするのですが、
データがでかいのでクイックソートの意味がないくらい時間がかかります。
マージソートで重複チェックしつつソートだけやった方が時間が短縮できそうな
気もしなくもないですが、値がランダムなので微妙です。
何がいいでしょうか。。
0060デフォルトの名無しさんNGNG
詳しいことはわからないけど、
安定したソートはだいたい線形的に要素をなめていくパターンになるので
あんまり大差ないような...データの偏り方にもよるし。

1要素の大きさはどうなの?
これもデータの特性(というかサイズ)次第だけど、
要素の内容を入れ替えするときのコストのほうが大きいのではないかと思っているんだけど。
0061デフォルトの名無しさんNGNG
クイックソートは本当にクイックかどうかわからないよ。
ワーストケースが酷い。
006224NGNG
>>60
1要素はインデックス用の4バイトと200バイトのバッファの構造体です。
これが大体20万要素くらいあります。
006324NGNG
>>61
ほぼランダムなので、正順列、逆順にはなりにくいので
クイックで割りと高速にソートします。
0064デフォルトの名無しさんNGNG
一般論だけど、おそらく各要素のアドレスの配列を作ったほうが良さそう。

ソート中に
4+200 バイトの要素の入れ替え→アドレス配列上でアドレスの入れ替えだけ
になる差は大きいと思う。
006524NGNG
>>64
そうですね。データのコピーはなくしてみます。
ありがとうございます。
0066デフォルトの名無しさんNGNG
ちょっとテストするね☆
0067デフォルトの名無しさんNGNG
さ、今日も一日がんばるぞ、っと。
006825NGNG
>>26
出力機能て奴かなぁ。


>>27
ありがとうございます!
でも何かじっくりみないとよくわがんね〜です。

単に Printf("ああああ:%D%D%D",a,b,c)とかでどうやって値を渡しているのか気になったのと、
自作関数作成中でしてPrintfにどういう渡し方をすればいいのか分からなかった物で
自作したいと言うよりは解析したい、と言った感じでした。
Printfは("%D%D%D%D%D%D"a,b,c,d,e,f)等が出来て型にはまっていないので自作関数を作る際に苦労します。
0069デフォルトの名無しさんNGNG
1+(1+2)+(1+2+3).....(1+2+3+4+5+6+7+8+9+10)を計算するプログラムをお願いします。
テストで出たけど分からなかったorz
0070デフォルトの名無しさんNGNG
>69
氏ねクソマルチ野郎
0071デフォルトの名無しさんNGNG
>>69
>>1に
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
と書いてあるのに。
0072デフォルトの名無しさんNGNG
>>69
#include<stdio.h>

int main(int argc, char** argv)
{
char str[100];
int n;

printf("n=");
fgets(str, 97, stdin);
n = atoi(str);
printf("%d\n", n*(n+1)*(n+2)/6);
return 0;
}
0073デフォルトの名無しさんNGNG
質問はしてませんが、このスレのおかげで問題が解決しました。
ありがとうございました。
0074デフォルトの名無しさんNGNG
>>72
何で97バイトにしてんの?
0075デフォルトの名無しさんNGNG
>>74
改行コードが最長の場合で2バイト("\r\n")と、最後にヌル文字 '\0' が代入されるから。
0076デフォルトの名無しさんNGNG
モード変更が見当たらないが・・・
0077デフォルトの名無しさんNGNG
ハァ?
0078デフォルトの名無しさんNGNG
>>75
fgetsは改行文字を含めて(2番目の引数の値) - 1までしか読み込まない。
そして文字列の最後にナル文字をセットするのでfgets(str, sizeof str, stdin);で平気。
それとCでの改行文字は常に'\n'1文字。
0079デフォルトの名無しさんNGNG
75みたいなのがいるから前スレの982みたいなことをいわれるんだよ。
0080デフォルトの名無しさんNGNG
>>78
>fgetsは改行文字を含めて(2番目の引数の値) - 1までしか読み込まない。
>そして文字列の最後にナル文字をセットするのでfgets(str, sizeof str, stdin);で平気。
今実験してみたらその通りだった。スマソ。

>それとCでの改行文字は常に'\n'1文字。
Cで生成すれば普通は'\n'1文字になるが、ネットワークを通した場合や他の処理系で生成されたテキストデータの場合は、
必ずしも改行コードが '\n'='\x0a' で終わるとは限らない。
実際、"\r\n"の場合もあるし、それこそN88BASICで作られた(遺跡のような)データの場合は
改行コードが'\r'になっている。確か、VisualBasic も'\r'だった希ガス。
0081デフォルトの名無しさんNGNG
>>79
ハァ? 実際に改行コードが統一されていないために苦労したことがあるから慎重になっただけですが何か?
0082デフォルトの名無しさんNGNG
>>81
慎重になるのなら、まずfgetsの仕様調べたら?
0083デフォルトの名無しさんNGNG
「 !! 」って演算子はどういう意味?
0084デフォルトの名無しさんNGNG
>>83
おおっとびっくり。
0085デフォルトの名無しさんNGNG
>>83
!がふたつ。
0086デフォルトの名無しさんNGNG
>>82
高々3バイト程度だったら、余計にバイト数を取るに越したことは無い。
ヌル文字の分を fgets が自動で差し引いてくれる仕様だということを忘れても、
文字列領域を1バイト余計に確保してしまう以上の実害はない。

>>83
論理の2重否定=何も効果が無い
008786NGNG
>>83
正確には、前置記法のみ許される演算子で、
論理式の前→効果なし
数値の前→0を int型の0に、非0を int 型の 1 に変換する。
0088デフォルトの名無しさんNGNG
ネタで言っていると信じたい
008983NGNG
>>84-86
即レスサンクス。やはり単なる否定の否定って事だよね。
0090デフォルトの名無しさんNGNG
!!2 == !!3 てことじゃ
0091デフォルトの名無しさんNGNG
>>86
関数の仕様も確認せずに自己流の対応取るような奴はプログラマとして信用できない。
0092デフォルトの名無しさんNGNG
>>90

つまり0は1に、0以外の数値は1になるって事ですね?
009392NGNG
まちがえた、0は0ですね。
0094デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
printf("!0 = %d, !!0 = %d\n", !0, !!0);
printf("!1 = %d, !!1 = %d\n", !1, !!1);
printf("!2 = %d, !!2 = %d\n", !2, !!2);
return 0;
}

!0 = 1, !!0 = 0
!1 = 0, !!1 = 1
!2 = 0, !!2 = 1
0095デフォルトの名無しさんNGNG
>>86
書いてる本人が現状を把握してない →いま実害出てるかどうかは問題外
0096デフォルトの名無しさんNGNG
>>94
有難う。俺も試してみたかったんだけど自宅PCにコンパイラ
入ってなくて試せなかったんですよ。
0097デフォルトの名無しさんNGNG
>>91
全ての関数の仕様を完璧に把握しているプログラマの方がむしろ少数派だと思うのだが。
必要な時に必要なだけ掘り下げるのがプログラマとして正しい姿勢だと思うが?
IEEE の浮動小数点型の構造を、指数部と仮数部のビット数を1ビット違わず完璧に暗記していなくても、
普通の浮動小数点計算のプログラムを作る上では何の支障もない。
マシンイプシロンが問題になるような微妙なプログラムを作る段階になって始めてビット数の配分を調べればいい。
>>72のプログラムは飽くまでも適当な長さの文字列を入力する意図でfgetsを使ったまでで、
1バイトが問題になるような微妙な問題など一切発生しない。
だから、厳密な仕様が分からなくても差し支えないような対応策を取っただけのこと。

ちょっと printf を使うのにわざわざ完全な仕様を調べる馬鹿がどこにいる。

>>95
少なくとも、引数に97を指定すれば高々100バイトまでしか読み込まないという現状を把握していて、
実際にその推論は正しかったわけだが?
0098デフォルトの名無しさんNGNG
>86みたいなのがいるからバグで列車が止まったりするんだろうな。
「高々3バイト」? 自分の無知、怠慢、頑迷を棚に上げてよく生き残ってこれたな。
0099デフォルトの名無しさんNGNG
>>97
単なる逆切れに見えるからもうやめとけ
0100デフォルトの名無しさんNGNG
char str[100];としてsizeof strとした場合、str[100]以降に書き込まれることはない。
0101100NGNG
sizeof str
↓
fgets(str,sizeof str,stdin);
0102デフォルトの名無しさんNGNG
>>97
わかんなければ、調べればいいじゃん。
勝手に仕様を想像して作ってもしょうがないだろ。
0103デフォルトの名無しさんNGNG
>>98
「高々」という言葉を怠慢だと思う香具師は数学も知らないDQNプログラマ。
「高々〜」というのは「〜以下」と同じ意味。
文字列領域を 10^8 個くらい確保する必要があるプログラムとかだったら
1バイトの違いが命取りになる可能性もあるが、
>>72のプログラムで3バイトが命取りになるとでも言うのか?

>>98は中学校程度の英語の文を訳すのに学者でも滅多に使わない辞書を熟読する馬鹿と同じレベル。
0104デフォルトの名無しさんNGNG
>>72のプログラムじゃ問題にならないけど、
「fgetsの仕様知らないんで、大丈夫だと思う方法で使いました」
は問題ありすぎ。
0105デフォルトの名無しさんNGNG
75がアホなことを言うからでは?
0106デフォルトの名無しさんNGNG
>>99
逆切れも何も、必要なときに必要な深さまで掘り下げるのが真のプログラマの素質だと主張しているのだが?

>>102
少なくとも>>72のようなプログラムを書いて困ったことは一度もない。
普段使うのに必要な程度の仕様は理解しているし、
間違っていても高々3バイト程度の誤差だし、原子炉を制御するような慎重さを要するプログラムを想定していない。
0107デフォルトの名無しさんNGNG
>>106
正しい使い方すれば無駄な苦労せずに済むのに?
0108デフォルトの名無しさんNGNG
>>104
知らないというより、最近使っていないから忘れていた。
一度だけちゃんとした仕様を見たような気がする。
0109デフォルトの名無しさんNGNG
>>106
自分の馬鹿さを認めろよ、もう。
0110デフォルトの名無しさんNGNG
>>108
そうだね。仕様忘れてたら問題ないもんね。
0111デフォルトの名無しさんNGNG
>>107
こういう場合と勘違いしていた。

名前のフィールドが100バイトの場合、一時的に読み込みに使用する文字列変数の長さは
何バイト必要か?
という問題。
さっき fgets を使ってみたら自動的に'\n'が削除されていたから、
コンソール入力の場合は 101 バイト、ファイルからの読み込みの場合でも 102 バイトというのが正解だが、
それを '\n' も入力されるものと勘違いして 103バイトと思っていた。
0112デフォルトの名無しさんNGNG
fgets()の第2パラメータはバッファサイズと同じでいいなんてことは、いろはのいのようなもの。
仮令忘れていようともマニュアルページを一瞬でも見れば思い出すような種類の内容だね。
つまり、「忘れるはずもないようなことも知らない」無知と「忘れているのに確認せずに使う」
怠慢と「指摘されても自分の非を認めない」頑迷さか。

しかも、未だ判っていないで御託並べてるよ。
その御託から察するに、実験的に仕様を確認する能力にも欠けている様子。
「正解」なんてわざわざ書かないでいればただのお馬鹿さんで済んだのにねぇ。
0113デフォルトの名無しさんNGNG
str+3のコーディングは問題ないけど、削除されたかどうかの方は重要じゃない?
0114デフォルトの名無しさんNGNG
97と112は同じ思想だね。
0115デフォルトの名無しさんNGNG
>>113
ぜんぜん重要じゃないよ。int上限超えてる事にくらべたら。
0116デフォルトの名無しさんNGNG
あとはケッペキさんたちがどう思うかでネタが続くか決まりそうだな
俺はどこまでいっても確証ってのはヒューリスティックなものに過ぎないと思うがね
プログラマの資質論・道徳論じゃなくてもうちょっと現実的なとこで話そうぜ
0117デフォルトの名無しさんNGNG
>>109>>112
だから、高が数値を入力するのにわざわざ仕様を調べる必要はなかったと言いたいのだが。
scanf を使うよりマシだと思って fgets を使ったに過ぎない。
別に、

(前略)
char str[100000];
(中略)

fgets(str, 100, str);
(以下略)

とかでも本質的には問題ない。
0118デフォルトの名無しさんNGNG
仕様の通りにしようというのは資質論・道徳論?!
0119デフォルトの名無しさんNGNG
>>115
削除されてなかったらそのまま残っちゃうんだよ?
int上限「超えてる」ってのが何の話かもよくわかんないんだけど。
0120デフォルトの名無しさんNGNG
>>118
費用対効果や個別ケースを想定せずに、常に完全を求めるのが徳論ってことじゃないのか?
0121デフォルトの名無しさんNGNG
>>113
削除されたかどうかを知らなくても、どちらでも差し支えないようなプログラムを書ければ問題は無い。
何らかの理由でバイナリモードで開く必要があった場合、'\n'は自動的には削除されない。

>>118
全ての関数の厳密な仕様を完璧に把握しようとすれば誰だってノイローゼになる。
普通は、必要なだけの深さまで掘り下げて理解する。
0122デフォルトの名無しさんNGNG
仏陀に聞いてみれば誰の考え方が正しいか分かるぜきっと。
ハイ、仏陀↓
0123デフォルトの名無しさんNGNG
hebi?
0124デフォルトの名無しさんNGNG
>scanf を使うよりマシだと思って fgets を使ったに過ぎない
そもそもそんな思想の香具師にプログラムなんて書いて欲しくない。
あー、書くのは構わないな、他人の趣味までどうこうする気はないから。
他人の使うプログラムを書かず、無知を晒さず、引き篭もっててくれればいいよ。
0125デフォルトの名無しさんNGNG
質問です。
H8マイコンのLCDに表示についてです。

void lcdo4(unsigned char d)
{
d=d | E_SIG;
P3DR=d;
d=d & 0xdf;
P3DR=d;
wait()
}
なのですがお願いします。
なにぶん初心者なので・・・。
0126デフォルトの名無しさんNGNG
>>122
ワシはゴータマ・シッダールタじゃ!!
0127デフォルトの名無しさんNGNG
>>125
このスレは不適当です。以下のスレから好みのところへどうぞ。
http://pc5.2ch.net/test/read.cgi/tech/1079102543/
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
0128125NGNG
なるほど。すいませんでした。
0129デフォルトの名無しさんNGNG
>>124
そもそも stdio.h の関数自体が欠陥だらけなのだが?
Windows などのプログラムを組むのに、わざわざそんなことを考える必要は無い。
ぶっちゃけた話、>>74の例では、数値が入力できれば何でもいいだろ。
0130デフォルトの名無しさんNGNG
>>127
下二つはひでーw
0131デフォルトの名無しさんNGNG
>>74の例の間違い。スマソ
0132デフォルトの名無しさんNGNG
>>72の間違いだった。
0133デフォルトの名無しさんNGNG
使い方をまちがってますよと言っただけなのに、ここまで逆切れされるのもどうかと
0134デフォルトの名無しさんNGNG
>>129
リスク評価って言葉がそいつの辞書にはのってないんだよ。

>>133
潔癖な奴は潔癖だし、適当な奴は適当なままだからな。
で、二人が出会うと反発しあって二人とも自分の方の極へ猛ダッシュして
返ってこなくなっちゃう、と。
0135デフォルトの名無しさんNGNG
わざわざ仕様に沿わない使い方をする意味がないだろ
必死にこのケースは問題ないとか言ってるし
始めから仕様に沿った使い方してればそもそもケースを考慮する必要もないだろ
0136デフォルトの名無しさんNGNG
>>79みたいな書き込みがなければ「スマソ」で終わっていたのに、
わざわざ神経を逆撫でする>>79以降の香具師が悪い。
0137デフォルトの名無しさんNGNG
>>135
同じことの反対の側面にあたる考え方だな
興味深い
0138デフォルトの名無しさんNGNG
>>136
いやさ、適当に構うとますます墓穴掘るから面白くてね。
0139デフォルトの名無しさんNGNG
>>135
少なくとも仕様に反した使い方をした覚えは無い。
0140デフォルトの名無しさんNGNG
>>138
問題を解決するという意味では何一つ間違っていないだろ。
どこが墓穴を掘っているのか説明してみろゴルァ
0141デフォルトの名無しさんNGNG
自作自演うぜえ
0142デフォルトの名無しさんNGNG
>>141
そもそもが代理戦争だからなあ
014372 ◆opz3iyLiAc NGNG
>>141
少なくとも漏れは自作自演をした覚えはない。
0144デフォルトの名無しさんNGNG
ヒューリスティックな判断はマなら誰でもやることだろうけどさあ、





とりあえずsageない?
part87のほうのレス数も無事追い抜いたことだし、、。
0145デフォルトの名無しさんNGNG
>>144
さして爆発力のあるフレームじゃないし、もう息切れじゃね?
0146デフォルトの名無しさんNGNG
このスレは常時ageだろ?
0147デフォルトの名無しさんNGNG
>>145 せっかくトリップつけたのに ´Д`)
0148デフォルトの名無しさんNGNG
gcc TEKITOU.cpp -lstdc++ -lm
のmakefileの作り方教えてください。

環境はwin2k、C:\MinGW\lib\gcc-lib\mingw32\3.2.3です。
TEKITOU.cppはmainが一つだけです。
0149デフォルトの名無しさんNGNG
>>117
その割には、わざわざ(あの例では大して意味の無い)改行を気にしてるあたりがねぇ。
細かなこだわりは通すけど、大局は見ないタイプだな。
015072 ◆opz3iyLiAc NGNG
>>149
不確実な知識の中で、安全かつ最小の数値を fgets の第二引数に指定したまでのこと。
0151デフォルトの名無しさんNGNG
最小? 整数値を入力するのに? 何ビットCPUを想定しているの?
だから無知蒙昧を曝け出すだけだというのに……
0152デフォルトの名無しさんNGNG
ヒューリスティック的な捉え方すると、あれで100文字も入れる奴はいないし
たとえバッファあふれしても大問題になる可能性はまず無いな。
scanfで十分なんじゃない?
0153デフォルトの名無しさんNGNG
>>150
知識も無いのに、安全で最小だということがわかるんだ。
0154デフォルトの名無しさんNGNG
atoi使うのに100文字だの安全だの言うかねぇ、、、
0155デフォルトの名無しさんNGNG
>>151
64ビットだとしても高々(十進法で)20桁、128ビットだとしても高々39桁しか必要としない。
だが、トリビアルなプログラムのためにわざわざ厳密な桁数を求める必要はない。
100桁とするのは適切な判断だと思うが?

>>152
scanfだと固まる可能性もあるし、あえてscanfを使う必要も無い。

>>153
バイト単位の厳密な部分を忘れていただけで、本質は把握していたわけだが?
0156デフォルトの名無しさんNGNG
>>155
あえて3を引く必要もないよね。
0157デフォルトの名無しさんNGNG
行入力時に、改行がどう扱われるかってのは本質的な問題だろ。
本質的な問題を無視するのなら理解できるけど、間違っちゃたのを
「動けば良いじゃん」と開き直るのはかっこ悪いよ。
0158デフォルトの名無しさんNGNG
規格を読んでそれぞれが判断すればよいだろうに(反実仮想)

1. 概要
#include <stdio.h>
char *fgets(char * restrict s, int n, FILE * restrict stream);

2. 解説
fgets関数は、nによって指定される文字数より高々1少ない文字数を、
streamによって指されるストリームから、sによって指される配列に
読み込む。改行文字の後(これは保持される)、またはEOFの後には
文字列は追加されない。最後の文字が読み込まれた直後には
ヌル文字が書き込まれる。

(from ISO/IEC 9899:1999)
015972 ◆opz3iyLiAc NGNG
>>156
3を引いても動きます。

>>157
void chomp(char* str)
{
while (*str) {
if (*str != '\r' && *str != '\n') {
*str = '\0';
break;
}
str++;
}
}

こういう関数でも作れば万事解決。
fgets で読み込んでから、chomp すればいい。
0160デフォルトの名無しさんNGNG
なんで27を引かなかったのかを知りたい。
016172 ◆opz3iyLiAc NGNG
>>160
?
0162デフォルトの名無しさんNGNG
>>161
お前もういいよ、お前の居場所は寧ろこっちだ。
http://pc5.2ch.net/test/read.cgi/tech/1090324689/

得得と>159のようなコードを書いているようじゃね。
0163デフォルトの名無しさんNGNG
言い訳する前に書いておくが、この程度のコードでTypoするようなら
それを見つけられないという時点でやっぱり恥だ。
0164デフォルトの名無しさんNGNG
>>159
さすが、本質を理解してる人はすばらしいプログラムを書くね。
0165デフォルトの名無しさんNGNG
こんな時こそあの重複スレを使うといいかもな。
0166デフォルトの名無しさんNGNG
つーかお前らまとめて移動しろよ
延々と馬鹿かっつーの
0167デフォルトの名無しさんNGNG
>>166
ハゲ同
0168デフォルトの名無しさんNGNG
jpegのファイルを配列に読み込みたいんですがfreadだと駄目でした。
fgetcでもやってみたのですが1バイト読み込んだところで
feofで0以外の値が返ってきました。
どうやって読み込めば良いんですか?
0169デフォルトの名無しさんNGNG
>>168
バイナリモードにするとどうなる。
0170168NGNG
"rb"で試して168の結果になりました。
0171デフォルトの名無しさんNGNG
そのファイルが1バイトだったとか。
0172デフォルトの名無しさんNGNG
JPEG(JFIF)のヘッダは
FF D8 FF E0 00 10 4A 46 49 46 00
なんで、何か違うファイルか変な使い方をしていると思う。
0173デフォルトの名無しさんNGNG
ファイルはこれですhttp://up.isp.2ch.net/up/d82cc8ea338b.jpg
ヘッダは>>172のようになってました。
読み込む部分のソースです。

unsigned char *f(FILE *fp)
{
unsigned long size;
unsigned char *p;
if (fseek(fp, 0, SEEK_END))
return NULL;
if ((size = ftell(fp)) == -1)
return NULL;
if ((p = (unsigned char *)malloc(f_size)) == NULL)
return NULL;
memset(p, 0, size);
if (fread(p, size, 1, fp) != 1)
return NULL;
return p;
}
0174デフォルトの名無しさんNGNG
インデントが無くなってますが自分のソースではif (...) {...}となってます。
0175デフォルトの名無しさんNGNG
ファイルの最後まで移動しちゃ、当然それ以上は読めないわな。
0176デフォルトの名無しさんNGNG
if (fseek(fp, 0, SEEK_START))
あとmemsetはその後freadで上書きされるので要らない。
0177デフォルトの名無しさんNGNG
fgetcのソースです。
1バイト読んだところで終わるのは先頭にseekするのを忘れていたからでした。
修正して試しましたが、gdbですが
$5 = (unsigned char *) 0xa0423a0 "リ・
で読み込めてませんでした。
unsigned char *f(FILE *fp)
{
unsigned long size;
unsigned char *p;
long long ll = 0;
if (fseek(fp, 0, SEEK_END)) {
return NULL;
}
size = ftell(fp);
if ((p = (unsigned char *)malloc(size)) == NULL) {
return NULL;
}
memset(p, 0, size);
if (fseek(fp, 0, SEEK_SET)) {
return NULL;
}
while (!feof(fp)) {
p[ll] = fgetc(fp);
if (ferror(fp)) {
}
ll++;
}
return p;
}
173のソースはmalloc(size)です。
0178デフォルトの名無しさんNGNG
>>175>>176
すれ違いってしまいましたが
>>177の通りfreadの方でも先頭に戻しましまたが
(unsigned char *) 0xa0423a0 "リ・
という風に>>177と同じでした。
0179デフォルトの名無しさんNGNG
>>178
落ち着け、gdbで表示されているのはpのアドレスじゃないか?
pの中身は期待通りになってるのか確認してみろ。
0180デフォルトの名無しさんNGNG
>>177
$5って書かれても、gdbで何を表示したらそうなったのかわかんないんだけど。
0181デフォルトの名無しさんNGNG
そのまま他のファイルに書き込んでみたら、同じファイルができたので読み込めてました。
お騒がせしてすんませんでした。
gdbではある程度配列の中身が表示されて...とつくのにリ・だけだったのと、
%sで表示したときもリ・だけ表示されたので駄目だと思ってしまいました。

>>179
リ・はjpegファイルの先頭の部分でした。

>>180
p 引数 というコマンドで出てきました。
何なのか自分も解りませんでしたが
$の後の数字はどうやらpのコマンドを実行したの回数のようです。
0182デフォルトの名無しさんNGNG
下記のプログラムがどうも思い通りに動いてくれません

--------
int a = NULL;

do {
if (a != NULL) {
printf("入力された文字>> %c\n\n", a);
}
printf("キーを入力して下さい\n");
a = getchar();
} while (a != -1);
---------------------

最初の1回目は a = getchar(); この部分で入力待ちが起こるのですが、
2回目の a = getchar()の行ではそのまま素通りされているような実行結果が
出てしまいます。

----------------------------
キーを入力して下さい
a
入力された文字>> a

キーを入力して下さい
入力された文字>> 


キーを入力して下さい
--------------------------

このような結果になるのですが、2回目のa = getchar()では入力待ちで待機されないのでしょうか?ご指摘お願いします。
0183デフォルトの名無しさんNGNG
>>182
getcharの後にダミーのgetcharを置かないと連続した2回目のgetcharには
リターンが入ってしまいますよ
0184デフォルトの名無しさんNGNG
a\nがバッファに入力される。
バッファからaの一文字が変数aに書き込まれる。
2回目のgetcharでバッファに残ってる\nが変数aに書き込まれてる。
0185デフォルトの名無しさんNGNG
まぁ、fgets()でも使っとけってこった。
0186182NGNG
>>183-185

ありがとうございます。

なるほど、内部ではそうなっているんですか。
なんとなく、1回目の処理が終った後も、
ゴミみたいなのが残ってて2回目がおかしな処理になっているんだろうと思ったんですが
解決には至りませんでした。

fgetsで試してみます。ありがとうございました。
0187デフォルトの名無しさんNGNG
要は標準ライブラリの仕様がわからんという質問が多いな。
0188デフォルトの名無しさんNGNG
質問者はそんなもんだろう
解答者でそのレベルなら痛いがな
0189デフォルトの名無しさんNGNG
何をやろうとしているか、感じ取ってもらえるといいのですが、
下に書いたような処理をしようとしています。
hoge1を呼び出そうとしましたが当然エラーです。

#include<stdio.h>
#define HOGE(item) hoge##item
void hoge1(void)
{
printf("hoge1\n");
}
void hoge2(void)
{
printf("hoge2\n");
}
main()
{
int a='1';
HOGE(a)();
return 0;
}

文字列連結の##ってやつ、どういった時に使うのかわかりません。
何の役に立つかもわかりません。
このような処理を実行させるのはCでは無理でしょうか?
0190デフォルトの名無しさんNGNG
hoge の定義はどこにあるの?
0191デフォルトの名無しさんNGNG
>189

HOME(1)();
HOME(2)();

と必要に応じて書く
defineを解釈するのはプリプロセスの段階だということを意識できると
いいんだが
0192デフォルトの名無しさんNGNG
HOMEと書いてしまったorz
0193デフォルトの名無しさんNGNG
>>189
HOGE(1)();
0194デフォルトの名無しさんNGNG
関数ポインタ使えって感じだな
0195デフォルトの名無しさんNGNG
>>189
実行時に変数の内容で呼び出す関数を振り分けたいなら、
関数ポインタの配列を使いなさい。

void (*hoge[2])(void) = {hoge1, hoge2};
int a = 0;
hoge[a]();
0196デフォルトの名無しさんNGNG
ういっす (`^´)ゞ

>>190-195 返答ありがとうございました!
0197デフォルトの名無しさんNGNG
初期化処理(環境設定ファイル読み込み処理)
環境設定処理を読み込み、環境設定情報を環境設定情報管理テーブルに
保持するってどーゆー意味ですか?
0198デフォルトの名無しさんNGNG
>>197
int main(int argc, char* argv[], char** envp)
というふうにmainの引数は3つあるわけなのですが、
envpは環境変数が書き込まれており、
それをテーブルに入れるって言うことなのかな?
0199デフォルトの名無しさんNGNG
「環境設定処理を読み込み」なんだから、スクリプトか動的ライブラリを
読み込んで実行して、環境設定情報を環境設定情報管理テーブルに書き込
むんじゃないの?
0200デフォルトの名無しさんNGNG
まぁ、仕事の悩みなら一番ましそうな先輩にでもするもんだ。
#どうせそのプロジェクト内でしか通じないローカル語だろ。
0201デフォルトの名無しさんNGNG
gnome-configみたいなやつのことを言っているのかな?
それを自前で作っても知れているけど。
0202デフォルトの名無しさんNGNG
#defineOUTPUTSHELTER_1
#defineOUTLENSHELTER_2

#define OUT( x , y )\
for( short cnt=0 ; cnt < OUTLEN ; cnt ++ )\
printf( "%c" , *( OUTBUF + cnt ) )

#defineSHELTER_1OUTPUT
#defineSHELTER_2OUTLEN

こんな感じで、OUTの時だけ文字列置換を行いたいんですけど、
もっと他のうまいやり方ないですか? どなたかお手本お願いします。
0203197NGNG
みなさんご回答ありがとうございます。
プログラムを作る実習で初期化設定のモジュール作成
の担当になったのですが、何を作ればいいのかわからず、
困っています。
0204デフォルトの名無しさんNGNG
>>203
初期設定というからには本番の処理で何が必要になるかがわかっていなければならない。
ファイルだのレジストリだの環境変数だのの手段よりもまず、要求定義しないと書きようがないのは当たり前。
0205デフォルトの名無しさんNGNG
>>203
設定ファイルを開いて、一行ずつ読み込んで、トークンに分けて、…
0206デフォルトの名無しさんNGNG
Cから派生した言語って
どういうものがあるんですか?
0207デフォルトの名無しさんNGNG
>>206
そんな事を聞いてどうする
0208デフォルトの名無しさんNGNG
>>206
C++ D Java C# csh
0209デフォルトの名無しさんNGNG
>>208
レスありがとうございます

Cを覚えてからだと
それらの習得も効率が良かったりしますか?
0210デフォルトの名無しさんNGNG
>>209
むしろCが後だ。
0211デフォルトの名無しさんNGNG
>>209
やりたいのから逝け。
小さなメリット・デメリットより、本人のやる気が支配的な条件。
0212デフォルトの名無しさんNGNG
オーバーフローしたかどうかわかる関数ってありますか?
0213デフォルトの名無しさんNGNG
>>209
Cを覚えてからだとC++を理解するのは非常に楽。
だってCの拡張言語なんだもん
同じようにJavaもすぐに理解できるようになる。Javaは若干違うんだけどね。
0214デフォルトの名無しさんNGNG
>>211
他の言語に比べて
C言語が得意とする仕事や処理っていうのはどんな感じでしょうか

例えばBASICとかは
自分の中では、自然科学とかの分野で
グラフの演算とかのイメージが強いんですが・・
0215197NGNG
>>204>>205
ありがとうございます

まずはその意味を理解しないと無理ですよね
0216デフォルトの名無しさんNGNG
>>212
そういうのは無いから、
オーバフロしないように論理的にプログラムしないとだめ。
もしくは、その型の最大値、最小値の間に収まっているか調べないとだめ。
0217デフォルトの名無しさんNGNG
>>202
具体的に何がしたいのか判る文章を書いてくれ。

>>203
スレ違いだ。

http://pc5.2ch.net/test/read.cgi/tech/1094494997/
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0218デフォルトの名無しさんNGNG
>>214
少しレスしてたけど、君はスレ違い気味だね。
↓に行くといいよ
http://pc5.2ch.net/test/read.cgi/tech/1034505166/
http://pc5.2ch.net/test/read.cgi/tech/1092932484/
0219デフォルトの名無しさんNGNG
>>214
>他の言語に比べて
>C言語が得意とする仕事や処理っていうのはどんな感じでしょうか

余り気にすることはない。そもそも、あんたの中のイメージが間違っているから。
0220デフォルトの名無しさんNGNG
>>212
アセンブラ
0221デフォルトの名無しさんNGNG
>>214
これでも読んでおけ
http://www.limo.fumi2kick.com/forum/lm_forum02.html
0222202NGNG
すみません。途方もなく馬鹿な勘違いをしていました。
自己解決です。意味不明な事でスレ汚しすみません。
0223デフォルトの名無しさんNGNG
>>214
もともとOSを作るための言語だったのは知ってるか?
色んな分野あるけど、それも「やりたいのから逝け」。
俺なんぞ、モーターが動いたり光に反応したりと、そーゆーのが好きだが
おまえさんにはおまえさんの興味があるだろ。

Cの得意分野というより、Cは守備範囲の広さが売り。
0224デフォルトの名無しさんNGNG
>>217
ありがとうござます
そちらできいてみます
0225デフォルトの名無しさんNGNG
>216>220
ありが�dございます。
0226デフォルトの名無しさんNGNG
ありがございます。
0227デフォルトの名無しさんNGNG
サンクス!
0228デフォルトの名無しさんNGNG
どもども^^
0229デフォルトの名無しさんNGNG
Thank goodness^^
0230デフォルトの名無しさんNGNG
i = i++;
これがなぜいけないのか私には分かりません
どなたか説明して頂けませんか?
0231デフォルトの名無しさんNGNG
展開しろよ
0232デフォルトの名無しさんNGNG
fwrite(list_inst, sizeof(char), sizeof(list_inst), stream);

in_buff = ((pattern_length<<24) & 0xff000000)|((pattern_length<<8) & 0xff0000)
|((pattern_length>>8) & 0xff00)|((pattern_length>>24) & 0xff);
fwrite(&in_buff, sizeof(int), 1, stream);

in_buff = ((list_count<<24) & 0xff000000)|((list_count<<8) & 0xff0000)
|((list_count>>8) & 0xff00)|((list_count>>24) & 0xff);
fwrite(&in_buff, sizeof(int), 1, stream);

in_buff = 0x1000000;
fwrite(&in_buff, sizeof(int), 1, stream);

in_buff = 0;
fwrite(&in_buff, 4, 1, stream);
fwrite(&in_buff, 1, 1, stream);


fwrite(list, sizeof(short), list_count, stream);

fclose( stream );

すいません、このコードの解説お願いできないでしょうか?辞書引いてもどうにもこうにも意味が
よく分かりませんです・・・
0233デフォルトの名無しさんNGNG
extern int a[];
extern unsigned int u[10];

unsigned short *s;
int i, t = 0;

s = (unsigned short *) u;
for (i = 0; i < 20; i++)
t += a[s[i]];

unsigned int *をunsigned short *にキャストしてますが
これの結果は何が起こるか分からないとかいうものですか?
それとも正しいコードですか?
0234デフォルトの名無しさんNGNG
>>233
そのコードだけではなんとも言えないが、正しく動く可能性は充分ある。
まぁ、sizeof(unsigned short) * 2 == sizeof(unsigned)という前提は必要だが。

>>232
・list_instを書き出し
・4バイト整数値pattern_lengthをエンディアン変換して書き出し
・4バイト整数値list_countを…(以下同文
・4バイト整数値1を…(以下同文
・4バイト整数値0を書き出し
・1バイト0を書き出し
・listを書き出し
・書き出したstreamを閉じ

>>230
iのインクリメントと代入のタイミングが特定できない。
0235デフォルトの名無しさんNGNG
>>232
in_buff = ((pattern_length<<24) & 0xff000000)|((pattern_length<<8) & 0xff0000)
|((pattern_length>>8) & 0xff00)|((pattern_length>>24) & 0xff);
fwrite(&in_buff, sizeof(int), 1, stream);

pattern_length(おそらく4byte int)の
ビッグエイディアンをリトルエイディアンの配置(或いは逆)に置き換え、
in_buffに入れて出力している様です。

どうもint型におけるメモリ格納状況を見たい感じです。
0236デフォルトの名無しさんNGNG
>>233
sを初期化していないから何が起こるか分からない。
0237デフォルトの名無しさんNGNG
>235も>236もよく読んでから投稿汁
0238デフォルトの名無しさんNGNG
>>236
externだから、0に初期化されているんでは?
0239デフォルトの名無しさんNGNG
>>238
ローカル変数でしょ。
intはextern intの省略。
0240238NGNG
>>239
失敬した
0241232NGNG
>>234
マジありがとうございます!うーんそういうことだったのか・・・
もっと勉強しますね
0242232NGNG
>>235
235さんも丁寧にどうもありがとう!
0243デフォルトの名無しさんNGNG
>>238
もしそうだとしてもNullPointerException、誰かにガッされて終わる。
0244デフォルトの名無しさんNGNG
intはauto intの省略じゃないのか?
0245デフォルトの名無しさんNGNG
だからsはuで初期化されてるだろ。
uがどこなのかは兎も角。
0246デフォルトの名無しさんNGNG
で結局、
>intはextern intの省略 は
intはauto intの省略の間違えって事でOK??
0247デフォルトの名無しさんNGNG
いいえ、間違いです。
0248デフォルトの名無しさんNGNG
どういう事なのですか?
>>239 さんの書き込みが私にはイマイチ理解できませんでした。
という事は、普通にintと宣言したらそれはextern auto int の省略なのですか?
検索してもなかなかわかりません。

それと、調べているうちもうひとつ疑問にぶつかりました。
http://www.komonet.ne.jp/~c/chap21.htm のページで
『2.関数プロトタイプと関数の引用記述で引数の数が不一致の場合は、文法エラーとなります。ただし、プロトタイプで数不定( ... )が指定してある場合は、数のチェックは行われません。』
>ただし、プロトタイプで数不定( ... )が指定してある場合
プログラムで書くならばどういう事でしょうか。

親切な方、解説キボソ
0249デフォルトの名無しさんNGNG
>>248
http://www.komonet.ne.jp/~c/chap4.htm
0250デフォルトの名無しさんNGNG
>>249
いや、extern の意味ぐらいわかりますが・・・
残念ながらそこには求める答えはないようです。
0251デフォルトの名無しさんNGNG
stdarg
0252デフォルトの名無しさんNGNG
>>251さんの書き込みがヒントになったようで(?)、宣言の仕方はわかったけど、
こうする事のメリットがわからんー!。・゚・(ノД‘)・゚・。
#include<stdio.h>
void hoge(...)
{
printf("aaa") ;
}
int main(void)
{
int a = 5 ;
hoge() ;
return 0 ;
}
0253デフォルトの名無しさんNGNG
あ、数のチェックが行われないのか。これこそ書いてあった、失敬。

>>238-240の人のやり取りがわかんないYO だれかHelp...
0254デフォルトの名無しさんNGNG
>>253
intがextern intの省略(書いても書かなくても同じ)というのは間違い。
だから気にしなくてもいい。
0255デフォルトの名無しさんNGNG
なんか様子がおかしかったのでこっちに書き込みます

int a=1;
int b=3;
int c=a/b*b;

これで実行するとcは0になってしまいます
doubleやfloatを使わずにcを1にすることは可能でしょうか?
c=a/b*bの式の変数の順番や演算子は変えずにお願いします
0256デフォルトの名無しさんNGNG
>>254
そ、そうですよね。。。なんか安心しました。
どうもです。
0257デフォルトの名無しさんNGNG
>>255
変数の順番や演算子を変えればいいじゃん。
何でそんなくだらないものにこだわるわけ?
0258デフォルトの名無しさんNGNG
>>255
プログラム的に様子はおかしくない。

お前の思考の様子がおかしいと言っておこう。
0259デフォルトの名無しさんNGNG
>>257-258
宿題なのですが…
ないなら問題にけちをつけようかと思っているのですが…
0260デフォルトの名無しさんNGNG
>>259
>>1すら読めないお前は頭いかれてるよ
0261デフォルトの名無しさんNGNG

動的引数の質問です。

http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html

ここで動的引数の最大値を返す関数を紹介していますが、
第一引数で対象となる引数の数を入れなくてもいい方法はありませんか?

maxi(4, 2, 1, 0, 6); -> 6
maxi(2, 2, 5, 3); -> 5
maxi(0, 0, 1); -> 1

このような感じのものを期待しています。
ご教示願います。

0262デフォルトの名無しさんNGNG
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
と書いてるのが読めないのか。
0263デフォルトの名無しさんNGNG
>>255
宿題ぐらいの問題なら型キャスト使えばええんちゃうの?
int c=(int)((float)a/b*b);
0264デフォルトの名無しさんNGNG
>>263
使わずにと書いてるのが読めねえのかよぼけ
0265デフォルトの名無しさんNGNG
>>261
ありません
0266デフォルトの名無しさんNGNG
>>264
だから宿題ぐらいって書いてるじゃん
おめぇが読めねぇのか ぼけ
0267デフォルトの名無しさんNGNG
>>262
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
日本語としておかしいので、もっと厳密に書いて欲しい。
0268デフォルトの名無しさんNGNG
どいつもこいつも
0269デフォルトの名無しさんNGNG
ソース丸投げ、宿題、書籍に関しての話 は専門の別スレがあるのでそこへ。
0270デフォルトの名無しさんNGNG
>>266
使うなと書いてるのに使うな池沼
0271デフォルトの名無しさんNGNG
>>261
たとえば、
printfも引数の数は可変だけど、第一引数の中で%dとか%sとかを書くので
引数の数と型は第一引数から判断がつくよね。
0272271NGNG
>>271
つくよね。→つけているんだよ。
0273デフォルトの名無しさんNGNG
>>261
グローバル変数で数を指定すればいい。
0274デフォルトの名無しさんNGNG
>>273
逝ってよし
0275261NGNG
>>271
> >>261
> たとえば、
> printfも引数の数は可変だけど、第一引数の中で%dとか%sとかを書くので

目から鱗です。
ありがとうございました。

0276デフォルトの名無しさんNGNG
>>266
宿題だからこそ使っちゃまずいだろ。
0277265NGNG
あたしは無視かい
0278デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1089527630/
Javaかよ!
0279デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1089527630/806
0280デフォルトの名無しさんNGNG
>>277
あんただれ?
0281261NGNG
>>277=265
悪い。見落としてました。
ご助言感謝します。

0282デフォルトの名無しさんNGNG
>>261
第一引数が嫌だったら、最後の引数を特殊な数(例えば、-10000など)にする方法がある。
-10000になるまで大小比較を繰り返し、-10000になったら終了するようにする。
0283デフォルトの名無しさんNGNG
>>255
b=3; を b=1; に変更するよろし。
0284デフォルトの名無しさんNGNG
今更そんなレスかい
0285デフォルトの名無しさんNGNG
>>283
あ、それ正解っぽいぞ
出題ではaやbの値を変えたらだめって書いてないし。
0286261NGNG
>>282
今回期待しているものとはちょっと違うのです。

でも番兵の方がスマートなときもあると思うので、
そのときまた考えます。tnx.

;; 7 行で中置記法の四則演算ができないかと思案中です。

0287デフォルトの名無しさんNGNG
お聞きしたいのですが(初心者です)、
構造体の中に倍精度の変数6個とintが1個入っていて、
その構造体を
a[1520][380]
だけ定義して使っているのですが、どうやら多すぎるようなのです。

gcc 3.3.2を使っています。
どなたか、このようにたくさんのものを定義できるような方法をご存知の方が
おられましたら、お教えください。
0288デフォルトの名無しさんNGNG
ヒープ使え
0289デフォルトの名無しさんNGNG
>>287
struct kouzoutai** a;

a=(kouzoutai**)malloc(1520*sizeof(kouzoutai*));
for(i=0;i<1520;i++)
a[i]=(kouzoutai*)malloc(380*sizeof(kouzoutai));
0290デフォルトの名無しさんNGNG
そして、aをもう使わないようになったら、
for(i=0;i<1520;i++)
free(a[i]);
free(a);
をする。
0291デフォルトの名無しさんNGNG
>>289 >>290
どうもありがとうございます。さっそくやってみます。
0292デフォルトの名無しさんNGNG
>>287
別に多いとは思わないが、スタックに取ろうとしてるんじゃないのか?
0293デフォルトの名無しさんNGNG
>>292
その程度の人はお帰りください。
0294デフォルトの名無しさんNGNG
ポインタを使う利点って何ですか?
0295デフォルトの名無しさんNGNG
関数渡しで内容書き換え
0296デフォルトの名無しさんNGNG
>>294
わざわざ他人に聞く必要などさらさらない
わかるまであらゆる処理をポインタなしで書いてみれ
0297デフォルトの名無しさんNGNG
>>296
ポインタ無しで書けないプログラムはありません。
0298デフォルトの名無しさんNGNG
>>297
malloc書いてみろ
0299デフォルトの名無しさんNGNG
>>298
最初から配列を確保すればそれで済みます。
0300デフォルトの名無しさんNGNG
それがmallocといえるのか?
0301デフォルトの名無しさんNGNG
>>299
その配列を定義してみせろ
0302デフォルトの名無しさんNGNG
>>301
型が分かっていれば、

Type array[10000];

 糸冬 了
0303デフォルトの名無しさんNGNG
おまえの脳味噌の型がな・・・
0304デフォルトの名無しさんNGNG
でもやっぱりGCはあった方が便利だよ。
D言語では動的配列が普通に配列と同じように生成できるし、freeいらないし便利そう。
0305デフォルトの名無しさんNGNG
ポインタ無しじゃfopen使えないじゃん
0306デフォルトの名無しさんNGNG
printf, putsすら使えないじゃん
0307デフォルトの名無しさんNGNG
>>304
じゃ、作れよGC
そーゆーことのための道具だけ持ってて
結局なにも作んねーやつを bogus つーんだよ
0308デフォルトの名無しさんNGNG
EscとかShiftなどのキーが押下された事を検知するには
環境依存の方法しかないのでしょうか?
0309デフォルトの名無しさんNGNG
>>308
yes
0310デフォルトの名無しさんNGNG
ポインタの話ってjavaへの誘導ですか?
0311デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<C
0312デフォルトの名無しさんNGNG
>>307
なんで君が突っかかってくるのかよくわからないんだけど?
私が何も作ってないと言い切っているところが電波というかDQNというか…
0313デフォルトの名無しさんNGNG
Rubyで全て解決!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0314デフォルトの名無しさんNGNG
>>312
304のような発言こそ電波満載
0315デフォルトの名無しさんNGNG
304 名前:デフォルトの名無しさん[sage] 投稿日:04/09/20 03:48:13
でもやっぱりGCはあった方が便利だよ。
D言語では動的配列が普通に配列と同じように生成できるし、freeいらないし便利そう。
0316デフォルトの名無しさんNGNG
304 名前:デフォルトの名無しさん[sage] 投稿日:04/09/20 03:48:13
でもやっぱりGCはあった方が便利だよ。
Rubyでは動的配列が普通に配列と同じように生成できるし、freeいらないし便利そう。
0317デフォルトの名無しさんNGNG
>>315-316
>>307
0318いなむらきよしNGNG
奇形にもキケー!
0319デフォルトの名無しさんNGNG
>>302

なぜ 10000 で十分なんだ?
もっと必要なんだが(w
0320デフォルトの名無しさんNGNG
だまれ 小僧!
壷でマウスパッドがもらえると言ってるだろう(早い者勝ち)

これで素敵な2ちゃんねるライフをすごせます。。。
0321デフォルトの名無しさんNGNG
>>319
状況によって違います。メモリが十分にあるんだったら、

#include <limits.h>
・・・
Type array[INT_MAX];

これでおk?
0322デフォルトの名無しさんNGNG
つまらん
0323デフォルトの名無しさんNGNG
FILE* fp;なんか使わなくても、open, close を使えばポインタなしでプログラムが書ける。
荒業だけど、文字列だって
typedef struct {
char s[1000];
} String;
とかすればポインタを使う必要がない。
0324デフォルトの名無しさんNGNG
>>323
じゃ、それで環境費依存で汎用のソートマージ作ってみろ

# お前らさっきから口ばっかりで何も作ってない
0325デフォルトの名無しさんNGNG
何でこういう奴に限って例外なくageてるんだろ。不思議。
0326デフォルトの名無しさんNGNG
s/費/非/
0327デフォルトの名無しさんNGNG
>>325
話そらすな、さっさと作れ木偶の坊
0328デフォルトの名無しさんNGNG
>>323
そのopenでファイル名渡しに使うのはポインタなんですよ。
0329デフォルトの名無しさんNGNG
何を言っても無駄です。
0330デフォルトの名無しさんNGNG
>open, close を使えばポインタなしでプログラムが書ける。

ワラタw
0331デフォルトの名無しさんNGNG
cgiでフォームの各要素を時刻をファイル名に持つファイルに
書き込むことを考えています。
struct field{
char* name;
char* value;
}
フォームをこのような構造体に分割し、
void make_file_name( char* file_name )
{
time_t now;
struct tm *tm_now;
now = time(NULL)
  ・
  ・
}
こんな感じの関数でファイル名を作成します。
フォームを分割し、
make_file_nameを"呼ばずに"fieldの値を参照すると問題なく分割されているのですが
分割後、make_file_nameを呼んでからfieldの値を参照するとsegmentation fault
が出てしまいます。どのような理由が考えられるでしょうか?
どなたか回答お願いします。
0332デフォルトの名無しさんNGNG
>make_file_nameを"呼ばずに"fieldの値を参照すると問題なく分割されている
>分割後、make_file_nameを呼んでからfieldの値を参照する
ここのソースを晒せ
03331/2NGNG
>>324
typedef union {
char c;
int i;
float f;
double d;
/* とにかく、最初から実装されている型すべて */
} anytype;

typedef struct {
int len;
anytype array[100000];/* 十分な長さ */
} anyarray;

int cmp(anytype a, anytype b, int typecode)
{
switch (typecode) {
case 1: if (a.c < b.c) return -1; else if (a.c > b.c) return 1; else return 0;
/* この要領で全ての型について書く */
}
}

03342/2NGNG
anyarray margesort(anyarray a, int typecode)
{
anyarray b, c, r;
int i, j, k=0;

if (a.len == 1) {
return a;
}

/* 分割 */
for (i=0; i<a.len/2; i++) b.array[i] = a.array[i];
b.len = a.len/2;
for (j=0; i<a.len; i++, j++) c.array[j] = a.array[i];
c.len = a.len - a.len/2;
b = margesort(b, typecode);/* 各々をマージソート */
c = margesort(c, typecode);

/* マージ */
i=0; j=0;
while (k<a.len) {
if (cmp(b.array[i], c.array[j], typecode) < 0 || j==c.len) {r.array[k++] = b.array[i++];}
else {r.array[k++] = c.array[j++];}
}
return r;
}
0335デフォルトの名無しさんNGNG
>anytype array[100000];/* 十分な長さ */

なぜ十分だと分かる?
もっと必要だろヴォケ!
0336デフォルトの名無しさんNGNG
array[i] は *(array+i) のシンタックシュガーです
0337デフォルトの名無しさんNGNG
なので i[array] でも同じです
0338デフォルトの名無しさんNGNG
>>333
マージソートとは別に言っていないが、それは置いといて・・・


>/* この要領で全ての型について書く */

数学的に破綻してるんだよアフォ
それと、ユーザにソースの修正を毎回させるんだな?
0339デフォルトの名無しさんNGNG
>>332
汚いですが・・・
void make_file_name( char* file_name )
{
char temp[5];
time_t now;
struct tm *tm_now;
now = time(NULL);
tm_now = localtime( &now );
sprintf( temp,"%d",tm_now[0].tm_year+1900 );
strcat( file_name, temp );
if( (tm_now[0].tm_mon + 1 ) < 10 )
strcat( file_name,"0" );
sprintf( temp,"%d",tm_now[0].tm_mon+1 );
strcat( file_name, temp );
if( tm_now[0].tm_mday < 10 )
strcat( file_name, "0" );
sprintf( temp, "%d",tm_now[0].tm_mday);
・
・
 スンマセン、略します。この後tm_now[0].tm_secまで
 文字列を連結します。

}

make_file_name単独ではきちんと日付を出してくれます。
この関数内でfield構造体に触れることはなく、
何が原因なのかさっぱりです。
0340デフォルトの名無しさんNGNG
>>335
だから、そんなに文句があるんだったら INT_MAX を使えばいい。
メモリを2GB積んでいるパソコンは今のところそんなに多くないから。
型の大きさが1MBくらいある場合も十分考えられる。

>>336-337
マジレスすると、
+:(char)×(char)→(char)
+:(unsigned char)×(unsigned char)→(unsigned char)
+:(int)×(int)→(int)
+:(unsigned int)×(unsigned int)→(unsigned int)
+:(long)×(long)→(long)
+:(unsigned long)×(unsigned long)→(unsigned long)
+:(long long)×(long long)→(long long)
+:(unsigned long long)×(unsigned long long)→(unsigned long long)
+:(float)×(float)→(float)
+:(double)×(double)→(double)
+:(long double)×(long double)→(long double)
+:(anytype*)×(int)→(anytype*)(char*, int* などについても同じ)
は定義されているが、
+:(int)×(anytype*)→
は定義されていない。
0341デフォルトの名無しさんNGNG
>だから、そんなに文句があるんだったら INT_MAX を使えばいい。
>メモリを2GB積んでいるパソコンは今のところそんなに多くないから。

面白い?笑えないんだけど
0342デフォルトの名無しさんNGNG
>>341
同感
ヤクでもキメてんじゃねえの、こいつ?
0343デフォルトの名無しさんNGNG
>339
ポインタ
と
ポインタが指している領域
と
(ある領域に)格納されている値

について小一時間勉強しなさい。

たぶん make_file_name( ) を呼び出している所のパラメータに問題あり。
0344デフォルトの名無しさんNGNG
>>341
ハァ?一体どれだけ確保すれば納得するわけ?
100000じゃ少ないというから INT_MAX=2^31-1 を出したんだろ。
だったら、
(int)((100000LL+(long long)INT_MAX)/2LL)
個の要素を確保する。これで文句ないだろ。
まともな人間であれば、31回以内の質問で適切な数に収束する。
0345336NGNG
>>340
だからなに?
0346デフォルトの名無しさんNGNG
香ばしいですな
秋ですね
0347337NGNG
>>340
だからなに?w
0348デフォルトの名無しさんNGNG
>>344
要求定義は?
0349デフォルトの名無しさんNGNG
>>344
そんないい加減な確保の仕方で起動できるソース書けるのか?
寝言は寝て言えよ
0350デフォルトの名無しさんNGNG
>>345,347
理解できないんだったら仕様書を小一時間嫁、ヴォケ

>>348
相手が満足する数。int型で表される正の整数の中に、十分でかつ過剰でないと感じる数が存在しなければ基地外。

>>349
だから、最初から定数を配列に書けばいい。
それに、文法が間違っていたり致命的なエラーを起こさない限り、
起動できないソースを書くほうが難しい。
0351デフォルトの名無しさんNGNG
>>344
もう一つ配列作りたいんですけど、どうしたらいいでしょうか。
0352デフォルトの名無しさんNGNG
ポインタ使ってんじゃん
0353デフォルトの名無しさんNGNG
>>350
汎用といったはず
多すぎても少なすぎてもダメ
0354デフォルトの名無しさんNGNG
ほんと、ばっかだなぁ・・・
0355デフォルトの名無しさんNGNG
>>351
開始する要素番号を保持する。
int start_of_1starray = 0;
int start_of_2ndarray;
start_of_2ndarray = sizeof(array)/(2*sizeof(anytype));
0356デフォルトの名無しさんNGNG
>>340
Segmentation faultと怒られました。
0357デフォルトの名無しさんNGNG
>>355
途中で配列の大きさを変えることはできないのですか?
0358デフォルトの名無しさんNGNG
>>353
だから、多すぎず少なすぎない数が少なくとも1つ存在するはず。
1だとどう考えても少ない。
INT_MAX だとどう考えても多い。
ということは、1<n<INT_MAX となる n の中に適切な数がある。
1<n≦(INT_MAX+1)/2 か、(INT_MAX+1)/2<n<INT_MAX のどちらかしかありえない。
そのように絞り込むと、必ず適切な n が現れる。
だから、(int)((100000LL+(long long)INT_MAX)/2LL)ではどうかと聞いた。
これが多いと答えるか、少ないと答えるかで次の質問が決まる。
0359デフォルトの名無しさんNGNG
>>358
そんな事を考えないでも使えるようにしろよ
0360デフォルトの名無しさんNGNG
>>358
1で十分ですが。
0361331NGNG
>>343
すみません、”ある領域”とは?
ググるにしてもキーワードがさっぱり。
ポインタについては理解しているつもりです。
何か詳しいサイトなどありましたら
教えて欲しいです。
0362デフォルトの名無しさんNGNG
>>356
だったら、もっと少ない数を指定するか、プラグマを使って場合わけする。

>>355
start_of_2ndarray の値を変更する。
データが入っているときは、その都度移動する。
0363デフォルトの名無しさんNGNG
>>359
考える脳みそがないんだったらプログラムを組む必要はない。

>>358
その理由を聞きたい。
0364デフォルトの名無しさんNGNG
>>362
プログラムを、別のパソコンにコピーしたらいきなり落ちちゃいました。
0365デフォルトの名無しさんNGNG
>>363
mallocは考えなくても使えるぞ?
0366デフォルトの名無しさんNGNG
うわぁ
0367デフォルトの名無しさんNGNG
>>363
二分法を使ってみたいんじゃないの?
0368デフォルトの名無しさんNGNG
いい加減に諦めて「ポインタ無しで書けないプログラムはありません」って発言撤回しろよ
0369デフォルトの名無しさんNGNG
ポインタが無い言語も内部的には使いまくりだからな
0370デフォルトの名無しさんNGNG
だからポインタ使ってるって。既に。
0371デフォルトの名無しさんNGNG
ポインタなんかいらね
0372デフォルトの名無しさんNGNG
この手の「ポインタ無くても工夫すれば他のもので代用可能」っていう奴は
たまに出てくるけど、面白かった事など一度も無い。
0373デフォルトの名無しさんNGNG
このスレ始まって以来、面白かった事など一度も無い。
0374デフォルトの名無しさんNGNG
無くてもとは言ってない、すがるほどのものではないと言ってるだけ
0375デフォルトの名無しさんNGNG
ポインタなんていつ使ったよ?
0376デフォルトの名無しさんNGNG
>>375
いいからmalloc作れ
0377デフォルトの名無しさんNGNG
悪いことは言わないからC++にしとけ
0378デフォルトの名無しさんNGNG
都合のいいときだけC++を使うのがベター
0379デフォルトの名無しさんNGNG
C言語スレで何言ってんだ?こいつら
0380デフォルトの名無しさんNGNG
>>375
Cは自己記述可能な言語だ
あんたがCを使ったことがあるなら
そこですでにポインタを使ってるんだよ

文句あるならポインタ抜きで
Cの翻訳処理系を作ってみろ
0381デフォルトの名無しさんNGNG
>>374
配列よりはすがりがいがあるだろ。
0382デフォルトの名無しさんNGNG
>>364
荒業だが、配列を関数内部に組み込む。

#define SIZE_OF_ARRAY 1000000 /* 気に入らなかったら他の数値に直す */

typedef union {
/*略*/
long double ld;
} anytype;
typedef struct {
int code;
anytype a;
} status;

status access_array(int n, int mode, anytype a)
{
static anytype arrray[SIZE_OF_ARRAY];
int i; status s;
if (n < 0 || n >= SIZE_OF_ARRAY) {s.code = -1; return s;}
s.code = 0;
switch (mode) {
case 0:
for (i=0; i<SIZE_OF_ARRAY; i++)
array[i].ld = 0;/* long double 型がanytypeのメンバ内で最も大きい場合、自動的に全てのビットが0にセットされる */
break;
case 1: s.a = array[n]; break;
case 2: array[n] = a; break;
}
return s;
}
0383デフォルトの名無しさんNGNG
>>364
main関数で残りメモリを参照して、少なかったら終了する。
残りメモリ参照にはポインタを使わない。

>>365
malloc と比べてそれほど多く考える必要はない。

>>367
二分法である必要はない。
0384デフォルトの名無しさんNGNG
>>383
初心者は、プログラムがmainからそのまま開始すると勘違いしてるんだよな。
0385デフォルトの名無しさんNGNG
>>383
自分で二分法出しといて二分法である必要ないと言われても。
0386デフォルトの名無しさんNGNG
>>384
どこからでもいいから、とにかく配列の定義がmainになくて、
関数を呼び出したときに初めて確保されるようになっていればいい。
処理系によっては WinMain から始まることもあるが、普通は main から始まる。
何段階呼び出した後でもかまわない。
そんなこといちいち断らなくても伝わると思ったからあえて言わなかっただけで、
そんなことは百も承知。
というか、本質的でないことにこだわり杉

>>385
二分法はあくまでも例。
最初の段階で、二分法あるいはニュートン法(この場合どうやって適用すればいいのか謎だが)、
もしくはその他の方法とか言ったら回りくどいから、二分法をひとつの例として出しただけ。
要は文句の出ない数値が一つ決まればいいだけで、その決め方は本質的ではない。
0387デフォルトの名無しさんNGNG
>>386
どうでもいいからmalloc作れ。話はそれからだ。できるまで来るな。
0388デフォルトの名無しさんNGNG
>>387
支持する
0389デフォルトの名無しさんNGNG
Ruby!!!! >>>>>>>>>>>>>>>>>>> ぽいんた
0390デフォルトの名無しさんNGNG
なんだか知らないけどここにツール置いときますね
ttp://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
0391デフォルトの名無しさんNGNG
http://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
0392デフォルトの名無しさんNGNG
ウィルスきたわぁ
0393デフォルトの名無しさんNGNG
GCひとつ作れない超低脳ばっかり
0394デフォルトの名無しさんNGNG
なんでGCの話がでてくるんだ?
0395デフォルトの名無しさんNGNG
結論:ポインタは大いに使いましょう。
0396デフォルトの名無しさんNGNG
>>387
うpローダー気本。
0397デフォルトの名無しさんNGNG
なんだか知らないけどここにウィルス置いときますね
ttp://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
0398デフォルトの名無しさんNGNG
>>396
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
ほらよ
0399デフォルトの名無しさんNGNG
坊やだからさ!
0400デフォルトの名無しさんNGNG
ちんこだからさ!
0401デフォルトの名無しさんNGNG
>>394
[Ctrl] + F
0402デフォルトの名無しさんNGNG
>>401
もう一度聞く。
ポインタの話してるのになんでGCの話が出てくるんだ?
0403デフォルトの名無しさんNGNG
まったく、ばっかだなぁ・・・
0404デフォルトの名無しさんNGNG
>>402
>>401
0405デフォルトの名無しさんNGNG
>>404
理由になっていない。
0406デフォルトの名無しさんNGNG
本人は理由のつもりなんだろ
0407デフォルトの名無しさんNGNG
>>406
GCがあればポインタはすべて解決するんだよ、きっと。
0408デフォルトの名無しさんNGNG
>>405
>>327
0409デフォルトの名無しさんNGNG
>>408
お前自身の事ですか。あきれちまうな。
0410デフォルトの名無しさんNGNG
どいつもこいつも
0411デフォルトの名無しさんNGNG
>>409
>>327
0412デフォルトの名無しさんNGNG
>>411
きちがいだ
0413デフォルトの名無しさんNGNG
プログラムの引数を使いたいんだけど
ポインタ使わずに
0414デフォルトの名無しさんNGNG
>>412
>>412
0415デフォルトの名無しさんNGNG
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
0416デフォルトの名無しさんNGNG
>>414
反論できなくなったら勢い無くなったな
0417デフォルトの名無しさんNGNG
>>416
それはお前
0418デフォルトの名無しさんNGNG
別に自分にできないことを人にやれと言っているわけではない
こっちにはちゃんと答えがあって言っていることだ

はやくやってみろ
0419デフォルトの名無しさんNGNG
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
0420デフォルトの名無しさんNGNG
>>418
ログ見るのが面倒だから見ないが
なにをやるんだ?
0421ハバネロNGNG
失礼いたす。拙者、暴君ハバネロと申す。質問は特に無い。続けくれ
0422デフォルトの名無しさんNGNG
Rubybyyyyyyyyyy
0423デフォルトの名無しさんNGNG
>>386
やっぱり、mainやWinMainの前のことは考えられないんだ。
スタックも知らないみたいだしネタを語るには力が足りないよ。

ところで、「本質的」という言葉を好む奴にろくな奴はいないな。
0424デフォルトの名無しさんNGNG
>>420
ポインタ抜きで malloc と GC 作って
ポインタが無用かどうか証明して見せろ
0425デフォルトの名無しさんNGNG
>>424
オレはそんな物つれないので、それが証明できる人に言ってくれ
0426デフォルトの名無しさんNGNG
>>425
これから日本語で話していただいて結構ですから
0427デフォルトの名無しさんNGNG
>>426
mallocがポインタ返すのにポインタが無用だって?なんだそりゃ
0428デフォルトの名無しさんNGNG
ポインタが有用とか無用とか、
お前ら本当に無駄な話し合いが好きだなw
0429デフォルトの名無しさんNGNG
ポインタ無くてもなんでも作れるとか言った馬鹿が一番わるいんだろうな
0430デフォルトの名無しさんNGNG
malloc_without_pointer でもいい、とにかく同等の機能を持つ関数を作ってみろ
0431デフォルトの名無しさんNGNG
>>429
頭は悪そうだが、ここでの善悪では善だ
0432デフォルトの名無しさんNGNG
>>428
まぁネタスレだし。
今回のネタはつまんないけど。
0433デフォルトの名無しさんNGNG
敗北宣言出たようだな
0434デフォルトの名無しさんNGNG
>>431
頭が悪ければ悪だろう。
0435297NGNG
はいはい。参りました・・・と
0436デフォルトの名無しさんNGNG
>>434
おー厳しいな
0437デフォルトの名無しさんNGNG
>>435
偽者は黙ってろ
0438デフォルトの名無しさんNGNG
早くトリップ付けろよ(藁
0439デフォルトの名無しさんNGNG
もう本人いないし、出てきても反論できないだろうし、
かわいそうだよ。
お前たち、おやめ!
0440デフォルトの名無しさんNGNG
>>439
かわいそうには思えないな。
0441デフォルトの名無しさんNGNG
>>439がいちばんかわいそう
0442デフォルトの名無しさんNGNG
ttp://img155.auctions.yahoo.co.jp/users/0/3/7/6/ajakongu2-img532x407-10932332081.jpg
0443デフォルトの名無しさんNGNG
とりあえず、全ての配列にanytype型を使い、複数の配列をハンドル番号で管理すれば、
ポインタを一切使う必要がない。実装は時間の問題。
デバッグの時間も考えて、明日までには完成する。

ポインタレスmallocが完成した時点で、ポインタの存在意義は消える。
極論を言えば、全ての関数をポインタレスmallocに対応させることで、
全ての関数からポインタを排除することが可能になる。
0444デフォルトの名無しさんNGNG
配列にどうやってアクセスすんの?
0445デフォルトの名無しさんNGNG
ひでぇ。
ポインタ=mallocが返すもの
と勝手に定義されちゃってるし。
0446デフォルトの名無しさんNGNG
>>443
時間の無駄だから止めとけ。
0447デフォルトの名無しさんNGNG
ただのポインタもどき
0448デフォルトの名無しさんNGNG
配列を関数に渡そうとするとポインタになるわけだが、それもハンドルにする気なのか?
ポインタ排除=配列排除だよな。
0449デフォルトの名無しさんNGNG
単に独自のmallocを作るだけじゃん。
0450デフォルトの名無しさんNGNG
見落としていた。
>>423
だから、main 以外の関数内部にstaticで配列を確保すれば、
その関数funcを呼び出す以前の煩雑な処理は一切考える必要はない。
funcを呼び出す以前のことは、たとえmain関数のことであっても知る必要がない。
スタック領域が最初に確保されるのは、グローバル変数とmain関数内の変数のみ。

>>444
関数内部にstaticで保持し、引数によって読み書き出来るようにする。
0451デフォルトの名無しさんNGNG
>>448
1つの関数の内部に配列を保持し、引数を適当に与えることで自由にアクセスできるようにすれば、
配列の引渡しをする必要がない。
0452デフォルトの名無しさんNGNG
ひでぇ実装(ゲラ
malloc使った方が、普通に便利だ
0453331NGNG
どなたか暇な人
>>361
回答お願いします。
空気読めなくてスマソ。
0454デフォルトの名無しさんNGNG
>>450
プログラム書いたこと無いのバレバレ。
それとも、具体的なプログラムは本質的ではないのかな?
0455デフォルトの名無しさんNGNG
>>452
C言語でありながらカプセル化が可能で、しかも常に引数チェックをするので
不正なメモリアクセスやメモリエラーを起こすことがない。
セキュリティーホールになりかねないmallocより数倍マシ。
0456デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1090652323/

こっちでやれよ
0457デフォルトの名無しさんNGNG
>>454
C言語でちゃんと実務的なプログラムを書いたことがありますが何か?
で、まだ呼び出していない関数内部の配列の大きさが問題になるプログラムってどこにあるの?
0458デフォルトの名無しさんNGNG
意固地になってるだけだろ。
気の済むまで自分の世界の中でやってりゃ良い。
0459デフォルトの名無しさんNGNG
>>457
想像で語ってないで、実際に書いてみたら?
0460デフォルトの名無しさんNGNG
>>459
何も問題が起こりませんが何か?
0461デフォルトの名無しさんNGNG
>>460
問題起こりましたが、何か?
0462デフォルトの名無しさんNGNG
UNIXプログラミング質問すれ Part3で自作自演をしているのはここの住人だろ?
0463デフォルトの名無しさんNGNG
#include <stdio.h>
#include <limits.h>

void func(void)
{
static int array[INT_MAX];

array[0]=1;
}

int main(int argc, char** argv)
{
if (0) func();
printf("Hello, world.\n");
return 0;
}

さあ、問題を起こせるもんなら起こして下さい。
0464デフォルトの名無しさんNGNG
>>463
そもそもコンパイルできないけど、配列の大きさを小さくしても
Segmentation fault (core dumped)
だね。
0465デフォルトの名無しさんNGNG
>>463warata
0466デフォルトの名無しさんNGNG
array[i]
これポインタと同義
0467デフォルトの名無しさんNGNG
>>466
んなこたぁない。
0468デフォルトの名無しさんNGNG
無知は黙ってて下さい
0469デフォルトの名無しさんNGNG
>>464
配列の大きさを1にしてもエラーになるんだったら、コンパイラに欠陥があります。
最新版をインストールしましょう。
0470デフォルトの名無しさんNGNG
いつまでやってんだよマンチンカス
0471デフォルトの名無しさんNGNG
配列のとりうる最大のサイズってINT_MAXだっけ?
0472デフォルトの名無しさんNGNG
UINT_MAX
0473デフォルトの名無しさんNGNG
>453

343 :デフォルトの名無しさん :04/09/20 19:05:56
>339
ポインタ
と
ポインタが指している領域
と
(ある領域に)格納されている値

について小一時間勉強しなさい。

たぶん make_file_name( ) を呼び出している所のパラメータに問題あり。
0474デフォルトの名無しさんNGNG
array[0] はデータが入ってる変数だよね?
array[1] も変数だよね?

じゃあ array は何?(´・ω・`)
0475デフォルトの名無しさんNGNG
配列の先頭
0476デフォルトの名無しさんNGNG
はあ?
array は配列か配列の先頭へのポインタかどっちかだろ
0477デフォルトの名無しさんNGNG
>453
473(343)の"ある領域"って、ポインタが刺している領域の事なのでは?
0478デフォルトの名無しさんNGNG
>>477
ポインタは刺さない。今時刺すのはNEVADAくらいなもんで。
0479デフォルトの名無しさんNGNG
>>474
arrayは>>463の場合int[INT_MAX]型。
ただし、配列は知っての通り式の中ではポインタにされてint *型になる。
&arrayの結果の型はint (*)[INT_MAX]になるなど例外もあるが。
0480デフォルトの名無しさんNGNG
刺す刺す刺す刺す刺す
いえ〜い
0481デフォルトの名無しさんNGNG
なんだか知らないけどここにもウィルス置いときますね
ttp://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
0482デフォルトの名無しさんNGNG
array[3] = *(array + 3)
array[0] = *(array + 0)
array = const ポインタ
0483 ◆FIcNi4f8js NGNG
&array[0] =
&array =
0484デフォルトの名無しさんNGNG
array[i] も使ってはいけないんだったら、最後の手段として、

int func(int data, int n, int mode) {
int a0, a1, a2, a3, a4, (ry

if (mode == 1) {
switch (n) {
case 0: return a0;
case 1: return a1;
case 2: return a2;
・・・・・
}
} else if (mode == 2) {
switch (n) {
case 0: a0 = data; break;
case 1: a1 = data; break;
case 2: a2 = data; break;
・・・・・
}
}
return 0;
}

とすればいい。
0485デフォルトの名無しさんNGNG
まだやってたw
0486デフォルトの名無しさんNGNG
if ( c == '#' )ってどういう意味ですか?
#ってどんな効果かググっても見つかりませんでした
0487デフォルトの名無しさんNGNG
質問の意味がわかりません
0488デフォルトの名無しさんNGNG
>>486
cに#という文字が入ってるかどうかってだけ
0489デフォルトの名無しさんNGNG
#include<stdio.h>
typedef struct _LIST{
struct _LIST* p_next;
char data;
}LIST;
int main(void)
{
LIST hoge[3];
LIST* test_p;
LIST* obj;

test_p =& hoge[0];

hoge[0].p_next =& hoge[1];
hoge[1].p_next =& hoge[2];

hoge[0].data = 0;
hoge[1].data = 1;
hoge[2].data = 2;

obj = (LIST*)(*test_p);//ここでエラーが発生

printf("%p\n",&hoge[0]);
printf("%p\n",test_p);
printf("%p\n",*test_p);

return 0;
}

すみません、以上のようなプログラムがあった時、なんとかアロー演算子を使わずに
hoge[0]->p_nextのアドレスを obj に入れる事は出来ないでしょうか?
ご教授オネガイシマス。
0490489NGNG
環境は Visual C++ 6.0 です。
やはり無理でしょうか・・・
0491デフォルトの名無しさんNGNG
>>484
>int a0, a1, a2, a3, a4, (ry
は、
 static int a0, a1, a2, a3, a4, (ry
の間違い。
0492デフォルトの名無しさんNGNG
じゃ、ここに最新版ウィルス置いときますね
ttp://pukapuka.s1.x-beat.com/img-box/img20040921084521.lzh
0493デフォルトの名無しさんNGNG
>>489,490
obj = *(LIST**)(test_p);
0494489NGNG
>>493
まじすごいっす!
漏れこれで昨日一日悩んでました。
ありがとうございます"(ノ_・、)
0495デフォルトの名無しさんNGNG
特定の演算子を使ってはいけないとか、演算順序を変更してはいけないとかいう
意味のない宿題が流行ってるのかねぇ。
0496331NGNG
あれ?うまくいった。make_file_name()は関係なく
malloc()したfieldとfile_nameをfree()するときに
落ちているみたいでした。これってどういうことなんでしょう?
ともあれ原因は特定できました。レス下さった方本当にありがとうございます。
0497デフォルトの名無しさんNGNG
C言語の本をにはたいていmallocしたメモリーをもう使わない
なら放っておけば終了時に自動的に解放されるので明示的に
freeしなくても良いと書いてあるのですが、先日ある雑誌を
見ると明示的にfreeしないとメモリーリークになると書かれ
ていました。どちらが正しいのでしょうか。
0498デフォルトの名無しさんNGNG
>>497
過去ログを参照してください。語り尽くされていますから。
0499デフォルトの名無しさんNGNG
>>497
環境依存です。
開放するOSもあればメモリリークするOSもあります。
だから、環境依存しないコーディングをするのなら、きちんとfreeしないと
いけませんし、
たとえ、放っておいても開放してくれるとしても、freeするのはマナーです。
freeが面倒ならC言語に似ている言語であればD言語やJava言語のような
ガベジコレクション付きの言語を使えばよろしい。
0500Ruby最強!!!!NGNG
オレの通ってるホールには小柄で目の大きい可愛い店員がいる。
その子は最初見た時は(少し遊んでるのかな?)って感じの子だったけど、
挨拶はしっかりしてて、客が呼び出しランプを付けるとすぐに駆けつけて
笑顔で接客する子だった。重そうなコインも頑張って運んで、たくさん出した
人には「おめでとうございます。たくさん出て、良かったですね。^^」って
言ってくれる子です。

オレが何度か通ううちに相手も覚えてくれたようで少しずつ話すようになり、
店でオレを見つけると「あっ」て感じの顔をして笑顔で会釈してくれるようになった。
コイン補給を頼む時や換金する時も、オレの時は必ずその子が来てくれて
「今日もたくさん出てますねっ。良いなぁ^^」って言ってくれて、明らかに他の客とは
違う態度で接してくれるようになった。オレもだんだんその子が気になるように
なって、その子に会いたくてホールに通うようになった。
0501Ruby最強!!!!NGNG
ある朝、開店直後に店に入るといつものように挨拶してきて、
「今日も来てくれたんですかぁ〜」って言ってきたので
「いや〜お姉さんに会いたかったから、来ちゃいました^^;」と冗談まじりで返した。
すると彼女は一瞬ビックリした顔をしたが、みるみる顔が赤くなっていき
「私も・・○○さん(オレの名)が来てくれると嬉しいですよっ」と照れながらも言ってくれた。
普段から気になってたオレは凄く嬉しくて舞い上がってしまった。

いつか絶対誘おうと思っていたのだが、気が弱いオレはそれを言い出せず、
ただそのホールに通う事しか出来ず、そんな状態がしばらく続いた。
ある日、オレがいつものように行くと、彼女の姿が無い。(いつもはこの時間は
必ず入っているはずなのにな・・・・何か用事かな?)と思っていたが、
次の日も、2日後にも彼女はいなかった。オレは気になって仕方なかったので、
他の店員に聞いてみると、「あ〜あの子なら先週やめましたよ」と返ってきた。
0502Ruby最強!!!!NGNG
オレは呆然として、もうその日は打つ気力も無くなりトボトボと家に帰った。
なんだかもうその店に通う気力が無くなり、いつしか行かなくなってしまった。
そして一ヶ月後・・ドライブしてたオレは家の近くで偶然彼女を見つけた。
その子は歩道を歩いていて、コンビニに入っていった。「あの子だ!!」

オレは焦ってUターンしてそのコンビニに止めると、車の中から彼女の様子を
うかがった。彼女は立ち読みをしている。オレは意を決して店に入り、
思い切って声を掛けてみた。「こんにちは。」
彼女は驚いてオレの方を見た。オレは(覚えていてくれなかったらどうしよう・・。)
と声を掛けた後で後悔したが、彼女はオレの事を覚えていたらしく、すぐに
「あ〜っ、○○さん!!久しぶりです!」と言ってくれた。

良かった・・覚えていてくれた・・。  オレがホッとしていると、
「この近くに住んでたんですか?知らなかった〜。会えたら良いな〜って思ってたんですよ」
と彼女は言った。続けて、「今ヒマですか?良かったらちょっと遊びません?」
と言った。オレはこのおいしい展開にとまどいつつも、「じゃあオレんち来る?」と
聞いてみた。彼女は一瞬考えたような顔をしたが、照れながらも「はい・・。」
と答えた。
0503Ruby最強!!!!NGNG
オレの家に着くと、彼女はオレの手に自分の手を乗せてきた。
オレはもう我慢できずに彼女を抱き寄せた。彼女は抵抗せず、オレに
体を預けた。「良い・・?」と聞くと彼女はオレの顔は見ずに黙ってうなずいた。

彼女の服をゆっくりと脱がし、彼女の胸にキスをすると、彼女は可愛い吐息を
上げてオレを挑発した。オレは野獣のように彼女の体を堪能し、
その日はずっと抱き合って寝た。
目が覚めると彼女は隣におらず、オレは夢だったのか?と思って一瞬落ち込んだ。

顔を洗おうと台所に行くと、彼女は・・・いた。「おはよう。ずい分寝てたね」と言い、
それを聞いたオレは(ああ・・夢じゃなかったんだ・・)となんだかとても嬉しかった。
彼女は、「これからも・・よろしくね・・」とはにかみながら言った。


















そんなシチュエーションのAVはありますか?とオレがビデオ屋で聞くと、
無精髭を生やしたイカツイ店長は、にこやかにオレの肩に手を乗せ「帰れよ」と言った。
0504デフォルトの名無しさんNGNG
rubyオワッタナ
0505デフォルトの名無しさんNGNG
>>498
あなたの対処は正しいと言える。が、一方で
>>499
>たとえ、放っておいても開放してくれるとしても、freeするのはマナーです。
こういう俺マナーを押し付ける奴がいると
>>497 は過去ログなんか読まず信じちゃうんじゃないか、と危惧したりもする。
0506デフォルトの名無しさんNGNG
最近始めたのですが。
〜略〜
printf("%-6s",moji[10])
〜略〜
の『-6』の意味を教えてください。
0507Ruby最強!!!!NGNG
左詰め
0508デフォルトの名無しさんNGNG
ちゃんと検索して下さい
0509506NGNG
なるほど、数値の値だけ幅が与えられるわけか。
スマンカッタ、ありがとう。
0510デフォルトの名無しさんNGNG
1
12
123
1234
12345
123456
1234567
0511デフォルトの名無しさんNGNG
free しろ。ガタガタ言うな。それが情報隠蔽だ。
0512デフォルトの名無しさんNGNG
>>511
低脳。
0513デフォルトの名無しさんNGNG
>>512
低脳のフリをするのが情報隠蔽だ。
それがわからん奴が真の低脳だ。
0514デフォルトの名無しさんNGNG
またか。
0515デフォルトの名無しさんNGNG
お前ら過去スレ全部読んでから言え。
0516デフォルトの名無しさんNGNG
>>515
90515レスも読めるか!
0517デフォルトの名無しさんNGNG
そっか。
このスレだけでも10万近いレスを、みんなが集まって書いたんだなあ。
2ch全体だけでも、途方もない数の言葉が集まったんだろうな。

なあ、もし、漏れたちみんなで力を合わせたらさ、




('A`)ノ なんでもない。
0518デフォルトの名無しさんNGNG
scanfとかfreeとか空白とか繰り返してたよね・・・
0519デフォルトの名無しさんNGNG
空白とかぼけは最近からのような気もするけど
0520デフォルトの名無しさんNGNG
それでもポインタは要らない。
0521デフォルトの名無しさんNGNG
>>520
おまえ、もう要らない。
0522デフォルトの名無しさんNGNG
printf("ポインタが要らないということは既に証明されただろ。\n");
free(>>521);
0523デフォルトの名無しさんNGNG
関数ポインタってありますよね。
あれと、普通の関数の違いがわかりません。

普通の関数
呼び出しと同時に
スタックに領域作成

関数ポインタ
作成した瞬間に
スタックに領域作成?

こんなんでもう6年もコーダーやってます。
はぁ・・・
0524デフォルトの名無しさんNGNG
最後の二行にビックリですよ
0525デフォルトの名無しさんNGNG
fopen()で新規ファイルを作るときにNULLしか返してくれません。
何がおかしいんでしょうか?
0526デフォルトの名無しさんNGNG
>>523
関数ポインタ
関数のアドレスを入れる、ただの変数
0527デフォルトの名無しさんNGNG
>>525
NULLが帰ってきた後にperror実行してみたら?
0528525NGNG
>>527
perrorって初めて知りました。
こういうのがあるんですね。
早速やってみます。ありがとうございました。
0529デフォルトの名無しさんNGNG
ObjectiveCって何ですか?
0530523NGNG
どうも。
でしたら、アクセス?だけで
関数ポインタって利用されてるんですか?
利用の意義がまったく見出せません。

仕事向いてないのかな・・・
ハァ・・・
0531デフォルトの名無しさんNGNG
とりあえずqsort使っとけ。
0532523NGNG
あ、確かに関数ポインタ使ってますね。
これだけの為かorz
0533デフォルトの名無しさんNGNG
なんで?便利じゃん
0534デフォルトの名無しさんNGNG
コンパイル時じゃなくて実行時に呼ぶ関数を決めたい、っていうだけで
すぞ>関数ぽいんた

0535523NGNG
dllみたいな事がしたいと?
0536デフォルトの名無しさんNGNG
いや、ポリモーフィズムだ。
0537デフォルトの名無しさんNGNG
同じシグネチャの関数であれば差し替えて処理できるので便利

0538デフォルトの名無しさんNGNG
コールバック関数とか使ったことないのか?
6年もやってて?マジで?
ある意味すごいな
0539デフォルトの名無しさんNGNG
>>523
変数の内容によって、飛び先変えれるとか・・・

int FuncA(int n);
int FuncB(int n);
int FuncC(int n);

int main(void){
   int (*hoge[3]) = {FuncA, FuncB, FuncC};
   int a, b, n;
   n = 0;
   a = hoge[n](b);  //FuncA
   n = 2;
   a = hoge[n](b);  //FuncC

   
0540539NGNG
○   int (*hoge[3])(int) = {FuncA, FuncB, FuncC};
0541デフォルトの名無しさんNGNG
>>539
そういうのはあんまり本質的じゃないな。swich使ってもあまり変わらんし
0542デフォルトの名無しさんNGNG
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
 char *s;
    
 while(1){
  s = malloc( sizeof(char)*20 );
   if(s==NULL){
     fprintf(stderr,"メモリ確保ミス\n");
     exit(1);
   }
  printf("%d\n",sizeof(s));
    
  fgets(s,sizeof(s),stdin);
  printf("%s\n",s);
  free (s);
 }
 return 0;
}

mallocをつかってずーっと文字を入力させていっては表示させるプログラムを作りたいのですが、
s = malloc( sizeof(char)*20 );
でs[20]みたいな感じにはならないのでしょうか?
3文字入力したら改行が施されてうまくいきません。
そこでsizeof(s)をみると4となることまでは確認できました。
0543デフォルトの名無しさんNGNG
>>541
switchと違って、関数を呼び出す側が詳細を知らなくてもいい
という点が大きく違うな。
0544デフォルトの名無しさんNGNG
>>542
sはポインタだ。
> そこでsizeof(s)をみると4となることまでは確認できました。
ポインタの大きさが4バイトということだろう。
0545523NGNG
ちょっと整理したいんですが、
私がお聞きたいのは関数ポインタの利点です。
特筆べき利点です。

>switchと違って、関数を呼び出す側が詳細を知らなくてもいい
通常の関数でも引数に△いれれば■が戻り値ですとコメント書いておけば
同じようなもんですよね?

アクセスが早いとか、無駄な領域割かなくていいとかは
ないんですか?
0546デフォルトの名無しさんNGNG
> アクセスが早いとか、無駄な領域割かなくていい
君のレベルでは、そのようなことを気にする必要はない。
0547523NGNG
>>546
ははは。ナイスレスですね。
でもしりてぇっす。
0548542NGNG
>>544
なるほどそうですね。
mallocは542のソースにあるような使い方はしないということでよろしいでしょうか?
0549デフォルトの名無しさんNGNG
>>545
ライブラリとして提供するとする。
それで利用者に関数を用意させる必要がある(qsortのように)とき
どうするんだ?
0550548NGNG
すいません
548のことはスルーしてください。
0551デフォルトの名無しさんNGNG
>>545
パフォーマンス上の利点はほとんど無いだろう。
タイトループの中での switchよりは速くなるかも知れないけど。
主な利点は、設計が楽になる可能性があること。
0552523NGNG
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
char *s,*t;

while(1){
s = (char *)malloc( sizeof(char)*100 );

if(s==NULL){
fprintf(stderr,"メモリ確保ミス\n");
exit(1);
}

printf("%d\n",sizeof(s));
fgets(s,100,stdin);
t = s;
printf("%s\n",e);
free (s);
}
return 0;
}

動けばいいの?
解説いるの?
0553デフォルトの名無しさんNGNG
>>539 の例が悪すぎる
0554523NGNG
↑宣言していない変数が・・・(w

関数ポインタ場合により有用になるってことですか。
んむむむ
0555デフォルトの名無しさんNGNG
回答してるの?質問してるの?
0556デフォルトの名無しさんNGNG
>>553
ナイスな例よろ
0557デフォルトの名無しさんNGNG
>>545
int func_a(void) {
  :
  :
}
int func_b(void) {
  :
  :
}
だとして、

static int (*ftable[])(void) = {
    func_a,
    func_b,
    func_b,
    func_a,
};

    int state, ret;
        :
        :
    ret = ftable[state]();
とか。
0558523NGNG
542のが動けばいいのかと思ってソース書き直したけど
変な変数が存在してます。ごみんなさい。
0559デフォルトの名無しさんNGNG
実行効率は悪いけど、

static struct {
    char ch;
    int (*func)(void);
} ctable[] = {
    {'*', func_a},
    {'+', func_b},
};
#define numberof(v)        (sizeof (v) / sizeof *(v))

    char symbol;
    int ret;
        :
        :
    for (int i=0; i<numberof(ctable); i++)
        if (symbol == ctable[i].ch)
            ctable[i].func();

とか。
0560デフォルトの名無しさんNGNG
だからね、初めっからどんな関数があるのか分かってんだったら
テーブルじゃなくても switch 文で実現できるから本質的でないん
だって(保守性の問題とかはあるにしても)。
問題は汎用的なデータを扱うライブラリ(Hash Table とか)を作る
とき。ライブラリ作る時点では、(ライブラリの)ユーザがどんなデータ
を入れるか分からんから、データに依存する部分の処理はユーザ
が自分で関数書いて渡せるようにするの。
0561デフォルトの名無しさんNGNG
>>523

sage() { }
main()
{
auto (*age)() = sage;
sage();
age();
printf("%u", sizeof sage);
printf("%u", sizeof age);
sage++;
age++;
}

1行ずつ、結果について考察してみれ。
0562デフォルトの名無しさんNGNG
質問です。
関数ポインタ(* increment)()をつくっといて
object->increment();
みたいなことをしたらobject(構造体)の特定のレコードの値を変更させることはできますか?
もしできるんならどう書けばいいんでしょう?
object->increment(object);
だったらできるんだけど、なんかカコワルイ。。
0563デフォルトの名無しさんNGNG
ここに完全版ウィルス置いときますから好きに使って下さいね^^
http://pukapuka.s1.x-beat.com/img-box/img20040922204002.lzh
0564デフォルトの名無しさんNGNG
>>562
(関数ポインタで実行される)関数にレコードへのポインタが与えられていないので出来ません。
どうしてもやりたいのなら、レコードをグローバル変数にするか、C++を使いましょう。
0565デフォルトの名無しさんNGNG
static で構造体の二重配列を渡そうとしてるんですが、
受け側でうまく処理できません。
strudt A {....}

struct A AST[10][10]; ここで sturuct A** として渡しますが
受け側では同じプロトタイプで受けてるにも関わらずArg[n]のアドレスが
オカシイのです。
0566デフォルトの名無しさんNGNG
>>565
[] と * を同一視したがるパラダイムが見当違い
[10][10] を ** では受け取っても正しく処理できない

struct A a[10][10];

main()
{
f(a);
}

f(x)
struct A **x;
{
printf("%p", &a[0][0]);
printf("%p", &a[0][1]);
printf("%p", &a[1][0]);

printf("%p", &x[0][0]);
printf("%p", &x[0][1]);
printf("%p", &x[1][0]);
}

1行ずつ、結果について考察してみれ。
0567565NGNG
>>566
まだ考察はしてませんが、コードには[ ]ばかりでなくキャストに
sizeof、考えられる手段を試してみましたがどうも腑に落ちません。
というのも、ある値が文脈でアドレスと見なされた場合、それに加算される
数値は(インクリメントは当然としてsizeofで計算した値も)正確な
アドレスとして評価される筈です。
0568デフォルトの名無しさんNGNG
>>567
その「正確なアドレス」を正確な日本語で言ってみろ
0569デフォルトの名無しさんNGNG
ちゃんと考察して、何が必要らしいかがわかってきたら、もっぺん聞くか自分で調べれ
0570565NGNG
>>568
その「正確なアドレス」とは、「アドレスと見なされる値」からの
型として設定される値のオフセットで計算される、でよろしいですか。
0571デフォルトの名無しさんNGNG
>>564
やっぱり無理なんですね。
ありがとう。
0572デフォルトの名無しさんNGNG
>>570
値から型はとれない。ポインタには値しか格納できない。
だから x は 10 に従わない。
0573565NGNG
>>572
わかるようなキモしますが、だからこそ、といか、そもそも型がわからない
コードはコンパイルを通らないですよね。そこで上位のアドレスを型変換
した場合にデフォで型を継承してもらわない事には話しにならないと思うのは
私だけでしょうか。
0574デフォルトの名無しさんNGNG
struct a[][10]
として渡せ。
0575デフォルトの名無しさんNGNG
ttp://www.cl-lab.com/index.html
更新されてるようなのになんでいまだにvoid main()とか書くの?
0576デフォルトの名無しさんNGNG
古めの人だからだろ。
0577デフォルトの名無しさんNGNG
void hoge(char *foo)
{
foo に文字列などを入れる処理
}
main()
{
char buf[128];
hoge(buf);
printf("%s", buf);
}
このようなコードでbufのサイズが50のときはうまく表示、100の時は変な文字記号がまじる、
200の時はうまく表示、1000の時は変な文字記号が・・・の様なことがおこります。
悩んだ末、ふと static char buf[128]; のようにしたところ常にうまく表示されるようになりました。
staticで確保しないとメモリがアヒャヒャなことになるという結論に達したのですが、どうもすっきりしません。
これってプログラムを書く上で当たり前のことなのでしょうか?どなたかバッサリヤってください。
0578デフォルトの名無しさんNGNG
>>577
マシンはちゃんとアヒャってるんだが
おまいもしっかりアヒャってるんで、気が付かない・・・
わかりる? この相対性理論
0579デフォルトの名無しさんNGNG
>なんでいまだに

void で無問題な処理系だから
0580デフォルトの名無しさんNGNG
>これってプログラムを書く上で当たり前のことなのでしょうか?

常識
0581577NGNG
>>580
どうもっ。
0582デフォルトの名無しさんNGNG
>>573
こいういのがお好き?

#include <stdio.h>

struct ABC{
   int a;
   int b;
};

void disp(void *s){    
   printf("%d \n", (*(ABC (*)[5][10])s)[4][5].b );
}

int main(void){
   ABC s[5][10];
   s[4][5].b = 3;
   disp(s);
   return 0;
}
0583デフォルトの名無しさんNGNG
>>574
からけ嫁
0584デフォルトの名無しさんNGNG
>>577
文字列の最後に'\0'いれてる?
0585デフォルトの名無しさんNGNG
全角英数字、半角英数字を使っている文字列がるとします。
文字は半角、全角まざっててもいいし、いろいろです。

こういった種類の文字列が複数あって
ソートしたいとします。

qsortでソートしたかったのですが
比較関数でstrcmpを使うと、うまくソートできません
原因はstrcmpが半角にしか通用しないからです。

どのようにすればいいのでしょうか?
助言おねがいします。
0586デフォルトの名無しさんNGNG
>>585
比較関数を作る
0587デフォルトの名無しさんNGNG
>>585
どういう基準でソートしたいかによる。
文字コードで比較したいのなら strcmp で十分のはず。

ア→ア→イ→イ→・・・・

などの順序でソートしたいのなら、>>586にあるように比較関数を作るしかない。
そのためには、漢字コードの表などを使って、自分で比較関数を作るしかない。
0588デフォルトの名無しさんNGNG
64bit整数の加算やシフト演算を実行しているのですが、
単純な加算のループをそれぞれ実行してみると64bitの方が2倍近く遅くなっていました。
Pentium系列の32bitCPUだと64bitの演算は32bitの演算と比べると低速なんだと思いますが、
なんとか64bitの演算を高速(32bit演算並)に実行できないものでしょうか?
VC++6.0 SP6でCPUはPen4を使っています。
0589デフォルトの名無しさんNGNG
インラインアセンブラでMMX使ってみたら
0590デフォルトの名無しさんNGNG
>>588
スレ違い
0591デフォルトの名無しさんNGNG
>>589
アセンブラの経験はないのですがこれを機に勉強してみます。

>>590
Cのコードを最適化している過程でこの問題にぶつかったので、
この板で質問してみたのですが、こういう話題はアセンブラの話になるのでしょうか・・・。
0592デフォルトの名無しさんNGNG
○
int a[4][5];
int (*p)[4][5];
p = &a;

×(コンパイルエラー)
int a[4][5];
int (*p)[4][5];
p = a;

ここまでは理解できるのですが、

○
int a[4][5];
int (*p)[5];
p = a;
↑
これが通る理由が良く分かりません・・・
0593デフォルトの名無しさんNGNG
>>592
typedefでもして試せば一目瞭然の気もするが。

最後の例は、
aはintが5個の配列が4個並んだ配列で、
pはintが5個の配列へのポインタ。
言い換えれば、
aはある型のオブジェクトが4個並んだ配列で、
pはその型へのポインタ。
ある型が仮にcharなら、char a[4]; char *p; p = a; となり、
いくらなんでもこれはお馴染みだろう。
たまたま型が配列だっただけなのだよ。
0594デフォルトの名無しさんNGNG
>>593
わかりました!
0595デフォルトの名無しさんNGNG
プロのプログラマの方々にお聞きしたのですが、
ビットとかって、実際に仕事で頻繁に使うものなんでしょうか??
使うとしたら、どういったところで使用するのでしょうか??
できれば、初心者にわかるような解説をお願いします。
0596デフォルトの名無しさんNGNG
>>595
画像処理とか音声処理とかセンサー読んだりフラグ入れたり色々。
0597デフォルトの名無しさんNGNG
>>596
なるほどなるほど。計算なんかで使用することってありますか?
0598デフォルトの名無しさんNGNG
>>597
ビットを操作する計算なら使用するだろ。
0599デフォルトの名無しさんNGNG
符号は最上位ビットを見るとかか?
0600デフォルトの名無しさんNGNG
>>598
お答え頂き、ありがとうございました☆
勉強になりました!
0601デフォルトの名無しさんNGNG
>>562
C++勉強しな。そういうこともできるぞ。
0602デフォルトの名無しさんNGNG
ほんと素人で申し訳ないんですが、
整数xを入力し、xを8倍するプログラムを乗用演算子を
用いずにつくる場合はどんな風にすればいいんですか?
0603Ruby最強!!!!NGNG
<<3
0604デフォルトの名無しさんNGNG
>>603
やっぱりそれでいいんですね。10倍なら<<4
でいいんでしょうか?
0605デフォルトの名無しさんNGNG
>>602
x=x+x+x+x+x+x+x+x;
0606デフォルトの名無しさんNGNG
>>604
いいかどうかは実際に確かめてみれば分かるだろ。
0607デフォルトの名無しさんNGNG
int func(int x){
for(int i=1;i<=8;i++)
x +=x;
return x;
}
0608デフォルトの名無しさんNGNG
forループの中で足す
0609デフォルトの名無しさんNGNG
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>整数
0610デフォルトの名無しさんNGNG
>>609
おまえはそんなにRubyの評価を落としたいのか?
0611デフォルトの名無しさんNGNG
>>605
>>607
>>608
なるほど、それでもできますね。ありがとうございました。
>>606
そうですね。すみません
0612デフォルトの名無しさんNGNG
10倍
x = x<<3 + x<<1
0613デフォルトの名無しさんNGNG
>>612
ありがとうございます。
0614デフォルトの名無しさんNGNG
cout << 3 + x << 1;
0615デフォルトの名無しさんNGNG
char buf[16];
sprintf(buf, "%d0", x);
x = atoi(buf);
0616デフォルトの名無しさんNGNG
strcat( char* hoge, char* foo )
をしたとき文字列の連結は成功するのですが
fooの示す文字列が2バイト左にずれてしまいます。
foo自身の値がインクリメントされているわけでもないようです。
どなたか指導お願いします。
0617デフォルトの名無しさんNGNG
>>616
hogeに十分な空きが無いんだろう。
0618616NGNG
>>617
おお! すごい!!
どうもありがとうございます。
でもなんでだろう?
小一時間考えてきます。
0619デフォルトの名無しさんNGNG
char hoge[7] = "aiueo";
char foo[5] = "foo";
strcat(hoge, foo);

メモリ上のイメージ(0…終端コード, ?…不定値)
[a][i][u][e][o][0][?][t][e][s][t][0]
        ↓strcat
[a][i][u][e][o][t][e][s][t][0][0][0]
↑hoge       ↑foo
0620デフォルトの名無しさんNGNG
すまん、メモリ上のイメージの最後の[0][0][0]は[0][t][0]の間違いだ。
0621616NGNG
>>619
うおおぉぉ!感動!
なるほど、この場合hoge[]とhoo[]が
偶然近い位置に配置されていたということも
原因に挙げられますよね。
というか変数の宣言ではそのように配置されてしまうものなのかな?
ちょっと調べてきます。
本当にありがとうございます!
0622デフォルトの名無しさんNGNG
>>601
ありがとう。
オライリーから出てるC++プログラミング入門が良さそうなんで
それでも読んでみます。
0623デフォルトの名無しさんNGNG
クローンコードをなくしたいのですが、たとえば下記のようなコードって関数にするのがいいのですか?
それとも関数マクロでしょうか?

if(function(x)){
printf("Function is Success\n");
}else{
printf("Function is Failed\n");
function_error_process();
}
0624デフォルトの名無しさんNGNG
>>607だと256倍になりそう・・・
0625デフォルトの名無しさんNGNG
>>623
頻出なら関数、一度しか出てこないならそのまま。
関数マクロは副作用があるから使わない方が良い。
0626デフォルトの名無しさんNGNG
>>623
あまりに頻出で定型なら
functionとfunction_error_processのアドレスを受け取って処理するとか。
0627デフォルトの名無しさんNGNG
>>607
int main() {
for (int i=0; i<10; i++) puts("test");
return 0;
}
とすると
error: `for' loop initial declaration used outside C99 mode
なメッセージがでるよ??
0628デフォルトの名無しさんNGNG
#define PRINTMSG(dst) {if(dst){printf("Function is Success\n");}else{printf("Function is Failed\n");function_error_process();}}

で十分だろ
0629デフォルトの名無しさんNGNG
C99でなければ for (int i=0; i<10; i++) ... ってできない
0630デフォルトの名無しさんNGNG
関数マクロの副作用?
0631デフォルトの名無しさんNGNG
>>629
__VA_ARGS_の機能使ったときはコンパイルで何も文句いわれなかったから
気づかなかったけど、C99使うときはgcc -std=c99 hoge.cなんてするんだな。
0632デフォルトの名無しさんNGNG
BOOL型のサフィックスのIsって何の略ですか?
0633Ruby最強!!!!NGNG
632 is baka
0634デフォルトの名無しさんNGNG
昔ジャンプでやってたあれ
0635デフォルトの名無しさんNGNG
俺は今日初心者未経験やる気がある人を重視しますという広告につられ
面接にいった・・俺はCをたしなむんだが、普通に基礎をマスタしてるぐらいだが
しかし、いきなり適正検査をしますと・・だされた問題はもろ昔の算数
Aさんは時速なんとかBさんはなんとか距離はいくらとか
Aの濃度は%Bの濃度は%とか、こんな問題が延々と一時間やらされた
はっきりいってまったくできなく残念ですが、Eです
今回は採用をみなおしますといわれた
あ??やるき重視じゃねーのかボケ。。余計な時間とらせやがって
社長がまたいやな感じのやつでよ・・ほんとにあの適正検査ってやつは
あてになるのか俺は理系じゃないが、時間をかけたらアルゴリズムとかも
理解できるとおもってる。。あ???
理系のやつのみってかけやボケが・・・とメールでおくってやった
0636デフォルトの名無しさんNGNG
>>635
文型なのに酷い文章だな。
0637デフォルトの名無しさんNGNG
文系でもそれぐらい出来とけよ。
0638デフォルトの名無しさんNGNG
その程度の問題が解けないなら知障レベルだぞ
0639デフォルトの名無しさんNGNG
文系未満はどこにも就職できないよ。
0640デフォルトの名無しさんNGNG
理系も未満の使い方覚えないと就職できないよ。
0641デフォルトの名無しさんNGNG
それで文系名乗られると文系全体が可哀想だ
0642デフォルトの名無しさんNGNG
c言語↓
0643デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
  puts("Hello, world!");
  return 0;
}
0644デフォルトの名無しさんNGNG
>>635
オマエは世間を知らなさ杉
母数をでかくするのは募集側が当然考えること
母数がでかければオマエより魅力的な奴もそれだけ増える
極めつけは試験の意図がオマエにはわからなかった
それで通ったら却って薄気味悪い
0645デフォルトの名無しさんNGNG
ここのNew Virusってやつのコード痛くないか?

スレッド違いで失礼だが、お願いしたい。
↓
迷惑ですからやめてください
↓
そもそもソースおかしいぞ
↓
君たちは冷たいね・・・・・。

......底抜けのバカか?

http://security.ten.thebbs.jp/1093151279/
http://security.ten.thebbs.jp/1094827887/
0646デフォルトの名無しさんNGNG
↓二進数
0647デフォルトの名無しさんNGNG
1
0648デフォルトの名無しさんNGNG
構文のチェックをするフリーのツールはありませんか?
gccでsyntax error at end of inputだけが出るけど何所が間違っているかわからん。
0649Ruby最強!!!!NGNG
google
0650デフォルトの名無しさんNGNG
>>648
英語の辞書買うほうが先だ
0651648NGNG
いや言葉の意味はわかります。
具体的に何が間違っているのかがわからない。
ので、親切にどう間違っているのか教えてくれるツールがないかなと思ったしだいです。
0652デフォルトの名無しさんNGNG
>>651
言葉の意味、わかってないんじゃん。
0653648NGNG
そのまま入力の終わりに構文エラーだと思っています。

$ gcc a.c b.c -Wall
a.c: In function `main':
a.c:225: error: syntax error at end of input

a.c
221  free(buf);
222  fclose(fp);
223  return EXIT_SUCCESS;
224 }
225

これで入力の終わりに構文エラーだと意味がわからないので
正確な意味を教えてください。
0654デフォルトの名無しさんNGNG
独習C読んでると、fopenのたびに
if((fp=fopen("txt","w"))==NULL){…
という風にエラーチェックしてるんですが、これって普通なんでしょうか?
0655デフォルトの名無しさんNGNG
>>653
ソースがそれだけでは解からないよ。

;の付け忘れとかよくあるけど…
0656デフォルトの名無しさんNGNG
>>654
エラーチェックしなかったらファイルオープンできたかどうか分からないじゃん。
0657デフォルトの名無しさんNGNG
>>654
エラーが考えられる場所ではエラーチェックするのが普通です。
たとえば、txtというファイルが無い場合はfpを使った処理がうまくいきません。
0658デフォルトの名無しさんNGNG
>>654
普通
0659デフォルトの名無しさんNGNG
>>653
gcc は知らんが、{ と } の不整合とか?
0660デフォルトの名無しさんNGNG
>>653
lintとかあるけど、色表示してくれるエディタ使ったほうが早いと思うよ。
あとは変なところに全角スペースが入ってるとか。
0661648NGNG
>>655,659,660
{と}の不整合でした。
ありがとうございました。
括弧の対応を探すと最後の行までいかないといけないから最終行でエラーがになるのかな。
0662デフォルトの名無しさんNGNG
>>653
入力の終わりに構文エラーだからって、原因が入力の終わりにあるとは限らない。
エラーが露呈したのが入力の終わりなのであって、原因はもっと前にあることが多い。
0663デフォルトの名無しさんNGNG
生まれて初めてみたときは一瞬考えるよね、このエラー。
まあすぐに終わりにシンタクスエラーがあるんじゃなくて、
終わりでエラーになったと分かるけど。めったにないけど、
これがでるとifなんかを全部みなおさなきゃならんので
ちょっといらっとくる。
0664デフォルトの名無しさんNGNG
最近C始めたばかりなんですが、少し疑問に思うことがあります。
変数って、プログラム書いてるうちに必要に応じて増やすもんなんですか?
それとも、使う変数は最初から考えておくんですか?
0665デフォルトの名無しさんNGNG
>>661
>>663
自動整形機能のあるエディタ使ってないの?
0666デフォルトの名無しさんNGNG
>>664
そりゃもちろん必要に応じて使うものだが・・
0667デフォルトの名無しさんNGNG
>>665 分かった分かった。
0668デフォルトの名無しさんNGNG
>>664
Cはとくにだが、ブロックの頭でまとめて宣言することが多い。それだけ
0669デフォルトの名無しさんNGNG
>>668
つーかふつうブロックの先頭でしか宣言できんやろ。
0670デフォルトの名無しさんNGNG
ふつう

# 含蓄あるな・・・
0671デフォルトの名無しさんNGNG
C99でなけりゃ常にブロックの先頭でしか宣言できんはずだが?
0672デフォルトの名無しさんNGNG
だから何?
0673デフォルトの名無しさんNGNG
初心者です。
教則本に則って、ギコ、モナー、ジエンの成績を入力し、合計と平(ry
というプログラムを書いてみたのですが、while()だらけになっちゃいました。
これは格好悪いかな?
初歩はこんなもんかなのな?
0674デフォルトの名無しさんNGNG
>>673
だらけの程度にもよる
0675デフォルトの名無しさんNGNG
>while()だらけになっちゃいました

だからってfor()にすんなよ
0676673NGNG
>>674
まんだらけクラスです
0677デフォルトの名無しさんNGNG
>>674
処理毎にです。
配列使って、出来るだけ簡潔にしようとしたら大変なことに。
0678Ruby最強!!!!NGNG
とにかくソースを晒してミンカイ
0679 ◆M4.E2.dTu. NGNG
でわ後日ネカフェよりうpします。
そんときはよろしくお願いします。
一応仮のトリを
0680デフォルトの名無しさんNGNG
>>635だが
はっきりいって、大学入試のほうが簡単だったぞ・・・
まじで・・・ちなみに俺のいってた大学は中の上の文学部だ
あんなのは解けん・・・
0681デフォルトの名無しさんNGNG
>文学部
文系の中でもド底辺じゃんw
0682デフォルトの名無しさんNGNG
>>680
算数じゃない数学力は超重要
大学出ててこれわかんねーやつ悲惨すぎ
0683デフォルトの名無しさんNGNG
文学部卒を大卒扱いしちゃダメだろ
0684デフォルトの名無しさんNGNG
問題を出す側から言わせて貰えば、
解けない問題に直面したときの対応の仕方を観察させてもらういいチャンスな訳です。
#こっちはお茶してられるしね。
解ける能力があるならよし。対処できる能力があるならそれはそれでよし。
#>635の件もそうなのかは知らんが。
0685デフォルトの名無しさんNGNG
学歴もEランク、適性試験もEランク、書き込み見る限りじゃ人間性もEランク

ここまで徹底している奴も珍しいw
0686デフォルトの名無しさんNGNG
っていうかハジキの問題って一般教養じゃないの?
大卒って言ったら中学までのことは完璧に出来ないと「マジ?」って思われるよ。
0687デフォルトの名無しさんNGNG
CでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
Cの基礎からすべてを叩き込んでくれませんか??
お願いします。
0688デフォルトの名無しさんNGNG
女を連れてきてからだ。
0689デフォルトの名無しさんNGNG
C厨は全員道程
0690デフォルトの名無しさんNGNG
>>687
人月あたり100万からだねー
0691デフォルトの名無しさんNGNG
>>689
が何言ってるのかわかりません。
誰か訳して頂けないでしょうか?
ついでに池沼ってどういう意味ですか?
0692デフォルトの名無しさんNGNG
>>691
○○社の池沼社長のことです。
0693デフォルトの名無しさんNGNG
>>635
よくわからんけど、小学校からやり直したほうがいいのでは?
0694デフォルトの名無しさんNGNG
v(^o^i)d
0695デフォルトの名無しさんNGNG
未経験者OKなところなんてないよ。
0696デフォルトの名無しさんNGNG
業務経歴なんて誰も調べねえから適当に査証しとけ。
0697デフォルトの名無しさんNGNG
その代わり相応の実力がないと意味がない。
0698デフォルトの名無しさんNGNG
うちはマジで未経験者OKよん。
その代わり、1ヶ月社内で研修(≒放置)したあと
人月単価が低い案件に放り込むけど。
0699デフォルトの名無しさんNGNG
ないよりは良いと思って、今日もご飯を食べるのです。
0700デフォルトの名無しさんNGNG
コマンドラインプログラムでイベント工藤ってできるのでしょうか?
0701デフォルトの名無しさんNGNG
できるけど。
0702デフォルトの名無しさんNGNG
工藤か。マジで200勝で引退なんじゃないかと。
0703デフォルトの名無しさんNGNG
>>635だが
文学部だが、一応国立なんだけどセンターで数1と数2も受けてきたんだけど
はっきりいって、まじ難しいんだって
0704デフォルトの名無しさんNGNG
センター試験を元に採用するわけじゃないからなぁ。
0705デフォルトの名無しさんNGNG
問題言ってみ。
0706デフォルトの名無しさんNGNG
俺が思うに微分積分の問題とかのほうがはるかに簡単だ
まぁいまじゃそれも全く解けないが、ようは数学って公式とかだろ
その問題も公式さえわかってれば解けるやつばかりなんだよ
俺はもうその手の問題やってないから解けなかったんだけど
まぁはっきりいって、あそこの社長のいやがらせだな。
一緒にうけてたおっさんなんて途中でトイレいったままもどって
こなかったぞ
0707Ruby最強!!!!NGNG
ここで自分の惨めな体験を垂れ流す理由は何。
0708デフォルトの名無しさんNGNG
〜だが、〜だが、〜だけど、〜だけど

頭悪そう
0709デフォルトの名無しさんNGNG
スレ違いな話ばかりだな。
0710デフォルトの名無しさんNGNG
あの、C言語のソースを書いて、コンパイルしようと思って
コマンドプロンプトを開いたんですけど、cd c:/←このスラッシュの左右逆向きが打てないんですけど
どうやって打つんでしょうか?
0711デフォルトの名無しさんNGNG
スレ違い
0712デフォルトの名無しさんNGNG
>>710
どうやって打つんでしょうねぇ。
日本なら cd c:\でもできるよ。
0713デフォルトの名無しさんNGNG
>>710
=の右
0714デフォルトの名無しさんNGNG
>>710
ろ
0715デフォルトの名無しさんNGNG
>>710
shiftの左
0716デフォルトの名無しさんNGNG
どうもです。
\でもできるんですか。
ありがとうございました。
0717デフォルトの名無しさんNGNG
>>379
0718デフォルトの名無しさんNGNG
>>710
US.BAT
又は
CHCP 437
コマンドを使用する。
0719デフォルトの名無しさんNGNG
fclose()でsegmentation faultが起きます。
ファイルも存在していますし。fopen()の後
何も入出力をしなくても落ちます。何ででしょう?
0720デフォルトの名無しさんNGNG
FILE *fp;
fopen("test", "r");
fclose(fp);

と、予想してみる。
0721デフォルトの名無しさんNGNG
>>718
そんなために chcp するやつはアフォが伝染るからあっち池
0722デフォルトの名無しさんNGNG
fpがNULLになってないか確認しろ
0723719NGNG
こんな感じで開いています。

//---- ファイルを指定されたモードで開く関数
int open_file( FILE* fp, char* file_name, char* mode )
{
fp = fopen( file_name, mode );
if( fp == NULL )
die_with_message("file open error");  // メッセージを出力して死ぬ
lockf( fileno( fp ), F_LOCK, 0 );
return 0;
}

入出力なんかも問題なくできます。
なんなんでしょう?
0724デフォルトの名無しさんNGNG
int open_file( FILE* fp, char* file_name, char* mode )
{
fp = fopen( file_name, mode );

何のためにfp渡してるの?
使ってないじゃん。



関数部
int open_file( FILE** fp, char* file_name, char* mode )
{
*fp = fopen( file_name, mode );
/* 以下同様に *fp */

呼び出し側
FILE *fp;
open_file(&fp, ...

こういう風にしたいの?
0725デフォルトの名無しさんNGNG
>>721
プ
ププ
0726719NGNG
>>724
できました。なんか勘違いしてたみたいすね。
助かりました。ありがとうございます。
0727デフォルトの名無しさんNGNG
C言語の構造体のメンバはデフォルトではプライベートですか?
0728デフォルトの名無しさんNGNG
>>727
C言語にそんな概念ないよ。
0729デフォルトの名無しさんNGNG
>>727
あえて言えば全てpublicで、面罵関数を持つことは出来ません。
0730デフォルトの名無しさんNGNG
>>727
それだとメチャクチャ困るだろw
0731デフォルトの名無しさんNGNG
>>728-729
あ、そうなんですか
構造体はあるってきいたんで
0732デフォルトの名無しさんNGNG
>>731
構造体はあるが、メンバ関数なんて概念はないし必然的にprivateって概念もない。
0733デフォルトの名無しさんNGNG
remove( char* file )に失敗してしまいます。
とりあえず以下は確認しました。
 fileの終端に\nがついていたので\0をつけました
 file はfopen()されていません。
 file をファイル名に持つファイルは存在しています。
 remove()の戻り値は-1です。
 対象となるファイルのパーミッションは644。
 ディレクトリのパーミッションは751。新規ファイルの作成はできます。
どのような原因が考えられるでしょうか?
0734デフォルトの名無しさんNGNG
>>733
perror()をつかってみたらどうなるの?
0735733NGNG
>>734
no such file of directry
とでました。うーん。
0736733NGNG
すみません、ファイルのパスではなく
ファイル名だけでアクセスしていました。
しかもofじゃなくてorだし。
マジですみません。吊ってきます。
0737デフォルトの名無しさんNGNG
さらにスレ違い。
0738デフォルトの名無しさんNGNG
さて、どのスレor板が妥当か?
0739デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0740デフォルトの名無しさんNGNG
>>738
普通にウニ板だろうが、
犬板に隔離措置を希望。
0741いなむらきよしNGNG
どっちにしろ俺が奇形なのは変わりないキケー!
0742デフォルトの名無しさんNGNG
構造体について教えてください
0743デフォルトの名無しさんNGNG






























0744デフォルトの名無しさんNGNG
>742
クラスからメンバ関数、アクセス指定子、継承などを取り除いたもの
0745デフォルトの名無しさんNGNG
>>744
クラスについて教えてください。
0746デフォルトの名無しさんNGNG
>745
C++またはJavaスレで聞いてください
0747デフォルトの名無しさんNGNG
>>746
おいおい>>745 は>>744 が>>742 に対してクラスを使ったから
あえてクラスについて書いたのであって、そういうことではないだろう。
0748デフォルトの名無しさんNGNG
>>745
構造体にメンバ関数、アクセス指定子、継承などを加えたもの
0749デフォルトの名無しさんNGNG
>>744と>>748をまとめると、構造体は
「構造体にメンバ関数、アクセス指定子、継承などを加えたものから
メンバ関数、アクセス指定子、継承などを取り除いたもの」

らしいw
0750デフォルトの名無しさんNGNG
ネタにいちいちマジ反応するなよ
0751デフォルトの名無しさんNGNG
構造体について知りたきゃ本やweb見ろよ。
その上でわからないことがあったら答えるから。
0752デフォルトの名無しさんNGNG
int hikaku(int a, int b)
{
int z;
if(a>b)z=a;
else z=b;
return z;
}
int main(void)
{
int a, b, z;
printf("aを入力してください\n");
scanf("%d", &a);
printf("bを入力してください\n");
scanf("%d", &b);
z=hikaku(a,b);
printf("大きいほうは%dです\n", z);
return 0;
}

こんなエラーが出ましたが、教えてください
dim03.c 11: Warning: function 'printf' undefined -- assumed to be int
dim03.c 12: Warning: function 'scanf' undefined -- assumed to be int
0753デフォルトの名無しさんNGNG
#include <stdio.h>
0754デフォルトの名無しさんNGNG
エラーと警告の区別もつか(略
0755752NGNG
>>753
初歩的なミスですね^^
ありがとうございました。
0756デフォルトの名無しさんNGNG
> function 'printf' undefined
コンパイラが吐くメッセージにしてはいいかげんだな。
0757デフォルトの名無しさんNGNG
(´-`).。oO(“コンパイラが吐くメッセージにしては”?)
0758デフォルトの名無しさんNGNG
初心者な質問ですみません。基本情報の勉強しててわからなかったので
どうか教えてくださいませ。

main()
{
char *days{}={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
int i;
for(i=0;i<7;i++)
printf("%d:%s\n",i,★);
}

SanからSatまで出力するプログラムなんですが、★にはいるのは
days[i]か*(days+i)になるとのことですが、
%sで出力する場合は文字列の先頭アドレスを指定するんですよね??
それなのに何でdays+iではなく実体を表す*(days+i)になるんですか?

0759デフォルトの名無しさんNGNG
>>758
days は、文字列のポインタのポインタです。

days   :文字列へのポインタのポインタ

*(days+i):i番目の文字列へのポインタ
*(*(days+i)+j):i番目の文字列の j 番目の文字

days[i]:i番目の文字列へのポインタ
days[i][j]:i番目の文字列の j 番目の文字

最初は混乱するかも知れません。
0760デフォルトの名無しさんNGNG
>>759

なるほど。ポインタを表すということですか!
*がつくから、*(days+i)はSunやMonなどの直接の
文字列を表すものだと思っていました。
そういうものなんだなぁと割り切って覚えることにします!ありがとうございます!
0761デフォルトの名無しさんNGNG
char *days[];
と宣言したなら、実体も同じ様に
*days[]
0762デフォルトの名無しさんNGNG
>>757
define と declare の区別もつか (ry
0763デフォルトの名無しさんNGNG
http://www.nic-gr.com/famary/me-suita/me-suitagai.jpg
http://www.haseko-hub.co.jp/kansai/hub_chukai/tgm_photo/65.jpg
0764デフォルトの名無しさんNGNG
>>758
どうでもいいがそれだとエラーでるぞ。 一応つっこみ
0765758NGNG
>>764
ですねー。*days{}→*days[]でした。
ポインタ配列むずかしー
0766デフォルトの名無しさんNGNG
>>758
勉強中ということだが、
文字列リテラルは const であるという突っ込みは入れたほうがいいのだろうか?
0767デフォルトの名無しさんNGNG
>>766
758を見る限り traditional C を勉強中のようだが
0768デフォルトの名無しさんNGNG
>>766
何のために?
0769デフォルトの名無しさんNGNG
言語仕様や『はじめてシリーズ』ではなく、
おすすめの C の問題集があれば教えてください。

0770デフォルトの名無しさんNGNG
#!/bin/cci
#include <stdio.h>
...
とかやっといてインタプリタで実行してくれる処理系ってないの?
0771Ruby最強!!!!NGNG
るby!!!!!
0772デフォルトの名無しさんNGNG
パスが "c:\UNKO\CHINKO\12345678.txt" のテキスト名[12345678]だけを取り出したいの
ですがそのような関数あるのでしょうか?なければどなたか教えてください。
0773デフォルトの名無しさんNGNG
後ろから '\'および'.'を探せ
strrchr()
0774デフォルトの名無しさんNGNG
>772
MS系ならsplitpath()
0775デフォルトの名無しさんNGNG
数値をバイナリに変換したい場合どうすればいいんですかね
0776デフォルトの名無しさんNGNG
>>775
バイナリ形式でファイルに保存したいってこと?
0777775NGNG
バイナリ形式というのか...例えば数字が1だったら31に変換して保存したいんですよね。
0778デフォルトの名無しさんNGNG
わけわかんね。
文字コード?
"0123456789"[number]
ってのが一般的だろうな(numberが一桁の場合)
アスキーでいいなら
number+30 で十分だろ(同上)
0779デフォルトの名無しさんNGNG
それはバイナリ化ではなく、文字コードの取得というのでは・・・
0780デフォルトの名無しさんNGNG
>>779 うむw
atoiとかstrtolとか使え。
0781デフォルトの名無しさんNGNG
C の初歩習ってるところなんですが、
繰り返しでfor文とwhile文ってありますよね
for文でしかできないことってなんですか?
よろしくお願いします
0782Ruby最強!!!!NGNG
そんなものはない
0783デフォルトの名無しさんNGNG
ワナビーと言われてよっぽど悔しかったと見えるw

>>781
for (exp1; exp2; exp3) {
 exp4;
}

はつねに

exp1;
while (exp2) {
 exp4;
 exp3;
}

と書き換えることができる。なのでforでできることはwhileでもできる。
0784デフォルトの名無しさんNGNG
>>781
int i;
for (i = 0; i < N; i++) {
 〜
}
↓
int i = 0;
while (i < N) {
 〜
 i++;
}
こういう具合にforを使っているコードは全てwhileを使うコードに書き換えられる。逆も然り。
0785デフォルトの名無しさんNGNG
>>781
forは一定の回数繰り返す、whileは条件があっている間繰り返す と
言う感じに使い分けるといいよ。

for (i = 0; i < N; i++)
while (i < N)

の N がループ内で変化しないとき(外で変化するのはOK)はfor、変化するときはwhile。
言語によってはforだとNがキャッシュされてループ内で変更しても
最初のNを使用するのもあるし。
0786デフォルトの名無しさんNGNG
但し例外があって、

for (expr1; ; expr3) {
 expr;
}

は

expr1;
while () {
 expr;
 expr3;
}

とは書き換えられない。この場合は

expr1;
while (1) {
 expr;
 expr3;
}

などとする。
0787デフォルトの名無しさんNGNG
for (exp1; exp2; exp3) {
 exp4;
}
上のコードを下のように書き換えることも。
exp1;
Loop:
if (exp2) {
 exp4;
 exp3;
 goto Loop;
}
0788デフォルトの名無しさんNGNG
予約語たくさんあるHPあれば教えて下さい。(80ほど)
0789デフォルトの名無しさんNGNG
>>783-787
お前らconti(略
0790デフォルトの名無しさんNGNG
continental consaltant
0791デフォルトの名無しさんNGNG
>>790
consultantだろと小一時間(略
0792デフォルトの名無しさんNGNG
>>788
80もないけど
http://seclan.dll.jp/c99d/c99d01.htm#dt19990319
0793デフォルトの名無しさんNGNG
exeファイルをエジタに関連付けたら、
エクスプローラでダブルクリックしても
プログラムが動かなくなってしまいました。
どうやって元に戻したら元通りになりますか?
0794デフォルトの名無しさんNGNG
エジタとは?
0795デフォルトの名無しさんNGNG
>>793
鼬害
0796デフォルトの名無しさんNGNG
>>793
Windows板へどうぞ。
http://pc5.2ch.net/win/

>>794
editorじゃないの
0797デフォルトの名無しさんNGNG
http://www.ff12.com/trailers/03broad.html
0798798NGNG
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define POW_OK 0
#define POW_NOTHING 1

int most_simple_algorism(
unsigned long int x,
unsigned long int y,
unsigned long int * n)
{
unsigned long int i;
double p;

if (x == 0 && y == 0) return(POW_NOTHING);
if (x < 2 && y > x) return(POW_NOTHING);

for (i = 0; ; i++) {
p = pow(x, i);
if (p < y) continue;
*n = i;
break;
}

return(POW_OK);
}
0799798NGNG
int main(
int argc,
char * argv[])
{
int print, ret;
unsigned long int x, y, xm, ym, n;

if (argc < 3) {
printf("usage: %s x y [print]\n", argv[0]);
exit(0);
}

xm = atol(argv[1]);
ym = atol(argv[2]);
print = (argc > 3);

for (x = 0; x <= xm; x++) {
for (y = 0; y <= ym; y++) {
ret = most_simple_algorism(x, y, &n);
if (!print) continue;
printf("%ld^n >= %ld ... n = ", x, y);
if (ret == POW_OK) {
printf("%ld\n", n);
} else {
printf("Nothing!\n");
}
}
}
}
0800798NGNG
800ゲトー。

高卒で数学の解法もよく分からないので教えていただきたいのですが、
x と y が与えられているときに、x^n <= y を満たす n を求めたいのです。

現時点では >>798-799 の most_simple_algorism で実装している
超初歩的なアルゴリズムしか思いつきません。
for で n を一つずつ増やしていっているだけです。

このコードを Cygwin + Windows 2000 上で実行したところ、

$ gcc myalgo.c && time ./a.exe 100 100000

real 0m12.399s
user 0m12.108s
sys 0m0.015s

という結果になりました。

何かいいアルゴリズムがあれば教えてください。数学関係のキーワードでも構いません。
なにしろ全く想像もつかないので。。。

よろしくお願いします。
0801798NGNG
あ、あとできれば
n と y が与えられているときに、x^n <= y を満たす x を求める方法
も分かればありがたいなぁ、と。

やりたいことは複数階層のディレクトリを作って
大量のファイルを散りばめたいといったことなんですが、
こういうアルゴリズムを使えれば面白いかな、と思ったわけです。
0802デフォルトの名無しさんNGNG
(int)(log(y)/log(x))
0803798NGNG
>>802
ありがとうございます。
それで求まるんですか?
ちょっとウェブで調査してから
コードをいじくってみます。
0804798NGNG
>>798-799 を >>802 さんの log を使って書き換えてみました。

< for (i = 0; ; i++) {
< p = pow(x, i);
< if (p < y) continue;
< *n = i;
< break;
< }
---
> *n = (unsigned long int)(log(y)/log(x));

そしたらめちゃんこ早くはなったんですが、

$ time ./a.exe 100 100000
real 0m2.960s
user 0m2.796s
sys 0m0.015s

結果がちょっと変です。

$ ./a.exe 2 10 print
2^n >= 2 ... n = 1
2^n >= 3 ... n = 1 <--- 2 のはず
2^n >= 4 ... n = 2
2^n >= 5 ... n = 2 <--- 3 のはず

なぜでしょう? 私の組み入れ方が間違ってるんだと思いますが。。。
0805デフォルトの名無しさんNGNG
x^n=y
n=log_x_y
n=(log_e_y)/(log_e_x)
n*log_e_x=log_e_y
log_e_x=log_e_y^(1/n)
x=y^(1/n)
でねーのか?
高校の参考書引っぱり出して計算してみたんだが間違ってるかも。
0806デフォルトの名無しさんNGNG
x=y*e^(1/n)
0807798NGNG
>>805-806
こんなの高校で習うんでしたっけ。。。

えーと、具体的にどうコードに落とせばいいんでしょうか。

e って何ですか?
0808デフォルトの名無しさんNGNG
e=ネイピア数
0809デフォルトの名無しさんNGNG
>>807
eでググれ
0810デフォルトの名無しさんNGNG
>>809
あほあほあほ
0811デフォルトの名無しさんNGNG
>>810
節穴だまれ
0812798NGNG
>>809
「log 数学」で調べたら分かりました。

http://www8.plala.or.jp/ap2/shinraisei/shinraiseisuugaku.html
e=2.718281828459045...
っていう定数なんですね。まだよく分かりませんけど。

なるほど、こういうときはlogを使えば何とかなりそうだ、
というところまではとりあえずつかめました。
0813デフォルトの名無しさんNGNG
>>812
>e=2.718281828459045...
>っていう定数なんですね。
…本当に高校出ているのかと。
0814805NGNG
>>806
見直してみたんだが
x^n<=y
となる最大のxは
x=y^(1/n)
で、eはいらないと思う。
0815デフォルトの名無しさんNGNG
>798
そもそもおまいさん、言ってることとやってることが違うだべさ。
>800 「x^n <= y を満たす n を求めたいのです。」
>804 「2^n >= 2 ... n = 1」

(log(y)/log(x)) で x^n == y となる n が求まるので int で
切り捨てれば x^n <= y になる。(x>1, y>1 と仮定)
不等号の向きが逆だとおかしいのは当たり前。

なお、x の方は >805 が正しくて >806 は間違い。
つか、n 乗根とれば一発な罠。

数学的な説明としてはこの辺でも見てみれば?
http://ja.wikipedia.org/wiki/%E3%83%8D%E3%83%94%E3%82%A2%E6%95%B0
http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E9%96%A2%E6%95%B0
http://ja.wikipedia.org/wiki/%E5%AF%BE%E6%95%B0%E9%96%A2%E6%95%B0
0816デフォルトの名無しさんNGNG
>>814
x^n<=y
から
x<=y^(1/n)
を導くのにあれだけのステップを踏める(しかも結果が合ってる)君に感動した。
0817798NGNG
分かりました!

>>804は切り上げればよかったみたいです。

< *n = (unsigned long int)(log(y)/log(x));
---
> l = log(y)/log(x);
> *n = (unsigned long int)l;
> if (l - *n > 0) *n += 1;

これで少なくとも x = 2, 0 <= y <= 10 まではうまくいきました。
0818805NGNG
>つか、n 乗根とれば一発な罠。
気づかなかったよ..orz
つーかアホ棚俺。。
0819798NGNG
>>815
あれれ? どっちが正しいんだろう。。。

y が合計ディレクトリ数で、x が max_depth で、
n が max_branch だから、、、
max_dir = x^n になるわけで、max_dir >= total_dir
でなきゃいけないから、

・・・すみません。

「x^n <= y を満たす n」
は
「x^n >= y を満たす n」
の間違いでした。
0820デフォルトの名無しさんNGNG
yが正ならね。
0821デフォルトの名無しさんNGNG
n>=log_x_y
0822798NGNG
じゃあきっと
>>801「n と y が与えられているときに、x^n >= y を満たす x を求める方法」
ってのも

x = (unsigned long int)pow(y, 1/n);

みたいな感じでうまくいくかもですね。
切り上げとか切り下げとかはやってみなきゃ分からないけど。

>>813
高校卒業したけどたぶんlogだのネイピア数だの習ってません。
高校二年のときは一学期100点で三学期0点でしたし、
三年のときはもう数学は捨てることにして、一番簡単な
医療・看護系受験対策用の数学しか選択しませんでしたから。

数学オンチのくせにプログラマ (普段は C++ しか触りませんが)
やってる高卒DQNのしょうもない質問にお答えいただきまして
本当にありがとうございました!
0823デフォルトの名無しさんNGNG
やってないから知らなくていいとか言う奴師ね
0824781NGNG
遅くなりましたが、〜787までの方々ありがとぅございました
。
0825デフォルトの名無しさんNGNG
>>823
誰もそんなこといってない罠。
0826デフォルトの名無しさんNGNG
妄想癖キモいね
0827デフォルトの名無しさんNGNG
unsigned char *buf[] = {
"\xFF\x00\xFF........................."
"..............................................................."
.
.
"...............................................................",
"..............................................................."
.
.
"................................................................",
(中略
};

clコンパイラで /Zm2000 などを指定しても C1063エラー などになってコンパイルできません。
かなり巨大な文字列をコンパイルするにはどうすればよいのでしょうか?
細かくコンパイルしてリンク??
0828デフォルトの名無しさんNGNG
外部ファイルに出してリンク時にリンカでまとめるとか。
clコンパイラ知らないんで、できるかどうかわからないけど。
0829デフォルトの名無しさんNGNG
>>828
知らないなら書くなドアホ
0830デフォルトの名無しさんNGNG
>>827
つーかスレ違い。
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0831827NGNG
イッテキマス。
0832デフォルトの名無しさんNGNG
指定のディレクトリ以下のファイルを読み込む方法てありますか?
0833デフォルトの名無しさんNGNG
あるでしょうけどスレ違いですね
0834デフォルトの名無しさんNGNG
>>833
相談室いってきます。
0835デフォルトの名無しさんNGNG
if(...){
aaa();
}
を
if(...)
{
  aaa();
}
に展開してくれるツールありませんか?
0836デフォルトの名無しさんNGNG
>>835
unix系ならindentってコマンドがあるはず。
他は知らん。
0837Ruby最強!!!!NGNG
Rubyで自分で書け。
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!
http://gnuwin32.sourceforge.net/packages/indent.htm
0838デフォルトの名無しさんNGNG
>>837
楽しそうだね。おれはRuby使うけど、君には使えそうもないね。
0839デフォルトの名無しさんNGNG
どこへでも出張してきて迷惑な話だ。
0840デフォルトの名無しさんNGNG
>>835
高度なオートインデント機能のあるエディタならマクロでも組んで自動化できそうだが。
#少なくともemacs系ならできる。
それはいいが、スレ違いだろう。
0841デフォルトの名無しさんNGNG
DLLの中に画像ファイルをいれることはできますか
0842デフォルトの名無しさんNGNG
REN *.bmp *.dll
0843デフォルトの名無しさんNGNG
>>841
ツールの使い方を知りたいのなら、そのツールのスレへ
C言語から入れる方法を知りたいのであれば、Win32 API スレなどへ
0844デフォルトの名無しさんNGNG
>>842
.soかもしれないだろ!
0845デフォルトの名無しさんNGNG
そーですか。
0846デフォルトの名無しさんNGNG
質問です。

#include <stdio.h>

const char* komastr[2][8]={{
" ", "FU", "KY", "KE", "GI", "KI", "KA", "HI",
"OU", "TO", "JU", "NK", "NG", "", "UM", "RY"},
{"", "fu", "ky", "ke", "gi", "ki", "ka", "hi",
"ou", "to", "ju", "nk", "ng", "", "um", "ry"}};

int main(int argc, char** argv)
{
int i, j;

for (i=0; i<2; i++)
for (j=0; j<2; j++)
printf("%s ", komastr[i][j]);
return 0;
}

(エラーメッセージ)
Error array2d.c: 5 too many initializers
Error array2d.c: 7 too many initializers
2 errors, 0 warnings

それほど多くの要素数でもないのに too many initializers なのは何故でしょうか?
0847デフォルトの名無しさんNGNG
>>846
2*8しか用意してないのに32個も入れるなよ
それをやるなら[2][16]
0848846NGNG
>>847
そうでしたorz ありがとうございますm(_ _)m
0849デフォルトの名無しさんNGNG
"ab"がchar[3]であることには誰も突っ込まないのか?
0850デフォルトの名無しさんNGNG
「const char*」、アンタバカデスカ
0851デフォルトの名無しさんNGNG
>>849
そこはおかしいとはいいきれない。

char [2] = "ab";

は正しいから。それが意図してる物かどうかは別として。
2文字分の場所が取られてaとbの文字が順番に入ってる配列が定義される。
0852デフォルトの名無しさんNGNG
それ以前にchar型へのconstポインタの二次元配列だから
0853デフォルトの名無しさんNGNG
#include<stdio.h>

int main(void)
{
int min = 5 ;
int max = 10 ;
int input ;

printf( "Plese input \"0\" or \"1\" ! \n" );
scanf("%d",&input)

if( input )
#define CHANGE <
else
#define CHANGE >

if( min CHANGE max )
printf("MAIN\n");
else
printf("__NO__\n");

return 0;
}

もちろんエラーですが、こういう事をやりたいんです。
入力した数字によって、ある部分を置き換える処理…
なんとかできませんでしょうか? どなたか知恵をお貸しください。
onegaisimasu
0854デフォルトの名無しさんNGNG
激しくネタっぽい
0855デフォルトの名無しさんNGNG
大真面目ですが…
当たり前の事で低級な質問だったとしても、
聞かなきゃわからないこともあると思うんです。
0856デフォルトの名無しさんNGNG
インタプリタなら出来る道もあるんかね
まぁ、やりたい事は条件分岐で実現出来ないのかと疑問だがね
0857デフォルトの名無しさんNGNG
inputの値によってmaxとminを交換して<(か>)で比べればいい。
0858デフォルトの名無しさんNGNG
if ( (max-min)*(input*2-1)>0 ) printf("MAIN\n");
0859デフォルトの名無しさんNGNG
int cmpflg;
int cmp(int n1, int n2)
{
    return cmpflg ? n1 < n2 : n1 > n2;
}

inta main()
{
...
if( input ) cmpflg = 1;
else cmpflg = 0;

if(cmp(min, max))
printf("MAIN\n");
else
printf("__no");
return 0;
}
0860デフォルトの名無しさんNGNG
質問です。
以下のページを参考にlinuxでシリアル通信を行っています。
http://www.linux.or.jp/JF/JFdocs/Serial-HOWTO.html

受信データが空の状態でread()してしまうとその部分でロック
してしまいます。read()せずにデータが来ているかどうか(でき
れば何バイト来ているか)調べるにはどうすればいいのでしょう
か?

よろしくお願いします。
0861デフォルトの名無しさんNGNG

う〜ん、、、純粋な文字置換はやっぱ無理っぽいですね。
けど、こんな馬鹿な質問に答えていただきありがとうございました。
嬉しかったです。
0862デフォルトの名無しさんNGNG
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
0863デフォルトの名無しさんNGNG
>>861>>862
実況スレ並の同時書き込みだ。
0864hanaNGNG
for(i=0;i<=X_NO;i++)
for(j=0;j<=Y_NO;j++){
if( a > b)
printf("big\n");
}else if ( b < a ){
printf("small\n");
}
}

このプログラムだと、for文が画像を一点ずつ読んでいるため
SMALLがいくつも表示されてしまうのですが、
これを ひとつの表示にまとめたい場合 どうすればいいですか?
0865デフォルトの名無しさんNGNG
>>864
人に説明する気はあるのかね
0866デフォルトの名無しさんNGNG
>>864
スレ違いなので移動
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
0867hanaNGNG
すいませんでした移動しました
すれ違いでしたか、、、
0868デフォルトの名無しさんNGNG
>>867
つまり君がその問題ごと悩んでいる点を全てさらけ出せって言ってるんだよ.
言ってる意味が分からんのだよ
0869デフォルトの名無しさん NGNG
>>860
forkしたら?
0870860NGNG
>869
fork()ですか・・・。もっと簡単に、関数の返値で受信サイズ調べられるとうれしいんですが・・・。

>862
逝ってきます。

ありがとうございました。
0871デフォルトの名無しさんNGNG
文字列変数に別の文字列変数から代入するにはどうすればよいのでしょうか?

#include<stdio.h>

void main()
{
char a[4][5];
char b[4][5]={"ぬる","ぽガ","っ!","!!"};

a[0] = b[0];
}
とすると一番下の式の左辺に値が必要というエラーがでます。
0872デフォルトの名無しさんNGNG
>871
フツーにstrcpy()では?
strcpy(a[0],b[0]);
0873デフォルトの名無しさんNGNG
for(i=0;i<4;i++)strcpy(a[i],b[i]);
0874デフォルトの名無しさんNGNG
>>871
配列=ポインタと思ってるだろ
0875デフォルトの名無しさんNGNG
>>874
いや、始めたばっかだからポインタは詳しくやってない。
ポインタ使わないとダメなんですね、
>>872-874
ありがとう!
0876デフォルトの名無しさんNGNG
お前らCで配列の代入が出来ない理由知ってるやついますか?
サイズが同じ配列へなら代入してもかまわんと思うが。
関数から返せないのも痛すぎる。
構造体に入れれば出来るというのがわけわからん・・・。
今まで出来なかったことを出来るようにするだけだから仕様変更しても誰も困らんと思うし・・・。
実はC99では出来るようになってたりするのか?
0877デフォルトの名無しさんNGNG
ソフトしかわからん奴の限界
0878こちらへ誘導されたのでNGNG
C言語初心者です。
すいませんどうか助けてください。

ファイルから読み込みそれを別にファイルに書き込む基本的なことしてるんですが、
条件がありまして、
�@fgetc(fp)で順次読み込んだ文字がリターンキーなら次に文字を見る。
�Aその文字が 0 〜 9 か 'ー' 〜 '九' ならファイルをcloseする。

という仕様なんですが文字列操作がうまくいきません。
かな文字や関数字の判定ができません。
イメージとしては

while ((ch = fgetc(fp)) != EOF)
{
fputc(ch,fwp);

if (ch == 13) ← リターンキーのasciicode
{
ch = fgetc(fp); ← これで次にすすめているのか怪しい

以下不明・・
}
}

すいませんが文字をすすめたり漢数字の'一'判定のために
どのようなコードを書けばよいかわからないので
どなたか教えてください・・
0879こちらへ誘導されたのでNGNG
すいません
条件�Aの修正。
�Aその文字が 0 〜 9 か 'ー' 〜 '九' ならリターンキーに戻って
fcloseです。

0880デフォルトの名無しさんNGNG
>>876
ポインタの代入ができなくなるからダメ。
0881デフォルトの名無しさんNGNG
>>860
ああ、おいらも同じ問題で困ってた。ちょっと調べたところ
CTS信号の状態をみればデータが来てるかどうか分かるらしいんだけど
CTSがHiになってるときにreadするようにすればいいんだろうか?
0882デフォルトの名無しさんNGNG
�Bその文字が 0 〜 9 か 'ー' 〜 '九' でなかったらそのまま
読み進める、でいいの?
だったら break を使えばいいのではないかな。思いつきだけど。
文字コードが数字であり、尚且つ連番になってることを利用する。
while ((ch = fgetc(fp)) != EOF) {
//リターンキーの場合
if (ch == '\n') {
ch = fgetc(ch, fwp); //次の文字を読む
//終了条件チェック。真なら終了。
if ((ch >= '0' && ch <= '9')
|| (ch >= 'ー' && ch <= '九')) {
break;
//続く場合は処理続行
} else {
fputc('\n', fwp);
fputc(ch, fwp);
}
//リターンキーでない場合
} else {
fputc(ch, fwp);
}
}
fclose(fp);
fclose(fwp);
0883デフォルトの名無しさんNGNG
ごめん、fgetc() の引数はファイルポインタだけだった(fgets() しか
つかってないからつい)。
あと、終了のbreak;の前に fputc('\n', fp); で改行はしておかない
といけないのかな。
0884デフォルトの名無しさんNGNG
>>882
> ch = fgetc(ch, fwp);
fgetcってこんな引数だったっけ?

> || (ch >= 'ー' && ch <= '九')) {
これって、成立することあるの?
0885デフォルトの名無しさんNGNG
>881
このスレで聞いてどうするという気もするしもっとローレベルな話なのかもしれないが、
ノンブロックモードは助けにならんかい?
ttp://www.linux.or.jp/JF/JFdocs/Serial-Programming-HOWTO-3.html#ss3.3
0886デフォルトの名無しさんNGNG
>>884
漢数字の「一」(いち)じゃなくて音引きの「ー」でいいのかなあ…
いや、元の質問からそうなんだけど。
0887881 NGNG
>>885
すいません、すれ違いだとは思ったんですが同じような疑問持った人のレス
があったもんで。ちなみにこの手の質問はどのスレが適当なんでしょうか?
0888デフォルトの名無しさんNGNG
>887
多分ここ↓
UNIXプログラミング質問すれ Part4
ttp://pc5.2ch.net/test/read.cgi/tech/1095843584/

もしくはここ↓
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
ttp://pc5.2ch.net/test/read.cgi/tech/1094494997/
0889888NGNG
>887
場合によってはここ↓かもしれない
制御系なら俺に聞いてもいいぜ(5)
ttp://pc5.2ch.net/test/read.cgi/tech/1079102543/
0890887NGNG
>>888
Linux板はチェックしてたんですがUNIX板の方にプログラムスレがあったとは
気づきませんでした。有難うございます。
0891デフォルトの名無しさんNGNG
>>878
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=229
0892デフォルトの名無しさん NGNG
>>878
nkf -w を噛ませた上で
Javaを使う。
0893デフォルトの名無しさんNGNG
>890
残念、そこはム板のUNIXスレだ。
0894デフォルトの名無しさんNGNG
>>882
文字コードをそのままあつかわない方がよいよ
0895デフォルトの名無しさんNGNG
>>894
扱わないほうがいいとかいうレベルじゃなく
>(ch >= 'ー' && ch <= '九')
ぶっちゃけありえな〜い。
0896デフォルトの名無しさんNGNG
いや、ありうるだろ
0897デフォルトの名無しさんNGNG
>>896
意味無いけどな。
0898デフォルトの名無しさんNGNG
一や九が2byteな環境なら、その式だけ抜き出せばアリかもしれんが、
getcでナニを受け取る気だという意味でアリエナーイ
0899デフォルトの名無しさんNGNG
べつにcharsetのいかんによっては、ありうるかもしれん
ってことだろ
0900デフォルトの名無しさんNGNG
'九' の型が unsigned int になるなんて知らなかった…。
型は環境にもよるんでしょうけど。 というか、'' の中には
1バイト文字を1文字しか入れられなくて、 Cでは常にintで
文字コードが返されるもんだと思ってた。 1文字どころか
'ab'なんてのも許されるんですね。この場合エンディアンの
影響も受けるんですかね。''がよく分からなくなってきた。
0901デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1079102543/
0902デフォルトの名無しさんNGNG
>>900
一応、ANSI だと
  ・単純文字定数は int 型。
  ・1バイトを超えるときの値は、処理系定義。
因みに fgetc は
  ・ストリームから文字を unsigned char 型として取り出し
  ・int に変換して戻す。
0903デフォルトの名無しさんNGNG
fgetcたん萌え
0904デフォルトの名無しさんNGNG
VBとかにあるタイマーコントロールをCで実現するにはどうすりゃいいの?
0905デフォルトの名無しさんNGNG
fopenでweb上のファイルって開けますか?
0906デフォルトの名無しさんNGNG
>>904
Win32環境ならSetTimer()で。

>>905
できない。
0907905NGNG
>>906
やっぱできないですか。Cでweb上のファイルを開くやり方ってあるんでしょうか?
0908デフォルトの名無しさんNGNG
本当はSafeStrでも使えばいいんでしょうけど、
とりあえず社内で使うテストツールということで、
簡易的なチェックを入れることにしました。
あふれそうだったら不正な値なのでエラー終了決定です。

で、こんなの作ってみたんですけど・・・。

#define my_strcat(tgt_char, const_char, max_size) \
assert(strlen(const_char) <= max_size - strlen(tgt_char)); \
strncat(tgt_char, const_char, strlen(const_char));

#define my_strcpy(tgt_char, const_char, max_size) \
assert(strlen(const_char) <= max_size); \
strncpy(tgt_char, const_char, max_size);

char foo_str[MAX_FOO];
char tmp[MAX_NUM]; /* あくまで例です */
snprintf(tmp, MAX_NUM, "%d", num);
my_strcpy(foo_str, "test number=", MAX_FOO);
my_strcat(foo_str, tmp, MAX_FOO);
my_strcat(foo_str, "\n", MAX_FOO);

こんな感じにしてるんですけど、変なところありますか?
あと、あまり複雑or大規模にならずにもっとうまい方法があれば
ご教示いただけますか?

よろしくお願いします。
0909デフォルトの名無しさんNGNG
C言語なら(ちょっとは調べてから)俺に聞け! Part 91
0910デフォルトの名無しさんNGNG
>>906
出来ないとは限らないぞ。
出来る環境があるとは思えないが。
0911デフォルトの名無しさんNGNG
VBなら・・・
0912デフォルトの名無しさんNGNG
質問なんですが、VC++ってネットにつながないと使えないのですか?
0913デフォルトの名無しさんNGNG
>>908
そのマクロ、if や else の後ろで { } なしに使っちゃダメだぞ!
それと、戻り値を見てもいけない!お兄さんとの約束だ!
0914デフォルトの名無しさんNGNG
>>912
そんなこたぁない。
0915デフォルトの名無しさんNGNG
>>912
そんなこたーない
0916デフォルトの名無しさんNGNG
>>914
>>915
幸せになってね
0917デフォルトの名無しさんNGNG
(´-`).。oO(危うく「そんなこたーない」って書いたのを送信するところだった…)

>>912
詳しくは
  ★初心者にVisual C++を教えるスレ★ Part14
  http://pc5.2ch.net/test/read.cgi/tech/1093672937/l50
で訊くよろし。
ところで、
  1. >1 なんか読んでいない。
  2. >1 は読んだが、意味が解らなかった。
  3. スレ違い上等!
どれ?
0918デフォルトの名無しさんNGNG
while((cGet = fgetc(fp)) != EOF)

で、ファイルポインタであるfpのアドレスがずっと不変なのはなぜですか?
次々文字を読み込むからfpのアドレスが進んでいると思ったのに実際は違っていました。
ということはfpのなかにあるポインタらしきもののアドレスが動いているということなのかな?
教えて天才さん。
0919Ruby最強!!!!NGNG
rruuuuuuuuuuuuuuuuuuuuuuuuuubjjjjjjjjjjjjjjjjidffffffffffuuuuuuuuuuuuuuuuuuuuddiiiyyyyyyyyyyyyyyyyyyy
0920デフォルトの名無しさんNGNG
>>918
ファイルポインタは何だか分かってますか
0921デフォルトの名無しさんNGNG
fopenしたファイルの中の文字列だとおもって早3年。

実際はどーゆーもんですか??
0922デフォルトの名無しさんNGNG
VCでは

struct _iobuf {
    char *_ptr;
    int _cnt;
    char *_base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char *_tmpfname;
};
typedef struct _iobuf FILE;

こんな感じ。
0923デフォルトの名無しさんNGNG
>>921
ファイルを指すポインタです。
0924デフォルトの名無しさんNGNG
>>918
おまえが言っているファイルポインタはFILE型構造体へのポインタではないのかと
0925デフォルトの名無しさんNGNG

                 , ─ヽ
________    /,/\ヾ\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|__|__|__|_   __((´∀`\ )< 結局・・・わかりやすく説明してくれる神は現れなかったとさ。
|_|__|__|__ /ノへゝ/'''  )ヽ  \_____________________
||__|        | | \´-`) / 丿/
|_|_| 从.从从  | \__ ̄ ̄⊂|丿/
|__|| 从人人从. | /\__/::::::|||
|_|_|///ヽヾ\  /   ::::::::::::ゝ/||
────────(~〜ヽ::::::::::::|/ 

0926デフォルトの名無しさんNGNG
独習Cで勉強してるんだけど、練習問題が面倒で解く気しない。
こんな場合、さっさと次の単元に進んじゃっていいのかな?
0927デフォルトの名無しさんNGNG
>>926
まあそういわずやってみれ。
その本は読んだことないから一般的なことしか言えんが、
そこでやったことを理解できてるかどうか計る目安になる。
読む速さを競ってるわけじゃないんだから一旦立ち止まってみれ。

「こんな問題簡単ジャーン、なんかやる気しねーなー、もう頭に答浮かんでるし」
と思って実際に解こうとしたら意外な伏線があったりしててこずったりするもんだ。
0928デフォルトの名無しさんNGNG
>>926
練習問題そのままは(たいがいつまらないから)やらなくていいと思うけど、
自分流にアレンジして見ると面白くなる。
萌オタなら萌える問題に勝手に書き換えてみ。
創造的な学習は上達も早い。
0929デフォルトの名無しさんNGNG
 |<memory>
 │
 │          (1)確保           (2)確保
 |            FILE構造体の実体   読み込みbuffer
 | fp ← fopen() ←┌───────┐ ┌→┏━━━━━━━━┓
 |   (4)返却    ├            ┤  │ ┃            ┃
 |           ├ (3)初期設定 ←┼─┘ ┃            ┃
 |           ├  関連付け等 ┤    ┃            ┃
 |            ├           ┤    ┃            ┃
 |           └───────┘ .   ┃            ┃
 |                            ┃             ┃
 |                            ┗━━━━━━━━┛
 │

>>925
じゃ、大雑把に教えてヤル。イメージはこんな(↑)感じ。

fopen()を呼ぶと、メモリのどっかにFILE構造体の実体(細い□)と読み込みバッファ(太い□)を
確保して、FILE構造体にもろもろ情報をセットしてから、その先頭アドレスを返す。(1)〜(4)
んでfgetc()やfgets()などを呼ぶと、適宜ファイルの内容を読み込みバッファに読み込みつつ
そこから文字(列)を拾って、FILE構造体の中の変数を更新して返す。

ネ?fpに入れたポインタ、つまりFILE構造体の実体の先頭アドレスがコロコロ変わるハズが無いでしょ?
0930デフォルトの名無しさんNGNG
ヘッダ覗けば解る事を「教えて」とか言う人には
説明してもわからないでしょ。
0931デフォルトの名無しさんNGNG
非論理的。
0932900NGNG
>>902
なるほど、1バイト以上の文字を囲んだ場合は処理系定義
(implementation-defined?)なんですね。移植性は失われると
0933デフォルトの名無しさんNGNG
>>907
socketでソケットをオープンしてHTTPリクエストを送り、HTTPレスポンスヘッダを読み終えた直後で
fdopenするという方法は?
0934デフォルトの名無しさんNGNG
そもそも文字が1バイトかどうかが処理系定義じゃないか?
0935デフォルトの名無しさんNGNG
918の人じゃあないけど、お陰様で思わぬお勉強になりました。
自分はFILEポインタなんて弄くった事のない厨房です。今日初めて使ってみました。
で、ひとつちょっとした疑問が浮かんだんですけど、fscanf()呼ぶと\nとかの改行まで
読み込んでくれるんですか?
レベルの低い質問ですみません。
0936デフォルトの名無しさんNGNG
そりゃ指定したフォーマットに従って読み込みますわな、
そういう関数なんだし。
0937デフォルトの名無しさんNGNG
なるほど。もう少し突っ込んだ質問をさせてください。
ちょっと迷惑ですが、ソースを投下します。

#include<stdio.h>
void main( int argc ,char **argv )
{
FILE *sfp ,*lfp ;
char st[200] ;
if( argc < -1 )
{
printf( "ドラッグしな!" ) ;
}
else
{
sprintf( &st[0], "%s.bak" , *(argv+1) ) ;
lfp = fopen( * ( argv+1 ) ,"r" ) ;
sfp = fopen( &st[0], "w" );
while( fscanf( lfp, "%s" ,&st[0] ) != EOF )
{
fprintf( sfp, "%s\n", &st[0] ) ;
}
fclose( sfp ) ;
fclose( lfp ) ;
}
}
0938デフォルトの名無しさんNGNG
void main はちょっと恥ずかしいかもしんないけど。
で、>>937なんですけど、確か1年前学校で習いました。
作ったって言ってもそれ引っ張り出して、ちょっと改良しただけですけど、

学校ではこう習いました。

 fscanf( lfp, "%s" ,&st[0] で、\0まで文字列を読み込んで、
 fprintf( sfp, "%s\n", &st[0]  で、●●.bak(ファイル名)に書き出す。
そんで、lfpが次の行に移動して、また\0まで読み込んで、を繰り返す。

 けど、これでは明らかに説明の食い違いを感じましたのです。
 918の人もきっと同じような解釈をしていたという事でしょうか。

結論として、lfpが次の行に移動するわけではなく、\nを読み込んで
次の行に行くって事で良いですか??
長文・・・どうか大目に見てください。
 
0939デフォルトの名無しさんNGNG
 
printf( "ドラッグしな!" ) ; ←自分用に作ったんでこうなってます(鬱

俺の解釈・・・間違ってますか?
先生に習った解釈をかえるのって結構不安なんですょ。
最後の頼りになるはみなさんの意見や指摘だけ。
 
0940デフォルトの名無しさんNGNG
それはストリームの概念が理解できていないのではないか?
[00][01][02][03][04][05][06][07][08][09][10][11][12][13][14][15]...
このような情報の「流れ」(まさに「ストリーム」)を考える。最初に[00]を読む。
一度[00]を読むと次は[01]の順番。[01]を読んだら次は[02]の順番。FILE
構造体にはこのような、次に読み取る位置の情報が記憶されていると思えば
いい。(実際、手元の実装では、struct FILEにpositionというフィールドがある。)
fscanfはこの読み取り位置を更新する。実際にファイルポインタのポインタと
しての値を操作しているわけではない。だから*lfpは更新されているけれども
lfpは変わらない。
0941デフォルトの名無しさんNGNG
if( argc < 2 )
0942デフォルトの名無しさんNGNG
>>937
> lfpが次の行に移動するわけではなく、\nを読み込んで
> 次の行に行くって事で良いですか??
まぁそう。
つか、マニュアルにどういう動きをするのかきちんと書いてある。
「先生に習った解釈では〜」とか言う前に、まずマニュアルを参照すること。
0943デフォルトの名無しさんNGNG
なるほど。おっしゃるとおりでストリームって概念が自分は理解できていなかったようで。。。
いま初めて聞きました。
読み込んだデータをズラーっと横に並べる感じかとイメージしている現在です。
ということは、読み込むbufferの領域は結構でかそうですね。
なにはともあれ、少々勉強不足の気がいたします。
貴重な解説ありがとうございました!
あと自分は環境を明示してなかったけど、VCです。インクルードファイル調べたら>>922
と同じのがありました。
見てもあんまわからなかったけど、次に調べるべきキーワードとか発見できてよかったっす。m(._.)mペコ
0944デフォルトの名無しさんNGNG
>>942
そうですね、返す言葉もないっす。次から・・・というか、気をつけるようにはしています。
けどマニュアルってなんかわかりにくいです(;´Д`)
慣れるまで辛そうですが、頑張ってみます^^
お二方ともアリガトウです!!
0945デフォルトの名無しさんNGNG
>>943
ただ、インクルードファイルの内容を前提にプログラム組むなよ。
FILE構造体のメンバに直接アクセスしようとは思わないことだ。
0946デフォルトの名無しさんNGNG
mallocで取得したメモリー領域は4バイトアラインメントだと思っていたんですが、
ググってたら、 GNU libc のmalloc() は常に 8 バイトにアラインメントされたメモリアドレス
を返すとありました。でも
typedef struct {
int a;
int b;
char c;
} tmp_t;

とやって printf("%d\n", sizeof(tmp_t))
とやると12バイトと表示されます。
8バイトアラインメントだとすると16バイトになる気が
するのですが、これはやっぱり8バイトアラインなんでしょうか?
0947デフォルトの名無しさんNGNG
その構造体とmallocって関係あるの?
0948デフォルトの名無しさんNGNG
mallocが8バイトアラインメントの領域のアドレスを返すということと、
スタックに確保した自動変数領域がそのように確保されるかどうかと
いうのは別の話なのでは?
0949デフォルトの名無しさんNGNG
>>946
mallocと全く関係ない。
> とやって printf("%d\n", sizeof(tmp_t))
> とやると12バイトと表示されます。
構造体のアライメントが4バイト単位だったということだろう。
0950946NGNG
>>947-948
ああ何か混乱して書いてました、すみません。
tmp_t*p = (tmp_t*)malloc(sizeof(tmp_t));
した時、 sizeof(tmp_t)で計算された12バイトという値がmalloc
に渡ったとします。その場合、malloc(12)は 16バイト分の
メモリ領域を取り、その先頭ポインタをpに返すという事になる
のでしょうか?
0951デフォルトの名無しさんNGNG
>>950
先頭アドレスが8で割り切れるように12バイト分のメモリ領域を取り、
そのアドレスを返す。13バイト目移行のアクセスによる影響は不定。
0952946NGNG
>>951
どうもありがとうございます。大変良く分かりました。
0953デフォルトの名無しさんNGNG
関数からの返り血を2つ3つに増やせませんか?
0954デフォルトの名無しさんNGNG
>>953
増やせません
引数をポインタで渡すか、グローバル変数を使うしかして
0955デフォルトの名無しさんNGNG
構造体じゃだめなん?
0956デフォルトの名無しさんNGNG
てかね、「関数」の定義って数学ではそういうもんですから。
その意味では関数、というかfunctionてネーミングはぴったし。
0957デフォルトの名無しさんNGNG
別に、一つの関数で二つ以上の値が決定してもいいんじゃ?
直積を考えれば一つになるけど。
0958デフォルトの名無しさんNGNG
>>953
仮にそのようなことが出来たとして、

x = f(a); /* f(a) は 2 と 3 を返す関数 */

って書いたとき、x には何が入れば気が済むの?

(しかし、世の中には2つや3つどころではなく、
無限の返り血を持つ関数を作る事が出来る言語が
あるのも事実だけどな)
0959デフォルトの名無しさんNGNG
>>958
リスト形式で。
0960デフォルトの名無しさんNGNG
(x, y) = f(a);
きっとこんな感じ
0961Ruby最強!!!!NGNG
Rbuby ,?>>>>>>>>>>>>>>>>>>>>>>>>>」Cghengpo えっっっっっっっっw
Rbuy細工世婦!!!!!!!!
Rubysaikyou !」

Rubyty!!!!!!!!
0962Ruby最強!!!!NGNG
誇らしいですね。Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>Ruby .?????????>>>>>>>>>>>Ruby!
0963デフォルトの名無しさんNGNG
>>Ruby厨
作者が異常なまでにプライド持っている言語は
ユーザまでその言語を崇拝しだすのか。
0964デフォルトの名無しさんNGNG
>>959
ではリストを一つ返せばいいのでは?

返り血一つで足りるだろ?
0965デフォルトの名無しさんNGNG
>>963
961=962=963
荒らしたいだけの無能
0966Ruby最強!!!!NGNG
Rubyのためなら死ね
0967デフォルトの名無しさんNGNG
自分が何がわからないのかわかりません。
どうしたらいいですか?
0968デフォルトの名無しさんNGNG
究極の質問にこたえてくだちいこのボケども

float a;
float b;
float c;

と延々とかくのと

float a,b,c,・・・;

と書くのはどっちが良いのか教えてくれにょ
どちらもかわらないのかにょー?
0969デフォルトの名無しさんNGNG
>>968
あんたはどっちがいいと思うんだ?
先ずはそれを聞かせてもらおうじゃないか。
0970デフォルトの名無しさんNGNG
時と場合に寄りますが何か?何か問題でも?
0971デフォルトの名無しさんNGNG
>>968
まとまりごとに書くのがよろしい。
ただし、ポインタは一行ごとに書くのがよろしい。
このようなコーディングルールは必ず定めるようにしましょう。
また、定められたコーディングルールには必ず従いましょう。
float count1, count2;
float a, b, c;
float tmp;
float x, y;
float* test1;
float* test2;
float* test3;
0972デフォルトの名無しさんNGNG
>>969-971
ちゃんと答えてくださいボケども
0973デフォルトの名無しさんNGNG
こういうのはやめて欲しい。
float count1, count2,
   a, b, c,
   tmp,
   x, y,
   *test1, *test2, *test3;
#実際いるんだ。10年選手なんかで。
0974デフォルトの名無しさんNGNG
cで読み込める最大テキスト量って決まってるんですか?
0975デフォルトの名無しさんNGNG
>>974
No
0976デフォルトの名無しさんNGNG
>>974
無限のテキストでも対応可能です。
0977デフォルトの名無しさんNGNG
>>973
止めて欲しいなら直接言えよ。

言えないのか?(w
0978デフォルトの名無しさんNGNG
>>977
>973ではコメントしなかったが、その10年選手には指摘したよ。
その他のごみためのようなコーディングスタイルと併せて。
0979デフォルトの名無しさんNGNG
LPFLOAT test1, test2, test3;
0980 ◆FIcNi4f8js NGNG
>>973
countをfloatで宣言してるのはどうかと思う。
0981デフォルトの名無しさんNGNG
>>980
>971に言ってくれ。
0982デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1096696253/
0983デフォルトの名無しさんNGNG
>>971
>float* test1;

うわ、キモ!
ホントに居るんだ、こんな書き方するやつ。
0984デフォルトの名無しさんNGNG
わざわざ auto をつけてる人いますか?
0985デフォルトの名無しさんNGNG
* auto テレポーター *
0986デフォルトの名無しさんNGNG
いしのなかにいる
0987デフォルトの名無しさんNGNG
>>984
おれおれ
0988デフォルトの名無しさんNGNG
>968
WIZネタかよw
0989974NGNG
975,976ありがとうございます。
ショボノートPCで1GBほどよませるよていです。
0990デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
int *p,*q;
int a,b,c;
printf("数A:");
scanf("%d",&a);
printf("数B:");
scanf("%d",&b);
p=&a;
q=&b;
c=*p;
*p=*q;
*q=c;
puts("2つの値を交換しました");
printf("数A:%d\n数B:%d",a,b);
return(0);
}

ポインタを使って2つの数字を交換するCプログラムなんですけど、
これ以上工夫する事は出来ますか?教えてください。
0991デフォルトの名無しさんNGNG
int a, b, c;
c = a;
a = b;
a = c;
0992991NGNG
しまった、見間違えた。
忘れてくれ。
0993デフォルトの名無しさんNGNG
>>989
お好きにどうぞ。
C言語では扱えるけど、君のマシンのメモリが足りない可能性はあるよね。
0994デフォルトの名無しさんNGNG
>>990
#include<stdio.h>
int main(void)
{
int *p,*q;
int a,b,c;
char s[]="数A:";
char t[]="数B:";
char u[]="2つの値を交換しました";
char v[]="%d";
char w[]="%s%s";
char x[]="\n";
char y[256];
char z[256];
printf(s);
scanf(v,&a);
printf(t);
scanf(v,&b);
p=&a;
q=&b;
c=*p;
*p=*q;
*q=c;
puts(u);
sprintf(y,w,w,x);
sprintf(z,w,y,w);
sprintf(y,z,s,v,t,v);
printf(y,a,b);
return(0);
}
0995デフォルトの名無しさんNGNG
#include<stdio.h>
#define p printf
#define s scanf
main(){int a,b;char*x="数A:",*y="数B:";return p(x),s("%d",&a),p(y),s("%d",&b),p("2つの値を交換しました\n%s%d\n%s%d",x,b,y,a),0;}
0996ビル・ジョブスNGNG
#include<stdio.h>
int main(void)
{
int a, b;
int *pA = &a,*pB = &b;
printf("数A:");
scanf("%d", pA);
printf("数B:");
scanf("%d", pB);
*pA ^= *pB;
*pB ^= *pA;
*pA ^= *pB;
printf("2つの値を交換しました\n");
printf("数A:%d\n数B:%d\n", a, b);
return 0;
}
0997ビル・ジョブスNGNG
a,bがunsignedじゃないからダメダメですね。oO
逝ってきます。
0998デフォルトの名無しさんNGNG
んや。
問題になるのはマクロにしたときa,bが同じ変数の場合。
0999デフォルトの名無しさんNGNG
1000?
1000デフォルトの名無しさんNGNG
1000!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。