13/04/22 04:47:19.70
C言語の入門者向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 113
スレリンク(tech板)
★過去スレ
URLリンク(makimo.to:8000)
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 164代目
スレリンク(tech板)
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
# サイズが大きい場合はアップローダ等を利用してください。
URLリンク(codepad.org)
URLリンク(ideone.com)
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
2:デフォルトの名無しさん
13/04/22 05:45:22.91
< `∀´>ニダー
3:デフォルトの名無しさん
13/04/22 08:34:20.72
>>1
おつおつ~
4:デフォルトの名無しさん
13/04/22 16:27:33.64
ちんこ
5:デフォルトの名無しさん
13/04/22 20:35:36.96
画像処理プログラミングの話になると思うけど
自動的に滑らかな輪郭のシャボン玉の形を作成したいんだけど
どんな実装したらいいですかね?かなり困ってて.....
一応C言語を使用します
6:5
13/04/22 20:38:58.94
アイディア下さい
曲線をパーツとして作っていって繋げたらカクカクしそうだし
7:デフォルトの名無しさん
13/04/22 20:44:07.40
画像をいっぱい用意して順番に表示したらいいよ
8:デフォルトの名無しさん
13/04/22 20:44:47.29
>>5
外形とグラデーションを別々に描画してから後で合成する
9:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/22 20:48:19.59
>>5-6
ベジェ曲線、スプライト曲線など
透明な背景に不透明度(α値)付の描画で画像作成
10:5
13/04/22 20:52:26.45
>>8
意味がちょっと分かりません
11:5
13/04/22 20:59:50.31
>>9
ありがとうございます
スプライト曲線が使えそうですね
12:5
13/04/22 21:02:06.91
手間掛けさせて申し訳ないんですが五角形でスプライン曲線で滑らかな
閉曲線作るプログラム書いてくれませんかね?Cは画像ライブラリもってないんで
Swingで...
13:デフォルトの名無しさん
13/04/22 21:11:16.18
解説をするスレであって、かわりに書いてやるスレじゃないぞ。
14:5
13/04/22 21:11:55.04
>>13
すいません
Cのグラフィックスライブラリ教えて下さい
15:デフォルトの名無しさん
13/04/22 21:21:08.08
Win32でもAPIでベジエとかあったろ
Linuxは知らん
16:デフォルトの名無しさん
13/04/22 21:24:26.98
OpenGL 2.0
17:5
13/04/22 21:31:23.49
ありがとうございます
18:デフォルトの名無しさん
13/04/22 21:46:01.82
リヌクス
19:デフォルトの名無しさん
13/04/23 03:24:53.08
子供はけん玉遊びでもしていなさい。
20:デフォルトの名無しさん
13/04/23 11:41:37.66
FILE *fp
sub(){
static char buf[38];
char CHR[7]
fgets(buf,36,fp);
fscanf(fp,"%6s\n",CHR);
puts(CHR);
}
main(){
fp = fopen("test.txt", "r");
sub();
}
こんなプログラムが書きたいんですが,putsで表示したCHRがフフフフフってなります.
おそらくfpがsub関数に渡せていないのが問題だと思うのですが,main関数からどうやって渡せばいいでしょうか?
グローバル関数は使いたくないのでそれ以外の方法でお願いします.
21:デフォルトの名無しさん
13/04/23 11:42:57.94
俺が試してみると フフフノフフフ になった
22:デフォルトの名無しさん
13/04/23 11:46:13.88
グローバル変数を消す
sub() { → sub(FILE *fp) {
main() {
FILE *fp = fopen("test.txt", "r");
sub(fp);
}
CHRがフフフフフ は別件だと思うがなー
23:デフォルトの名無しさん
13/04/23 11:49:02.26
ちゃんとfopenの戻り値見ろよ
24:デフォルトの名無しさん
13/04/23 11:55:19.29
ちなみにsubの方でfopen()する場合はポインタのポインタを渡してそれに代入しないと値が
戻らない
sub(FILE **fp) {
*fp = fopen("test.txt", "r");
}
main() {
FILE *fp;
char CHR[7], buf[100];
sub(&fp);
fgets(buf,36,fp);
fscanf(fp,"%6s\n",CHR);
...
return 0;
}
最初の頃はこれではまったわ
C++ならFILE*& fp) とポインタのリファレンスを使うと呼び出し元の&は省略出来る
それとこれはFILEだからいいけど、コンソールは基本的にgets()系とscanf()系は混合
すると改行文字が変な働きをして動作がおかしくなるので、FILEもどちらか一方に
統一してるわ
25:20
13/04/23 13:03:32.07
すいません.
別関数にtxt行数数えるコードがあるうのを失念してまして,rewindし忘れてました.
うまくいきました
26:デフォルトの名無しさん
13/04/23 13:33:00.27
何回リロードしても全然書き込みがないと思ったら、昨晩から大規模規制が行われてるのか
27:デフォルトの名無しさん
13/04/23 19:14:33.77
&CHRじゃないの?
28:デフォルトの名無しさん
13/04/23 19:42:37.78
何でそう思ったのかな
29:デフォルトの名無しさん
13/04/23 20:23:07.10
ここにいる奴らはオブジェクト指向なんだよな?
30:デフォルトの名無しさん
13/04/23 20:58:51.76
c言語内でGZの解凍するのってどうすればいいんでしょうか?
@visual stadio
31:デフォルトの名無しさん
13/04/23 21:11:25.64
ライブラリの命令で
32:デフォルトの名無しさん
13/04/23 21:27:01.19
いまいちライブラリの使い方がわからないのですが、どこかからlibファイルをとってきてヘッダを指定すればできるんですかね?
33:デフォルトの名無しさん
13/04/23 21:47:32.58
どなたか教えてください。
キーボードから入力された文字列の中に、特定の文字の列"abc"が含まれるなら"found!"を出力し、無ければ"Not found!"を出力するプログラムをつくれ。
入力は右の文を使います。char str[50];scanf("%s", str);
○文字列の探し方:
1.str[]の中から、まず先頭の文字'a'を探す。しかし、文字列の終端に達すると'\0'が現れるので、これが現れたら見つからなかったことになる。
2.'a'が見つかったら、次の要素が'b'かチェック。もし'b'ではないなら1に戻る。
3.'b'が見つかったら、さらに次の要素が'c'かチェック。もし'c'ではないなら1に戻る。
34:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/23 22:14:09.10
>>33
#include <stdio.h>
int main(void){
int i; char str[50];
printf("入力: ");
scanf("%s", str);
for(i=0;str[i]!='\0';i++)
if(str[i]=='a'&&str[i+1]=='b'&&str[i+2]=='c')
{printf("found!\n");return 0;}
printf("Not found!\n");
return 0;}
35:デフォルトの名無しさん
13/04/23 22:16:19.38
GZのフォーマットを調べて自前で。
36:デフォルトの名無しさん
13/04/23 22:27:02.19
>>35
まじすか
そんなに難しくない?
37:デフォルトの名無しさん
13/04/23 22:32:56.46
また宿題を持ち込んでるのかwwwwww
38:デフォルトの名無しさん
13/04/23 22:35:31.58
dllで良いのでは
39:デフォルトの名無しさん
13/04/23 22:46:12.56
なんとかプログラムをつくってみましたが未だにエラーが出てしまいます。どなたかご指摘をお願いします。
問題は、x=10に対してe^xの値をテイラー展開の式を使って解け。ただし、項の大きさが10^(-8)以下になるまで和を取りexp(x)の値と比較せよ。
#include <math.h>
int main(void){
float x,t,s,a;
x=10.0;
t=1.0;
s=t;
exp(x)=1.0;
do{
t=t*x/a;
s=s+t;
exp(x)=exp(x)+1.0;
}while(fabs(t)>1.0e-8);
printf("%e\n",exp(x));
return 0;
}
40:デフォルトの名無しさん
13/04/23 22:48:21.34
>>38
それがどーやってdllファイルを入手するのか、どーやって使うのかよくわからないんです。
もうまる2日ぐぐって格闘してるんですが…
41:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/23 22:52:12.94
>>39
exp(x)は値を返すだけの関数なので値を代入できない。値を代入できるのは変数。
#include <stdio.h>がない。
42:デフォルトの名無しさん
13/04/23 22:59:25.63
片山渾身の自作自演
43:デフォルトの名無しさん
13/04/23 23:01:49.03
>>41
回答ありがとうございます。
exp(x)との比較はどうすれば良いですか?
イマイチわかりません
44:デフォルトの名無しさん
13/04/23 23:02:01.22
>>40
gunzip DLL
45:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/23 23:05:18.11
>>43
差の絶対値
46:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/23 23:09:32.31
gunzipはLinuxでメジャーな解凍プログラムだよね
MinGW版だとwindowsでも使えるけど
47:デフォルトの名無しさん
13/04/23 23:22:00.74
>>45
何度もすみません。その差の絶対値の取り方がわからないんです。教えていただけないですか?
48:デフォルトの名無しさん
13/04/23 23:24:01.44
なんでこんな馬鹿にかまってんの
先生に聞けよ
49:デフォルトの名無しさん
13/04/23 23:30:20.06
友達いないんだろ
察しろよ
50:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/23 23:44:29.27
近似値としてeという変数を使うなら近似値との差はe - exp(x)だから差の絶対値はfabs(e - exp(x))
51:デフォルトの名無しさん
13/04/23 23:54:59.37
>>40
DLLの使い方ならともかく、DLLの入手方法なんて
圧縮解凍ソフトの「ユーザとしての」初心者レベルの話だぞ…?
ソフトウェア板にでも行きなされ
52:デフォルトの名無しさん
13/04/24 00:05:53.00
↑
おまえがどっかいけばすむ話かもしれないね
53:デフォルトの名無しさん
13/04/24 00:07:53.04
効いてる効いてる
54:デフォルトの名無しさん
13/04/24 00:15:45.73
ズタズタにされたいのか?調子こいてるとリアルで痛い目に会う事になるから注意すべき
55:デフォルトの名無しさん
13/04/24 00:18:53.49
あ、産業廃棄物が何かしゃべってる!
効いてる効いてる
56:デフォルトの名無しさん
13/04/24 00:19:04.34
たいがいにしろよカスが
マジで親のダイヤの結婚指輪のネックレスを指にはめてぶん殴るぞ
多分奥歯が揺れるくらいの威力はあるはずだしね
57:デフォルトの名無しさん
13/04/24 00:20:01.26
ダイヤは叩くと割と簡単に割れるぞ
58:デフォルトの名無しさん
13/04/24 00:21:25.82
>>57
なんだおまえ?ズタズタに引き裂いてやってもいいんだぞ
あまり調子こくとリアルで痛い目を見て病院で栄養食を食べる事になる
59:デフォルトの名無しさん
13/04/24 00:22:44.33
あれれ?
びびって逃げちゃったのかな?
60:デフォルトの名無しさん
13/04/24 00:29:39.50
あ、産業廃棄物が何かしゃべってる!
効いてる効いてる
61:デフォルトの名無しさん
13/04/24 00:36:42.30
お前らは一級廃人のおれの足元にも及ばない貧弱一般人
その一般人どもが一級廃人のおれに対してナメタ言葉を使うことでおれの怒りが有頂天になった
この怒りはしばらくおさまる事を知らない
62:デフォルトの名無しさん
13/04/24 00:52:26.51
タイヤは叩いても簡単には割れないぞ
63:デフォルトの名無しさん
13/04/24 00:53:37.60
おいィ?お前らは今の言葉聞こえたか?
64:デフォルトの名無しさん
13/04/24 05:13:13.22
>>58
やってみれば?
>>56
>親のダイヤの結婚指輪のネックレス
なにそれ?あと
>親
(爆笑)自分のじゃないの?
65:デフォルトの名無しさん
13/04/24 07:18:06.76
ブロントにマジレスしてる奴ってなんなの?
66:デフォルトの名無しさん
13/04/24 08:19:31.34
>>65
へえ、こんなのがあったんだ昔から踊らされてしまったねえww
67:デフォルトの名無しさん
13/04/24 13:22:34.22
発狂するな
68:デフォルトの名無しさん
13/04/24 18:29:41.80
プログラミングって
ファイル入出力以外の事をシーケンス制御って言うんですか?
中学校でプログラミング必修化するっていう記事で基本的なプログラミング
(ファイル入出力・シーケンス制御)等をやるとか書いてました。
69:デフォルトの名無しさん
13/04/24 18:41:56.71
Googleという便利なサイトがあります
70:デフォルトの名無しさん
13/04/24 18:44:33.45
というか中学生もプログラミング必修か
こりゃプログラマーの立場がww
71:デフォルトの名無しさん
13/04/24 18:50:02.42
とりあえずC言語やるのかな?一番簡単だし
72:デフォルトの名無しさん
13/04/24 19:00:03.47
最初は
C以外あり得ねー
中2 春C 秋C++
中3 春GUI 秋ネットワーク
これくらいで無理なく幅広く勉強できるんじゃないか?
73:デフォルトの名無しさん
13/04/24 19:04:04.08
BASIC(笑)
74:デフォルトの名無しさん
13/04/24 19:11:44.42
Cが一番簡単とかバカか
75:デフォルトの名無しさん
13/04/24 19:14:50.11
でけぇ釣り針だなあ
76:デフォルトの名無しさん
13/04/24 19:27:45.40
>>74
だから基礎的な文法とかはって事
中学校の授業レベルの話だろう
77:デフォルトの名無しさん
13/04/24 21:16:11.12
アセンブリ言語は簡単だがPerlは難しくて挫折したという話は聞いた。
78:デフォルトの名無しさん
13/04/24 21:19:34.88
Cはプロ向けだろう
C++の方が初心者向きだが、基本からとなるとPASCALの方が良いかな
79:デフォルトの名無しさん
13/04/25 01:17:22.70
西部労働レストラン
80:デフォルトの名無しさん
13/04/25 01:19:15.47
10 'SHASEI
20 screen 3: cls 3
30 line(0,160)-(330,160)
40 line(0,240)-(330,240)
50 for S=-1 to 1 step 2
60 for T=int(-sqr(2000)) to 60
70 X1=T: Y1=sqr(3600-X1^2)
80 X=X1+330+int(sqr(2000)): Y=-Y1*S+200
90 pset (X,Y)
100 next: next
110 for R=1 to 10
120 for S=0 to 14
130 for T=7 to 0 step -7
140 for U=0 to 15
150 circle (460+S*25,200+2*S^2),U,T
160 next: next: next: next
170 line input "CLS 3 OK?";A$
180 cls 3
190 end
81:デフォルトの名無しさん
13/04/25 08:57:29.17
CとC++を最初に薦めるやつを信用してはいけない
82:デフォルトの名無しさん
13/04/25 10:35:42.22
大きな釣り針
83:デフォルトの名無しさん
13/04/25 21:30:05.20
>>1
乙
84:デフォルトの名無しさん
13/04/25 22:41:02.83
>>81
Cが基礎だって言うやつって、言語が低水準であることと基礎と区別がつかないのかね。
PCのアーキテクチャが分かるってなら、アセンブラでも進めりゃいいのに。
85:デフォルトの名無しさん
13/04/25 22:49:16.68
極論出たよ
86:デフォルトの名無しさん
13/04/25 22:58:29.41
C言語は低級言語でありながらコンパイラの支援が大きいのが便利
アセンブラは自分で注意しないといけない部分が多すぎる
87:デフォルトの名無しさん
13/04/25 23:01:26.35
C言語はアーキテクチャをあまり意識しなくてもいいし組み込みでも何でも使える
機械制御とかにもすぐ使えて便利
88:デフォルトの名無しさん
13/04/25 23:18:16.13
COMファイルのあったDOS時代ならともかく、
今の環境でアセンブラだけで実行ファイル作るのはかなり困難
89:デフォルトの名無しさん
13/04/25 23:22:10.69
時代はインラインセンブルァ
90:デフォルトの名無しさん
13/04/25 23:22:45.05
マイコンならまだアセンブラ。というかアセンブラがわからないと
話にならない
91:デフォルトの名無しさん
13/04/25 23:24:00.21
ああマイコンならそうだろうね
でもプログラム初心者にマイコン勧めるかというと
92:デフォルトの名無しさん
13/04/25 23:26:05.72
個人的にはアセンブラを教育に使うのはアリだと思うんだけど、
CPUによって独自なところが残念。覚えてもほとんど役に立たない。
現実、アセンブラに近いくらい簡単で、覚えて役に立つのはCだと思う。
もしJavaやるなら、Cをやったあとでいいと思う。
93:デフォルトの名無しさん
13/04/25 23:31:20.79
インラインアセンブラがx64からVC++で使えなくなったのがね・・・(gccでは使えるけど)
組み込み関数で近い事はできるしレジスタ効率もコンパイラ任せにできるんだが、
ちと物足りない
94:デフォルトの名無しさん
13/04/25 23:34:20.19
H300でいいよ
95:デフォルトの名無しさん
13/04/26 00:02:11.99
繰り返し
順番
分岐
この3つが基本だろ?
オブジェクト指向はややこしいから普通にCでいいじゃん
中学生の頭なら3週間で連立方程式を解くプログラム作れるように
なるでしょ
96:デフォルトの名無しさん
13/04/26 00:12:56.15
printf()
scanf()
for()
while()
goto()
こんなシンプルな文法の言語のどこが難しいんだwww
97:デフォルトの名無しさん
13/04/26 00:19:14.17
goto()
98:デフォルトの名無しさん
13/04/26 00:32:54.63
別にプログラマーの育成のために学校でプログラミングやるわけじゃないだろう。
だからCでいいかと。javaとか難しすぎるわ。
99:デフォルトの名無しさん
13/04/26 00:59:50.50
難しくはないが、Cと比べると覚える質の割に量が無駄に多い
100:デフォルトの名無しさん
13/04/26 05:55:00.08
よく知らんが、VBAとかなんじゃね…?
なんだかんだでBASIC系の扱い易さは残してるし
プログラマに限らず扱う言語ではあるし
101:デフォルトの名無しさん
13/04/26 08:05:46.17
VBAあらばなんでも作れるしな
102:デフォルトの名無しさん
13/04/26 11:10:33.30
>>85
アスペきたよ。
低水準言語→基礎 って考えがバカらしいって例で極論だしてるのにそれに極論ってツッコミ入れてどうすうる。
103:デフォルトの名無しさん
13/04/26 11:15:06.03
Cは言語仕様が小さいから簡単とか言ってる連中ってほんとうにコードを書いたことあるのかね。
コンパイラでも作るなら言語仕様が小さくてシンプルなほうが楽だけど、その言語で
なにか処理を書くなら、機能の少ない言語のほうがコードが複雑になるって、ふだんなにか
コードを書いてる人間なら分かるよな。
104:デフォルトの名無しさん
13/04/26 12:16:47.22
int ary[256];
sizeof ary;
このときsizeofに渡されるのはaryの先頭アドレスでしょうか
それともary全体を渡すイメージでしょうか
教えてくださいよろしくお願いいたします
105:デフォルトの名無しさん
13/04/26 12:57:26.91
その場合のsizeofが返すのは配列全体のサイズってことさえわかってたら、
どっちを渡すイメージかなんてどうでもいいだろ
106:はちみつ餃子 ◆8X2XSCHEME
13/04/26 13:02:05.13
>>104
ary の型は int[256] だよ。
なので sizeof は ary 全体のサイズ (int が 4 バイトなら 1024 ということになる) を返す。
ポインタ型になるのは条件が揃ったときにだけ暗黙の型変換が適用されるからで、
本来は配列型とポインタ型とは別物。
107:デフォルトの名無しさん
13/04/26 13:17:21.06
アスペとかいうけどプログラマならアスペを誇りに思うべきだろ
むしろアスペじゃないプログラマとかいるのかと
108:デフォルトの名無しさん
13/04/26 13:31:33.45
floatがあるのにdoubleがあるのは何故?
指数表示じゃ分りにくいし
109:デフォルトの名無しさん
13/04/26 13:36:52.64
アスペは褒め言葉だろ
サイコパスは軽蔑の言葉だが
110:デフォルトの名無しさん
13/04/26 13:52:26.62
アスペだけならいいんだけど
大抵のアスペは強烈な自己愛も併発しててキチガイ化してる
111:デフォルトの名無しさん
13/04/26 14:03:17.65
でもPM SE PGはほとんどがアスペだぞ?
誇りに思うべき
112:デフォルトの名無しさん
13/04/26 14:10:59.12
PGがアスペだからアスペを誇りに思うべきって理屈がすごいな。
113:デフォルトの名無しさん
13/04/26 14:10:59.39
確かにシステムを考える人間はアスペ多いわ
114:デフォルトの名無しさん
13/04/26 14:18:49.43
連立方程式、実際組んでみようと思ったことがある、中学生時代
構文解析からやる必要があるから挫折したけど
115:デフォルトの名無しさん
13/04/26 14:29:03.65
簡単な迷路ゲームとかでポインタが壁にあたったらアウトみたいなのあるけど
あれどういう仕組み?あんなアナログ線だと当たり判定どうしてんの?
116:デフォルトの名無しさん
13/04/26 14:29:57.60
>>112
その「誇りにおもうべき」という部分が自己愛なんだよな
アスペにはこの思考がない
117:デフォルトの名無しさん
13/04/26 14:31:04.92
構文解析必要か?
係数だけ入力させればいいじゃん
118:デフォルトの名無しさん
13/04/26 18:30:11.26
>>103
プラモデルみたいに既にある程度形が出来上がっているパーツを組み立てるより、
レゴブロックでモジュールを作りそれを組み合わせて一つの構造物を作り上げたほうが良い。
…と例えてみる。
119:デフォルトの名無しさん
13/04/26 18:56:25.94
連立方程式の解なんかもうアルゴリズムあるしいまさら覚える必要ない
120:デフォルトの名無しさん
13/04/26 19:04:31.55
>>119
お前はアホか
121:デフォルトの名無しさん
13/04/26 19:34:20.90
シンプレックス法のお題とかどうだ
122: ◆QZaw55cn4c
13/04/26 19:45:15.81
>>121
摂動検知が結構やっかい
123:デフォルトの名無しさん
13/04/26 20:22:39.83
並び替えてできる可能な文字列を列挙するプログラムが作りたいです。
例えばchar *x="abc";として
abc
acb
bac
bab
cab
cac
みたいな感じにしたいです。
アルゴリズムてかコードお願いします。
124:123
13/04/26 20:30:05.52
バケッツソートですかね?
とりあえず良く分かりません。
125:デフォルトの名無しさん
13/04/26 20:30:52.82
>>123
作りたいなら作れよ
作って下さいじゃないんだろ
126:123
13/04/26 20:34:05.03
>>125
作れないんです
てか結構難しいですよね?
127:デフォルトの名無しさん
13/04/26 20:36:55.85
かんたん
128:123
13/04/26 20:38:35.93
>>127
文字列分解しないといけないので難しいです
129:デフォルトの名無しさん
13/04/26 20:49:12.99
出されたお題をコーディングして罵られるスレ
スレリンク(tech板)
こっちで聞いてみては如何に
結果がn!(n=strlen(x))なので再起関数を使う予感ガス
ぼくにもよくわからない
130:デフォルトの名無しさん
13/04/26 21:06:38.67
>>123
これは難しいぞ
abcをどう並べ替えたらcacになるんだよ。
解説してくれ。
131:デフォルトの名無しさん
13/04/26 21:20:55.30
>>123
babとかcacとか意味が分からん
132:デフォルトの名無しさん
13/04/26 22:31:24.06
>>123
URLリンク(ideone.com)
再帰だとこんな感じで
133:デフォルトの名無しさん
13/04/26 22:40:06.10
>>132
つダブル
そういう事です。
お願いします......
どうすれば?
134:デフォルトの名無しさん
13/04/26 22:44:59.23
例:aabc
4!/2!=8通りだけど
それを考慮してなくて
16通り全部書いてしまってます。
どうすればいいでしょう?
基本はそれでいいと思います。
135:デフォルトの名無しさん
13/04/26 22:56:38.02
ちょっと何いってるのかわかんない
136:デフォルトの名無しさん
13/04/26 22:58:12.31
今度は文字数が増えよった
まるで訳が分からんぞ
137:デフォルトの名無しさん
13/04/26 22:59:24.54
文字の重複が意味わからん
これはもう並べ替えじゃない、入力を元に新たな文字列を生成するプログラムになっている
そして、どういう出力を求めてるのか定義が曖昧すぎる
日本語できちんとまとめてから書き直すべき
138:デフォルトの名無しさん
13/04/26 23:01:32.81
aabc△
aacb
abca
abac
acab□
acba
abca
abac
acab□
acba
aabc△
aacb
bcaa
bcaa
baac
baca
baca
baac
caab
caba
caba
caab
cbaa○
cbaa○
こういう事です。
139:デフォルトの名無しさん
13/04/26 23:04:49.69
つまりユニークな文字列だけ調律したい
140:デフォルトの名無しさん
13/04/26 23:13:53.43
無理じゃね?
141:デフォルトの名無しさん
13/04/26 23:17:33.09
>>132を少し改造
URLリンク(ideone.com)
142:デフォルトの名無しさん
13/04/26 23:18:21.60
アスペにプレゼン力が無い良い例である
143:デフォルトの名無しさん
13/04/26 23:23:54.36
>>142
プレゼンカってなんだ?
144:デフォルトの名無しさん
13/04/26 23:24:48.52
>>141
ありがとうございます。
出来れば配列に格納してから重複分を省略するのではなく
再帰の過程で重複をスルーするというのは無理ですか?
145:デフォルトの名無しさん
13/04/26 23:25:51.78
>>141
jをフラグに使うのは間違いと気付き、修正
URLリンク(ideone.com)
146:デフォルトの名無しさん
13/04/26 23:31:56.96
>>144
URLリンク(ideone.com)
147:デフォルトの名無しさん
13/04/26 23:34:08.07
>>146間違ったので修正
URLリンク(ideone.com)
トイレして風呂入って寝ます。
あとは頑張ってください。
148:デフォルトの名無しさん
13/04/26 23:49:46.30
>>147
ありがとうございます。
再帰凄いですね。たった57行ですむんですか。
自分が作ったのはstrcmpとか再帰使ってないから
300行超えましたww
57行からもっと短くする事はさすがに無理ですか?
149:123
13/04/26 23:56:14.46
データ構造に木を使った場合だともっと短くなりませんか?
この時コードどうなりますかね?
150:デフォルトの名無しさん
13/04/27 00:09:45.42
>>148
・kekka_shori();をnarabe();のkekka_shori使っているところに埋め込む
・コメント削除
・行連結
これで 3行になる
URLリンク(ideone.com)
151:デフォルトの名無しさん
13/04/27 00:11:13.80
3行てw
152:デフォルトの名無しさん
13/04/27 00:21:34.73
流石C言語、Pythonでは出来ないことをやってのける
153:デフォルトの名無しさん
13/04/27 13:48:55.65
プロトタイプを自分で宣言すれば1行だろ
手抜きしやがって
154:デフォルトの名無しさん
13/04/27 14:34:58.85
>>147
改めて凄い賢いプログラム。
並び替える時、二つの文字を選んで交換することしか思い付かなかったけど
シフトレジスタ的に考えればいいのか。しかも再帰。
やっぱりプログラマは天才が多い。
155:デフォルトの名無しさん
13/04/27 14:37:09.40
でも再帰って難しいな..........
まさか再帰使うと思わなかった。
再帰ってn!とかクイックソートくらいしか使えないと思ってたわ。
やっぱりプログラマーになるには再帰使いこなさないとだめですかね?
156:デフォルトの名無しさん
13/04/27 14:39:39.50
再帰なんか大学でしか使わないよ
157:デフォルトの名無しさん
13/04/27 14:45:19.96
というかごちゃごちゃ言いましたけど
>>147のプログラム理解できません....
whileじゃダメなんですか?
narabe関数の中にnarabe関数は一つだけですよね?
つまり右から左に一直線に戻るだけですよね?
そこらへん分からないので教えて下さい。
158:デフォルトの名無しさん
13/04/27 14:58:01.85
再帰は普通に使うよ
並べ替えは再帰が基本
でも C++ の next_permutation みたいに
再帰を使わないアルゴリズムもある
理解が非常に難しいのでライブラリとして使う分にはいいけど
自分の作るのは難しいね
159:デフォルトの名無しさん
13/04/27 15:03:38.86
再帰なんか滅多に使わない
見にくくなるしアルゴリズムの練習くらいでしか使わねーよ
160:デフォルトの名無しさん
13/04/27 15:05:41.52
void narabe(char *d, int n)
{
int i, j, len = strlen(d);
char c;
if (n <= 1) {
kekka_shori(d);
return;
}
for (j = 0; j < n; j++) {
narabe(d, n - 1);
c = d[len - n];
for (i = 0; i < n - 1; i++)
d[len - n + i] = d[len - n + i + 1];
d[len - n + i] = c;
}
}
ここなんだけど
一直線じゃないなforでn回呼び出してる。
どういうこと?
161:デフォルトの名無しさん
13/04/27 15:09:17.57
>>159
木構造扱う場合に普通に使うだろ
サブフォルダ全検索とかツリービューとか
162:デフォルトの名無しさん
13/04/27 15:13:31.47
ポインタより再帰のほうがよっぽど躓くよね
163:デフォルトの名無しさん
13/04/27 15:15:41.97
再帰なんて簡単だよ
したい処理が自分自身なら自分自身を使えばいいだけの話
164:デフォルトの名無しさん
13/04/27 15:35:31.13
フォルダ全部舐めたい場合とか
再帰じゃないとめんどくさくね
165:デフォルトの名無しさん
13/04/27 15:58:32.70
>>164
だな
166:デフォルトの名無しさん
13/04/27 16:38:25.53
再帰は下手をするとスタックを食いつぶす
再帰の深さが決まってるとか、知って使っているならよいが
と、組み込みのみの感覚ですかね
167:デフォルトの名無しさん
13/04/27 16:52:47.81
製品ではありえん
168:デフォルトの名無しさん
13/04/27 17:18:06.56
>>166
だな
169:デフォルトの名無しさん
13/04/27 17:23:13.63
実装に使うことはあまり無いけど、アルゴリズムの設計時検証とかには良く使うかな。
後は、ディレクトリ構成された複数のファイルに何かしらの機械処理を施すような捨てプログラムとか。
perlとかjavascriptとかで。
170:デフォルトの名無しさん
13/04/27 18:50:14.32
再帰も扱えないプログラマって……
171:デフォルトの名無しさん
13/04/27 19:09:00.68
>>166
ナイーブな再帰を組込みで使うのは確かに贅沢。
尤も、再帰が必要かもという複雑度なら継続相当の実装が吉。
オフィス系業務プログラムなら、PCのメモリに余裕あるから、よほど酷いコーディングでなければ再帰もあり。
ハイパフォーマンス向けなら、コンパイラを選べば再帰レベルは気にしなくていい。
実際は、再帰に展開されるか否か以外の問題の方が大きい。
172:デフォルトの名無しさん
13/04/27 19:43:56.09
再帰は終了条件とか最大ネスト回数とか考えないといけないから
あんまり使いたくはないけどね。
173:デフォルトの名無しさん
13/04/27 19:53:50.41
まあ明らかに深くなる場合は
非再帰化するけどね
174:デフォルトの名無しさん
13/04/27 20:05:52.83
そうそう。
再帰を使うのは、パパっと組むのにその方が簡単だから。
それを製品とかに使うかどうかはまた別の話。
175:デフォルトの名無しさん
13/04/27 21:46:14.61
むしろ再起って簡単なのよね
ループのがよほど難しいけど、ループのが効率的だからループが使われるのであって
難しいってのが実は最大の勘違い、多分慣れの問題でしかない
176:デフォルトの名無しさん
13/04/27 21:52:59.01
基本的にスタックを自分で用意するだけだから
非再帰化もそう難しいわけじゃない
ただ美しくない
177:デフォルトの名無しさん
13/04/27 22:04:04.16
再帰よく分かりませんね昨日の者です。
void abc(int n)
{
①
abc(n-1);
②
}
x番目に格納されてるabc関数の①と②の場所でnの値が変わったりする事
ありますかね?
178:デフォルトの名無しさん
13/04/27 22:15:10.80
①と②で変えたりnのアドレスをグローバルに置いて他で無理矢理変えたりしない限り変わらない
179:デフォルトの名無しさん
13/04/27 22:18:35.56
>>175
再起
180:デフォルトの名無しさん
13/04/27 22:31:09.89
>>178
abcを呼び出したことによって①と②で変わってることってなんなんですか?
これが理解できません。
181:デフォルトの名無しさん
13/04/27 22:37:01.89
>>180
その関数ではあまり意味がないよ
まずは簡単な階乗計算とかを見た方が良いと思うよ
182:デフォルトの名無しさん
13/04/27 23:06:11.23
>>180
printfとかしてりゃ出力内容は変わるわな
そういう事してなけりゃ何も変わらない
再帰関数で戻り値の型がvoidなのは
そういう副作用を伴う場合しか意味が無い
階乗を求める関数を考えてみる
unsigned int factorial(unsigned int n)
{
if (n <= 1) {
return 1;
} else {
unsigned int tmp = factorial(n - 1);
return n * tmp;
}
}
factorial の再帰の前後で何か状態が変わるかと言うと、全く変わらない
状態は変わらないけど、新たに戻り値が得られる
戻り値は関数への引数が変われば異なる値になる
この関数は数式の
0! = 1
1! = 1
n! = n * (n-1)!
を素直にそのまま関数にしたもの
数式が理解できるならCのコードも理解できなければおかしい事に気付くこと
183:デフォルトの名無しさん
13/04/27 23:33:01.02
>>171
組み込みで再帰は基本禁忌
184:デフォルトの名無しさん
13/04/27 23:39:11.08
スタックが128バイトしかないとかザラだしな
185:デフォルトの名無しさん
13/04/27 23:59:21.68
組み込みって一言で言っても広いから何とも言えない
豪勢な環境もあるし
186:デフォルトの名無しさん
13/04/28 00:57:12.79
何ぼ豪勢でも、再帰と動的メモリ確保はダメだ
理由は組み込みだから、としか言えないが
187:デフォルトの名無しさん
13/04/28 01:06:04.89
>>183
まあ確かに入門書にはそう書いてあるな。
188:デフォルトの名無しさん
13/04/28 01:13:24.62
組込みにかぎらず、C用コンパイラは、末尾再帰最適化できないものが未だ多いから要注意だな。
189:デフォルトの名無しさん
13/04/28 01:54:27.30
末尾再帰なんてどうでもいいだろ
190:デフォルトの名無しさん
13/04/28 01:55:58.87
単純なループに直せるものを再帰の例としてあげるアホが多過ぎ
191:デフォルトの名無しさん
13/04/28 02:44:57.59
66C33 (二項係数) = 0x64308FE91AE4E60C をunsigned long longで正確に計算する方法を教えて下さい
192:デフォルトの名無しさん
13/04/28 03:40:39.80
順列(空の集合)=空
順列(集合)=集合の各要素(但し同じ物は除く)と順列(残りの集合)
193:デフォルトの名無しさん
13/04/28 09:36:58.26
一桁ごとに配列に入れて繰り上げ繰り下げを手動で行う
194:デフォルトの名無しさん
13/04/28 09:40:51.45
>>191
多倍長演算ライブラリ使え
結果がunsigned long longに収まっているなら、正確にもとまる。
195:デフォルトの名無しさん
13/04/28 10:16:18.38
>>191
#include <stdio.h>
long long gcd(long long a, long long b){
long long c;
while((c=a%b)) a=b, b=c;
return b;
}
void cdiv(long long *a, long long *b){
long long t;
t=gcd(*a, *b);
*a/=t;
*b/=t;
}
long long nCr(int n, int r){
long long u=1, l=1, mu, ml, i;
for(i=1;i<=r;i++){
mu=n-(i-1);
ml=i;
cdiv(&u, &ml);
cdiv(&l, &mu);
u*=mu;
l*=ml;
cdiv(&u, &l);
}
return u;
}
int main(void){
printf("%I64X\n", nCr(66, 33));
return 0;
}
196:デフォルトの名無しさん
13/04/28 10:20:39.77
>>195 訂正
long long nCr(int n, int r){
long long u=1, mu, ml, i;
for(i=1;i<=r;i++){
mu=n-(i-1);
ml=i;
cdiv(&mu, &ml);
cdiv(&u, &ml);
u*=mu;
}
return u;
}
197: ◆QZaw55cn4c
13/04/28 11:49:21.84
>>155
大丈夫
あるとき回路が通じて、それ以降は再帰で**しか**書けない体に変身します‥‥多分幸せになれると思います、いやしあわせになれるかな、なれるかもしれない、なれるかどうかわからないけれどもふしあわせじゃないとおもいこめることはたしかだ、たしかか?
198: ◆QZaw55cn4c
13/04/28 11:52:26.96
>>186
ダイナミックに確保も禁忌、というのは、ある意味すごいですね。確かに安産性は向上するような気がしますけれども。
アマチュアには想像すらできない世界なんでしょうね
199:デフォルトの名無しさん
13/04/28 11:57:02.08
無職の癖にアマチュア批判とは片腹痛い
200: ◆QZaw55cn4c
13/04/28 12:01:10.32
>>199
×片腹痛し
○傍痛し
201:デフォルトの名無しさん
13/04/28 12:05:59.27
どっちでもいいんだよカス
プログラムだけでなくて国語まで出来ないのか
202:デフォルトの名無しさん
13/04/28 12:07:00.02
人の揚げ足取って喜ぶとか小姑みたいな意地悪さ
しかも揚げ足取りになってなくて墓穴を掘ってるし
203:デフォルトの名無しさん
13/04/28 12:18:27.56
>>201-202
×片腹痛し
○傍痛し
言葉の意味を十分にappreciateしてないからこんな間違いをする
204:デフォルトの名無しさん
13/04/28 12:20:09.02
あちこち荒らすな
まとめて隔離スレへ引っ込め
205:デフォルトの名無しさん
13/04/28 12:34:46.80
>>203
だからどっちでも同じ意味なんだって
日本語分からない?
206:デフォルトの名無しさん
13/04/28 12:43:46.35
>>204
ごめん
207:デフォルトの名無しさん
13/04/28 12:45:27.14
>>205
通例がそうだから、という理由だけで先人の間違いを無批判にそのまま踏襲してしかもそのことに無自覚‥‥
208:デフォルトの名無しさん
13/04/28 13:04:37.01
>>207
早く生まれたからと言って無条件に尊敬してもらえると思ってる馬鹿?
通例がそうだからそれでいいじゃん
頭大丈夫?なわけないか
精神科行ってるんだもんな
209:デフォルトの名無しさん
13/04/28 13:32:46.19
日本語をまともに理解できないクズがこういう揚げ足取りに必死なのを見ると笑える
210:デフォルトの名無しさん
13/04/28 14:04:09.94
>>209
だから精神科行って薬飲んでるんじゃね?
211:デフォルトの名無しさん
13/04/28 15:41:08.48
カスとかクズとかゴミとか連呼してるレスを追っていくと
毎回同じことしか書いてなくて面白いよね。
212:デフォルトの名無しさん
13/04/28 15:45:40.99
>>211
そりゃあ頭が悪いボキャブラリーが少ない同一人物が書いてるからだろう
213:デフォルトの名無しさん
13/04/28 15:50:35.67
同じ人間を罵るのに違うこと書いてたらおかしいだろ
214:デフォルトの名無しさん
13/04/28 16:11:55.35
Qが精神攻撃に反撃しようとするなら、Q自身も精神医学を勉強しなければならないが、
そうなると勉強の途中で自分自身に大きな精神の歪みがある事を嫌でも自覚せざるを
得ない時期が訪れる
それを乗り越えて初めて精神医学が身に付くのだが、恐らくQには無理で、途中で
逃げ出すだろう事が火を見るより明らかだ
215:デフォルトの名無しさん
13/04/28 16:18:16.01
次のようなコードがあったのですが、この2行目って要りますか?
if (!msg) return -1;
if (!(msg[0])) return -1;
216:デフォルトの名無しさん
13/04/28 16:20:07.71
>>215
要る
217:デフォルトの名無しさん
13/04/28 16:24:14.65
>>216
ありがとうございます
218:デフォルトの名無しさん
13/04/28 16:38:34.94
これが思考停止か
219:デフォルトの名無しさん
13/04/28 17:46:13.21
>>215
msgがポインタか配列かわからないのでどちらでも対応可能にする。
1行目はmsgがNULLポインタだったら-1を返す。
2行目はmsgが仮に配列であっても要素0の値が0なら-1を返す。
220:デフォルトの名無しさん
13/04/28 18:50:57.03
しかし後の祭りである
221:デフォルトの名無しさん
13/04/28 20:50:01.43
>>219
なるほど、解説ありがとうございました。
222:デフォルトの名無しさん
13/04/28 23:13:52.48
>>215
1行目いらなくね?
223:デフォルトの名無しさん
13/04/28 23:16:52.33
>>186
ん?組み込みはスタックサイズ小さいからメモリ確保は、基本ヒープをつかうときいたことがあるのだけど勘違いか?
昔のcomを作るイメージ
224:デフォルトの名無しさん
13/04/28 23:17:07.31
>>222
msg == NULL だと二行目で落ちる
225:デフォルトの名無しさん
13/04/28 23:18:22.51
>>223
いやいやヒープとスタックが衝突するのが怖い(そしてこれを厳密に回避することは困難だ)からヒープすら使わずにべったりstaticなのでは?
226:デフォルトの名無しさん
13/04/28 23:32:42.68
>>224
msg[0] != 0だったら、msg==NULLってあり得ないかと
>>223
基本ヒープ使っちゃダメだよ
昔のメモリ事情だとどうだったんだろうか
227:デフォルトの名無しさん
13/04/28 23:56:06.84
ヒープでもスタックでもなくデータセグメント(セクション)って組み込み怖いなー
228:デフォルトの名無しさん
13/04/29 00:16:49.37
>>226
NULL番地のデータが0でないのがあり得るあり得ないの問題じゃなくて
NULL番地のデータを読み出そうとした時点でOSに落とされるからチェックが要るのよ
229:デフォルトの名無しさん
13/04/29 00:24:21.72
>>226
パンツ脱ぐのとうんこ出すのと
順序間違えると大変なことに
230:デフォルトの名無しさん
13/04/29 01:12:09.61
>>228-229
ああ、そういうことね
組み込みだと普通に0番地使うから、分からんかったわ
231:デフォルトの名無しさん
13/04/29 02:04:05.88
>>228
問題のコードではmsgがNULLポインタだったらリターンしてしまうから
2行目が実行されることはあり得ない。
232:デフォルトの名無しさん
13/04/29 02:44:38.79
>>231
msgがchar配列、ポインタが32bitの場合で、msg[0]==0でmsg[1]~[3]のどれかに0以外が入ってるなら2行目行くんじゃね
233:デフォルトの名無しさん
13/04/29 07:59:37.32
>>231
その問題のコードの1行目が要らなくねってレスがあったから説明したんよ
234:デフォルトの名無しさん
13/04/29 12:47:06.15
>>225-226
ヒープ使っちゃいけなかったのか。
覚えとく、ありがとう
235:デフォルトの名無しさん
13/04/29 20:52:06.60
>>234
ばっかみたいw
236:デフォルトの名無しさん
13/04/30 08:37:47.67
組み込みってもOSレスからLinuxみたいなものまであるわけで
237:デフォルトの名無しさん
13/04/30 20:06:32.53
死ねゴミw
238:デフォルトの名無しさん
13/04/30 21:00:28.73
>>236
いきなりわけわかんないレスをするな
239:デフォルトの名無しさん
13/05/01 03:30:10.77
うるさいゴミ
240:デフォルトの名無しさん
13/05/01 13:09:29.46
a=f(x)+g(y);
これって、f(x)とg(y)のどっちが先に実行されるかって
仕様で決まってたっけ? それとも不定?
241:デフォルトの名無しさん
13/05/01 13:18:02.56
不定です
242:デフォルトの名無しさん
13/05/01 14:53:33.39
>>240は馬鹿だから間に受けるぞw
243:デフォルトの名無しさん
13/05/01 14:54:27.12
現在このスレは閑散としてるがQZがいつ自演質問を再開させるか分からない状態
ここ最近このスレで不正に宿題と思わしき質問が投下されたので注意が必要
監視を続ける
244:デフォルトの名無しさん
13/05/01 14:58:04.04
>>240 >>241
にはこのコピペが最適↓
ネットでののQ&A見たら、何も勉強してこなかった
日本人の絶望的なほど劣悪なレベルを見せ付けられる想いだ。
質問者の意図も理解できないし、理解する姿勢に欠ける。
自分で確かめもしないで、思いつきで断片だけを回答する。
質問者も自分で解決したら、なにも示さず解決したという
コメントで終了する。
甘やかされて低脳さを遺憾なく発揮している。もう理系も絶望
的だから文系はどうかと思へば、悲惨のひとことだ。
もう日本の大学を折りたためよ文部省。
こういう自分でプログラミング言語を開発する極一部の有能な若者が、
浮いてただ利用されるだけで本当に気の毒だね。
245:デフォルトの名無しさん
13/05/01 15:30:02.88
C言語でレジストリのeipやebp等の動きを表示したいのですが
どうやってみればいいでしょう?
gcc -S test.cだとアセンブラソースが作られてみれるんですがソースだけで肝心のトレース部分をみることができません
eipやebpやスタックの動きを見れるやり方教えてください
Windows7です
246:デフォルトの名無しさん
13/05/01 15:36:57.37
>>245
>教えてください
情報に見あった金額が提示されてないのに誰が答えるの?
247:デフォルトの名無しさん
13/05/01 15:52:40.25
>>245
Eclipse CDT入れろ
デバッガで見れる
>>246
カス
248:はちみつ餃子 ◆8X2XSCHEME
13/05/01 15:53:37.24
インラインアセンブラを使うのが簡単かなぁ。
インラインアセンブラで書いても gcc は最適化しちゃうんで、
最適化をオフにするか volatile 指定を付けるのが楽。
プログラム的に必要っていうのではなく、挙動を観察したいという場合ならデバッガを使った方がいいと思う。
gcc と連携しやすいデバッガと言えば gdb だけど Windows なら OllyDBG か Immunity Debugger が人気。
249:245
13/05/01 16:07:48.38
>>247
わざわざElipseなんていらねーよバカが死ね
>>248
やっぱりgdbですか
インラインアセンブラはダサいのでデバッガのほうにしてみます
250:デフォルトの名無しさん
13/05/01 16:09:44.62
>C言語でレジストリのeipやebp等の動きを表示したいのですが
レジスタ と読んでの前提
まさかデバッガを作りたい って話じゃないよな?
251:デフォルトの名無しさん
13/05/01 16:14:41.28
>>247=基地害
252:デフォルトの名無しさん
13/05/01 16:34:30.42
QZ急速な勢いで自演レス
253:デフォルトの名無しさん
13/05/01 17:28:19.21
>>247が馬鹿の見本みたいで笑えるw
いや、馬鹿すぎて笑えないレベル
254:デフォルトの名無しさん
13/05/01 18:50:20.97
結局入門書どれがいいんでつか?
高いから数買えないんです。・°°・(>_<)・°°・。
255:デフォルトの名無しさん
13/05/01 19:00:49.86
eipとebpを見たんですが
leaveっていう命令でてこずってます
leaveって
mov esp,ebp
pop ebp
これと等価らしいんですが
gdbでトレースしてleaveをsiで実行してespを見たけどebpの値になりません
ebp=0xbffff4e8
esp=0xbffff4b8
leaveをやったら espはebpの0xbffff4e8になるはずですが
espは0xbffff4ecになります
何故ですか?教えてください
256:デフォルトの名無しさん
13/05/01 19:14:02.44
enter/leaveなんて誰も使わないから忘れてよろしい
遅いだけ
257:デフォルトの名無しさん
13/05/01 19:16:31.23
popしてるからだろ
258:デフォルトの名無しさん
13/05/01 19:17:59.00
>>257
popする前に代入してますよね?バカ?
259:デフォルトの名無しさん
13/05/01 19:21:15.43
中身の分からないバイナリファイルの中身を調べて型に合った変数に代入ことはできるのでしょうか?
260:デフォルトの名無しさん
13/05/01 19:23:40.28
>>258
だから、代入してからpopしてるから
popでずれてんだろw
261:デフォルトの名無しさん
13/05/01 19:49:44.54
変数に代入はできる
未知のフォーマットで書かれたものに対して
中身を調べて=バイナリの並びから 型に合ってるかどうかを知る術がない
262:デフォルトの名無しさん
13/05/01 20:25:49.04
>>241
ありがとう
不定であってたのね
263:デフォルトの名無しさん
13/05/01 20:30:09.06
sub関数 call時
esp=0xbffff4ec ebp=0xbffff508
コード
push %ebp 実行時
esp=0xbffff4e8 ebp=0xbffff508 スタックに0xbffff508
mov %esp,%ebp 実行時
esp=0xbffff4e8 esp=0xbffff4e8 スタックに0xbffff508
sub $0x30,$esp 実行時
esp=0xbffff4b8 esp=0xbffff4e8 スタックに0xbffff508
264:デフォルトの名無しさん
13/05/01 20:30:25.46
>>258
バカ
265:デフォルトの名無しさん
13/05/01 20:32:24.66
>>263
途中からebpが行方不明になってるぞ
266:デフォルトの名無しさん
13/05/01 20:38:27.45
>>627
3.5のパラグラフ3~4と7.1.1のパラグラフ8を総合した結果だろうな
分かりづらいけど、例もあるし、少なくとも間違いはない
267:デフォルトの名無しさん
13/05/01 20:38:43.59
>>265右のはebpねミス
leave 実行時
esp=0xbffff4ec ebp=0xbffff508
leaveの命令
mov esp,ebp
pop ebp
ebpをespにやるんだから espは0xbffff4e8になるはず 代入してる
popで最初にpushしておいたebpを取り出して ebpは0xbffff508であってるけど
espがなんでcall時の0xbffff4ecになる?
268:266
13/05/01 20:40:29.43
誤爆・・・
269:デフォルトの名無しさん
13/05/01 20:42:12.93
pushでespが動いてんのにpopで動かないと考えるこの馬鹿
270:デフォルトの名無しさん
13/05/01 20:43:29.12
>>267
popしたらスタックポインタが動くのは当たり前だろ
popが何をするものか分かってるか?
というかスレ違いだ
271:デフォルトの名無しさん
13/05/01 20:48:35.19
>>270
やっとわかった
espがスタックの末尾にあってプッシュやポップにあわせて常に変化するってことをわすれてた
だからpopしたときプッシュ前のアドレスになったわけね
272:デフォルトの名無しさん
13/05/01 20:50:25.84
スレ違いだバカが死ね
って言ってやるべきだろ
273:デフォルトの名無しさん
13/05/01 22:03:20.07
push %ebp
このpushされたebpアドレスはどこでみれんの?
info fってやっても表示されないけど
274:デフォルトの名無しさん
13/05/01 22:04:22.71
ミス
このpushされたebpアドレスが保存されてるスタックって
縦長に見る方法ない?
こんなふうに
+++++++++++
ESP + 戻り値 +
+++++++++++
+ one +
+++++++++++
+ two +
+++++++++++
+ three +
+++++++++++
EBP + 基底 +
+++++++++++
275:デフォルトの名無しさん
13/05/01 22:17:43.80
いい加減アセンブラスレに行け!
276:デフォルトの名無しさん
13/05/01 22:22:57.85
C言語で聞いて
277:デフォルトの名無しさん
13/05/01 23:35:55.72
i fでやったら
saved eip(戻り値アドレス)は表示されるけど
push %ebpが表示されない
プッシュされたものが表示できたら便利なのに表示できねーのか?クソだな
278:デフォルトの名無しさん
13/05/02 02:55:13.74
アセンブラスレで聞いたらこのドシロウトが!ってバカにされるだろ
ここでやってればCしか出来ない奴にスゲーって思わせられるからいいんだよ
俺はずっとここにいるぜ
279:デフォルトの名無しさん
13/05/02 04:09:08.75
なんか見覚えのある命令や数値が出てくるな
URLリンク(twitter.com)
280:デフォルトの名無しさん
13/05/02 09:38:26.94
ほらやっぱ自演だったろ
281:デフォルトの名無しさん
13/05/02 13:44:19.46
メモリ確保したポインタを解放した後NULLで初期化する関数myfreeを作りたいのですが、
以下のようにすると初期化されないので
void *myfree(void *p)
{
free(p);
p=NULL;
return;
}
仕方なく以下のようにNULLを返してますが、p = myfree(p)のようになり美しくありません
もっとスマートな方法はないでしょうか?
void *myfree(void *p)
{
free(p);
return NULL;
}
282:デフォルトの名無しさん
13/05/02 13:55:17.87
>>281
#include<stdio.h>
#include<stdlib.h>
void *myfree(void **p)
{
free(*p);
*p = NULL;
return NULL;
}
int main()
{
char *p = (char *) malloc(123);
printf("%p\n", p);
p = myfree((void **) &p);
printf("%p\n", p);
return 0;
}
283:デフォルトの名無しさん
13/05/02 13:55:31.38
ポインタへのポインタを使う方法じゃだめなの?
void myfree(void** pp)
284:デフォルトの名無しさん
13/05/02 13:55:55.12
void myfree(void** p)
{
free(*p); *p = NULL;
}
呼び出しで &付きになるからキショイ
285:デフォルトの名無しさん
13/05/02 13:58:33.76
>>282間違った。
#include<stdio.h>
#include<stdlib.h>
void myfree(void **p)
{
free(*p);
*p = NULL;
}
int main()
{
char *p = (char *) malloc(123);
printf("%p\n", p);
myfree((void **) &p);
printf("%p\n", p);
return 0;
}
キショいね
286:デフォルトの名無しさん
13/05/02 14:04:25.21
マクロの
#define MY_FREE(p) do { free(p); p = NULL; } while (0)
これも賛否ありそう
287:デフォルトの名無しさん
13/05/02 14:17:53.43
>>283
規格上はダメ、ゼッタイ
voidポインタとそれ以外のポインタは互換性が保証されないので
あー、でも、charポインタと構造体共用体ポインタは互換性があったっけ?
まあ結局intポインタとかはだめだけど
だから、Cならマクロにするしかない
C++ならテンプレートにできるけど
288:デフォルトの名無しさん
13/05/02 14:33:07.57
マクロにしなくてもp=free(p),NULL;でいいじゃん?
289:デフォルトの名無しさん
13/05/02 14:37:51.26
>>288
>仕方なく以下のようにNULLを返してますが、p = myfree(p)のようになり美しくありません
>もっとスマートな方法はないでしょうか?
って話なので、その案は微妙な線?かな?
290:281
13/05/02 14:49:28.70
皆さんどうもありがとうございます
&でポインタへのポインタを使う方法は、自分の環境ではコンパイルエラーになりました
(エラーの正確な内容は失念しましたが、構造体のサイズが不確定というエラーだったような)
関数に渡す時に(void **) でキャストすればエラーが消えるのでしょうか。
しかし>>287さんによると規格上ダメとのことなのでやめておきます
>>288さんの方法は初見でしたが、ポインタ名を二回記述するやり方はポインタ名が長い場合に不便なので1回にしたいのです
マクロを使う方法が一番よさそうなので、試してみます
どうもありがとうございます
291:デフォルトの名無しさん
13/05/02 15:01:42.15
「規格」ってタームが混ざってるだけで簡単に騙される>>290哀れwwwww
292:デフォルトの名無しさん
13/05/02 15:07:24.15
>>291
アホはだまっとけ
URLリンク(www.kouno.jp)
293:デフォルトの名無しさん
13/05/02 15:11:10.51
ミスった
URLリンク(www.kouno.jp)
294:デフォルトの名無しさん
13/05/02 15:19:56.16
投稿前に確認すらできないゴミが「アホはだまっとけ」だってよ
やっぱゴミはゴミだな
295:デフォルトの名無しさん
13/05/02 15:30:43.47
何かを実行する前に問題がないかを確認するってのはプログラマなら当たり前の手順なわけだが、
それができていないってことはプログラミングやる資格はないよ。
そしてそんな奴が調子に乗って回答してる。
>>292-293はこのスレのレベルがいかに低いかを身をもって示してくれている。
それでもまだここで質問するのはまともじゃないよ。
296:デフォルトの名無しさん
13/05/02 15:31:44.23
そりゃ規格を一番に考えるだろう
297:デフォルトの名無しさん
13/05/02 15:42:30.38
>何かを実行する前に問題がないかを確認するってのはプログラマなら当たり前
マでなくとも人間なら普通おおかた>>292は池沼か社会経験のないニートか学生風情
298:デフォルトの名無しさん
13/05/02 16:16:54.81
使い終わったポインタにNULLを入れるのって、ヘタクソの習慣だよな。
299:デフォルトの名無しさん
13/05/02 16:20:21.38
>>298
えっ
300:デフォルトの名無しさん
13/05/02 16:20:47.84
リンクを貼るのってコピペするだけでミスの入り込む余地なんてないと思うんだけど、
携帯とかからわざわざ手打ちで貼ってんの?
301:デフォルトの名無しさん
13/05/02 16:28:55.60
>>300
俺も思ったw
何をどうしたら間違えるんだろうなw
302:デフォルトの名無しさん
13/05/02 16:29:17.63
>>298
それ以前にいちいちfreeすること自体が、設計ができない証。
303:デフォルトの名無しさん
13/05/02 16:30:23.01
規制で携帯から手打ちなんだよ
察しろ
304:デフォルトの名無しさん
13/05/02 16:34:15.61
>>302
いやいやfree()はするだろ。
free()のあとに機械的にNULLクリアするってスタイルはヘタクソ。
305:デフォルトの名無しさん
13/05/02 16:41:17.41
こういうのを真に受ける人がいると思っているのかね
言動からしてレベルの低さが窺えるからスルーしかされないだろうに
306:デフォルトの名無しさん
13/05/02 16:44:30.84
>>304
獲得したメモリをいちいち解放するなんて、
自分でメモリが管理できていない証拠じゃん。
設計ができていれば必要なメモリ量もわかるので
獲得した後解放するなんてありえない。
307:デフォルトの名無しさん
13/05/02 16:46:51.58
ちょっと何言ってるかわかんないです
308:デフォルトの名無しさん
13/05/02 16:51:26.18
がたがた言わずにmallocしちめえ!いらなくなったメモリはそのつどfreeだ!
309:デフォルトの名無しさん
13/05/02 16:53:40.79
>>303
やっぱりそうか
ケータイから手打ちしてまで書き込みたいとか
>>292は自己顕示欲の塊かよw
310:デフォルトの名無しさん
13/05/02 16:54:07.62
まっとうなプロダクツはじゃ、まず見ないスタイルだよね。
free()のあとにNULLクリアをするって規則のコーディング。
311:デフォルトの名無しさん
13/05/02 16:58:36.89
まあポインタを使い回す事自体があまり良くはないからな
でも、全うな製品ならそれでもNULLクリアするのが普通だけど
312:デフォルトの名無しさん
13/05/02 17:01:44.36
うるさいゴミ
313:デフォルトの名無しさん
13/05/02 17:03:09.21
「ヘタクソがいる現場だと有効だ」とか思われてるのかもしれないけど、
たぶん実際的な効果はなにも無いんじゃないのかね > NULLクリア
314:デフォルトの名無しさん
13/05/02 17:05:05.47
NULLクリアしてるまっとうな製品って、どれのことだろ。
315:デフォルトの名無しさん
13/05/02 17:09:05.01
安全性への意識の高さの問題だよ
NULL埋めしない人は経験上他も大体いい加減
316:デフォルトの名無しさん
13/05/02 17:15:52.65
世間的に安定性とか評価されてるプロダクツでもべつにNULLクリアなんてしてないしな。
317:デフォルトの名無しさん
13/05/02 17:16:27.83
安全性への意識て、ミスを根本的になくすことよりミスったときに誤魔化すことを優先すること?
318:デフォルトの名無しさん
13/05/02 17:18:55.52
ポインタがNULLか非NULLかでフラグのような動作をさせるってのは
よくあるテクニックだよ。TLV式のプロトコル実装とか、当たり前のように
使ってるよね。
319:デフォルトの名無しさん
13/05/02 17:19:47.12
free()した直後にポインタ変数の寿命がくるなら
nullクリアなんていらないけど
まだ使う気があるならnull入れておくかな
なんかバグったときにassertにひっかかってくれる
320:デフォルトの名無しさん
13/05/02 17:19:49.18
NULLクリアを自動化しておけばバグが入った時の想定される原因の一つが消えるじゃん
321:デフォルトの名無しさん
13/05/02 17:20:59.00
>>317
ミスを根本的になくすことと同時に
ミスったときにそれを確実に拾えること
可能なら対処する(ごまかす)のは別の話だね
322:デフォルトの名無しさん
13/05/02 17:22:15.95
>>318
そういう話じゃなくて、ルールで機械的に、処理とか文脈とか関係なしにNULLクリアしましょうってのが是か非かって話。
323:デフォルトの名無しさん
13/05/02 17:26:44.74
>>322
そんなの、その場の空気と宗教に従え、以上の答えあるの?
答えが分かったうえで議論の練習したい人とかfj.lang.cごっこしたい人は
別のスレでやってね。ぜんぜん入門編じゃないからね。
324:デフォルトの名無しさん
13/05/02 17:29:30.17
>>323
逃げたwww
325:デフォルトの名無しさん
13/05/02 17:37:47.56
>>322
是でいいと思うよ
ふつうにうしろに処理足される可能性あるし
なによりnull入れて困ることはないってのが
でかい
326:デフォルトの名無しさん
13/05/02 17:41:27.29
free 時に 確保領域に書かれてる内容を適当にぶっこわしてくれる機構 がうれしい
ポインタを別変数にコピーしてたテヘッ 用だね
327:デフォルトの名無しさん
13/05/02 18:00:02.46
NULLクリアって定数左と同じようなテクニックに見える
328:デフォルトの名無しさん
13/05/02 18:02:04.79
>>327
それは頭悪いですね
329:デフォルトの名無しさん
13/05/02 18:10:30.05
NULLを入れない場合→破棄後に参照しても動く事がままある
NULLを入れる場合→参照するとほぼ死ぬ
どちらがミスった時に誤魔化すことを優先しているかは一目瞭然
NULLを入れない方だ
NULLを入れない人は想像力が貧困で、プログラムには向いていない
330:デフォルトの名無しさん
13/05/02 18:18:09.46
それ以前にfreeもしないって人は世界が違うんですか?
331:デフォルトの名無しさん
13/05/02 18:19:04.70
おそらく神の領域に達しているのだろう
332:デフォルトの名無しさん
13/05/02 18:19:49.13
>>329
自信がないからバグを必要以上に恐れている。
典型的似非プログラマの特徴。
333:デフォルトの名無しさん
13/05/02 18:21:03.75
俺のプログラムにバグは無い
334:デフォルトの名無しさん
13/05/02 18:21:44.38
>>330
組み込みの世界ではそれが当たり前なことも珍しくない。
malloc/freeがあるとは限らない。
335:デフォルトの名無しさん
13/05/02 18:22:56.61
マルロック
336:デフォルトの名無しさん
13/05/02 18:24:05.60
>>332みたいなのが、なんとなく動くだけの、分かりにくいバグの多いプログラムを量産するんだよな
プログラマが自分を信用しないのなんて常識じゃない
337:デフォルトの名無しさん
13/05/02 18:25:46.63
>>336
プログラムが落ちないと品質を保証できないクズプログラマの典型。
338:デフォルトの名無しさん
13/05/02 18:28:05.34
>>336
いちいちNULL入れる人って、mtraceとか使ってきちんとテストしたことないんだろうな、って思う。
339:デフォルトの名無しさん
13/05/02 18:30:04.45
>>337
とうとう支離滅裂になったか
論理性の欠片もない
プログラマの資格もない
340:デフォルトの名無しさん
13/05/02 18:30:29.65
>>336
プログラムが落ちることを前提にバグとりをする人って、
落ちないバグとりどうしてるの?
NULLだろうがNULLでなかろうが、参照すること自体がバグなのだから
落ちる落ちないってのは、楽をする方法なのであって、品質を確保する
方法でないってのはわかるよね?
341:デフォルトの名無しさん
13/05/02 18:37:46.77
>>340
ただのフェイルセーフに何言ってんの?
何かあった時に検出できるというだけで、
基本お世話にならないようにプログラムするに決まってんじゃん
342:デフォルトの名無しさん
13/05/02 18:45:53.77
NULL入れようが入れまいが、やることは同じ
ただ、NULLを入れた方がバグの検出確率が上がるしデバッグのしやすさも微増するから入れるってだけ
逆に聞くけど、入れないメリットって何よ
343:デフォルトの名無しさん
13/05/02 18:49:20.40
>>342
空気嫁コミュ障が
344:デフォルトの名無しさん
13/05/02 18:51:56.16
答えは出たみたいだな
345:デフォルトの名無しさん
13/05/02 18:57:50.08
だな
わざわざNULL入れる無駄な処理書いてる奴は給料泥棒
そんなくだらないことに時間使ってザンギョウガーデスマガー
346:デフォルトの名無しさん
13/05/02 19:03:13.40
はたから見てたけど、NULL 入れない人が頭悪そうってことだけは分かった
347:デフォルトの名無しさん
13/05/02 19:05:22.28
糞リンゴがとうとう社債発行w
どんどん追い詰められていきますなぁw
348:デフォルトの名無しさん
13/05/02 19:12:10.55
ジョブズに影響うけてジョブズ=最先端のIT技術者!!!と思い影響うけてMac買ってた低脳
さっさと死ぬことだなゴミは
349:デフォルトの名無しさん
13/05/02 19:19:50.57
>>279ってどこかクラッキングしてるのか?
通報した方がいいのかな?
350:デフォルトの名無しさん
13/05/02 19:24:55.44
リンゴは株価が大暴落してるって1週間くらい前にニュースになってなかったか?
351: ◆QZaw55cn4c
13/05/02 19:39:26.40
>>342
入れないメリットなんてないですよね。デバッグが少しでも楽になるのであれば、それが微増あっても入れておきます。いろいろ手を打ってお世話にならないようには心がけますけれどもね。
入れない人って、デバッグでのたうち回ったことのない人なんじゃないかなあ‥‥‥
>>290
>しかし>>287さんによると規格上ダメとのことなのでやめておきます
そんな規格はないと思います。void * から任意のポインタへの代入は、 C であればキャストなしに可能です。
また、自分が何をしているかわかっているのであれば、非void * をキャストして void * に代入することは、よくある手法です。
qsort() を調べてみてください。
>構造体のサイズが不確定というエラーだったような
void * をインクリメントしたりするのは、あまり行儀のよくない、とは C++エキスパートからはよく伺います。ただ、
>>287
C ならば、void * は char * と互換性がある。構造体のポインタが交換可能云々は、要はアラインメントの問題だね。
ISO/IEC 9899:1999 6.2.5.26
A pointer to void shall have the same representation and alignment requirements as a
pointer to a character type.(以下続くが略)
貴様は スレリンク(tech板) で勉強したまえ。:-)
352:デフォルトの名無しさん
13/05/02 19:47:19.73
>>348
ジョブズはゲイツの次にすごいと思うよ、ITの先端ではね、
だけど自分の会社を、自分がいなくなった後でも存続できるように体制を整えたり、後継者を育てたりってことはできなかったよね
一番起業してはいけないタイプの人間
それじゃ残された社員や株主が可哀想
ゲイツはその点しっかりしている、生きてるうちに身を引いた
これはゲイツがすごいわけじゃなくて当たり前
その当たり前のことができず、チヤホヤされたいがために後継者育てずに新機種連発するゴミクズがジョブズ
技術やアイデアがすごくても残された人間の生活を考えない辺りクズすぎる
総合評価としては世の中に要らないゴミだったよねw
353:デフォルトの名無しさん
13/05/02 19:49:37.52
()
354:デフォルトの名無しさん
13/05/02 19:51:06.68
>>351
今はvoid**の話だっつーの!
例えば、int*が4バイトでvoid*が8バイトの時に
int *p;
*(void**)&p = 0;
としたらどうなるか考えれ
355: ◆QZaw55cn4c
13/05/02 19:59:15.52
>>354
>int*が4バイトでvoid*が8バイトの時に
far/near を思い出しますねえ :-)
int far * near * とか奇天烈なことをやっていた記憶があります‥‥‥すまん
356:デフォルトの名無しさん
13/05/02 20:01:59.86
これか。
終わったな。
「ピークから35%下落したアップル株価」の背景
URLリンク(sankei.jp.msn.com)
>デルの現在の価値のおよそ12倍が消え失せた
こんなに企業価値の目減りする企業なんて見たことない。
もう実際のところ瀕死なんじゃね。
357: ◆QZaw55cn4c
13/05/02 20:21:20.01
iphone5、結構便利に使っているし‥‥
他社のandroidをみると、サイズが大きすぎて片手に入らなくて使いにくそう‥‥
iphone を応援したいなあ、なにか支援する方法はないものか‥‥
obj-C ってむずかしいのですか?
358:デフォルトの名無しさん
13/05/02 20:27:04.29
ぶっちゃけアップルがなくなっても困らない
359:デフォルトの名無しさん
13/05/02 20:45:40.86
>obj-C ってむずかしいのですか?
このクソコテwww
何も成長してねーんだなwww
360:デフォルトの名無しさん
13/05/02 20:55:56.04
りんご終了。
361:デフォルトの名無しさん
13/05/02 20:57:36.90
まだリンゴ製品買うって奴は次のどれか
馬鹿
基地害
池沼
低能
情弱
阿呆
362:デフォルトの名無しさん
13/05/02 21:51:57.62
freeのあとNULLをいれるのはお行儀以外にもダブルfree防止なんてのもある。
あと、
お行儀の話でいえば、使い終わったバッファは0クリアしておくなんてのもあるなぁ。
(ヒープだけじゃなく、スタックも対象)
最近はそんなことやってないけどw
本来、秘密情報に対してはやっておかないとまずい。
363:デフォルトの名無しさん
13/05/02 21:52:21.59
MSシンパキタコレ
364:デフォルトの名無しさん
13/05/02 22:06:54.54
URLリンク(d.hatena.ne.jp)
ここでうまくrootになれません
shに変わるんですが
試行錯誤してます
365:デフォルトの名無しさん
13/05/02 22:44:56.56
うああああああああああできたああああああああああああああああああああああ
suid権限あたえてなかたあああああああああああ
366:デフォルトの名無しさん
13/05/03 02:15:00.28
>>359
おまえ単に気にくわねぇだけだろw
専門板に感情論は不要なんだが
367:デフォルトの名無しさん
13/05/03 04:06:53.57
>>357は普通にスレチ
368:デフォルトの名無しさん
13/05/03 04:55:58.67
>>366
うるさいゴミ
369:デフォルトの名無しさん
13/05/03 11:46:29.37
乱数について分からなくなってしまったのでご教授お願いします。
ゲーム用にある整数域の間でランダムな値を取りたくて、
関数を作っていたんですがなぜか返り値が固定されやがります。
しかもどの乱数に固定されているのか調べようとprintf仕込んだら、
今度は問題なく動いてくれちゃったりしてちんぷんかんぷんです。
できれば返り値を固定したくないのですが、どのようにしたらよいでしょうか?
以下、同じ状況を再現したコード。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int getrandom(int min,int max)
{
//printf("%d\n" , rand()); /* ←ここのコメントはずすと乱数が固定されない */
return ( min + (int)( (rand()/(1.0+RAND_MAX)) * (((double)(max-min)+1.0) ) ) );
}
int main(void) {
srand((unsigned int)time(NULL));
int x = getrandom(0,6);
printf("%d\n" , x);
return 0;
}
370:デフォルトの名無しさん
13/05/03 12:10:49.78
そのコードを実行したら固定されなかったから、
書いてない部分のコードでメモリ破壊系のコーディングミスがあるとのエスパーでFA
371:デフォルトの名無しさん
13/05/03 12:15:11.79
>>369
乱数種があまり変わらないので、
最初に出てくる乱数にもあまり差がないようだね
線形合同法の乗数が小さいんだと思う
だから、余りを使用する方式だと大丈夫だけど、
1+RAND_MAXで割る方式だとほぼ同じ値になるようだ
最初に数回rand()を呼ぶようにするといいよ
ウォームアップってやつ
372:デフォルトの名無しさん
13/05/03 13:00:40.64
>>370
実は2種類くらい実行環境を用意して、
このコードそのまんま試してもダメだったんです・・・orz
>>371
ためしにrand()2回呼び出してみたら乱数の固定がなくなりました。
ウォームアップという発想が無かったので大変助かりました。
ありがとうごさいます。
373:デフォルトの名無しさん
13/05/03 13:08:28.68
rand()は鈍いし、質が悪い。
メルセ○○ツイスターとかいうのでいいんでは。
374:デフォルトの名無しさん
13/05/03 13:21:55.66
URLリンク(www001.upp.so-net.ne.jp)
こういう所で適当なのを拾うのも手だよ
375:デフォルトの名無しさん
13/05/03 13:53:57.30
>>374みたいなクズが甘やかすから初心者がいつまで経っても初心者の域から脱出できない
376:デフォルトの名無しさん
13/05/03 14:05:46.60
>>374
お前がクズ
引っ込んでろ
377:デフォルトの名無しさん
13/05/03 14:06:01.89
>>375
間違えた
お前がクズ
378:デフォルトの名無しさん
13/05/03 14:29:34.45
おれがクズ
おがクズ
379:デフォルトの名無しさん
13/05/03 14:30:54.98
('_')
380:デフォルトの名無しさん
13/05/03 15:11:48.44
>>338
それをすり抜けたとき用だろ
381:デフォルトの名無しさん
13/05/03 15:21:42.71
すり抜けたときww
382:デフォルトの名無しさん
13/05/03 15:43:04.63
typedefをexternできますか
383:デフォルトの名無しさん
13/05/03 15:53:14.25
>>376-377晒しage
384:デフォルトの名無しさん
13/05/03 15:56:23.04
>>383
悔しかったの?
385:デフォルトの名無しさん
13/05/03 16:04:33.59
馬鹿だのクズだの、ガキかお前ら
386:デフォルトの名無しさん
13/05/03 16:21:09.55
C言語でNOP,シェルコード,偽の戻り値をbufferにコピーした後の動作がよくわかりません
コピー先 buffer[500]
コピー元(argv[1]) 600バイト(NOP,シェルコード,偽の戻り値)
strcpy(buffer,argv[1]);
buffer
sfp
RET
になりbufferが600バイト分超過してsfp,RETが書き換えられますよね?
書き換えられたらどうなるんでしょうか?bufferの一番上からアドレスの中身を実行していくのでしょうか?教えてください
387:デフォルトの名無しさん
13/05/03 16:25:41.11
そもそもエリアオーバーでコピーするコードを書く目的がわからん。
どうなるかを知りたいならやってみればいい。
388:デフォルトの名無しさん
13/05/03 16:27:00.23
>>386
nopスロープとかウイルス作る気満々じゃねーか
誰が答えてやるか通報すんぞ
389:デフォルトの名無しさん
13/05/03 16:31:59.16
マジレスするとx86 x64ならDEP有効で実行されないよ
390:デフォルトの名無しさん
13/05/03 16:36:27.89
皆攻撃したくてたまらない
391:デフォルトの名無しさん
13/05/03 18:51:05.77
>>389
コンパイルオプションで外せなかったっけか
392:デフォルトの名無しさん
13/05/03 18:53:50.31
戻りアドレスをNOPが入ってるアドレスに渡せばいいだけでした
そうすれば戻ったときアドレスが指してるNOPを実行してシェルコードにたどり着くんでした
393:デフォルトの名無しさん
13/05/03 19:39:07.01
>>392
ブログでやれ池沼
394:デフォルトの名無しさん
13/05/03 20:37:16.76
自己解決の報告をして>>393とな?
そもそもこんなこと聞いている>>392もあれだが。
395:デフォルトの名無しさん
13/05/03 20:52:13.36
>>393が池沼
396:デフォルトの名無しさん
13/05/03 23:07:08.80
>>362
>使い終わったバッファは0クリアしておくなんてのもあるなぁ。(ヒープだけじゃなく、スタックも対象)
厳密なんですね‥‥輪廻転生されるとやっかいですからね‥‥私は乱数で埋めていました‥‥これはあんまり役にたちそうにないなぁ
397:デフォルトの名無しさん
13/05/04 00:57:03.09
>>395
板違いだぞ。
自己紹介は自己紹介板でどうぞ。
398:デフォルトの名無しさん
13/05/04 02:01:04.97
たかがC言語でよくこんなに語れるもんだ…きも
399:デフォルトの名無しさん
13/05/04 03:46:03.16
>>391
DEPはコントロールパネルの設定だからコンパイルオプションでは
回避不可能。DEPはXP SP2以降(SP3だったかも)に搭載されていて
デフォルトではWindowsの重要なサービスに対してのみ有効。
間抜けな(といっては失礼だが)ユーザのほとんどはDEPの設定など
知らないから、デフォルトのままで使っているはず。そういう間抜けを
出し抜くウィルスぐらいなら作れるだろう。
400:デフォルトの名無しさん
13/05/04 08:57:32.49
/NXCOMPAT に対応してないXPを窓から投げ捨てろ
401:デフォルトの名無しさん
13/05/04 18:57:22.47
Head First Cという本で勉強しているのですが構造体で詰まりました。
下記のra->width、ra->heightの値は定義していないように見えるのですが
いったいいつ定義しているのでしょうか?
typedef struct{
int width;
int height;
} rectangle;
int compare_areas(const void* a, const void* b)
{
rectangle* ra = (rectangle*)a;
rectangle* rb = (rectangle*)b;
int area_a = ra->width * ra->height;
int area_b = rb->width * rb->height;
return area_a - area_b;
}
int main()
{
int i;
int scores[] = {543, 323, 32, 554, 11, 3, 112};
qsort(scores, 7, sizeof(int), compare_areas);
return 0;
}
402:デフォルトの名無しさん
13/05/04 19:03:56.63
rectangle* ra = (rectangle*)a;
rectangle* rb = (rectangle*)b;
ここで既に宣言してる
403:デフォルトの名無しさん
13/05/04 19:31:09.06
>>401
何か変なコードだな。
なんで compare_areas(); は int の配列の要素のアドレスを受け取って
それを rectangle と判断して処理しているのだろうか
404:デフォルトの名無しさん
13/05/04 19:34:56.61
>>401
ありえんだろこのコードは
写し間違いじゃないのか?
405:401
13/05/04 19:43:24.86
>>402-404
返信ありがとうございます。
写し間違いではありません。
内容としては「矩形を面積の小さい順にソートする」というものです。(P330)
あまり良いコードではないようなのでスルーして次に進もうと思います。
406:デフォルトの名無しさん
13/05/04 19:57:23.12
良いコードじゃないけど、
Cで書かれたものって「良いコード」ばかりじゃないので、
一応は読み解けるようになっといた方がいいとは思う。
407:デフォルトの名無しさん
13/05/04 19:59:23.28
スルーする前に、何で変だと言われたのか理解できるようにはなった方が良いな
408:デフォルトの名無しさん
13/05/04 19:59:55.30
悪いコードだろ
読み解いた結果は
書いた奴バカ
409:デフォルトの名無しさん
13/05/04 20:22:40.73
悪
読
書
↑こいつつまんね悪読書ってなんだよ
410:デフォルトの名無しさん
13/05/04 20:23:15.02
C言語でメモリアドレスを指定して表示させたいんだけどどうすればいいんでしょうか?
printf("%d\n",0xbffff508);
こんな感じでアドレスを指定して中身を出力させたいんですが・・・
411:デフォルトの名無しさん
13/05/04 20:27:02.54
printf("%d\n",*(int *)0xbffff508);
でした・・・事故解決しました
412:デフォルトの名無しさん
13/05/04 21:08:42.75
>>410-411
↑
何でこの基地害はブログと2chの区別すらつかないんだろうな
413:デフォルトの名無しさん
13/05/04 21:10:37.46
[Mac/NUC] AGK / DarkBASIC / Basic4GL / 99BASIC 2013 Part.1
URLリンク(jbbs.livedoor.jp)
414:デフォルトの名無しさん
13/05/04 21:12:46.73
>>412
お前こそ一言余計
黙ってられない病気か?
415:デフォルトの名無しさん
13/05/04 21:20:42.88
というかどうしてブログとの区別がついてないと思ったのかわからん
416:デフォルトの名無しさん
13/05/04 21:25:32.39
>>412
さっさと死ねよゴミ
死んだほうがいいですよ
楽になりますよ
417:デフォルトの名無しさん
13/05/04 21:34:07.82
>>415
触らぬキチガイに祟りなし
418:デフォルトの名無しさん
13/05/04 22:38:55.12
質問しつつ、継続して自分でも考えてた証拠だろう
丸投げよりよっぽどいい
419:デフォルトの名無しさん
13/05/05 00:44:37.51
>>414=自己紹介してる池沼
420:デフォルトの名無しさん
13/05/05 00:52:13.69
全く考えずにとりあえず脊髄反射で質問し、ちょっと考えたら解決した証拠だろう
とりあえず質問する癖がある雑魚
421:デフォルトの名無しさん
13/05/05 02:19:05.17
とりあえず脊髄反射で叩く癖がある雑魚
422:デフォルトの名無しさん
13/05/05 02:32:14.01
お前ら小学のガキかーーーーっw
423:デフォルトの名無しさん
13/05/05 04:59:02.98
.
/\___/\
/ ⌒ 俺 ⌒ ;\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (●), 、(●)、 | | キンタマ中古C言語命!!”
⊂. | ,,ノ(、_, )ヽ、,, | < 今日もキンタマ中古C言語でソース乞食するゾォォオオ~っ♪”
,r----、__|.Javaト‐=‐ァ' .::::| | 仕事レポート全部くれくれ乞食するぞォォォオオオオ~っ!”
/Ruby \最強ニニ´ .:::/ \____________________
(ひま,/¬--v \____/⌒\
/⌒ ( ] |丶 ̄ ̄ /丿 丿 ─
(_ _丿 ,ノ--v_\ 糞 ノ ノ 今日も見にくい小文字でプログラミングするぞ~!!(ギャハハ!!wwww”
 ̄ ノ宿敵 リ--─ーARM八
〔 マシン語 Python__,ノ′ヽ ギブ・ミー・レポート!!!! ギブ・ミー・ソース!!!!
,ノ'' ー--ー┘■■ ̄\ │
/ /  ̄■■■/ \ | #○&#$△#%&$▼&%#!!!!
ノ /]アンチ|■AMD命|\| \\ (↑意味不明w)
| / .| Intel | ) ノ
|/′ | .| |---く
| | \ ] ※)一部見苦しい部分がありますが御了承下さい。
.
424:デフォルトの名無しさん
13/05/05 05:40:12.13
宿題スレで心を潰されたんだねかわいそう
425:デフォルトの名無しさん
13/05/05 12:11:47.33
彼らはBASICから得られた体験を ” タブー視 ” しなければいけないため、常に孤立を要求される。
426:デフォルトの名無しさん
13/05/05 16:53:03.02
文字列をインライン展開する方法ないですかね?
電卓プログラム作りたいんですが、文字列そのまま代入して
計算させたいです。
427:デフォルトの名無しさん
13/05/05 17:05:00.57
できません
428:デフォルトの名無しさん
13/05/05 17:26:41.70
>>427
馬鹿には無理だから引っ込んでろ
429:デフォルトの名無しさん
13/05/05 17:44:45.30
ということは優しい>>428がやってくれるんだな?
430:デフォルトの名無しさん
13/05/05 17:46:06.62
>>428
「俺がする」とは誰も言ってない
>>429の馬鹿以外の誰かがするだろうよ
431:デフォルトの名無しさん
13/05/05 17:51:17.88
>>430
結局他人頼みかボンクラ
テメーでやれよパーかおめ
432:デフォルトの名無しさん
13/05/05 17:52:36.12
>>431
そこまで言うならお前がやったれや
俺は酒飲んでて今から寝るんだよ(笑)
433:デフォルトの名無しさん
13/05/05 17:55:14.27
お前らどんだけ寂しいんだよ。。
434:デフォルトの名無しさん
13/05/05 18:04:07.98
GWだからかな
435:デフォルトの名無しさん
13/05/05 18:12:31.48
>>428が俺に任せろって言って1時間以上たったが未だに
レス無しかよ。GWだなぁ。
436:デフォルトの名無しさん
13/05/05 18:14:48.62
インライン展開ってどういうことだ?
437:デフォルトの名無しさん
13/05/05 18:18:53.39
やるやる詐欺
438:デフォルトの名無しさん
13/05/05 18:25:50.66
やりたいことが伝わっていないから
もう一度詳細に書いて
”文字列をインライン展開””文字列そのまま代入”の意味が伝わらない
439:デフォルトの名無しさん
13/05/05 18:29:19.72
文字列を数式に展開したい。代入は感覚で言っただけで意味はないです。
440:デフォルトの名無しさん
13/05/05 18:30:07.11
そうだそうだ
仕様書も出さずに作れとか馬鹿の極み
441:デフォルトの名無しさん
13/05/05 18:31:43.54
>>426のやりたいことは逆ポーランド記法で解決出来ないか?
442:デフォルトの名無しさん
13/05/05 18:33:58.79
なんっすかそれ。
443:デフォルトの名無しさん
13/05/05 18:34:30.72
発達障害たちの自己紹介祭り
444:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/05 18:43:16.88
字句解析、構文解析を行って、文字列を木構造に変換して再帰的に解釈する
パーサジェネレータで検索
445:デフォルトの名無しさん
13/05/05 18:45:53.54
レゴをC言語で制御したいんですけどお勧めの開発環境教えてくれませんか?
446:デフォルトの名無しさん
13/05/05 18:49:17.42
インライン展開とは、関数呼び出しを止めることです
447:デフォルトの名無しさん
13/05/05 18:52:40.49
(式が書かれた)文字列に従い 式の評価・演算を行いたい
yacc 使うまでもない感じ?
448:デフォルトの名無しさん
13/05/05 18:57:07.70
c言語の参考書買う奴って何なんだろう。
ネットに入門サイトいくらでもあるじゃんね。
449:デフォルトの名無しさん
13/05/05 19:32:28.75
>>426
URLリンク(ideone.com)
実行例
input=1+2*(3-4)*(5+6*(7-8))
3
450:デフォルトの名無しさん
13/05/05 19:37:37.51
yaccまでやらんでも、再帰下降構文解析あたりで調べれば出ると思うよ
課題だとしたらその辺りのこと想定してるんだろうし
451:デフォルトの名無しさん
13/05/05 19:46:06.82
つかcodepadのほうが好きなんだけど
ここではIDナンバー1のほうが流行ってるの?
codepadのほうが見やすくて好きなんだが。
452:デフォルトの名無しさん
13/05/05 20:14:48.59
>>451
お前の好みなんかどうでもいいんだよゴミ。
そんなに書きたきゃブログに書いてろクズが。
二度と来るな。
453:デフォルトの名無しさん
13/05/05 20:25:51.28
>>452
2度と来るなという事は3度目は来ていいんですか?
3度目来るためには2度目来ないといけないんですが(笑)
while(1){;}の後の関数の気分です。
454:デフォルトの名無しさん
13/05/05 20:26:52.00
char i[]={"\x0f"};
printf("%d\n",i[0]);
この結果15
char i="\x0f
455:デフォルトの名無しさん
13/05/05 20:27:23.49
char i="\x0f";
printf("%d\n",i);
この結果-32
何故?
456:デフォルトの名無しさん
13/05/05 20:31:56.75
>>452
はい来ました
何か問題でも?
457:デフォルトの名無しさん
13/05/05 20:42:49.18
>>455
signed char i = (signed char)&"\x0f"[0];
printf("%d\n", (int)i);
458:デフォルトの名無しさん
13/05/05 21:28:14.63
>>457
同じ結果です
459:デフォルトの名無しさん
13/05/05 21:47:16.49
ポインタを整数変数(char i)に代入しようとしてる
char i = '\x0f';
460:デフォルトの名無しさん
13/05/05 21:57:56.29
charを%dと%cで比べて遊んで見れば良いんじゃないかな
461:デフォルトの名無しさん
13/05/05 22:29:52.16
char i = *&"\x61"[0];
printf("%c\n",i);
これでできました
文字列リテラルの存在忘れてました
462:デフォルトの名無しさん
13/05/05 22:50:33.90
char i = '\x61';
printf("%c\n",i);
ではだめなのか?
何をやりたいかわけわからん。
463:デフォルトの名無しさん
13/05/05 22:51:45.32
>>461
*& とかいるのか。
464:デフォルトの名無しさん
13/05/05 22:55:58.47
>>462
''と""に入れたとき違いがよくわかってなかったので試してました
465:デフォルトの名無しさん
13/05/06 05:45:50.51
下みたいなコードだとコンパイルでウォーニングが出るけど、引数のconst止めるのと代入でchar*にキャストするのと、
どっちがいいでしょうか
static unsigned char* b;
void foo(const unsigned char* a)
{
b = a;
}
466:デフォルトの名無しさん
13/05/06 06:43:02.94
*bは書き換えるのか?
リテラルを渡してやろう
foo("abc");
467:はちみつ餃子 ◆8X2XSCHEME
13/05/06 06:46:50.45
>>465
const で宣言した変数が const でない挙動をする (キャストで const を剥がす) のは間違いのもと。
468:デフォルトの名無しさん
13/05/06 08:40:36.40
>>430
それだと、「それなら、黙ってろ アホ!」とならね?
469:デフォルトの名無しさん
13/05/06 08:42:07.17
>>468
>>428書いたの俺じゃねーし
>>428書いた奴に言ってくれ
470:デフォルトの名無しさん
13/05/06 09:46:23.22
リテラル(大爆笑)
471:デフォルトの名無しさん
13/05/06 10:28:25.74
どこが面白かった?
472:デフォルトの名無しさん
13/05/06 11:53:19.42
>>465は、
関数の引数が関数自身によって変更されない値を参照するポインタならば、関数の引数をconstとして宣言する
URLリンク(www.jpcert.or.jp)
const 修飾をキャストではずさない
URLリンク(www.jpcert.or.jp)
ってことで、どうすりゃいいんだと思ったけど、リンク先の優先度見ると引数のconst外した方がいいのか
>>467はそういうことなのか
memcpy(&b, &a, sizeof(unsigned char*))なら文句言われないけど、パッと見分かりにくいわな
473:デフォルトの名無しさん
13/05/06 11:56:38.45
リテラル(大爆笑)
474:デフォルトの名無しさん
13/05/06 12:23:00.40
>>466がおかしいのは、そもそもfooのコール前のウォーニングのこと言ってるってのと、
引数と代入先がchar*じゃないってこと
475:デフォルトの名無しさん
13/05/06 12:24:52.76
char str1[] = "hoge"; /* (A) */
char *str2 = "hoge"; /* (B) */
このBのほうは文字列リテラルのhogeの先頭アドレスをポインタ変数*str2に入れてるのはわかるけど
この"hoge"の先頭アドレスはデータセグメントに入ってるの?
AのほうはAuto変数だからスタックセグメントに入ってるとわかります
定数はデータセグメント?教えてください
476:デフォルトの名無しさん
13/05/06 12:30:31.28
>>475
どちらも"hoge"はデータセグメントです。
Aはmemcpyが走るだけです。Bはデータセグメントへのポインタが入ります。
477:デフォルトの名無しさん
13/05/06 12:38:55.20
>>476
>(A) は、単なる配列なので 'h', 'o', 'g', 'e', '\0' というデータはスタックというところに置かれます。
と書いてあるけど?・・・
Aはstr1[0]='a';みたいに書き換えできるけど
Bはstr2[0]='a'みたいに書き換えできませんよね?
データセグメントの中にも書き換えできるのとできないのがあるんですか?
478:デフォルトの名無しさん
13/05/06 12:39:46.83
リテラル(大爆笑)
479:デフォルトの名無しさん
13/05/06 12:40:56.08
>>477
str1,2ともローカル変数ならスタック、グローバルなら変数領域に割り当てられる
hogeの実体は、str1はstr1に、str2は定数領域に入る
ってggったら出てきた
480:デフォルトの名無しさん
13/05/06 12:43:36.91
必死必死w
481:デフォルトの名無しさん
13/05/06 12:48:08.65
グッドウォーニング
482:デフォルトの名無しさん
13/05/06 12:52:58.61
リテラル(大爆笑)
483:デフォルトの名無しさん
13/05/06 12:57:34.51
>>465
bがconstでない時点でconst宣言したアドレスをコピーするのはまずいだろう。
いつ書き換わるかわかんないのに
484:デフォルトの名無しさん
13/05/06 13:01:13.59
>>483
>関数の引数が関数自身によって変更されない値を参照するポインタならば、関数の引数をconstとして宣言する
少なくとも関数内では書き変わらないから、関数自身による変更さえなきゃconstで宣言するものかと思ったんだが
485:デフォルトの名無しさん
13/05/06 13:09:36.08
>>479
定数領域ってセグメントでいうどこ?
486:デフォルトの名無しさん
13/05/06 13:11:17.44
>>485
rodata
487:デフォルトの名無しさん
13/05/06 13:16:20.95
>>486
rodataって場所か
セグメントでぐぐってたからでてこなかったけど
セクションでぐぐったらでてきた
URLリンク(www.ertl.jp)
ありがとう
488:デフォルトの名無しさん
13/05/06 13:29:46.40
大炎上w
489:デフォルトの名無しさん
13/05/06 16:10:41.71
QZただいま自演にて発狂中
490:デフォルトの名無しさん
13/05/06 16:14:03.62
2chで自演云々言う奴めんどくせ
491:デフォルトの名無しさん
13/05/06 16:44:53.13
自演バレしたからってお行儀が悪いなQZ
492:デフォルトの名無しさん
13/05/06 16:55:26.15
>>491
QZじゃねーから
証明できないけど、2ch運営にでもIPきいたら?
493:デフォルトの名無しさん
13/05/06 17:25:53.03
今小6で自分でプログラミング組んで勉強してるんですがCの次は何が
お勧めですか?取り敢えずドスコマンドを自作するみたいな事から初めて
今はサーバークライアント型のプログラムに挑戦しています。
その内3Dゲームもやってみたいと思うんですがライブラリで何か良いの
ありますか?友達でプログラミング趣味の子全然いないんですよ。
494:デフォルトの名無しさん
13/05/06 17:26:59.75
名前欄にfusianasanって書き込めば自分のIPは出せるよ。
他人が自分ではないことの証明にはならないが。
495:デフォルトの名無しさん
13/05/06 17:29:20.78
>>493
HSP
496:デフォルトの名無しさん
13/05/06 17:29:33.92
ふーん、でも本人(QZ)はやらない
やってもPCとスマホを使い分けて自演じゃないとか言い出すこと間違いなし