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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 111
http://toro.2ch.net/test/read.cgi/tech/1355062693/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 161代目
http://toro.2ch.net/test/read.cgi/tech/1354070278/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
2デフォルトの名無しさん:2013/01/16(水) 05:39:44.25
< `∀´>ニダー
3デフォルトの名無しさん:2013/01/16(水) 11:04:07.51
thunder
4デフォルトの名無しさん:2013/01/16(水) 12:50:25.00
>>1
おつ
5デフォルトの名無しさん:2013/01/16(水) 13:37:06.26
>>1
6デフォルトの名無しさん:2013/01/16(水) 18:46:32.92
今時, K&R のソースを優しく通してくれるコンパイラってある?
716:2013/01/16(水) 18:49:56.04
あ, 書き忘れてた. おそらく Unix-V7 の頃のコードです
8デフォルトの名無しさん:2013/01/16(水) 18:57:23.73
純粋なK&Rのみであれば通るだろ
9デフォルトの名無しさん:2013/01/16(水) 18:58:15.47
int main(argc, argv)
int argc;
char *argv[];
{
 〜
 return 0;
}

みたいなやつならうちのコンパイラでも通してくれた。
1016:2013/01/16(水) 19:06:07.85
>>9
どっちかって言うとキャスト方向
いろいろ, 大変なことになってるw
11デフォルトの名無しさん:2013/01/16(水) 21:24:08.23
初心者からの質問です。
―>という記号なんですがよく分かりません。
検索しても出でこないのです。
どなたかこの記号の意味を教えていただきませんか?
12デフォルトの名無しさん:2013/01/16(水) 21:28:40.25
>>11
アロー演算子でggr
13デフォルトの名無しさん:2013/01/16(水) 21:32:02.41
>>11
struct SampleStruct {
int a;
char b;
};

struct SampleStruct *pss;
pss = malloc(sizeof(SampleStruct));

pss->a = 0;
pss->b = 'A';
14デフォルトの名無しさん:2013/01/16(水) 22:01:02.22
>>13
2点ほど突っ込みどころがあるが、
コンパイルできるか?
15デフォルトの名無しさん:2013/01/16(水) 22:12:31.35
a->b は (*a).b のシンタックスシュガー
16デフォルトの名無しさん:2013/01/17(木) 00:24:02.99
>>11
その程度じゃ、大して釣れないと思うぞ
17デフォルトの名無しさん:2013/01/17(木) 00:38:01.14
VisualStudioでC言語扱えるの?
USBドライバを作る、とかいう話が来てるんだけど
ドライバ扱ったことないから戸惑ってる

ちなみに家にはVS2008だけがあるのだが、これ流用できない?
寝かしとくのがもったいなくて
18デフォルトの名無しさん:2013/01/17(木) 00:42:51.31
C、C++、C#、VB.Netが使える
おとなしく2012使えよ
19デフォルトの名無しさん:2013/01/17(木) 01:13:18.46
USBドライバを作るならDDK買わなければいけないんじゃないの?
20デフォルトの名無しさん:2013/01/17(木) 01:15:01.66
int main(int o, int p){
int sex = 0721;
int orz=3;
int OTL=3;
(o^p^o);
}
21デフォルトの名無しさん:2013/01/17(木) 01:17:10.23
>>19
Dislike Duke Kemeny
22デフォルトの名無しさん:2013/01/17(木) 01:38:11.51
>>18
サンクス
>>19
WDKのことか?ググッたら出てきたんだが Windows Driver Kit 
23デフォルトの名無しさん:2013/01/17(木) 05:29:40.84
ああねむい…
24デフォルトの名無しさん:2013/01/17(木) 08:49:58.35
win32のテトリス、1時間で作りましたに騙されてる系?
usbドライバ作りますの君(きみ)は
25デフォルトの名無しさん:2013/01/17(木) 13:03:57.30
いまどき系とか
26デフォルトの名無しさん:2013/01/17(木) 16:25:40.46
署名問題もあるからMS-WindowsだとWinUSBを叩くのがよさげ
27デフォルトの名無しさん:2013/01/17(木) 20:55:48.18
試しにpingしてみろ
先月から1472バイトまでしか受け付けない現象が起きてるから
原因は俺には大体見当がついたが・・・
管理人の技量が足りなそうで復旧できないかもね
28デフォルトの名無しさん:2013/01/17(木) 22:36:00.96
IPヘッダが20バイトでICMPヘッダは8バイトだから、MTUが1500バイトなら1472バイトまでしか通らない。
29859:2013/01/18(金) 15:58:49.53
$gcc -ansi でコンパイルすると全角文字がある時に
example.c:x: error: stray ‘\343’ in program
example.c:x: error: stray ‘\200’ in program
example.c:x: error: stray ‘\200’ in program
の様なエラーが出るのですが、この時の 343, 200 の様な番号が何の番号なのか知りたいのですが
何かの文字コードの番号なのでしょうか?
30デフォルトの名無しさん:2013/01/18(金) 16:57:41.95
8進数なので、343 200 200 = E3 80 80 = UTF-8の全角スペース だな。
31デフォルトの名無しさん:2013/01/19(土) 15:41:12.06
中学の時に番長と呼ばれてた
3229:2013/01/19(土) 16:41:05.95
>>30
今にして思えば全角スペース1つで3行のエラーが出ているのに
3行合わせて1つの文字という認識ができなかったのが悔しいです。
Esc キーを ‘\033′ の様に書いていたりもしたのに。
UTF-8 では日本語は 3 バイトという話も頭の中で繋がりました。
本当にありがとうございました。
33デフォルトの名無しさん:2013/01/20(日) 09:45:13.58
いえいえ
3429:2013/01/20(日) 11:15:28.67
何度お礼を言っても言い足りません。
本当にありがとうございました。
35デフォルトの名無しさん:2013/01/20(日) 14:25:23.50
しつこいな
36デフォルトの名無しさん:2013/01/20(日) 18:01:19.35
GCCのtypeofに相当する機能って最近の規格に盛り込まれてる?
37デフォルトの名無しさん:2013/01/20(日) 18:49:19.78
遺伝的アルゴリズムの多点交叉(2点交叉など)について知りたいのですが、
プログラム例などを交えて解説されているサイトってありますか??
38デフォルトの名無しさん:2013/01/20(日) 19:46:59.23
ポインタとかクラスを実用例とかで解説してくれているサイトとかってありますか?
39デフォルトの名無しさん:2013/01/20(日) 20:16:33.62
webkitを使ってみたいのですが、どうすればいいですか?
40デフォルトの名無しさん:2013/01/20(日) 20:19:37.89
Google Chromeをインストールして起動すればよい
41デフォルトの名無しさん:2013/01/20(日) 21:07:43.03
>>38
Cにはクラスはないんだが。

>>37
C言語スレで聞く内容じゃないことは確かだ。
42デフォルトの名無しさん:2013/01/20(日) 21:44:59.53
クラスを実用的に使う方法みたいな、プログラミングの技術ではなく
方法論的なものを論じた書籍はほとんどない。残念ながらこれが現実。
43デフォルトの名無しさん:2013/01/20(日) 22:05:33.55
構造体に関数ポインタでクラス
44デフォルトの名無しさん:2013/01/22(火) 08:59:50.90
デカルト、カント、ショーペンハウエルで半年くらす
45デフォルトの名無しさん:2013/01/22(火) 09:09:20.37
>>44
そんなこと言う奴、30年ぶりに見たわ
46デフォルトの名無しさん:2013/01/23(水) 06:45:23.13
char *p="hoge";
と記述したら、ポインタ理解できてる?
とドヤ顔で指摘されちゃった。
47デフォルトの名無しさん:2013/01/23(水) 07:48:13.34
const char *p = "foo bar baz";
48デフォルトの名無しさん:2013/01/23(水) 09:35:11.14
ざわ…ざわ…
49デフォルトの名無しさん:2013/01/23(水) 15:09:28.05
>>46
よし死ね
50デフォルトの名無しさん:2013/01/23(水) 15:20:46.45
int* p=0;while(1){*p=0;p++;}
これ実行したらどうなるの?
51デフォルトの名無しさん:2013/01/23(水) 15:24:28.51
実行してみろよ
52デフォルトの名無しさん:2013/01/23(水) 16:16:43.72
sizeof(main) が 1 なんですけど、どうしてでしょうか。
53デフォルトの名無しさん:2013/01/23(水) 16:34:21.36
>>52
GCCだから
5452:2013/01/23(水) 17:12:33.93
>>53
そうなんですか。回答ありがとうございます
55デフォルトの名無しさん:2013/01/23(水) 17:35:04.65
>>50
x86環境なら *p = 0を実行した時点でセグメンテーションフォルト。
56デフォルトの名無しさん:2013/01/23(水) 18:27:59.53
>>50
環境次第
57デフォルトの名無しさん:2013/01/23(水) 23:50:46.92
datファイルから文字を読み込み表示すると最後の文字だけ@マークが表示されるんですが
なんでかわかりますか?
58デフォルトの名無しさん:2013/01/24(木) 00:00:36.71
知るかボケ何だよdatファイルって
59デフォルトの名無しさん:2013/01/24(木) 00:04:00.96
そーゆーフォーマットのデータだから
60デフォルトの名無しさん:2013/01/24(木) 03:34:17.30
構造体を、例えば

struct node{
char str[10];
int a;
} x;

みたいに定義したら、xの構造体に含まれるstr[10]の先頭のアドレスを
取り出すにはどうすればいいのでしょうか。
&(x.str[0])かな〜とか思ったんですが、うまくいかなくて・・・
61デフォルトの名無しさん:2013/01/24(木) 03:57:34.53
>>60
&(x.str[0])
で問題ないけど、、どんなコードで失敗するの?
62デフォルトの名無しさん:2013/01/24(木) 04:02:14.62
&(x.str[0]);
x.str
どちらでも同じ意味だね。
63デフォルトの名無しさん:2013/01/24(木) 04:03:35.02
char *p;
p=x.str;
64デフォルトの名無しさん:2013/01/24(木) 04:04:12.10
>>60
ttp://ideone.com/2deil7
で試したけど、特に問題無いと思うが…
65デフォルトの名無しさん:2013/01/24(木) 08:11:20.05
>>60
ひょっとして、構造体に定義したメンバが常に定義した通りに並ぶと思ってる?
66デフォルトの名無しさん:2013/01/24(木) 09:34:13.68
> うまくいかなくて・・・
こういう質問に答えるのは無駄。スレ汚しにしかならない。
67デフォルトの名無しさん:2013/01/24(木) 11:03:29.61
そう?
68デフォルトの名無しさん:2013/01/24(木) 11:19:52.71
・上手くいかない実例が書かれてない
・ホントはやり方を手早く教えてほしいだけ
・ヴァカどもの教えたい優越感やらコンプレックスを刺激して答えだけ引き出してる

つまりは>>60なんかに答える奴は低能無能のアホ
69デフォルトの名無しさん:2013/01/24(木) 12:37:01.58
chromeでググッた後戻るボタンでgoogleの画面に戻ると
入力した検索キーワードが消えてイラつくんですが
どうしたらいいですか
70デフォルトの名無しさん:2013/01/24(木) 12:40:18.94
ソースを書き換えてビルドし直して下さい
71デフォルトの名無しさん:2013/01/24(木) 16:03:40.20
Openソースだし自分でなんとかしろ
72デフォルトの名無しさん:2013/01/24(木) 16:09:25.25
ブラウザ側じゃ無いんじゃね?
webhpのリダイレクト行程でなんかワルサしてる感じ
73デフォルトの名無しさん:2013/01/25(金) 15:41:25.21
3行×2列の整数型の2次元配列matrix_dataに関して、

matrix_data[2][0] は、matrix_data[0][0]を1番目の要素とすると、計算機のメモリ上では、何番目の要素となるか数字で答えよ。
74デフォルトの名無しさん:2013/01/25(金) 15:54:17.02
CとC++はどっちが大規模開発に向いてますか?
75デフォルトの名無しさん:2013/01/25(金) 16:06:49.84
>>73
マルチすんなカス
76デフォルトの名無しさん:2013/01/25(金) 18:54:09.20
>>74
C++
77デフォルトの名無しさん:2013/01/25(金) 18:57:07.39
マルチなんて微罪に思える程に73は知性と人間性に問題があるな
78デフォルトの名無しさん:2013/01/25(金) 19:00:05.20
C言語を書く人の定番のIDEってありませんか?
VC++ありますけどC言語の補完がでないのできついんです
79デフォルトの名無しさん:2013/01/25(金) 19:33:07.81
>>78
QtCreator
80デフォルトの名無しさん:2013/01/25(金) 20:46:27.20
C#のListみたいに動的に配列の追加・削除はできないの?
81デフォルトの名無しさん:2013/01/25(金) 20:50:03.45
C#のListみたいのがCで実装されてんだよ
82デフォルトの名無しさん:2013/01/25(金) 21:48:12.27
>>80
せめてC++ならな
83デフォルトの名無しさん:2013/01/25(金) 22:28:42.55
Cの場合は自前でリンクリストを設計するところからだね。
84デフォルトの名無しさん:2013/01/25(金) 22:44:09.40
自己参照構造体を使って自前でlistを作成するのが
Cプログラマの正しい生き方
85デフォルトの名無しさん:2013/01/25(金) 22:50:15.80
/* 自己参照 */
struct ZZ {
int val;
struct ZZ *pNext;
};
struct ZZ root, next;
root.pNext = &next; next.pNext = &root;
86デフォルトの名無しさん:2013/01/26(土) 01:34:21.93
C使いならエディタやIDE位自分で開発しろ
87デフォルトの名無しさん:2013/01/26(土) 06:43:46.02
動的配列を置く場所をスタック上にこだわった場合
ちょっと無理があるね
88デフォルトの名無しさん:2013/01/26(土) 14:39:03.30
スタックの伸びる方向と添字の伸びる方向が逆だからなぁ
89デフォルトの名無しさん:2013/01/26(土) 14:50:03.42
そんなあなたにPA-RISC
90デフォルトの名無しさん:2013/01/27(日) 13:20:07.59
unix使いはスタックが無限だと思ってるふしがあるから嫌いだ。
91デフォルトの名無しさん:2013/01/27(日) 14:21:40.89
あいつら平気でchar b[10485760];とか書きよる

http://www.atmarkit.co.jp/flinux/rensai/systemcall/02/01.html
92デフォルトの名無しさん:2013/01/27(日) 15:22:20.37
本当に書いてあったw
93デフォルトの名無しさん:2013/01/27(日) 15:32:23.75
>>90
Unix 関係なしで, 大量にメモリー積んだHPC環境に慣れたやつとかだと,
32bit機で平気でこんな事しようとするぞ
double x[1000][1000][1000];
double y[1000][1000][1000];
double z[1000][1000][1000];
foo() {
int i, j, k;
for (i = 0; i < 1000; ++i)
for (j = 0; i < 1000; ++j)
for (k = 0; k < 1000; ++k)
94デフォルトの名無しさん:2013/01/27(日) 15:57:39.00
メインメモリを超えるサイズのデータ扱うのに、意図的にdiskにマップぐらいするだろ。
95デフォルトの名無しさん:2013/01/27(日) 16:06:38.84
>>93
しねーよ。デブ。
96デフォルトの名無しさん:2013/01/27(日) 19:30:48.81
スタックの話してる時に静的変数を持ち出す93
97デフォルトの名無しさん:2013/01/27(日) 19:52:29.47
えっ
98デフォルトの名無しさん:2013/01/28(月) 09:03:35.08
初心者によくあるのはそのx,y,zみたいな変数を深いネストで呼ばれる各関数で
一時変数として自動変数で宣言しているようなもの
99デフォルトの名無しさん:2013/01/28(月) 19:45:35.74
何度かここでGAについて質問させてもらっているものです

160bitの2進数の列から特定の5bitの2進数を先頭から探索していき,
目的の5bitの列があれば得点を加算していき,それが個体の適応度となる
というGAを作成しているのですが,200世代くらいみても個体の平均適応度が,
全然上昇していきません  10世代目くらいまではグッと上昇するのですが…
遺伝的アルゴリズムってこんなものなんでしょうか…??

以下作成したプログラムです
http://codepad.org/DVr8i5zv
100デフォルトの名無しさん:2013/01/28(月) 19:58:29.26
初期収束でググれ
101デフォルトの名無しさん:2013/01/28(月) 20:06:32.47
evaluationがおかしくないかい?
102デフォルトの名無しさん:2013/01/29(火) 00:03:43.85
intは32bitなのに、160bit格納しようとしてるところが...
103デフォルトの名無しさん:2013/01/29(火) 00:24:14.85
char s[1];
scanf("%s",&s);
printf("%s",s);

これ1文字までしか受け取れないと思ってたけどなん文字でも受け取って表示できるのはなぜですか?
あとこんな風になん文字入力されるか分からない時ってどんな風に書けば良いのですか?
104デフォルトの名無しさん:2013/01/29(火) 00:25:21.56
>>103
それメモリぶっ壊してるから
超危険だから
105デフォルトの名無しさん:2013/01/29(火) 00:29:34.80
最大フィールド幅を使うとかfgetsとかだっけ?しばらくC使ってないから忘れてしまった
メモリぶっこわしてるのは受け取ってるとは言えないだろうな
106デフォルトの名無しさん:2013/01/29(火) 00:32:21.32
gets
ttp://www1.cts.ne.jp/~clab/hsample/IO/IO16.html

もしくは
getcharで一文字毎に受け取ってみる
107デフォルトの名無しさん:2013/01/29(火) 00:35:12.71
scanfで幅を指定して受け取るか
fgetsで幅を指定して受け取るかだな
scanfでも最大フィールド幅指定は可能

最大幅が決まって欲しくない場合は、
最大幅を指定しつつ、終わりが見えなければ次を読み込んで後で連結・・・とかだな

>>106
getsは最悪な関数なので使用禁止
getcharでちまちまやるのは正直どうかと
108デフォルトの名無しさん:2013/01/29(火) 00:38:50.07
ちまちまやるのもいいんじゃないの、最初の頃は
109デフォルトの名無しさん:2013/01/29(火) 00:46:52.71
使えない物を覚える必要は無い。
110デフォルトの名無しさん:2013/01/29(火) 00:53:46.90
へー、fgetcharも使わないの?
111デフォルトの名無しさん:2013/01/29(火) 00:56:38.62
PC用のアプリ作る場合、Cの標準関数ってほとんど使わなくね。
112デフォルトの名無しさん:2013/01/29(火) 00:59:59.45
便利な関数がいっぱいあって楽になったように思ってると
基本的なところでハマるような
scanfの書式を一生懸命覚えようとしてる人が...
113デフォルトの名無しさん:2013/01/29(火) 00:59:59.93
scanfって長さ指定出来たんだ
ありがとうございます
114デフォルトの名無しさん:2013/01/29(火) 01:14:00.50
<windows.h>の中身でよく使う基本的なものを教えてください
コマンドプロンプトには飽きたのです
115デフォルトの名無しさん:2013/01/29(火) 02:01:42.88
つ WinMain
116デフォルトの名無しさん:2013/01/29(火) 02:14:26.56
>>114
DispatchMessage(), GetMessage(), IsDialogMessage(), PostQuitMessage(),
SendDlgItemMessage(), SendMessage(), TranslateMessage()...
117デフォルトの名無しさん:2013/01/29(火) 02:16:27.34
winuser.h -- USER procedure declarations, constant definitions and macros
118デフォルトの名無しさん:2013/01/29(火) 07:39:20.32
>>114
内容古くなってきてるが猫でもでも見れば
119デフォルトの名無しさん:2013/01/29(火) 12:27:32.53
>>103
scanfの中も&sになってることにも突っ込んでやれよ
動かないことは無いけどさ
120デフォルトの名無しさん:2013/01/29(火) 13:55:49.39
>>119
コンパイルで警告出るレベルの間違いを態々貼ってるんだから、103は釣り。
121デフォルトの名無しさん:2013/01/29(火) 15:54:03.56
初心者がスタックオーバーフローを疑問に思う時点でおかしいもんな
122デフォルトの名無しさん:2013/01/29(火) 19:13:08.02
123デフォルトの名無しさん:2013/01/30(水) 01:20:34.55
/* 文字列sの長さを返す */
int strlen ( char *s )
{
char *p = s;
while ( *p != '\0' ){
p++;
}
return p-s;
}

戻り値をポインタ演算のp-sで返して、int型というのは一般的なんでしょうか。
124デフォルトの名無しさん:2013/01/30(水) 01:30:06.43
size_t
125デフォルトの名無しさん:2013/01/30(水) 01:32:10.22
int strlen ( char *s )
{
 int i;
 for (i = 0; *s != '\0'; i++);
 return i;
}
126デフォルトの名無しさん:2013/01/30(水) 01:42:17.47
size_tは違うべ
127デフォルトの名無しさん:2013/01/30(水) 01:49:08.62
size_t だと負数が返せないだろ
128デフォルトの名無しさん:2013/01/30(水) 01:54:27.91
sizeof(s) / sizeof(s[0])
129デフォルトの名無しさん:2013/01/30(水) 01:56:54.10
130デフォルトの名無しさん:2013/01/30(水) 02:08:00.83
strlenに限った話じゃなくて、ポインタの引き算の話じゃないの?
131デフォルトの名無しさん:2013/01/30(水) 02:36:59.12
ポインタの演算は初心者には推奨されていない?
132デフォルトの名無しさん:2013/01/30(水) 03:13:01.24
>>125
無限ループしてるんだが
133デフォルトの名無しさん:2013/01/30(水) 03:23:28.19
for (i = 0; *s != '\0'; i++,s++);
134デフォルトの名無しさん:2013/01/30(水) 03:26:15.90
strlenに限った話じゃないならptrdiff_tだろ
135デフォルトの名無しさん:2013/01/30(水) 04:55:31.91
>>127
文字列長で負数て…
136デフォルトの名無しさん:2013/01/30(水) 05:20:55.52
初心者ならではの回答だと思ってた
137デフォルトの名無しさん:2013/01/30(水) 08:58:25.03
初心者は異常系を考えないから、負数は不要と思い込んじゃうんだよね
138デフォルトの名無しさん:2013/01/30(水) 09:04:40.00
それ、初心者対初心者では?
139デフォルトの名無しさん:2013/01/30(水) 09:41:02.86
stddef.hをしっかり読め
140デフォルトの名無しさん:2013/01/30(水) 12:38:40.67
strlen は size_t と規格で決まってる
141デフォルトの名無しさん:2013/01/30(水) 21:57:00.85
>>137
エラーはエラーで返せばいい
142デフォルトの名無しさん:2013/01/30(水) 22:48:14.46
一方std::stringはstd::string::npos == (std::string::size_type)-1を使用した
143デフォルトの名無しさん:2013/01/30(水) 23:25:29.45
とりあえず >>142 が中級の下だということがバレた
それは数値としての-1に意味はない
npos というシンボルに、通常あり得ない数である「符号無しの最大値」を使っているだけ
144デフォルトの名無しさん:2013/01/30(水) 23:28:18.69
符号無しでもエラーを表現出来るという話以上の事はしてないけど
145デフォルトの名無しさん:2013/01/31(木) 01:36:15.62
まあ何だ、ストリップでも見に行けよ
146デフォルトの名無しさん:2013/01/31(木) 07:09:10.40
で、具体的にCでstrlenに負数やらエラー表現が必要な場合って何よ?
147デフォルトの名無しさん:2013/01/31(木) 07:30:10.74
strlenに必要なんじゃなくて、
それを扱う先で必要になるんだろ
148デフォルトの名無しさん:2013/01/31(木) 07:33:46.56
引数がNULLの場合くらいだな
やるとすれば
何か返すにしても0返したのでいいと思うけど、区別したい場合もあるかもしれない

先にチェックしても手間は変わらない気もするが・・・
149デフォルトの名無しさん:2013/01/31(木) 07:51:23.65
だな
strlen にエラーは必要ないわ
150デフォルトの名無しさん:2013/01/31(木) 08:05:30.42
どうすれば出来るか分かりません...教えてください。

[数字を入力]-->[(入力した数字)/2=0になるまで[2で割った余りを表示 --> 2で割る -->2で割る]をループ]

#include <stdio.h>
int main () {
int i[2];
printf("数字を入力してください。¥n");
scanf("%d",&i[0]);
printf("%dを2進数に変換すると、¥n",i[0]);
i[1]=i[0];
while (i[0]!=0) {
i[1] = i[0] % 2 ;
printf("%d",i[1]);
i[0]/2;
}
printf("¥n");
return 0;
}
151デフォルトの名無しさん:2013/01/31(木) 09:17:30.62
>>150
#include <stdio.h>

void func(int n){
if (n / 2)func(n / 2);
printf("%d", n % 2);
}

int main (){
int i;
printf("数字を入力してください¥n");
scanf("%d", &i);
printf("%dを2進数に変換すると、¥n", i);
func(i);
printf("¥n");
return 0;
}
152デフォルトの名無しさん:2013/01/31(木) 09:35:02.44
>>151
ありがとうございます。
for,whileで作ることは不可能ですか?
153デフォルトの名無しさん:2013/01/31(木) 12:59:02.98
>>150
i[0]/2;

i[0]/=2;
だな。
あとそのプログラムだとMSBとLSBが逆に表示されるから、
反転させるのは自分で考えな。
154デフォルトの名無しさん:2013/01/31(木) 15:49:49.88
>>152
#include <stdio.h>
#define N 2/* N進数 */

int main (){
int n, i = 63;
char a[i + 2];

printf("数字を入力してください¥n");
scanf("%d", &n);
printf("%dを%d進数に変換すると、¥n", n, N);
while (n) {
a[i--] = n % N + '0';
n /= N;
}
printf("%s¥n", a + i + 1);

return 0;
}
155デフォルトの名無しさん:2013/01/31(木) 16:57:41.22
再帰とか重くなるし見辛いだけだから使わない方がいい
156デフォルトの名無しさん:2013/01/31(木) 17:00:12.06
馬鹿にはそう感じるんだね
157デフォルトの名無しさん:2013/01/31(木) 19:46:44.38
GCC のクロスコンパイラを作る話はここで OK?
それともどこかにちゃんとしたスレある?
158デフォルトの名無しさん:2013/01/31(木) 19:47:27.30
それのどこが入門編だよ
159デフォルトの名無しさん:2013/01/31(木) 19:49:22.85
160デフォルトの名無しさん:2013/01/31(木) 20:05:33.33
>>159 ありがとう
161デフォルトの名無しさん:2013/01/31(木) 21:09:13.21
>>154
ありがとうございます
162デフォルトの名無しさん:2013/01/31(木) 22:16:11.62
いえいえ、お礼はいらないよ
163デフォルトの名無しさん:2013/01/31(木) 22:19:40.52
むしろ謝罪しろ
164デフォルトの名無しさん:2013/01/31(木) 23:29:57.50
     (⌒⌒)
ファビョ━ l|l l|l ━━ン!
 / ̄ ̄⌒⌒ ̄\
 |    __λ_ |
 |   ノ ヽ 〆| |
 |   ノ      \|
 | / #ノ(_)(#)
 \___  /TT|/
     |  |UU|   | ̄ ̄|  | ̄|      _| ̄|__| ̄|_□□   | ̄|    | ̄ ̄|  | ̄|       | ̄| | ̄|
     |  |  |   ̄ ̄  |  |   __   |_  __  __|   / /      ̄ ̄  |  |       |  | |  |   /|
     |  |  │ | ̄ ̄|  |  | _| |__  |_| |  |    /  |     | ̄ ̄|  |  |       / /  |  |  /  |
     |  |  │   ̄ ̄_/ / |   _ |     / /   // | |       ̄ ̄_/ /     / /  |  |/  /
     _| ノ  ノ  | ̄ ̄_/   ̄| | |/   //   |/  | |     | ̄ ̄_/    /_/    |    /
   / ∩∩∩    ̄ ̄        ̄      ̄         ̄
   |  ι ̄ ̄ ̄|
   |_____|
165デフォルトの名無しさん:2013/02/03(日) 17:29:14.29
おもいっきりC++だけど、C言語の範囲なのでここで質問します

QTextStream qts(&f);
QString dat = qts.readAll();

return dat; ← これはNGだと思うんですが、どうやってreturnすればいいんですか?
166デフォルトの名無しさん:2013/02/03(日) 17:58:38.48
そこのqts.readAll()が返してるくらいだから返せるんじゃないの?
167デフォルトの名無しさん:2013/02/03(日) 22:48:20.92
メイン関数からいろんなサブ関数に同じ値受け渡しまくるくらいなら広域変数にした方が良いですか?
168デフォルトの名無しさん:2013/02/03(日) 22:56:32.38
グローバル変数はどこで書き込まれどこで読み込まれるか、じっくり調べでもしない限りわからない。それはある種の危険を伴うのでは?
169デフォルトの名無しさん:2013/02/03(日) 23:23:10.57
value dealer なる怪しげな機能を作ればいい
170デフォルトの名無しさん:2013/02/03(日) 23:45:13.88
setter/getter の再実装ですか?
171デフォルトの名無しさん:2013/02/03(日) 23:51:19.15
書き込みは限られた場所からのみ
読み込みは全体からできる
そんなのないですか
172デフォルトの名無しさん:2013/02/03(日) 23:58:24.52
グローバル変数をstaticで宣言すると、そのファイル内の関数でのみ参照でき外部に非公開
173デフォルトの名無しさん:2013/02/04(月) 00:05:38.50
ファイルが別なのでだめです
174デフォルトの名無しさん:2013/02/04(月) 00:26:45.90
マクロでごまかす
175デフォルトの名無しさん:2013/02/04(月) 00:58:46.93
マルチスレッドについて質問です。
以下のコードを書いたのですが、最後のprintfの内容が出力されないのは何故でしょうか。
先頭にprintfを書くと出力されるのが更に謎なのですが。。

http://ideone.com/hygPjc
176デフォルトの名無しさん:2013/02/04(月) 01:15:30.65
fflush() を全部の printf() の後にいちいちつけたらどうなる?
177デフォルトの名無しさん:2013/02/04(月) 02:36:41.71
static void*にゴッソリmallocして後はメタる
#define VALUE0 (*(const int*)&VALUE0RW)
#define ARRAY0 (*((const int*)[10])&ARRAY0RW)
#define VALUE1 (*(const long*)&VALUE1RW)
#define VALUE0RW (*(int*)UNQNAME)
#define ARRAY0RW (*((int*)[10])(&VALUE0RW+1))
#define VALUE1RW (*(long*)(&ARRAY0RW+1))
#define GETPTR void* UNQNAME=get_ptr();
#ifdef IMPLE
#define UNQNAME 0
#define RQSZ ((char*)(&VALUE1RW+1))
static void*p;
#endif

main(){
p=malloc(RQSZ);
#undef UNQNAME
VALUE0RW=...
178デフォルトの名無しさん:2013/02/04(月) 06:35:58.74
>>176
やってみたけど出力されませんでした。
gdbでbreakpoint貼ってみたらちゃんと通ってはいるのでもう何がどうなっているのか。。
179デフォルトの名無しさん:2013/02/04(月) 06:38:44.09
>>178
環境は?
180デフォルトの名無しさん:2013/02/04(月) 07:08:52.90
>>175
> printf("ここでないお?!\n");
の1行前に
sleep(1); // 1秒待つ
を入れても表示されないかな。

それとか、
main()の最初に
setvbuf(stdout, (char *)NULL, _IONBF, 0);
を1行入れてみたら表示されないかな。
181デフォルトの名無しさん:2013/02/04(月) 12:18:23.68
>>175
プログラム自体は正しい。
ライブラリなどのコンパイルオプションがが間違っているのだろう。
182デフォルトの名無しさん:2013/02/04(月) 14:48:33.55
>>175
Debian(wheezy)のgcc(4.7.2)で
gcc -pthread 175.c
して ./a.out を実行して、
"ここでないお?!"
が普通に出るが。
183デフォルトの名無しさん:2013/02/04(月) 14:58:11.26
funcじゃなくて&funcを渡してるのは問題ないの?
184デフォルトの名無しさん:2013/02/04(月) 15:48:39.36
>>183
大丈夫だ。問題ない。
むしろ関数のときだけ & 省略が許される例外みたいなもん
185デフォルトの名無しさん:2013/02/04(月) 19:55:13.54
配列も
186デフォルトの名無しさん:2013/02/04(月) 20:06:00.45
そもそもC等だとi++じゃなくて++iと打つのが普通だし(for文の中を除く)
187デフォルトの名無しさん:2013/02/04(月) 20:08:17.80
用途によるだろ
188デフォルトの名無しさん:2013/02/04(月) 20:08:30.50
>>175
環境は?
189デフォルトの名無しさん:2013/02/04(月) 20:09:18.01
俺だったら、+ を1回多く打つ刹那の時間、
次のコーディングイメージを頭に思い描いていたけどな。
190デフォルトの名無しさん:2013/02/04(月) 20:13:47.14
前置する必要がある時以外は後置してるな。++
191デフォルトの名無しさん:2013/02/04(月) 20:14:11.88
>>186
馬鹿死ね消えろ
a++;
--a;
が普通、というかこれしかない
ポストインクリメント・デポストデクリメントが唯一無二、それ以外のアーキが存在するとでも?

スタックをみよ。
192デフォルトの名無しさん:2013/02/04(月) 20:16:29.26
デポストデクリメントw
193デフォルトの名無しさん:2013/02/04(月) 20:22:01.27
a += 1;
a ++;

a -= 1;
a --;

読みやすいので a++; a--; 使います。
194デフォルトの名無しさん:2013/02/04(月) 20:23:09.88
アホがスレ伸ばすネタを投下しないように
195デフォルトの名無しさん:2013/02/04(月) 20:23:36.60
>>193
だからいっただろう?
a-- なんてありえないんだから、馬鹿しかつかわない表記なんだから、読みやすいとか理由にならないから

死ね
196デフォルトの名無しさん:2013/02/04(月) 20:24:01.33
薬用石鹸デポスト!
好評発売中!
197175:2013/02/04(月) 20:24:45.23
環境はこれです。

Windows7 + cygwin1.7 + gcc4.5.3
gcc -lpthread main.c

sleep(1);をprintfの前に入れても結果は同じでした。。
呪いの類ですかね・・
198175:2013/02/04(月) 20:27:02.79
>>180
setvbuf(stdout, (char *)NULL, _IONBF, 0);入れたら出るようになりましたー!
環境依存?!
199デフォルトの名無しさん:2013/02/04(月) 20:27:06.95
knoppixやってみて
それでもダメなら
呪い
200 ◆QZaw55cn4c :2013/02/04(月) 20:29:07.19
>>197
正直なところ、マルチスレッドにて、各スレッドが共有するストリームになんの下準備もなく直に書き込むこと自体が怪しいと思うのです。
スレッド共通なものに対して個々のスレッドがばらばらとアクセスするときは、まず例外なく排他処理を行うべきだと思うのです。

pthread には win32api の criticalsection がないのでヘタレの私には堪えます。
201デフォルトの名無しさん:2013/02/04(月) 20:33:53.14
>>200
joinしてるじゃないの
202 ◆QZaw55cn4c :2013/02/04(月) 20:41:24.67
>>180
いれるのなら join の前にsleep かなあ‥‥‥
チャイルドプロセスが走りすらしていない状況で join してしまうとどうなるのだろう‥‥‥
203デフォルトの名無しさん:2013/02/04(月) 21:01:42.22
挙動を見るに、初めてのprintfの実行時に何らかの初期化が動いていて、
それがメインスレッドでないと不具合を起こす、という感じに見える
204デフォルトの名無しさん:2013/02/04(月) 21:17:48.10
>>198
出たのは良かったけど、なんだろうね。マルチスレッド全く知らないのでコメント出来ない…。
cygwinの持っているライブラリがバッファリングのデッドロックを起こしていたのかな。
205204:2013/02/04(月) 21:19:57.85
ああ、>>204=>>180です。名前欄に書かないと>>204は変な文だ…
206175:2013/02/04(月) 21:37:17.77
>>205
ありがとうございます。
もやもやだけど暫定的な回避策になりそうです!
207デフォルトの名無しさん:2013/02/04(月) 23:42:44.44
ぷらぷらあいよりあいぷらぷらの方が言いやすいから単発で使うときは後ろ置きばっか使ってるわw
208デフォルトの名無しさん:2013/02/05(火) 02:25:20.84
ようわからんがメソッドの引数で使う時くらいだろ
i++,++iの違いが出てくる時なんて
209デフォルトの名無しさん:2013/02/05(火) 04:54:35.42
while(i++)
while(--i)
が多いかな
まあ、while 自体あまり使わんが
210デフォルトの名無しさん:2013/02/05(火) 05:23:30.56
ああ、これ初心者の糞コードだな
http://toro.2ch.net/test/read.cgi/tech/1359991635/1

> void func(a[3][3]){
が糞らしいですがなぜですか?
211デフォルトの名無しさん:2013/02/05(火) 05:37:25.38
まちがえたから
212デフォルトの名無しさん:2013/02/05(火) 07:17:48.11
>>209
1回回すなら

int i = 1;
while (i--) {
}

じゃないの?
213デフォルトの名無しさん:2013/02/05(火) 08:22:35.43
>>212
i-- を使うやつは馬鹿と決まっている
214デフォルトの名無しさん:2013/02/05(火) 08:32:44.91
>>212
ごめん、適切ではなかった
215デフォルトの名無しさん:2013/02/05(火) 08:48:51.92
先に計算してその結果を使いたいなら前置、計算前の値が必要なら後置
どっちでもいいならC言語では好きなほうでいい
216デフォルトの名無しさん:2013/02/05(火) 09:59:34.09
C++という名前のくせにi++より++iを推奨するC++はクソ。言語名前を変えろ。
217デフォルトの名無しさん:2013/02/05(火) 11:39:22.54
結果としてCと変わらないソクドヲ提供しますってことだろ?
218デフォルトの名無しさん:2013/02/05(火) 11:49:00.38
ならば
int i = 0;
while (++i&1) {}
219デフォルトの名無しさん:2013/02/05(火) 12:38:52.09
だから++i使う奴はあほだと何べんいったら
220デフォルトの名無しさん:2013/02/05(火) 13:38:24.23
for使えよ
221デフォルトの名無しさん:2013/02/05(火) 13:54:32.86
>>202
ぷっ

>いれるのなら join の前にsleep かなあ‥‥‥
ならどれくらいの時間sleepすれば”確実に”スレッドが走り始めるのかなあ…
>チャイルドプロセスが走りすらしていない状況で join してしまうとどうなるのだろう‥‥‥
プロセスとスレッドの違いもわからない似非玄人は黙っとけよ
222デフォルトの名無しさん:2013/02/05(火) 18:00:22.56
a++と++aに迷ったらアセンブラ出力してみるといい
同じになったなら好きな方にすればいい
223 ◆QZaw55cn4c :2013/02/05(火) 18:30:21.99
>>221
ふーん、createthread() と join() とはプロセスにおけるfork()とwait2() の関係をスレッドに投影したものと考えたらいいのね。
いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
224デフォルトの名無しさん:2013/02/05(火) 20:35:32.13
>>223
わかってねーうんこは引っ込んでろ。

> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
225 ◆QZaw55cn4c :2013/02/05(火) 20:43:11.93
>>224
あれ、経験ない?
サブスレッドが走り出す前に親スレッドのCreateThread()がじゃんじゃんまわって、何がおこっているのかさっぱりわけわかんなくなったことがあるんだ。
そこでイベントを使ってサブスレッドが走り出すまでは次のCreateThread()にいかないようにしたんだけれども、まあそんなことしなくてもいいみたいなんだね。

わかってないのは、まあそのとおりなんだけどもね、ああごめんね posix と win32 をごっちゃに話しして。
226デフォルトの名無しさん:2013/02/05(火) 20:48:40.19
> あれ、経験ない?
ねーよ。うんこは引っ込んでろ。
227 ◆QZaw55cn4c :2013/02/05(火) 20:51:49.33
>>226
ふーん、まあ1000個とかスレッド生成をループで連発する方もする方なんだけれどもね、でもいっぺんやってみたかったんだ。
228デフォルトの名無しさん:2013/02/05(火) 20:55:54.69
肝コテ粘着注意
229デフォルトの名無しさん:2013/02/05(火) 20:59:39.14
>>227
はいはい
CreateThread()でチャイルド”プロセス”たん(笑)を1000人生成して
にゃんにゃんしてればいいじゃん
230デフォルトの名無しさん:2013/02/05(火) 21:15:23.56
問題はスレッドを1000個つくった事ではない。お前のようなうんこがプログラミングした事だ。
231 ◆QZaw55cn4c :2013/02/05(火) 21:21:45.97
>>229
あれ?プロセスとスレッドを混同したようなふうにみえるのかなあ‥‥‥チャイルドスレッド、っていういいかたがまずかったのか。にゃんにゃんしたいだけして楽しかったんはそうなんですけど。
232デフォルトの名無しさん:2013/02/05(火) 22:35:34.27
細かい書き間違いに揚げ足とるバカに
脊髄反射するバカに
233デフォルトの名無しさん:2013/02/06(水) 02:40:11.34
K&Rには結構 ++i の書き方が多い
234デフォルトの名無しさん:2013/02/06(水) 08:00:49.13
それぞれの内訳はいくつだよアホ
感覚だけでモノ語るなタコ
235デフォルトの名無しさん:2013/02/06(水) 08:24:32.22
>>232
Qzといううんこにまともに突っ込むのは愚か者。↓こういうのに対して斜めに突っ込んだ結果
> チャイルドプロセスが走りすらしていない状況で join してしまうとどうなるのだろう‥‥‥

↓更にこういう間抜けな発言が飛び出してくる。
> ふーん、まあ1000個とかスレッド生成をループで連発する方もする方なんだけれどもね、でもいっぺんやってみたかったんだ。

このうんこ本当に何にも知らずにプログラム作ってるんだな。大学の宿題レベルがちょうどいいわ。

>>234
試しにi++と++iをカウントしてみた。電子書籍は楽だな。
K&R 2ndでi++ 42件、++i 17件。
そのうち、配列のインデックスなど前置である必要があるのは2つで、残りの15はどっちでもケース。
236デフォルトの名無しさん:2013/02/06(水) 08:31:49.52
おはよござあああああああっす
237デフォルトの名無しさん:2013/02/06(水) 09:21:33.32
世界じゃそれをなぜ必死?と笑うんだぜ>>235
238デフォルトの名無しさん:2013/02/06(水) 09:32:57.61
K&Rと言ってみたいお年ごろ(はぁーと)
239デフォルトの名無しさん:2013/02/06(水) 09:35:34.83
i++; が ++i; でも i--; が --i; でも、処理に対して正しく使われていれば

どっちでも イイ!
240デフォルトの名無しさん:2013/02/06(水) 09:43:50.06
>>237
>>233-234がたまたま目についただけで、簡単にカウントできる環境があったからカウントしただけ。

> 世界じゃそれをなぜ必死?と笑うんだぜ>>235
それを世間じゃゲスの勘ぐりと笑うんだぜ。 >>237

たぶん
> それぞれの内訳はいくつだよアホ
と煽ってみたのにあっさりカウントされて顔真っ赤なんだろう。
241デフォルトの名無しさん:2013/02/06(水) 11:08:53.49
↑顔、真っ赤ですよ
242デフォルトの名無しさん:2013/02/06(水) 11:12:45.42
カウントと言いたいお年頃(はぁーと)
243デフォルトの名無しさん:2013/02/06(水) 11:17:14.83
あっさりカウントしちゃった俺カッケーまぢで
と言いたいお年ごろ草
244デフォルトの名無しさん:2013/02/06(水) 11:23:41.26
>>237
なんかの歌詞かと思ったけど違った
電車男か・・・
245デフォルトの名無しさん:2013/02/06(水) 11:26:01.39
煽り耐性ゼロの必死すぎる暇人とキモコテの長文コラボで
カオティックな展開になっております
246デフォルトの名無しさん:2013/02/06(水) 11:59:44.60
>>231
pthread_create()してるのに生成したスレッドが中々スケジューリングされないって経験ならあるよ。
それが理由で、Webで散見されるpthread_mutex()のサンプルが使い物にならなくて苦労した。
まぁ、Linuxでμs単位のスケジューリングを期待しちゃダメって話なんだけど。
247デフォルトの名無しさん:2013/02/06(水) 12:59:14.12
オープンソースのライブラリ等を使用してプログラムを作る際、
ライブラリのコードを変更することなく、ライブラリに定義されている関数の挙動を変えるにはどうすればよいでしょうか?
248デフォルトの名無しさん:2013/02/06(水) 13:03:20.80
オーバーライドすれば?
249デフォルトの名無しさん:2013/02/06(水) 13:20:21.02
Cでオーバーライドってできるの?
250デフォルトの名無しさん:2013/02/06(水) 13:56:26.89
パッチを作って「こっちの方が便利(速い)」と開発者にフィードバックする。
251デフォルトの名無しさん:2013/02/06(水) 14:07:08.52
同じ名前の関数名でコンパイルしてそれを普通にリンクすればいいのでは
252デフォルトの名無しさん:2013/02/06(水) 14:08:31.88
Cってオーバーライド出来ないんだ
253デフォルトの名無しさん:2013/02/06(水) 15:27:59.42
マクロでどうにかしてみる
254デフォルトの名無しさん:2013/02/06(水) 15:45:26.48
c++のclassの関数のオーバライドはちょっと違うんじゃね
255デフォルトの名無しさん:2013/02/06(水) 16:26:56.14
>>247
まともな回答がほしければokwaveとかY!知恵遅れあたりへどうぞ
256デフォルトの名無しさん:2013/02/06(水) 21:23:26.14
シンボル衝突時にどっちを採用するか(またはエラーとするか)はリンカ次第じゃないの?
257 ◆QZaw55cn4c :2013/02/06(水) 21:23:56.08
>>247
>>253
#define で違う名前に変換こんな感じ
#define xmalloc(x, y) malloc(x)
#define xfree(x, y) free(x)
#define xrealloc(x, y, z) realloc(x, y)
258デフォルトの名無しさん:2013/02/06(水) 22:21:54.62
#include <stdio.h>
void hoge(int a) {printf("OK\n");};
#define hoge(a) \
if (a==1) printf("NG1\n");\
else if (a==2) (hoge)(a);\
else if (a==3) printf("NG2\n");
int main()
{
hoge(1);
hoge(2);
hoge(3);
return 0;
}
259デフォルトの名無しさん:2013/02/06(水) 22:24:07.41
inline使えよw
260デフォルトの名無しさん:2013/02/06(水) 22:36:13.07
ライブラリ関数の中から呼ばれる関数はどうやって対応すんの?ってことでしょ
例えばライブラリ関数say_hello()からsay()が呼ばれるけどsay()の挙動がおかしいと。
このときsay()を自前のに置き換えるにはどうすんのかね?
261デフォルトの名無しさん:2013/02/06(水) 22:45:08.41
オープンソース、というのだから同じく >>257 でいけばいいんじゃない?
すげかえ#define を .h にかいておき、ライブラリのすべての .c でその .h を #include
262デフォルトの名無しさん:2013/02/06(水) 22:45:40.98
バイナリエディタでsay()の名前を変更
自作関数でsay()を作成
263デフォルトの名無しさん:2013/02/06(水) 22:47:55.41
名前残ってないんじゃね?
264デフォルトの名無しさん:2013/02/06(水) 22:50:59.53
ライブラリなら名前残ってるだろ
265デフォルトの名無しさん:2013/02/06(水) 22:55:04.76
ライブラリ=so
なら残るだろうが
質問者が想定してるのはもっと広義なライブラリなきがする
266デフォルトの名無しさん:2013/02/06(水) 22:57:35.47
patchあてろ。
まで理解した
というわけで誰かあてかた教えて
267デフォルトの名無しさん:2013/02/06(水) 23:28:09.09
ライブラリの問題なのか俺々実装の問題なのかをよく考えませう。
268デフォルトの名無しさん:2013/02/07(木) 00:04:44.95
バイナリをなんとかしようとするのはそもそも無理ゲーなのでは?
オープンソースっていうのだから、最小限のソース変更で切り抜ければいいのでは?
269デフォルトの名無しさん:2013/02/07(木) 00:10:36.74
>ライブラリのコードを変更することなく、

だからなあ
270デフォルトの名無しさん:2013/02/07(木) 00:21:56.25
じゃあリンカを改造するしかないね
271デフォルトの名無しさん:2013/02/07(木) 01:15:54.25
置き換えたいのは標準関数なの?
272デフォルトの名無しさん:2013/02/07(木) 04:09:21.82
UNIX系ならこんなこと出来るらしいが
http://www.ibm.com/developerworks/jp/linux/library/l-glibc/
273デフォルトの名無しさん:2013/02/07(木) 04:19:08.25
お引取り願いたいanyにvoid any()__declspec(selectany){...}しちまえばいいんじゃないかな
void any()__attribute(ナントカ){}とか
274デフォルトの名無しさん:2013/02/07(木) 12:22:59.87
detours
275デフォルトの名無しさん:2013/02/07(木) 19:01:52.75
はじめまして

大学の課題で以下の課題が出ているのですが、

方針がさっぱり立たないので、どなたかご教授していただけないでしょうか?

よろしくお願いします。

長いので分けます。
276デフォルトの名無しさん:2013/02/07(木) 19:02:55.95
1.16Xnビットの符号なし整数を,16ビットの符号なし整数n個の配列を
使ってあらわすことを考える.配列の要素の添字0を最下位16ビット,添字
n−1を最上位16ビットとする.
2つの16Xnビットの符号なし整数が,配列aと配列bに格納されているとき,
この2つの符号なし整数の和を計算して配列cに格納したい.

たとえば,n=3の場合,16進表示で下記のような計算を行いたい.
85ac 8001 e4f3 + af54 b345 0c8e = 3501 3346 f181
-------------- -------------- --------------
a b c
なお,aの85acが最上位(つまり,添え字2に対応),8001は添え字1に対応,
e4f3は添え字0に対応している.
この場合,最上位から1が桁上がりとなる.

整数n,配列a,b,cを引数とし,最上位の桁上がりを返す関数addを作成せよ.
ただし,
16ビット符号なし整数 = unsigned short
32ビット符号なし整数 = unsigned int
とする.
277デフォルトの名無しさん:2013/02/07(木) 19:13:30.31
宿題は宿題スレでどうぞ。

C/C++の宿題片付けます 162代目
http://toro.2ch.net/test/read.cgi/tech/1357748713/
278デフォルトの名無しさん:2013/02/07(木) 21:26:42.45
>>275
> どなたかご教授していただけないでしょうか?
どこの馬の骨ともわからん名無しを弟子に持つ気はない。
279デフォルトの名無しさん:2013/02/07(木) 22:09:45.53
>>276
unsigned short add(unsigned short n, unsigned short *a, unsigned short *b, unsigned short *c)
{
unsigned short carry = 0;
unsigned int tmp = 0;
int i;
for ( i = 0; i < n; ++i ){
tmp = a[i] + b[i];
carry = tmp >> 0x10;
c[i] = (unsigned short)(tmp & 0xFFFF);
}
return carry;
}

つか大学生なら頭良いんだろ?簡単に解いてくれよ
俺なんか中学不登校、底辺高校からの専門程度なんだから
280デフォルトの名無しさん:2013/02/07(木) 22:10:36.47
あ、ミスった。tmp = a[i] + b[i] + carry;だわ
281デフォルトの名無しさん:2013/02/08(金) 00:02:59.84
>>279

ありがとうございます。

専門が情報系ではないのですが、授業の過程に入っていて苦戦してました。

お手数ですが、コメント(この処理は何をしている)などの説明も

教えていただけたら幸いです。

よろしくお願いします。
282デフォルトの名無しさん:2013/02/08(金) 00:19:21.28
>>281
専門行ってるとは言ったが、俺も情報系ではないぞ

天下の大学生サマとしては
「やること沢山あんだからんなことやってる暇ねぇよ!」
かもしれないけど、せっかくだから自分で考えてほしいわ
283デフォルトの名無しさん:2013/02/08(金) 00:37:21.05
そこまでむき出しだと低学歴の俺でもひく。
284デフォルトの名無しさん:2013/02/08(金) 00:40:59.56
間違いなく勘違いされてるし、多分誤解をとくことも出来ないだろうが、学歴コンプレックスというわけではない
自分はそういう専攻じゃないから〜とか言って、考えようとしない姿勢が嫌いなだけだ
同じとこに通ってたやつにもずっとこういう対応をとってきてる
285デフォルトの名無しさん:2013/02/08(金) 03:13:40.36
こんなところでそんなアピールされても
286デフォルトの名無しさん:2013/02/08(金) 04:21:58.93
この程度にコメント求めるとか
教える方が悪そうな感じ
287デフォルトの名無しさん:2013/02/08(金) 04:36:30.42
俺1日5k回以上キー叩いてんだな
288デフォルトの名無しさん:2013/02/08(金) 04:56:35.70
(x > y) ? return x : return y;

と記述するとなぜ構文エラーとなるのですか
289デフォルトの名無しさん:2013/02/08(金) 05:00:27.74
return書いとるからと違うけ
その書き方、誰に教わったんかいな
290デフォルトの名無しさん:2013/02/08(金) 05:04:34.39
>>288
書くのならこう。http://codepad.org/0Jor13AI
文はかけない、式をかく。
291デフォルトの名無しさん:2013/02/08(金) 07:33:08.21
>>290
ありがとうございました
292デフォルトの名無しさん:2013/02/08(金) 07:53:22.13
>>291
QZに礼なんかいうな馬鹿野郎
293デフォルトの名無しさん:2013/02/08(金) 09:39:33.27
全てがQZに見え始めたか...
294デフォルトの名無しさん:2013/02/08(金) 09:56:28.12
病気の人はそっとしておいて
295デフォルトの名無しさん:2013/02/08(金) 12:35:21.57
2次元空間の点を表す構造体\texttt{struct point2d}と
線分を表す構造体struct linesegmentを使い,2つの線分
struct linesegment line1とstruct linesegment line2とが交点を
持つかどうかを判定し,交点を持つ場合には1,持たない場合には0を返す関数
int if_intersect(struct linesegment line1,struct linesegment line2)を作成せよ.

struct point2d {/*2次元空間の点のx座標とy座標をそれぞれdoubleに格納*/
double x; double y;
};
struct linesegment {/*線分の始点sと終点eをそれぞれstruct point2dに格納*/
struct point2d s; struct point2d e;
}:

これってどうやったらいいのですか?

さっぱりわからなくて・・・
296デフォルトの名無しさん:2013/02/08(金) 12:44:53.28
>>295
交点の求め方がわからないの?

二点があれば、その二点を通る直線の一次関数が求まるでしょ?
その二つの一次関数を一次方程式に見立てて解を求めるだけだよ。

答えだけが欲しいなら、宿題スレに。
297デフォルトの名無しさん:2013/02/08(金) 12:46:50.34
と思ったけど、宿題スレは酷い有り様だなー。
298デフォルトの名無しさん:2013/02/08(金) 13:07:11.25
>>296

方針が立たないです。

宿題スレで聞いてもスルーされるかなと思い、

こちらで質問させていただきました。
299デフォルトの名無しさん:2013/02/08(金) 13:32:21.08
既にスルーされたから来たんだろ
300デフォルトの名無しさん:2013/02/08(金) 13:52:10.99
だからと言って、Cの問題でもないなぁ。
数学板にでも行けば?
301デフォルトの名無しさん:2013/02/08(金) 15:04:16.47
構造体って便利だな
学習し始めたばっかだけど
302デフォルトの名無しさん:2013/02/08(金) 15:35:32.79
>>293-294
一行で済むのにわざわざcodepadに張り付けて、mainの後ろに/* end */入れる
異常に自己顕示欲の強いチンカスはQZ

そして
> return (x > y) ? x : y;
素人っぽい。
303デフォルトの名無しさん:2013/02/08(金) 15:36:06.35
CADなどに使われる奴だろ?
ぐぐれば出てくるよ、たぶん
304デフォルトの名無しさん:2013/02/08(金) 15:41:26.01
>>302
じゃあどう記述すればプロ()っぽいんだよ
やってみろよ
305デフォルトの名無しさん:2013/02/08(金) 15:46:06.63
if (x > y)
{
  return x; /* xを返す */
}
else
{
  return y; /* yを返す */
}
306デフォルトの名無しさん:2013/02/08(金) 15:47:31.29
等しかったらどうすんねん
307デフォルトの名無しさん:2013/02/08(金) 15:50:14.71
ナニイッテンダヨ...
308デフォルトの名無しさん:2013/02/08(金) 16:03:52.30
これ、問題文の意味がわからないんですけど・・・

プログラミング言語C 第2版 p61
位置pから始まるnビットをyの右端のnビットにセットし、他のビットは
そのままにしたxを返す関数setbit(x,p,n,y)を書け。

xを返してもあまり意味がないような・・・yはどうなるのかと。
309デフォルトの名無しさん:2013/02/08(金) 16:26:22.48
>>305
三項演算子の回答として書いてんのに、なにいってんの?ww
310デフォルトの名無しさん:2013/02/08(金) 16:32:32.83
三項演算子ってそんなに使う?
311デフォルトの名無しさん:2013/02/08(金) 16:41:01.42
時と場所と場合
312デフォルトの名無しさん:2013/02/08(金) 16:42:28.64
つかわなくても、よめなければならない
313デフォルトの名無しさん:2013/02/08(金) 16:43:50.04
関数をよぶとき、引数に三項演算子をいれてるのをみたことある
314デフォルトの名無しさん:2013/02/08(金) 16:48:26.80
10数年ぶりにいじってるがmakefileの記述わすれたw

001.exe : 001.obj
bcc32 001.obj -e001.exe
001.obj : 001.c
bcc32 -w -c 001.c -o001.obj
clean:
del *.obj
del *.tds


これでいいはずだが001.objと001.tdsが消えてくれないw
どうすれば消せるの?
BCC5.5.1でDOS窓アプリ作ってます
315デフォルトの名無しさん:2013/02/08(金) 17:15:19.13
>>305
あなたの言ってるのが正しいなら
returnの後に/*??を返す*/って書くのも
「以上に自己顕示欲の強いチンカス」ですね
316デフォルトの名無しさん:2013/02/08(金) 17:37:24.94
>>314
何時まで20世紀のコンパイラ使ってんだよ捨てろよ
317デフォルトの名無しさん:2013/02/08(金) 17:46:28.78
Cなら問題ないのでわ?
318デフォルトの名無しさん:2013/02/08(金) 17:50:24.00
でわ
319デフォルトの名無しさん:2013/02/08(金) 17:53:10.46
>>295
ttp://ideone.com/wHWliE

田舎臭いコードかも知れんが
320デフォルトの名無しさん:2013/02/08(金) 17:59:48.22
>>316
煽りは良いから正解をはよーw
抽象論はいらないから具体的かつ確実な方法でw
321デフォルトの名無しさん:2013/02/08(金) 18:00:57.23
>>314
makeはどのmakeかによって方言があるので、自分の使っている
makeがどれなのかまず調べて、そのmakeの使い方をググれば
出てくるよ。一般的な疑問だから資料はたくさんある。

たとえばVisual Studio Express付属のnmakeだったら

nmake 使い方

でググればいっぱい出てくる。
322デフォルトの名無しさん:2013/02/08(金) 18:01:33.45
>>314
よく判らんのだが、make cleanしても消えないってこと?
どっちみちCの話じゃないけど。
323デフォルトの名無しさん:2013/02/08(金) 18:12:31.09
>>314
delの前が半角スペースだったりして。
タブじゃないと。

UNIX板だけど
http://toro.2ch.net/test/read.cgi/unix/1079538957/
で聞くとか…
324314:2013/02/08(金) 18:30:18.34
みなさんありがとう
解決しました

001.exe : 001.obj
bcc32 001.obj -e001.exe
del *.obj
del *.tds
001.obj : 001.c
bcc32 -w -c 001.c -o001.obj

これでいいようでした
お騒がせしました
325デフォルトの名無しさん:2013/02/08(金) 18:34:28.05
>>324
よくねーよ
空行がいるだろ

そもそも毎回コンパイルされるだろそれ
326デフォルトの名無しさん:2013/02/08(金) 18:34:48.16
001.exe : 001.obj
    bcc32 001.obj -e001.exe
001.obj : 001.c
    bcc32 -w -c 001.c -o001.obj
clean:
    -del 001.txt
    dir 001.obj >> 001.txt
    dir 001.tds >> 001.txt
327デフォルトの名無しさん:2013/02/08(金) 18:37:51.33
dir 001.txt
328デフォルトの名無しさん:2013/02/08(金) 19:16:27.46
で?
329デフォルトの名無しさん:2013/02/08(金) 20:26:22.37
勝った
330319:2013/02/08(金) 21:01:57.16
>>319
struct linesegment line1 = { {0.0, 0.0}, {2.0, 1.0} };
struct linesegment line2 = { {1.0, 2.0}, {1.5, 0.0} };
だと、交わるはずなのに「交わらない」と出るのでダメだ・・
331デフォルトの名無しさん:2013/02/08(金) 21:02:04.03
332319:2013/02/08(金) 21:31:28.99
ttp://ideone.com/BpOOQu

>>319に、2つの線分それぞれに傾きがある(y軸と平行なのが無い)ときの
範囲内交点有無の判定が無かったので追加。
333319:2013/02/08(金) 21:46:59.41
>>332は、>>330の線分の交点が[0.444444, 0.222222]と間違って計算されてしまう。。
334デフォルトの名無しさん:2013/02/08(金) 22:01:34.32
>>332
計算式が正しいかは見てないけど、m[2] は間違いだと思う。
335319:2013/02/08(金) 22:54:08.66
>>334
ああ、ありがとうございます。
その通りです。m[1]が正しい。直して正しい値が出るようになりました。
ttp://ideone.com/SVmxzK

ちなみに、
[x1, y1]を通る直線(傾きはm1)は、
 Y - y1 = m1 * (X - x1)
[x2, y2]を通る直線(傾きはm2)は、
 Y - y2 = m2 * (X - x2)
交点[kt.x, kt.y]は上の[X, Y]を求めれば良いので、それで計算しています。
336デフォルトの名無しさん:2013/02/08(金) 23:10:27.09
>>335

解答ありがとうございます。
337デフォルトの名無しさん:2013/02/08(金) 23:32:19.84
>>336
いや参考程度にしてください。私も初心者です
338デフォルトの名無しさん:2013/02/09(土) 01:25:56.61
>>315
ほら、正しい事が証明できた。
アンカーは間違ってるし、不正コード混じってるし、漢字変換も間違ってるし、なにより論理破綻。
これが>>290がチンカスQzである証明。
339デフォルトの名無しさん:2013/02/09(土) 01:44:37.36
return ((line1.s.y - line1.e.y) * (line2.s.x - line1.s.x) + (line1.s.x - line1.e.x) * (line2.s.y - line1.s.y)) *
((line1.s.y - line1.e.y) * (line2.e.x - line1.s.x) + (line1.s.x - line1.e.x) * (line2.e.y - line1.s.y)) < 0 &&
((line2.s.y - line2.e.y) * (line1.s.x - line2.s.x) + (line2.s.x - line2.e.x) * (line1.s.y - line2.s.y)) *
((line2.s.y - line2.e.y) * (line1.e.x - line2.s.x) + (line2.s.x - line2.e.x) * (line1.e.y - line2.s.y)) < 0;
340デフォルトの名無しさん:2013/02/09(土) 03:44:54.99
>>338
厨は「論理ろんり lonly!!」と連発するが、正直「論理」がいかほどのものか?
341デフォルトの名無しさん:2013/02/09(土) 03:45:25.45
http://ideone.com/sEtStK
ここに挙げてあるソースコードが gcc環境でうまく実行できません。

コンパイルエラーは出ないのですが、実行がどうもうまくいきません。

どなたか教えてください。

下はプログラム内で読み込んでいるファイルの中身です。

1 鈴木 21
2 横山 27
3 高野 68
4 河野 17
5 ミルコ 34
6 ヒョー 32
7 A-san 45
8 B-san 70
9 C-san 5
10 D-san 15
342デフォルトの名無しさん:2013/02/09(土) 03:55:02.10
>>341
コンパイルエラー出てるやん。
343 ◆QZaw55cn4c :2013/02/09(土) 03:56:55.47
>>341
ptr->prev = (*top);
がよくわかりません。どんなリストを作りたいの?
344 ◆QZaw55cn4c :2013/02/09(土) 03:57:49.70
>>342
それはC++のときだけに出るエラー。
345デフォルトの名無しさん:2013/02/09(土) 04:33:10.62
ideoneって閲覧者IPを採れるんだっけ?
346デフォルトの名無しさん:2013/02/09(土) 04:43:04.36
>>345
http://ideone.com/files/ideone-api.pdf
をみるかぎりそれはなさそうだ
347デフォルトの名無しさん:2013/02/09(土) 07:29:48.89
>>341
まず、期待する結果を教えてくれ
348デフォルトの名無しさん:2013/02/09(土) 10:32:49.13
>>340
自己愛性性格異常者にはわからないようだ。

> あなたの言ってるのが正しいなら
> returnの後に/*\374\374を返す*/って書くのも
> 「以上に自己顕示欲の強いチンカス」ですね
349デフォルトの名無しさん:2013/02/09(土) 12:45:25.32
>>342->>347

ファイルポインタでファイルを読み込んで

最終的に年齢順に昇順でソートを行えればよいです。

バブルソートを使っています。
350デフォルトの名無しさん:2013/02/09(土) 13:03:55.51
宿題は宿題スレへ。
351デフォルトの名無しさん:2013/02/09(土) 19:11:37.81
宿題スレで論争がはじまったぞ
352デフォルトの名無しさん:2013/02/09(土) 19:43:57.74
>>351
論ですらないけどな。
353デフォルトの名無しさん:2013/02/09(土) 20:15:40.86
>>341
fileOpen()内で宣言しているファイルポインタを
返しているから?
main()内で FILE **fp を作り、そこに渡してみれば?
354デフォルトの名無しさん:2013/02/09(土) 20:29:22.19
>>341,349
そーすそのままで、gcc version 4.7.2 での実行結果。
--------------before sort--------------
[1]:鈴木さん:21歳
[2]:横山さん:27歳
[3]:高野さん:68歳
[4]:河野さん:17歳
[5]:ミルコさん:34歳
[6]:ヒョーさん:32歳
[7]:A-sanさん:45歳
[8]:B-sanさん:70歳
[9]:C-sanさん:5歳
[10]:D-sanさん:15歳
--------------after sort--------------
[9]:C-sanさん:5歳
[10]:D-sanさん:15歳
[4]:河野さん:17歳
[1]:鈴木さん:21歳
[2]:横山さん:27歳
[6]:ヒョーさん:32歳
[5]:ミルコさん:34歳
[7]:A-sanさん:45歳
[3]:高野さん:68歳
[8]:B-sanさん:70歳
355デフォルトの名無しさん:2013/02/09(土) 20:34:20.73
D-san・・・もらっていいですか
356デフォルトの名無しさん:2013/02/09(土) 20:54:29.35
>>314
対策1 make clean とコマンドプロンプトから直打ち

対策2 cleanのターゲットに 001.exeを入れる clean : 001.exe
357デフォルトの名無しさん:2013/02/09(土) 21:58:50.52
>>356

ありがとうございます

gcc から実行ファイルを指定して実行する時
どのようにコマンド入力しましたか?
358357:2013/02/09(土) 22:48:30.91
356は安価ミスです。

すいません

>>354の方

gccから実行ファイルを指定して,実行するとき
どのようにコマンド入力しましたか
359デフォルトの名無しさん:2013/02/09(土) 23:36:00.94
お前が何してどういう結果になったかを書けよ
360デフォルトの名無しさん:2013/02/10(日) 00:06:39.66
gccから実行ファイルを指定して,実行するって、無理
361デフォルトの名無しさん:2013/02/10(日) 03:11:16.21
>>358
a.exe input.txt
362デフォルトの名無しさん:2013/02/10(日) 07:59:26.86
C言語の入門書これは!
おすすめて本しりませんか?
363デフォルトの名無しさん:2013/02/10(日) 09:25:08.67
しりません
364デフォルトの名無しさん:2013/02/10(日) 10:49:14.29
>>362
最初に読んだ本はこれですが、いいかどうかはよくわかりません。確実にいえることは「一冊で読み止まることはない」ということでしょうか。
http://www.amazon.co.jp/dp/4875931735/
365デフォルトの名無しさん:2013/02/10(日) 10:57:17.13
オライリーのナッツシェル
366デフォルトの名無しさん:2013/02/10(日) 12:06:40.29
>>362
「独習C」。各章ごとに練習問題があり、
実際に動かしながら学べます。
あくまでも、コンソールアプリ止まりですが…。
367デフォルトの名無しさん:2013/02/10(日) 12:38:24.45
C#やPHPjavascriptPerl色々やってきて、Cもやってみようと思ったんだけど
この言語難解過ぎるだろう・・・
368デフォルトの名無しさん:2013/02/10(日) 12:41:13.54
その辺と比べたら構成要素はダントツで少ないんじゃないの?
369デフォルトの名無しさん:2013/02/10(日) 12:59:42.65
                              >>362

             「C実践プログラミング」 でCの文法、make、gdbなど、基礎を習得

                               ↓

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

                               ↓

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

                               ↓

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

                               ↓

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

                               ↓

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

                               ↓

                             神の誕生
370デフォルトの名無しさん:2013/02/10(日) 13:06:44.87
たった8冊で神になれるなら読んでみようじゃないか
371デフォルトの名無しさん:2013/02/10(日) 14:37:41.94
円周と円の面積を表示するプログラムをこのスレの住民の方お願いします
372デフォルトの名無しさん:2013/02/10(日) 14:41:07.70
公式当てはめるだけじゃねえか・・・小学生でも出来るぞ
373デフォルトの名無しさん:2013/02/10(日) 14:55:58.35
頭脳が小学生並みなんで分かりません
374デフォルトの名無しさん:2013/02/10(日) 14:59:19.44
小学生並みの頭脳なら、C言語覚えるのはあきらめましょう。
375デフォルトの名無しさん:2013/02/10(日) 15:02:35.56
お前には2chは早すぎる
376デフォルトの名無しさん:2013/02/10(日) 15:07:58.90
^^;
377デフォルトの名無しさん:2013/02/10(日) 15:08:58.83
独習Cやったら後はひたすら実践
ぶっちゃけ本をたくさんよりも、いかにやるかが重要だろう
378デフォルトの名無しさん:2013/02/10(日) 17:02:52.46
>>369
神になった人は、ソフト道探求の為、仙人となった。 みんな貧乏。 だって仕事しねぇんだもん! 断ってばかり・・・
379デフォルトの名無しさん:2013/02/10(日) 17:10:30.85
Cでオブジェクト指向ってなんだよ
380デフォルトの名無しさん:2013/02/10(日) 17:16:10.98
指向するのは勝手だろ。
言語に機能が備わっていないからすごいことになるだけで。
381デフォルトの名無しさん:2013/02/10(日) 18:03:14.62
そんなことができるのか?仮想関数はどう処理する?まさか、vtable が表に見える表現なのか?
OOの一面に記述方法で機能を表現するというのもあるが、vtable が裸でみえるゴダゴダな状況で、それでも機能を表現している、と胸をはってもいいものか?
382デフォルトの名無しさん:2013/02/10(日) 18:06:00.53
ンじゃあどうやってC++のコンパイラは書かれてんだよ
ナニで書いてるんだよ

どうする?じゃねーんだ
もうすでにOOじゃない何かの言語でOOのコンパイラが実装されてんだ
383デフォルトの名無しさん:2013/02/10(日) 18:09:04.04
>>382
C++「トランスレータ」はOOではありません霧
384デフォルトの名無しさん:2013/02/10(日) 18:13:16.80
>>381
普通に、オブジェクト指向で設計したものを、
「すまんがお客様の都合でC言語で実装しても欲しい、ということになった」
と糞営業から言われたことを想定すればいい。
がんばれば、オブジェクト指向をC言語でも実装できるよ。
はたしてそれをオブジェクト指向のソースと理解してもらえるかは別の話で。

struct xxx_softc {
 struct ifnet ifnet;
385デフォルトの名無しさん:2013/02/10(日) 18:16:58.34
>>384
>はたしてそれをオブジェクト指向のソースと理解してもらえるかは別の話で。
うふふ、そういうことですね。霧
386デフォルトの名無しさん:2013/02/10(日) 18:23:46.67
まあ、オブジェクト指向をかじったんだろうな、
というCソースはたまに見るよね。
そういうことを実現したいためにC++になったわけだし。
387デフォルトの名無しさん:2013/02/10(日) 18:29:13.98
> まあ、オブジェクト指向をかじったんだろうな、
> というCソースはたまに見るよね。
> そういうことを実現したいためにC++になったわけだし。
Qzと会話できる奴はやはり低脳な発言をする。
388デフォルトの名無しさん:2013/02/10(日) 18:33:34.87
隔離スレにひっこんでな
お前の隔離スレはここだhttp://toro.2ch.net/test/read.cgi/tech/1358278884/
389デフォルトの名無しさん:2013/02/10(日) 18:35:28.24
わーい、煽るしか能のない人に煽られちゃったよー(^O^)
390デフォルトの名無しさん:2013/02/10(日) 18:41:19.68
FILE周りはオブジェクト指向的な設計に近い
もちろん継承とかがあるわけではないが
391デフォルトの名無しさん:2013/02/10(日) 19:09:29.74
Cでオブジェクト指向な設計してるソフトなんて沢山ありそうだけど。
392デフォルトの名無しさん:2013/02/10(日) 19:11:32.73
構造体なんてオブジェクトそのものだろ。
393デフォルトの名無しさん:2013/02/10(日) 19:18:12.48
jpeglibは継承とかオーバーライドとかやってるぞ。
394デフォルトの名無しさん:2013/02/10(日) 19:41:45.15
int型の多次元配列でも
int array[5][5] = {-1};
みたいな初期化はできるの?
395デフォルトの名無しさん:2013/02/10(日) 19:46:26.76
ハ?
396デフォルトの名無しさん:2013/02/10(日) 19:47:33.80
++はオブジェクト指向言語なのか?
397デフォルトの名無しさん:2013/02/10(日) 19:56:17.90
>>394
for分使って2重ループで代入するってことか?。
398デフォルトの名無しさん:2013/02/10(日) 20:11:16.90
入れ子初期化はエレガントじゃないよな
399デフォルトの名無しさん:2013/02/10(日) 20:19:01.92
どんなのができればエレガントなんだ
400デフォルトの名無しさん:2013/02/10(日) 20:51:33.65
>>397
馬鹿それは初期化といわない
401デフォルトの名無しさん:2013/02/10(日) 20:55:09.97
int array[5][5] = {{1,2,3,4,5},{1,2,3,4,5},-1};
402デフォルトの名無しさん:2013/02/10(日) 20:56:12.45
オブジェクト指向かどうかは言語に依存しない
わかってるやつはCでもオブジェクト指向のプログラムを書く
分かってない馬鹿のために言語仕様でオブジェクト指向のプログラムを
書けるようにしたのがC++やJavaなのだ
403デフォルトの名無しさん:2013/02/10(日) 20:56:39.94
>>388
低脳同士話が合うんだろ。隔離スレに引っ込んでろ。
http://toro.2ch.net/test/read.cgi/tech/1313183984/l50
404デフォルトの名無しさん:2013/02/10(日) 20:59:17.08
>>397のような人が回答者として紛れ込んでる事実に驚愕

int arr[5][5] = {-1,}; // 全部-1初期化
任意の値を初期化するなら
int arr[5][5] = {
{1, 1, 1, 1, 1},
{2, 2, 2, 2, 2},
{3, 3, 3, 3, 3},
{4, 4, 4, 4, 4},
{5, 5, 5, 5, 5}
};
二次元のイメージまんまに入れるとしたらこんなん
405デフォルトの名無しさん:2013/02/10(日) 21:00:36.54
オブジェクト指向って指向なんだし、コードレベルでの話だよなーと俺はいつも思うわけだ
406デフォルトの名無しさん:2013/02/10(日) 21:04:40.12
407デフォルトの名無しさん:2013/02/10(日) 21:09:56.30
>>404
>int arr[5][5] = {-1,};
gcc は怒ってくる‥‥

$ gcc -ansi -pedantic -Wall array.init.01.c
array.init.01.c: In function ‘main’:
array.init.01.c:6:3: 警告: 初期化子のまわりのブレースを欠いています
array.init.01.c:6:3: 警告: (near initialization for ‘b[0]’)
408デフォルトの名無しさん:2013/02/10(日) 21:29:58.56
>>404
>int arr[5][5] = {-1,};
borlandコンパイラだと、arr[0][0]だけに-1が設定され、
あとはすべて0で初期化される。
409デフォルトの名無しさん:2013/02/10(日) 21:31:52.81
>>408
どのコンパイラでもそうじゃね?
410デフォルトの名無しさん:2013/02/10(日) 21:36:36.61
>>404では
int arr[5][5] = {-1,}; // 全部-1初期化
と書かれてるけど、これが間違ってるってことか。
411デフォルトの名無しさん:2013/02/10(日) 21:39:34.52
>>410
それで全部-1が入るコンパイラはCの規格には従ってないよ。
組み込み向けとか独自仕様とかあるのかもしれないけど。
412デフォルトの名無しさん:2013/02/10(日) 22:00:44.36
> >>397のような人が回答者として紛れ込んでる事実に驚愕
涙なしには読めない
413デフォルトの名無しさん:2013/02/10(日) 23:13:53.55
規格のどこだか忘れたが、初期化に足りない分は0で埋めるって書いてあった気がする
414デフォルトの名無しさん:2013/02/10(日) 23:21:31.34
>>413
規格書はその辺りの記述が回りくどかった記憶がある
うろ覚えだと、直接的な記述が無くて
「静的記憶域期間を持つ変数と同様」っていうような形
415デフォルトの名無しさん:2013/02/10(日) 23:23:54.35
>>404
なんか言いたいことある?

ISO/IEC 9899:1999 (E)
6.7.8 Initialization
21 If there are fewer initializers in a brace-enclosed list than there are elements or members
of an aggregate, or fewer characters in a string literal used to initialize an array of known
size than there are elements in the array, the remainder of the aggregate shall be
initialized implicitly the same as objects that have static storage duration.
416デフォルトの名無しさん:2013/02/11(月) 00:22:24.41
JISだとこの辺かな?
JIS X 3010  PDF96P

集成体型の要素又はメンバの個数より波括弧で囲まれた並びにある初期化子が少ない場合、又は大きさが既知の
配列の要素数よりその配列を初期化するための文字列リテラル中の文字数が少ない場合、その集成体型の残りを、
静的記憶域期間をもつオブジェクトと同じ規則で暗黙に初期化する。
417デフォルトの名無しさん:2013/02/11(月) 00:47:54.47
>>404
逃走?
418デフォルトの名無しさん:2013/02/11(月) 06:36:30.17
うん
419デフォルトの名無しさん:2013/02/11(月) 09:53:52.62
○for分使って2重ループで代入するってことか?。
×int arr[5][5] = {-1,}; // 全部-1初期化

息してる?
420デフォルトの名無しさん:2013/02/11(月) 10:04:08.96
× >>397のような人が回答者として紛れ込んでる事実に驚愕
>>404のような人が回答者として紛れ込んでる事実に驚愕
421デフォルトの名無しさん:2013/02/11(月) 10:12:53.57
Cでオブジェクト指向? 大抵、時間の経過と共にメンテできなくなって終わり。
神レベルの人が退職等でいなくなれば、あまりの複雑さに誰も近寄らなくなる。
422デフォルトの名無しさん:2013/02/11(月) 10:26:18.70
C++の機能は例外以外はCで完全に表現できるらしいが
メンテしやすいかどうかは別の話だな
423デフォルトの名無しさん:2013/02/11(月) 10:27:48.39
>>422
例外もsetjump, longjump でOK。霧
424デフォルトの名無しさん:2013/02/11(月) 10:30:23.36
>>421-423
隔離スレに引っ込んでろ。うんこども
http://toro.2ch.net/test/read.cgi/tech/1313183984/l50
425デフォルトの名無しさん:2013/02/11(月) 10:38:35.17
なんでトランスレータ作れないよーって事になったんだっけ?
単にsetjmp/longjmpだと効率が悪いってだけ?
426デフォルトの名無しさん:2013/02/11(月) 10:55:35.20
なってねぇし
効率もわるくねぇよ

一番最悪なのが誰の頭だかわかるだろ?
オメェだよ
427デフォルトの名無しさん:2013/02/11(月) 10:56:57.75
>>422
暗黙に呼び出される時のデストラクトは無理じゃね?
あとjumpだと、スタックの巻き戻しが出来ない気が
428デフォルトの名無しさん:2013/02/11(月) 11:03:32.84
無理・できない はアホの鳴き声
それ以外の頭いいやつが実装してるよ
429デフォルトの名無しさん:2013/02/11(月) 11:12:52.97
>>421
百人単位で使うライブラリを神レベルの人がC言語でオブジェクト指向で
実装して、大混乱に陥れた挙句、その人はレベルが低すぎるってやめて
しまって、さらに大混乱になった事例を知っている。

そして、「でもいいもののはずだ」という上の判断からそれが使われ続けて
阿鼻叫喚の地獄絵図に。
もう10年以上前の話だけど。
430デフォルトの名無しさん:2013/02/11(月) 11:25:58.84
>>426
スタック巻き戻しに備えるために
setjmpが必要な時点で効率悪い
431デフォルトの名無しさん:2013/02/11(月) 11:26:10.63
>>429
その神レベルのライブラリ、一度みてみたい。プロトタイプ宣言だけでもいいから教えてくれませんか?
432デフォルトの名無しさん:2013/02/11(月) 11:38:36.77
>>431
おいおい、守秘義務を何だと思ってるんだよw
433デフォルトの名無しさん:2013/02/11(月) 12:15:57.53
このスレは初心者が初心者に間違いを教えるスレですか?
434デフォルトの名無しさん:2013/02/11(月) 12:16:37.23
はい
435デフォルトの名無しさん:2013/02/11(月) 12:17:58.97
おとなしくC++使えばいいのにね
436デフォルトの名無しさん:2013/02/11(月) 12:23:42.44
今、C言語を勉強しようとしている普通の者です。
かなり恥ずかしい質問なんですが、
始めるにあたり、まず何を用意すべきなんでしょうか?
それらしいサイトまではいけるんですが、いつも途中で解らなくなり、挫折してしまいます。
コンパイラというものが必要らしいんですが、それはどうすれば入手できるんですか?
ものすごく基本なことなんですが、案外、きちんと解りやすく説明しているサイトも書籍もないんです。
437デフォルトの名無しさん:2013/02/11(月) 12:23:57.26
コンパイラが存在しない場合も
438デフォルトの名無しさん:2013/02/11(月) 12:25:53.34
>>436
Visual Studio 2012 Express for Windows Desktop
http://www.microsoft.com/visualstudio/jpn/downloads#d-2012-express
439デフォルトの名無しさん:2013/02/11(月) 12:28:13.74
>>436
やさしいCでも買え
440デフォルトの名無しさん:2013/02/11(月) 12:46:59.30
>>432
プロトタイプなんてみてもなんのことだかわからないはず :-) でしょw
まあしかたがないねえ
441デフォルトの名無しさん:2013/02/11(月) 12:52:17.76
>>438
436です。
ありがとうございます。
442デフォルトの名無しさん:2013/02/11(月) 14:39:03.16
いえいえ
443デフォルトの名無しさん:2013/02/11(月) 15:08:42.25
#include<stdio.h>


struct Car
{
int num;
double gas;
};

int main(void)
{
struct Car Jpn={10,10.264};
Car Usa={65,654.687};

printf("車のナンバー%d:ガソリン量は%f\n",Usa.num,Usa.gas);
printf("車のナンバー%d:ガソリン量は%f\n",Jpn.num,Jpn.gas);

return 0;
}

main内のstructは略しても大丈夫?
444デフォルトの名無しさん:2013/02/11(月) 15:25:51.56
CならNo
C++ならYes

普通はtypedefして省略できるようにする
445デフォルトの名無しさん:2013/02/11(月) 15:26:46.07
Cなら普通はtypedefして省略できるようにする、ね
C++なら気にしない(C互換性が必要ならするが)
446デフォルトの名無しさん:2013/02/11(月) 15:29:29.75
Cではtypedefしないとだめ

typedef struct Car Car;
struct Car { int num; double gas; };

もしくは
typedef struct Car { int num; double gas; } Car;

C++ではtypedefなしで略してもよい
447デフォルトの名無しさん:2013/02/11(月) 15:31:15.63
C++ならおk
CではNG
448デフォルトの名無しさん:2013/02/11(月) 15:49:30.40
おおレスありがとう
C++環境でCやってるからこういうことよくあるんよ
449デフォルトの名無しさん:2013/02/11(月) 16:38:38.21
#include<stdio.h>

typedef struct Car
{
int num;
double gas;
}Car;

int main(void)
{

int *an;
char *anan;

printf("%d\n%d\n",sizeof(*an),sizeof(*anan));
printf("構造体struct Car型へのポインタのサイズは%dバイトです。\n",sizeof(Car *));

return 0;
}

()内の*の位置はどういう意味があるんですか?
450デフォルトの名無しさん:2013/02/11(月) 16:40:50.03
本読め
451デフォルトの名無しさん:2013/02/11(月) 16:41:08.09
質問が曖昧でした

後者の*の位置はなぜ前者と違っているのに成り立つのですか?
452デフォルトの名無しさん:2013/02/11(月) 16:42:31.30
お前はprintfの文字列の中に書いてある日本語も読めないのか
453デフォルトの名無しさん:2013/02/11(月) 16:46:16.00
Cのtypedefは宗教によっては厳禁になっているので注意。
454デフォルトの名無しさん:2013/02/11(月) 16:49:54.65
こんな定石を禁止してるとこなんて見た事無い
455デフォルトの名無しさん:2013/02/11(月) 16:52:42.28
>>452
バカにしないで教えてくれ
赤い犬ってなんですかって言ってんじゃないんだから
456デフォルトの名無しさん:2013/02/11(月) 16:54:54.40
>>455
いや、だから文字列に書いてある通りだろw
457デフォルトの名無しさん:2013/02/11(月) 16:58:08.57
>>456
はぁん!?
458デフォルトの名無しさん:2013/02/11(月) 16:58:40.11
(*anan)と(Car *)の違いがわからんのだが
459デフォルトの名無しさん:2013/02/11(月) 17:01:38.55
成り済ましはスルー
460デフォルトの名無しさん:2013/02/11(月) 17:12:34.34
>>458
コンパイラは変数の型を知っているから、変数からでもサイズを算出できる

つまり、
(*anan)は sizeof char と同じ結果になる
(Car *)はそのまま型のサイズになる
461デフォルトの名無しさん:2013/02/11(月) 17:12:54.26
あーあ
462デフォルトの名無しさん:2013/02/11(月) 17:16:48.97
printf("%d %d\n",sizeof(Car),sizeof(Car *));
463デフォルトの名無しさん:2013/02/11(月) 17:20:44.11
>>458
sizeof演算子は二通りの用法がある。
sizeof 単項式
sizeof (型)

sizeof(*anan)は前者 ()は省略出来てsizeof *ananと書いてもよい
sizeof(Car *)は後者 ()は省略できない
464デフォルトの名無しさん:2013/02/11(月) 17:24:19.53
何でもすぐ正解を教えてちゃ成長しないぜ
465デフォルトの名無しさん:2013/02/11(月) 17:33:59.10
初心者が見当はずれな事ばかり教えてるから
466デフォルトの名無しさん:2013/02/11(月) 17:35:55.24
成長させたいのか
それとも知識をひけらかしたいのか

回答者は前者でなくてはな
467デフォルトの名無しさん:2013/02/11(月) 17:38:07.49
教えることによって自身が成長する、というのも十分にあると思う
そう思って回答しているとずいぶんと違うものになるだろう
468デフォルトの名無しさん:2013/02/11(月) 17:41:08.95
前者が出来てから言う事だよそんなのは
469デフォルトの名無しさん:2013/02/11(月) 17:50:50.39
sizeof演算子の使い方を知らずに見当違いの回答つけてた初心者が逆切れした。

そんなに回答者気分味わいたいなら、「初心者が初心者に偉そうに回答するスレ」でも作ってそこで回答しろ。
470デフォルトの名無しさん:2013/02/11(月) 17:52:50.34
じゃあ、入門編の質問なんて全てggrksだな
471デフォルトの名無しさん:2013/02/11(月) 17:55:33.01
>>466
それ以前に「ウソを教えない」、「見当はずれのレスをつけて混乱させない」 これ超重要
472デフォルトの名無しさん:2013/02/11(月) 17:55:45.58
>>463 = >>469
何か小さいな。
473デフォルトの名無しさん:2013/02/11(月) 17:56:17.06
誰がどういうウソを言ってるんだ?
そもそも誰もウソなんて言ってないように見えるが
474デフォルトの名無しさん:2013/02/11(月) 18:06:57.02
確かに。
475デフォルトの名無しさん:2013/02/11(月) 18:09:08.66
見当外れとか思ってる奴が一番の初心者だな
476デフォルトの名無しさん:2013/02/11(月) 18:09:23.01
sizeof演算子の使い方を知らずに見当違いの回答つけてた初心者が逆切れした。
477デフォルトの名無しさん:2013/02/11(月) 18:10:54.10
見当違いの回答なんて誰もしてないように見えるけど、
一体お前の目には何が見えているんだ
478デフォルトの名無しさん:2013/02/11(月) 18:14:07.64
質問者は
> (*anan)と(Car *)の違いがわからんのだが
と言っている。そして
> 後者の*の位置はなぜ前者と違っているのに成り立つのですか?
とも言っている。つまり、型と単項式の区別がついていないのだ。

それを説明せずに
> コンパイラは変数の型を知っているから、変数からでもサイズを算出できる
とは見当違いもはなはだしい。
479デフォルトの名無しさん:2013/02/11(月) 18:16:47.02
それ俺じゃないし
480デフォルトの名無しさん:2013/02/11(月) 18:21:02.51
変な知識を振り撒くなよ。
sizeof はどちらの使い方でも単項演算子だよ。
481デフォルトの名無しさん:2013/02/11(月) 18:22:08.38
あ、すまん。
式と型と言ってるね。
あってる。
482デフォルトの名無しさん:2013/02/11(月) 18:23:43.76
>>478
別に間違った事言って無いじゃん
Car*が型だってのは文字列に書いてある通りだし
ソースに説明の無い上の方の行の説明をしただけなんじゃないの?
俺じゃないから意図は分からんが、
少なくとも間違っては無いし
1から10まで全部言うよりは教育的
いや、この程度ですら言うべきじゃないと思うが
483デフォルトの名無しさん:2013/02/11(月) 18:30:10.34
なるほどー。
>>478が自分の知識をドヤッてだけに見えてきたね。
何か正論なのにカワイソス。
484デフォルトの名無しさん:2013/02/11(月) 18:34:09.93
printf("%d\n%d\n",sizeof(anan),sizeof(*anan));
485デフォルトの名無しさん:2013/02/11(月) 18:34:35.09
考えればわかる事は教えない。ところがプログラミング言語の文法は人が作ったものだ。
どんなに頑張って考えても正解にはたどり着かない。

int a;
1 sizeof a;
2 sizeof int;
3 sizeof(a);
4 sizeof(int);

何故2だけエラーになるのか考えてもわかるわけがない。
単に「そのように定義したから」
このような事を考えさせる意味は全く無い。教育的云々をいうなら説明せずに
「文法書読め」が正しい。

だらだらと↓こんな説明する意味は全くない。
> コンパイラは変数の型を知っているから、変数からでもサイズを算出できる
486デフォルトの名無しさん:2013/02/11(月) 18:37:42.00
どう見ても揚げ足取りにしか見えないが
487デフォルトの名無しさん:2013/02/11(月) 18:38:36.52
わかるんだな それが

その辺りの比較的上の部分なら
ちゃんとした理由がある
488デフォルトの名無しさん:2013/02/11(月) 18:42:44.68
>>485
やっぱり小さい。
ますます、本質をついているのは>>460ではないかと言う雰囲気が。。。
その丸暗記的な考え方が少々気にかかる。
489デフォルトの名無しさん:2013/02/11(月) 18:44:09.03
sizeofの次に来るものをキャスト演算子と同じ形にすれば
構文解析しやすいからじゃね
490デフォルトの名無しさん:2013/02/11(月) 18:56:10.02
敗走したか
491デフォルトの名無しさん:2013/02/11(月) 18:59:58.81
構造体の構は8X5Cで2バイト目が\か
warning出て文字化けした。
492デフォルトの名無しさん:2013/02/11(月) 19:01:30.23
↑8D5Cだった
493デフォルトの名無しさん:2013/02/11(月) 19:06:07.47
そんな事よりsizeofの結果を直接%dで表示すんなって方が重要
64bit環境で誤動作する可能性がある
明らかに31bit超えないならintでキャストしとけ
494デフォルトの名無しさん:2013/02/11(月) 19:06:45.23
64bit環境でというか、64bitコンパイルしたら、だな
495デフォルトの名無しさん:2013/02/11(月) 19:07:46.23
はあああああああああああああああああああああああ
496デフォルトの名無しさん:2013/02/11(月) 19:12:29.25
>>458 は
>(*anan)と(Car *)の違いがわからんのだが
そもそもポインタの基本がわかってないんだから、それ以外のことを言っても・・・
497デフォルトの名無しさん:2013/02/11(月) 19:18:05.00
えっ?
498デフォルトの名無しさん:2013/02/11(月) 19:28:39.54
>>495>>497
敗走どころか恥の上塗りか
499 ◆QZaw55cn4c :2013/02/11(月) 20:14:09.17
さてはコテをはずしたQZがまたやらかしたか
500デフォルトの名無しさん:2013/02/11(月) 22:06:34.38
文字列比較っていうかstrcmp関数についてわからないことがある

例えば、str[20]という文字配列にscanfで任意の文字列を入力する
そして、endと入力したら処理を終了させたい
そのために、strcmp( str, "end" )で比較した
しかし、endと入力しても一致しない

理由は要素数が20ある文字列配列と比較してるからなんだろうけど、どう弄ったらいいかわからん
501デフォルトの名無しさん:2013/02/11(月) 22:13:10.12
先頭から1Byteずつ調べる
502 ◆QZaw55cn4c :2013/02/11(月) 22:15:09.45
>>500
http://ideone.com/8oQqbl
こっちでは問題ないです。
503デフォルトの名無しさん:2013/02/11(月) 22:16:01.09
>>500
戻り値を真偽値と勘違いしているに1ペリカ
504デフォルトの名無しさん:2013/02/11(月) 22:30:35.97
「scanf("%20s", str)」としてみたらいかが?
505デフォルトの名無しさん:2013/02/11(月) 22:46:59.61
>>500
if ( !strncmp(str, "end", 3) ) {
break;
}
と、3文字で比較すれば良さそう。
506デフォルトの名無しさん:2013/02/12(火) 00:11:41.67
>>503
のった +1
507デフォルトの名無しさん:2013/02/12(火) 00:56:12.11
strncmp()使ったら、endianとかenderとかの場合困るじゃん
508デフォルトの名無しさん:2013/02/12(火) 01:13:58.38
>>507
if ( (strlen(str) == 3 ) && !strncmp(str, "end", 3) ) {
break;
}
く、くるしい・・・。
509デフォルトの名無しさん:2013/02/12(火) 01:15:51.15
>>508
4 にすれば解決
510デフォルトの名無しさん:2013/02/12(火) 01:23:13.08
e→n→d→nullと来ればいいから、strcmpにこだわらなければ行けるかな?
その後にどんな文字が来ようと
511デフォルトの名無しさん:2013/02/12(火) 02:57:18.21
strcmp使えよw
512デフォルトの名無しさん:2013/02/12(火) 04:21:30.38
まあ、>>503だよなぁ
scanf()は入力文字列のケツに\0付けるんだから、そもそもこの場合はstrcmpで問題ない
513デフォルトの名無しさん:2013/02/12(火) 09:16:41.63
うほっ
514デフォルトの名無しさん:2013/02/12(火) 09:19:43.19
最近はチンパもキーを叩くのか
515デフォルトの名無しさん:2013/02/12(火) 11:54:29.92
>>514
昨日のテレビ観たの?
京都大学霊長類なんとかのアイちゃんとその息子が出てた。

タッチパネルにバラバラに数字が一瞬だけ表示されて、
その数字が四角いボタンに切り替わる。
その四角いボタンを元の数字の順序通りに押せば正解というゲームで、
人間はすぐ忘れてなかなか正解が出せないけど、チンパンジーは
全て正解する。しかも物凄い速度で。
516デフォルトの名無しさん:2013/02/12(火) 12:39:46.10
そりゃあ三食昼寝付きで衣食住確保されてて、
タッチパネルを性格にタッチする仕事だけしてればいいんだったら楽だよなあ
517デフォルトの名無しさん:2013/02/12(火) 12:44:11.22
>>516
禁固刑なら仕事もしなくて良いぞ
518デフォルトの名無しさん:2013/02/12(火) 15:10:04.77
あのチンパンの瞬間記憶は人間が失ってしまった能力だって言ってたな。
519デフォルトの名無しさん:2013/02/12(火) 16:37:19.18
>>517
死刑囚でもなけりゃ仕事は中でやらされるかと。
520デフォルトの名無しさん:2013/02/12(火) 17:27:57.67
>>519
禁固刑と懲役刑の区別位しような。
521デフォルトの名無しさん:2013/02/12(火) 17:59:40.44
>>517の禁錮刑は動物園のこと言ってるんだと思った
522デフォルトの名無しさん:2013/02/12(火) 18:11:30.52
百里からT-4@すと
523デフォルトの名無しさん:2013/02/13(水) 00:29:04.37
>>518
興味深いね。
そういえば長いソースをちらちら見ていたと思ったら、問題の箇所、話題となっている箇所をピタリと当てる人がいた、これはチンパン能力なのか?
524デフォルトの名無しさん:2013/02/13(水) 10:11:13.24
>>523
>長いソースをちらちら見ていたと思ったら、問題の箇所、話題となっている箇所をピタリと当てる人がいた、これはチンパン能力なのか?
ソフトウェア開発では、わりと普通のことだけど。

一般的なことだと、役割などを一言で説明できないような関数、変数には問題があることが多い。
コードレビューの際に感じる違和感や、アンチパターンと感じられるものを確認すると、バグが見つかったり
改善点が見つかったりする。

ソフト特定の事になると、バグが発生する箇所、問題になる箇所は大体、数カ所に集中するので、
その部分との関連を確認したりする。
525デフォルトの名無しさん:2013/02/13(水) 11:37:23.88
なるほどね
近い将来、静的解析ツールを買うとチンパンの入った箱が送られてくるようになるね
526デフォルトの名無しさん:2013/02/13(水) 11:43:11.98
チンパンジーならロンゴロンゴが理解できるかもしれないな。
527デフォルトの名無しさん:2013/02/13(水) 11:43:15.92
面白くないよ。
528デフォルトの名無しさん:2013/02/13(水) 13:17:52.45
まだチンパの話してんのかよ
529デフォルトの名無しさん:2013/02/13(水) 20:47:24.41
表示サイズが20文字の表示器がある。

ここに文字列20文字以内を表示し、左に流れていくようにしたい。
表示する文字がなくなったら、今度は表示器の右端から文字列が
流れてくるようにしたい。

それを所定回数ループする。

左に流れていくのはできるんだが、右端から流れてくるようにできない。
530デフォルトの名無しさん:2013/02/13(水) 20:53:40.84
そうですか。
531デフォルトの名無しさん:2013/02/13(水) 21:02:14.32
Windowsなんですがコンパイラは何を使うのがいいでしょうか?
将来的にはLinuxでコードを書く予定なので修正が必要ないほうが良いんですが
532デフォルトの名無しさん:2013/02/13(水) 21:04:50.90
VC++
533片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/13(水) 21:06:00.13
>>529
組み込みかい? どんな入力するとどんな出力になるというデバイス仕様がわからないと話にならないよ。
534デフォルトの名無しさん:2013/02/13(水) 21:10:20.62
>>531
VMにLinux入れて、それでやるのが一番
次点でcygwin
535デフォルトの名無しさん:2013/02/13(水) 21:12:17.26
EclipseのC++拡張でいいんじゃね
536デフォルトの名無しさん:2013/02/13(水) 21:21:19.73
>>533
あ、そうだ。大変失礼しました。
標準関数でいうところのputcharやprintfに該当するものは
あるので、DOS窓で
Hello*****
ello******
llo*******
lo********
o*********
*********H
********He
*******Hel
と表示できればできるかなと思って。
537529:2013/02/13(水) 21:31:30.33
こういう問いに変更したい。
char *s = "Hello";
char t[11] = "**********";
がある。下記の出力になるようにせよ。

Hello*****
ello******
llo*******
lo********
o*********
*********H
********He
*******Hel
******Hell
*****Hello
****Hello*
***Hello**
**Hello***
*Hello****
Hello*****
538デフォルトの名無しさん:2013/02/13(水) 21:31:41.38
539片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/13(水) 21:32:27.13
>>536
ASCII文字のみなら文字列バッファとmemmoveを使えばできると思われ。
日本語が含まれるなら半角ズレの処理が必要。
540529:2013/02/13(水) 21:41:12.88
おおざっぱな問いなのに、答えてくれていだだいたり、アドバイスをくれた方
に感謝する。
541デフォルトの名無しさん:2013/02/13(水) 21:47:03.49
たぶんリングバッファがあればいいんじゃないかなあ
という気はする
542デフォルトの名無しさん:2013/02/13(水) 21:49:52.39
543542:2013/02/13(水) 21:50:46.63
あ、
> char *s = "Hello";
> char t[11] = "**********";
見てなかった
544片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/13(水) 21:53:12.81
void f(char *s, char *t) {
char buf[11];int i,len = strlen(s);
for(i=0;i<len;i++){
strcpy(buf,t);strcpy(buf,s+i);puts(buf);}
for(i=10-1;i>=0;i--){
strcpy(buf,t);
if(10-i>len)strcpy(buf+i,s);else memcpy(buf+i,s,10-i);
puts(buf);}
}
545デフォルトの名無しさん:2013/02/13(水) 22:01:49.73
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "kernel32")
int main()
{
char *s = "Hello";
char t[11] = "**********";
int i,j;
strncpy(t, s, strlen(s));
while (1) {
for (i=0; i<strlen(t); i++){
for (j=0; j<strlen(t); j++){
putchar(t[(i+j)%strlen(t)]);
}
putchar('\r');
Sleep(500);
}
}
return 0;
}
546デフォルトの名無しさん:2013/02/13(水) 22:09:57.46
文字列操作を直感で使えるようなライブラリがほしいです
547デフォルトの名無しさん:2013/02/13(水) 22:25:13.69
548デフォルトの名無しさん:2013/02/13(水) 22:25:28.00
GLibでも使えばよくね
549デフォルトの名無しさん:2013/02/13(水) 22:32:48.27
550529:2013/02/13(水) 22:51:31.08
おぉ、こんなに。多謝です。
551デフォルトの名無しさん:2013/02/14(木) 16:06:39.96
初歩的な質問で、すみませんが、

本に、if分のネスト数には限界があるとのことでした
また、else-ifの梯子は、

if(){
}else if(){
}else if(){
}else if(){


と書きますが、実際には

if(){
}else
if(){
}else
if(){
}else
if(){


とのことでした

つまり、else-ifでの分岐にも限界があるのでしょうか
552デフォルトの名無しさん:2013/02/14(木) 16:09:06.17
向いてないから死ね
553デフォルトの名無しさん:2013/02/14(木) 16:32:41.28
>>551
2つの例ともにネストされてないんじゃないの?

JIS規格によると、15段までと規定されいているらしい。
554デフォルトの名無しさん:2013/02/14(木) 16:43:12.09
if 〜に移った段階でelseブロックが閉じてるからネストはして無いわな
規格でどう捉えるのかは知らんけど
555デフォルトの名無しさん:2013/02/14(木) 16:46:50.62
ネストしてるよ
556デフォルトの名無しさん:2013/02/14(木) 16:46:56.88
if () {
} else {
 if () {
 } else {
  if () {
  } else {
   if () …
  }
 }
}
557デフォルトの名無しさん:2013/02/14(木) 16:48:11.64
ていうかどっちも同じじゃん
改行しただけで
558デフォルトの名無しさん:2013/02/14(木) 16:54:59.94
556のコードだと次のifに取り掛かった段階でelse節が中括弧のせいで閉じてないからな
559デフォルトの名無しさん:2013/02/14(木) 17:17:50.91
下のような構造体のポインタのポインタのメンバにはどのようにアクセスすればいいですか?

typedef struct {
int **a;
} b
560デフォルトの名無しさん:2013/02/14(木) 17:19:46.51
流れを読まず、else-ifがいくつまで並べられるのか試すプログラムを作ってみた。
ttp://ideone.com/mWTotN

例えば make_code(2);を実行すると、以下のような test.c を生成。
-- test.c ------------------
int main(int argc, char *argv[])
{
if(argc == 1) {
return 1;
} else if(argc == 2) {
return 2;
}
return 0;
}
----------------------------
system(); で test.c をコンパイルするのを、else-ifの数を増やして挟みうちして、
コンパイルが成功/失敗するelse-ifの数を表示して終了する。
現在131072個をコンパイル中だが、CeleronM 1.86MHzでは結果が出るまで かなり時間かかりそう。。
561デフォルトの名無しさん:2013/02/14(木) 17:21:05.81
>>559
typedef struct {
int **a;
} b;

func()
{
b data;
data->a = NULL;
}
562デフォルトの名無しさん:2013/02/14(木) 17:25:50.59
swishでよくね
563デフォルトの名無しさん:2013/02/14(木) 17:26:56.98
>>561
おかしいだろ
data->aじゃなくてdata.aだろ
564560:2013/02/14(木) 17:37:59.19
131072個をコンパイル中にトイレ行って戻ってきたら、PCの電源が落ちていた。
>>560のプログラムのせいか…?
565560:2013/02/14(木) 18:08:32.90
もう一回やったら、また落ちました。

ノートPCですが、コンセントがつながっているのにいきなり電源切れました。
電源ボタンを押してもウントモスントモいいませんでした。
CPUのファンの出口がかなり熱くなっていました。
PC買って6年くらいだと思うけど初めての現象。

コンセント抜いて少し時間おいたら普通に起動出来たけど、
#############################################
#                                #     
#  >>560のプログラムは危険かも知れません!!   #
#                                #     
#############################################

131072個のif-elseを Debian で gcc でコンパイルしていただけなのに。。
566デフォルトの名無しさん:2013/02/14(木) 18:49:13.66
すごい基礎的な質問ですけど、関数の引数がポインタのポインタの場合、実際に関数に渡す値は、ポインタですか?
567デフォルトの名無しさん:2013/02/14(木) 18:53:14.57
ポインタってのは単にアドレスを格納する変数ってだけで
*の数は何回アドレスを辿れるかってことでしかない
568デフォルトの名無しさん:2013/02/14(木) 19:02:32.32
ぽぽぽぽーん
569デフォルトの名無しさん:2013/02/14(木) 19:03:15.58
>>565
> 131072個のif-elseを
1572864とか平気で通ってる, それ以上になるとスワップが足りないらしい
570デフォルトの名無しさん:2013/02/14(木) 19:08:05.54
ふむむ…文字列ポインタの配列を関数にわたすとき、なぜ引数をポインタのポインタにしなければならないのかもわからないです…
571560:2013/02/14(木) 19:18:18.50
>>569
試して頂いて感謝です。
if-else 1572864個で平気ですか。

私のPC(Dynabook AX53C, CeleronM 1.86MHz, Mem 1.0GB, Debian 7, gcc 4.7.2)
が熱暴走したのかな。。
572560:2013/02/14(木) 19:23:18.27
>>571
× CeleronM 1.86MHz
○ CeleronM 1.86GHz
573デフォルトの名無しさん:2013/02/14(木) 19:24:03.68
Cやるなら3970Xくらい買わないと
574デフォルトの名無しさん:2013/02/14(木) 20:25:18.20
>>571-572
吹いたw
575デフォルトの名無しさん:2013/02/14(木) 21:05:39.21
面白くないよ
576デフォルトの名無しさん:2013/02/14(木) 22:49:23.55
>>560をScientific Linux6.3+gcc4.4.6でやったら、
PCは落ちないけど3022x個近辺でSegmentation faultが出る。
30227個, 30229個, 30225個と、安定しない。
577デフォルトの名無しさん:2013/02/14(木) 23:21:33.50
怖いプログラムだなw

VC++だとコンパイラが上限設定してたと思う
最近のは知らんが
578デフォルトの名無しさん:2013/02/14(木) 23:40:03.07
昔、無限ループでひたすらサブディレクトリを掘り続けるバッチ作ったことあるけど、
そのときはブルースクリーンでPC落ちた。今やるとどうなるかは知らない。
579デフォルトの名無しさん:2013/02/15(金) 00:00:49.20
仕様におけるネストの最低保証は15なんだし、それ以上になったらエラーで止まるほうが
この場合はいいコンパイラだと思ってしまうな
580デフォルトの名無しさん:2013/02/15(金) 03:29:51.35
if-elseのネスト(?)の検証してるみたいなので、ついでに>>556形式の深さのネストを検証してみた。
if(1)
 if(2)
  if(3)
   printf("3\n");
みたいな感じで、elseはなし。
VC++8.0.50727だと124段目でネスト深すぎのエラー終了。
Ideon-Cだと8000でも通った(8200位で文字数制限なのかソースが途中で切れて書式エラー)。
そういえばIdeon-C++で試してないけど、まぁ似た様な感じだろうな。
581デフォルトの名無しさん:2013/02/15(金) 05:38:02.31
で?
582デフォルトの名無しさん:2013/02/15(金) 08:06:14.11
cygwin-gcc で %lld が使えないのはどうしてですか?
583デフォルトの名無しさん:2013/02/15(金) 08:59:06.04
>>582
使えるけど

$ gcc -dumpmachine
i686-pc-cygwin

$ gcc --version
gcc (GCC) 4.5.3
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

これで↓が普通にコンパイルできて動く
#include <stdio.h>
int main(void) {
long long val = 12345;
printf("%lld\n", val);
return 0;
}
584デフォルトの名無しさん:2013/02/15(金) 11:08:13.95
ヒュー、俺の糞スペの相棒でそんなコード走らせたら死ぬぜ
585デフォルトの名無しさん:2013/02/15(金) 11:30:00.18
switchにも限界あるの?
586デフォルトの名無しさん:2013/02/15(金) 11:59:35.64
投稿エラー: 本文が長すぎます!
だと。
http://pastebin.com/GPwnb1HC

ISO/IEC 9899:1999 (E) 5.2.4.1 Translation limits
1023 case labels for a switch statement (excluding those for any nested switch statements)
587デフォルトの名無しさん:2013/02/15(金) 16:37:19.91
>>585
>>560をswitchにして
int main(int argc, char *argv[])
{
switch(argc) {
case 1:return 1;
……
case 123:return 123;
default:break;
}
return 0;
}
みたいなのを生成→gccコンパイルを試したら524288個くらいは出来ました。
ttp://ideone.com/YjokNL
それ以上は当方のスワップが足りなくなったのでやめましたが、それまで>>565みたいに
(ノートなのに)いきなり電源が落ちることはありませんでした。
588デフォルトの名無しさん:2013/02/16(土) 12:53:13.67
防衛省、『サイバー空間防衛隊』新設へ検討委員会を設置
http://anago.2ch.net/test/read.cgi/bizplus/1360979117/
589デフォルトの名無しさん:2013/02/16(土) 15:00:27.01
WIN32APIの勉強を始めたばかりで、ウィンドウクラスの登録を関数化したのですが
BOOL wndcl(HINSTANCE); //プロトタイプ宣言
……
if(wndcl(hInst)==FALSE)return 0; //関数の呼び出し
……
関数の中身
if(RegisterClass(&wnc)==NULL)return FALSE;
return TRUE;}で動くのですが一応あってるのでしょうか?
サイトや参考書を見てもどれもATOM型という型を使っていて
ATOM型はウィンドウクラスを登録するための型と仰ってるサイトもあって不安です。
ATOM型はResisterClassの成否を戻り値にできるためにウィンドウクラスに使われていると考えていいのですか?
調べてみるとATOM型はWORD型だったりして、なら素直にWORD型やint型でもいいんじゃないかと思ってもうわからないです
590デフォルトの名無しさん:2013/02/16(土) 22:10:37.97
>>589
ソースに書かれた型が全部WORD型だったら、今扱ってる数値がアトムなのかウィンドウハンドルなのかファイルハンドルなのかインスタンスハンドルなのか
メニューハンドルなのかアイコンハンドルなのかビットマップハンドルなのかカーソルハンドルなのかデバイスコンテキストハンドルなのかモジュールハンドル
なのか、はたまたハンドルではなくIDなのかが一見して判らなくなるだろ

型の実装が被るのが気になるなら、
#define STRICT
#include <windows.h>
とかしておけば?
591デフォルトの名無しさん:2013/02/16(土) 22:29:07.06
アトムはウィンドウクラスを識別するための値
異なるウィンドウクラスは必ず異なるアトムを持つ
アトムは0にはならないので、無効なアトムやエラーを表現するのに0が使える

アトムの型をATOMとしてるのは
アトムだと分かりやすくするためなので
アトムは素直にATOM型で扱おう
592デフォルトの名無しさん:2013/02/16(土) 23:15:51.94
そんなことより ==NULL やめろ
593デフォルトの名無しさん:2013/02/16(土) 23:57:58.35
ATOMはポインタじゃないからな
ドキュメントにもエラー時は0を返すと書いてあるので
色んな意味で0と比較すべし
594589:2013/02/17(日) 00:26:20.18
>>590 >>591
ありがとうございます、ATOM型の用途が少しずつ見えてきました
異なるウィンドウハンドルを持つことが出来るということは
多重起動の判定なんかに使えると考えてもいいのでしょうか?
となるとBOOL型で関数を作るよりATOM型で関数を作るほうが色々と便利そうですね

>>592 >>593
NULLは0でdefineされてると聞いたのでNULLと0とFALSEを特に考えずに分けないで使ってました
きちんとポインタのみNULLを使うように心がけたいと思います
595デフォルトの名無しさん:2013/02/17(日) 00:30:21.52
NULLの定義はC89では ((void*)0) か 0 だけど
C99 では処理系依存だったはず
C++ も最新の仕様では処理系依存になってたはず

実際ポインタに対してしか使えないよう
特殊な処理系独自の定義になってる事もある
596デフォルトの名無しさん:2013/02/17(日) 01:52:46.23
いや、0でいいんだろ
597デフォルトの名無しさん:2013/02/17(日) 01:56:44.16
NULLを使うことは書き方の約束事でしかない。
プリプロセッサーは NULLを0に戻し、
その0はコンパイラによってポインターとして解釈さ れる。
それでも特に関数の引数ではNULLに(0にも必要であるのと同じ で)明示的なキャストが必要かもしれない。

C FAQ 5章 ヌルポインター
www.kouno.jp/home/c_faq/c5.html
598デフォルトの名無しさん:2013/02/17(日) 08:32:47.53
>>597
>関数の引数ではNULLに(0にも必要であるのと同じ で)明示的なキャストが必要
これは
・プロトタイプを記述せずに前方参照をおこなった場合、
・かりにプロトタイプを記述するか前方参照が発生しないようにしても、可変長引数を呼び出す場合
ですね。後者は昔は (char *)0 とかを頻繁にみましたね。
599デフォルトの名無しさん:2013/02/17(日) 10:27:54.51
>>595
言語的に0です。
0を入れておけば、アーキテクチャ的にNULLが0でなくても
勝手にアーキテクチャ上のNULLになったオブジェクトが生成されます。
600デフォルトの名無しさん:2013/02/17(日) 11:31:32.94
>>599
3,4行目は正しいが、
「言語的に0です。」なんてことは全く言ってないな。
601デフォルトの名無しさん:2013/02/17(日) 12:42:38.77
NULLを0に戻しとか寝言ほざくな
6.3.2.3 Pointers
3 An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.55)
If a null pointer constant is converted to a pointer type, the resulting pointer, called a null pointer, is guaranteed to compare unequal to a pointer to any object or function.
4 Conversion of a null pointer to another pointer type yields a null pointer of that type. Any two null pointers shall compare equal.
7.17 Common de?nitions <stddef.h>
3 The macros are
NULL
which expands to an implementation-de?ned null pointer constant
602デフォルトの名無しさん:2013/02/17(日) 12:48:17.80
C++ってtypedef略しちゃってもいいの?
603デフォルトの名無しさん:2013/02/17(日) 13:02:00.59
自己解決しました
質問には答えなくていいです
604デフォルトの名無しさん:2013/02/17(日) 13:09:27.21
>>601
指摘が的はずれ
605デフォルトの名無しさん:2013/02/17(日) 13:58:53.54
>>603
どう解決したのか書くのが礼儀じゃないか?
606デフォルトの名無しさん:2013/02/17(日) 16:10:13.81
なりすましが解決方法なんて書くわけないじゃないか。
607デフォルトの名無しさん:2013/02/17(日) 21:26:20.53
>>601
どんだけ的はずれなのか、訳してあげるからよく考えてみな。
6.3.2.3 Pointers
3
ポインタにおいて値が零の整数表現、つまりvoid *にキャストされた零表現をヌルポインタ定数と呼ぶ。
ヌルポインタ表現がポインタ型に変換されたとき、この結果、すなわちヌルポインタは他のどのようなオブジェクトや関数へのポインタとも異なることが保証される。
4
ヌルポインタを別のポインタ型に変換した結果は、そのポインタ型におけるヌルポインタとなる。(各ポインタ型における)ヌルポインタはすべて等しくなければならない。
7.17.3
マクロ NULL は処理系規定のヌルポインタ定数に展開される。
608デフォルトの名無しさん:2013/02/17(日) 22:02:04.32
orの訳が変
609デフォルトの名無しさん:2013/02/17(日) 22:08:16.61
零の整数、またはvoid *にキャストされた零

#define NULL 0

#define NULL ((void *)0)
のいずれか
コンパイラメーカーの都合できめてもよい
610デフォルトの名無しさん:2013/02/17(日) 22:15:47.04
>>607
アホ
611デフォルトの名無しさん:2013/02/17(日) 23:04:01.70
対偶も知らんアホはプログラマやめろ
612デフォルトの名無しさん:2013/02/17(日) 23:23:28.60
>>599
ヌルポインタは言語的に0で表現されるが、
NULLの定義は0とは限らない
あまり適当な事は言うな
613デフォルトの名無しさん:2013/02/17(日) 23:24:47.01
↑アホ
614デフォルトの名無しさん:2013/02/17(日) 23:25:49.23
ポインタにNULLを入れて何回でもdeleteしてやる
615デフォルトの名無しさん:2013/02/17(日) 23:26:10.39
まずここがC言語スレだってことを認識しろ
616デフォルトの名無しさん:2013/02/17(日) 23:30:27.64
>>614
これの後さんざん荒れたのを見た記憶があるけど何処だったっけ
617デフォルトの名無しさん:2013/02/18(月) 07:12:06.54
>>616
何代か前のこのスレ、free(0)の話がえんえんと、QZが負けた
618デフォルトの名無しさん:2013/02/18(月) 09:31:44.29
struct {
char *a;
int b;
} aaa;
を初期化する方法として
memset(&aaa, 0, sizeof(aaa));
が良く使われるが、環境依存なので避けなければいけない。
619デフォルトの名無しさん:2013/02/18(月) 09:39:14.95
>>618
おぅっ?
いきなり何の燃料やねん?
620デフォルトの名無しさん:2013/02/18(月) 09:41:08.72
書籍のサンプルプログラムでどうも腑に落ちない点がありましたので質問させてください。
さすがに書籍のコードをそのまま載せるわけにはいかないので、バグ(?)を再現できる短いソースコードを作りました。
#include <stdio.h>

int main(void){
char c;
scanf("%x%*c",&amp;c);
printf("0x%X\n",c);
}

ここで表示されるのが0x80でなくで0xFFFFFF80となるのはなぜなのでしょう?
ご教示ください。
621デフォルトの名無しさん:2013/02/18(月) 09:44:30.58
ごめんなさい、ソースコード間違えました!
#include <stdio.h>

int main(void){
char c;
sscanf("0x80\n", "%x%*c",&c);
printf("0x%X\n",c);
}
失礼しました。。。
622デフォルトの名無しさん:2013/02/18(月) 09:49:21.61
>>621
%x使うときはunsigned intでないとだめだよ。
623デフォルトの名無しさん:2013/02/18(月) 10:04:38.27
charじゃだめなんですね。

この現象はprintf関数が勝手に変数cをint型だと解釈して、cの先の3バイトに格納された
値も読んで表示しちゃったって解釈でいいんですかね?
624デフォルトの名無しさん:2013/02/18(月) 10:10:47.04
あれ?
#include <stdio.h>

int main(void){
char c[2];
c[1] = 0xab;
sscanf("0x80\n", "%x%*c",&c[0]);
printf("0x%X\n",c[0]);
}
でも動作は同じになるから>>623の解釈は間違い・・・?
625デフォルトの名無しさん:2013/02/18(月) 10:16:38.59
仕様外のことをしているのでなんともいえんが、
おそらく
sscanfの時点で本来unsigned intを取るべきところに
signed charを使っているので0x80が-8と解釈されて
リトルエンディアンでは
80 FF FF FF
が代入されているんだろう。
626デフォルトの名無しさん:2013/02/18(月) 10:21:32.12
ありがとうございました。
なんとなくわかった気がします。
627デフォルトの名無しさん:2013/02/18(月) 10:27:20.43
違った。
俺の環境だと、
sscanfで
80 00 00 00
が入って、
printfで
80が-8と解釈されてunsigned intに変換された結果
FFFFFF80
と表示されるようだ。
628デフォルトの名無しさん:2013/02/18(月) 10:28:52.25
sscanfで勝手にchar cより後のアドレスに書き込みがされるんですね。
下手すりゃメモリ破壊ってことですか?
629デフォルトの名無しさん:2013/02/18(月) 11:24:41.45
しかもそれが、コンパイラでは警告もエラーも出せない部分でだからなあ
630デフォルトの名無しさん:2013/02/18(月) 12:15:05.86
おまえら違うぞ。
cのアドレスにintで読み込んでメモリ壊してるのはあってるけど、

> sscanfの時点で本来unsigned intを取るべきところに
> signed charを使っているので0x80が-8と解釈されて
sscanfは渡されたアドレスがunsigned intなのかsigned charなのかわかるわけがない。
従って、
> signed charを使っているので0x80が-8と解釈されて
はウソ。

0xFFFFFF80となるのは
> printf("0x%X\n",c[0]);
c[0]が -128(char)から-128(int)に格上げさるから。
631デフォルトの名無しさん:2013/02/18(月) 12:35:34.26
unsigned ってなんですか?
632デフォルトの名無しさん:2013/02/18(月) 12:45:03.67
署名されてない。つまり信用できないっていうこと。
633デフォルトの名無しさん:2013/02/18(月) 12:54:51.42
>>631
サインがされてないってことです
634デフォルトの名無しさん:2013/02/18(月) 13:10:35.47
信用できません
635デフォルトの名無しさん:2013/02/18(月) 13:24:57.60
(signed) charがprintf関数内ですsigned intにキャストされるんですか?
このキャストは仕様で規定されてますか?
636デフォルトの名無しさん:2013/02/18(月) 13:30:35.41
汎整数拡張
637デフォルトの名無しさん:2013/02/18(月) 13:47:52.83
>>631

signed -> 最上位ビットを符号ビットとして 扱 う 。
unsigned -> 最上位ビットを符号ビットとして 扱 わ な い 。

0X80 =( 1 0 0 0 0 0 0 0 )2

最上位ビット
638デフォルトの名無しさん:2013/02/18(月) 13:50:36.93
>>637(訂正)
8ビット時
1 0 0 0 0 0 0 0

最上位ビット
639デフォルトの名無しさん:2013/02/18(月) 14:08:06.25
>>635
> このキャストは仕様で規定されてますか?
キャストとは呼んでいない。
JISが手元にないけど「格上げ」を使っていたはず、原文だとpromotion。
640デフォルトの名無しさん:2013/02/18(月) 15:01:19.39
格上げは暗黙のキャスト動作だね。
641デフォルトの名無しさん:2013/02/18(月) 15:07:59.75
キャスト演算子を使ったものがキャスト
642デフォルトの名無しさん:2013/02/18(月) 15:24:59.41
>>637
なるほどすごい分かりやすいです
ありがとうございます
643デフォルトの名無しさん:2013/02/18(月) 15:53:54.53
いえいえ
644デフォルトの名無しさん:2013/02/18(月) 16:54:22.64
本当にご親切にどうもありがとうございました
重ね重ねお礼申し上げます
645デフォルトの名無しさん:2013/02/18(月) 17:09:50.99
むしろ謝罪しろ
646620:2013/02/18(月) 17:44:03.66
みなさま本当にありがとうございます。
みなさんからのアドバイスをもとにいろいろググってみたところ、
暗黙の型変換やら符号拡張やらまだまだ学ばなければならないことがたくさん見つかりました。
謹んで修行いたします。

そして、こんなバグやらメモリ破壊やらを放置して平然とサンプルコードとして載せている
この参考書の使い方も、ゆっくり考えたいと思います。
なんか誤字脱字も多いし。。。
647デフォルトの名無しさん:2013/02/18(月) 17:57:36.87
しつこい
648デフォルトの名無しさん:2013/02/18(月) 18:00:38.42
こんなの基本情報を取得していれば常識なのに
これだから資格をバカにするやつらは困る
649デフォルトの名無しさん:2013/02/18(月) 18:02:07.26
650デフォルトの名無しさん:2013/02/18(月) 22:10:33.37
直接定数を書いて、~をとった場合は型の大きさに応じて計算されるのだろうか。
たとえば、int i = 1, char c = 1 と ~0 との & とか。
651デフォルトの名無しさん:2013/02/18(月) 22:13:33.89
>>650
汎整数昇格でググれ
652 ◆QZaw55cn4c :2013/02/18(月) 22:44:23.58
integral promotion/integer promotion
可変長引数は自動的に inategral promotion を適用されるのです。
653デフォルトの名無しさん:2013/02/19(火) 10:03:15.13
1から始めようと思って参考書を買ってみたのですが、その通りにバッチファイルを作っても「パスが見つかりません」とエラーになってしまいます
ファイルの位置も確認しましたし、位置アドレスをテキストコピーして貼り付けても、管理者として開いても駄目でした

作ろうとしたもの:本によればCコンパイラを使用できるvcバッチ(10日で覚えるC言語入門教室)
使っているもの:Visual Studio2010
OS:Windows7
メーカー:emachines
備考:家族と共用でアカウント分けているから指定しないといけない?

よろしくお願いします
654デフォルトの名無しさん:2013/02/19(火) 10:08:19.88
バッチファイルを作成してダブルクリックしてるんだろうな…
その参考書の始めの方に環境設定とか実行方法の節ないのか? ないなら捨てろ。
655デフォルトの名無しさん:2013/02/19(火) 10:08:28.19
VisualStudioのスレで聞け
656デフォルトの名無しさん:2013/02/19(火) 10:10:32.26
vcvars32.batをまず実行しろ
657653:2013/02/19(火) 10:28:18.60
皆さんありがとうございます
試しにvcvars32とコンパイラを開いてみたら必要なdllが入っていないようでした
後でこの参考書は窓から投げ捨てよう
658デフォルトの名無しさん:2013/02/19(火) 11:15:17.77
そこまで酷い参考書はさすがに出版されていないだろうから、
うまくいかないのはお前の読込み不足。
659デフォルトの名無しさん:2013/02/19(火) 11:21:27.09
というかVisualStudio使ってるならF5キーでいいやろ
660デフォルトの名無しさん:2013/02/19(火) 12:34:01.60
ctrl押せよ
661デフォルトの名無しさん:2013/02/19(火) 16:17:06.85
ビットフィールドって構造体でしか使えないの?
662デフォルトの名無しさん:2013/02/19(火) 17:24:07.32
malloc関数ってなんて読むの?
663デフォルトの名無しさん:2013/02/19(火) 17:25:51.40
bitアクセスできるコンパイラを使ったことがある。
664デフォルトの名無しさん:2013/02/19(火) 17:40:57.73
>>662
マロック
665デフォルトの名無しさん:2013/02/19(火) 17:43:23.75
マリック
666デフォルトの名無しさん:2013/02/19(火) 17:44:07.11
マルオッケー☆
667デフォルトの名無しさん:2013/02/19(火) 17:44:09.42
>>662
ぶひひ
668デフォルトの名無しさん:2013/02/19(火) 19:46:03.27
その本は全然初心者向けじゃないようだな
よりにもよって2chなんかで聞くハメになろうとは

従ってその本は焚書
まるでお前の役に立ってないからだ
669デフォルトの名無しさん:2013/02/19(火) 20:05:37.74
inttype.h でプリミティブのサイズまで言語の範疇に入ってしまったから
ますますビットフィールドは洋ナシ
670デフォルトの名無しさん:2013/02/19(火) 20:13:00.24
671デフォルトの名無しさん:2013/02/19(火) 20:17:34.66
>bitアクセスできるコンパイラを使ったことがある。
これへのレスだろきっと
672デフォルトの名無しさん:2013/02/19(火) 20:23:24.49
ハード弄りたい人はないと困るだろ
673デフォルトの名無しさん:2013/02/19(火) 21:08:57.69
質問です。やさしいCってのを
まだ、60ページくらいしかよんでないです。
結局皆さんは、Cで何を作ってるんですか?
674デフォルトの名無しさん:2013/02/19(火) 21:09:34.28
愛の結晶
675デフォルトの名無しさん:2013/02/19(火) 21:18:11.61
>>673
Cで便利なコマンドをつくりましょう
676デフォルトの名無しさん:2013/02/19(火) 21:18:31.13
初めてのCでも作れますか?
677デフォルトの名無しさん:2013/02/19(火) 21:28:17.32
プログラミングなんて
何を作ったかすぐ忘れるくらいに
作り飛ばした

おもったことをパッとやる
自分用のならその程度
678デフォルトの名無しさん:2013/02/19(火) 21:35:24.30
>>673
俺もそれ読んでるわ
まあ俺ゲーム作りたくて基本を学んでる
最終的にはC#でVITAゲーム作りたいんだけどね
679デフォルトの名無しさん:2013/02/19(火) 22:37:04.77
ファイル管理は自作のが一番使いやすい
他人のだともし削除したくないのが消されるかもしれないし
680デフォルトの名無しさん:2013/02/19(火) 22:40:19.70
ゲームやツール類は鉄板だな
681653 657:2013/02/19(火) 23:12:45.52
一言怒りをぶつけさせてくれ
テキストの誤植で見本に\抜けてた
時間と手間返せ
682デフォルトの名無しさん:2013/02/19(火) 23:15:57.71
http://codepad.org/REp8rSFX
関数わからない人用にゴミソースですけど
683デフォルトの名無しさん:2013/02/19(火) 23:34:10.40
教科書が常に正しいとは限らない
という絶対的な真理を学んだようだな
こりゃすばらしい
それだけでその本の元はとれた
684デフォルトの名無しさん:2013/02/20(水) 00:01:04.35
本をあたまから信じるとか
正直あり得ない

常に誤植を疑うくらいでないと
(でも大抵は自分のミスなんだけどねw)
685デフォルトの名無しさん:2013/02/20(水) 00:02:26.52
本をあたまから信じるとか
正直あり得ない

常に誤植を疑うくらいでないと
(でも大抵は自分のミスなんだけどねw)
686デフォルトの名無しさん:2013/02/20(水) 00:05:34.69
本をあたまから信じるとか
正直あり得ない

常に誤植を疑うくらいでないと
(でも大抵は自分のミスなんだけどねw)
687デフォルトの名無しさん:2013/02/20(水) 00:21:13.66
本をあたまから信じるとか
正直あり得ない

常に誤植を疑うくらいでないと
(でも大抵は自分のミスなんだけどねw)
688デフォルトの名無しさん:2013/02/20(水) 03:24:54.59
本をあたまから信じるとか
正直あり得ない

常に誤植を疑うくらいでないと
(でも大抵は自分のミスなんだけどねw)
689デフォルトの名無しさん:2013/02/20(水) 12:47:20.84
重要な事なので?
690デフォルトの名無しさん:2013/02/20(水) 13:10:32.83
入門書とか初心者本なんて作者も初心者だったりするしな
691デフォルトの名無しさん:2013/02/20(水) 13:12:30.58
知識がないのに本が間違ってるとか思う奴は勉強に向いてない
692デフォルトの名無しさん:2013/02/20(水) 13:17:55.52
向いてないね
693デフォルトの名無しさん:2013/02/20(水) 19:01:59.15
最後まで本が間違っていると思わない人は勉強に向いてない
自分で何も考えてない証拠
694 ◆QZaw55cn4c :2013/02/20(水) 20:06:08.50
本を読むことは、他人にものを考えてもらうことである。
本を読むことは、他人の考えた過程を反復的にたどることにすぎない。
実際、本を読む際にはものを考える苦労はほとんどない。

ショウペンハウエル
695デフォルトの名無しさん:2013/02/21(木) 02:24:53.58
QZみたいな思考力読解力のない人間にとってはそうだろうな
696デフォルトの名無しさん:2013/02/21(木) 04:37:46.80
ショーペンハウエルがどうかしたか知らないけど、本を読むにも思考力が必要だぞ
全く理解できない本を読んでも何も身に付かない

Qにとって都合の良い言葉を必死に探してきただけだろう
697デフォルトの名無しさん:2013/02/21(木) 05:54:56.98
>>694
その書き込みがショウペンハウエルに考えてもらって何も考えてないってことを証明してるよなw
698デフォルトの名無しさん:2013/02/21(木) 07:26:02.89
>>697
自己言及のパラドクスがえしにしては、いまいち
699デフォルトの名無しさん:2013/02/21(木) 11:24:14.15
本を読む本
オヌヌメ
700デフォルトの名無しさん:2013/02/21(木) 13:43:59.24
>>698
パラドクスでもなんでもねーよw
701デフォルトの名無しさん:2013/02/21(木) 16:07:23.06
処理速度について質問です。

メイン関数内に
a=1;
b=1;

と代入の処理を2件書いた場合と


メイン関数内に
a();←中身はa=1;を行う関数
b();←中身はb=1;を行う関数

という前者の処理を外部のサブ関数に書いた場合
飛ぶ処理分だけ後者の方が遅いですか??

頻繁にループするような処理の場合は
出来るだけループ中に別の関数に飛ばさずに
全部ベタ書きした方が処理速度あがるんですかね…。
もちろん関数使った方が綺麗ですが。
702デフォルトの名無しさん:2013/02/21(木) 16:09:16.67
>>701
関数で作って実行してみる
その部分で時間がかかっているようなら inline 修飾する
703デフォルトの名無しさん:2013/02/21(木) 16:28:01.16
速度は実測が基本
704デフォルトの名無しさん:2013/02/21(木) 16:31:38.91
ありがとうございます。
とりあえず作ってやってみます
705デフォルトの名無しさん:2013/02/21(木) 20:13:31.00
いえいえ
706デフォルトの名無しさん:2013/02/22(金) 00:01:07.69
むしろ謝罪しろ
707デフォルトの名無しさん:2013/02/22(金) 00:08:22.09
さーーーっせんしたーーー
708デフォルトの名無しさん:2013/02/22(金) 00:11:10.43
可能なら関数をstaticにしておく。
まともなコンパイラなら、最適化でインライン展開してくれる。
709デフォルトの名無しさん:2013/02/22(金) 00:23:32.74
何を基準に「まとも」と言っているのやら
規格表にもない事を言われてもねえ
710デフォルトの名無しさん:2013/02/22(金) 00:26:50.29
そりゃぁ、最適化の方針まで規格表に書かれてなんていないだろうよ。
711デフォルトの名無しさん:2013/02/22(金) 00:56:00.26
だったら話すんなよ
処理系依存の話は処理系依存スレへ
712デフォルトの名無しさん:2013/02/22(金) 01:12:57.12
かたいこというなよお
713デフォルトの名無しさん:2013/02/22(金) 02:55:50.95
typedef struct avcst avc;
main(){
avc * pa;
}
なんでこれでコンパイラ警告でないの?
714デフォルトの名無しさん:2013/02/22(金) 03:04:12.53
>>713
struct avcst の中身がわからなくても pa の確保サイズはわかるから
715デフォルトの名無しさん:2013/02/22(金) 07:40:06.06
>>709-710
規格票な
716デフォルトの名無しさん:2013/02/22(金) 07:54:35.82
>>713
それだけだとエラーも警告も出ないけど、

pa = (void *)0;  //ここまではOK
pa++;        //ここでエラー

になる。サイズが未定義の構造体へのポインタは
演算することができない。
717デフォルトの名無しさん:2013/02/22(金) 09:36:34.18
所詮ポインタだからな
718デフォルトの名無しさん:2013/02/22(金) 12:26:29.40
馬鹿なポインタ
719デフォルトの名無しさん:2013/02/22(金) 20:21:19.83
馬鹿が使うとせっかくのポインタも糞まみれの汚物以下、
吐瀉物の泉とデスマーチの最後尾になる
720デフォルトの名無しさん:2013/02/23(土) 14:44:33.85
あんたも昔は馬鹿だったんだから大目に見てあげなよ
721デフォルトの名無しさん:2013/02/23(土) 14:57:06.38
もう批判はやめよう
722デフォルトの名無しさん:2013/02/23(土) 16:13:56.92
>>721
そんな批判するなよ
723デフォルトの名無しさん:2013/02/24(日) 03:31:06.30
>>722
そんなお前は・・・グフッ・・・俺はもうダメだ・・・(ガクッ

うああああああああっ兄さあああああああああああんっっ!
何故だっ、どうしてお前は兄さんにこんな・・・ひっ酷いことをっ・・・
ゆ・・・許さねえええええええええええええええ!!
724デフォルトの名無しさん:2013/02/24(日) 06:01:23.52
>>723
なんで兄さんは死ぬ直前に気持ち悪い笑い声発してるの?
725デフォルトの名無しさん:2013/02/24(日) 14:09:56.95
C#とくらべて、Cはかなり早いのでしょうか?
2倍も3倍も変わるのであれば書きなおそうと思ってるのですが・・・。
726デフォルトの名無しさん:2013/02/24(日) 14:24:30.86
試して見たら?
727デフォルトの名無しさん:2013/02/24(日) 14:25:03.05
JIT が十分に有効になるように書かれたコードなら
ある意味 C より全然早いんだが > C#
さすがにページング効率とかキャッシュ効率を十分
考えてコーディングされてる奴には負ける

# ほとんど勝ち目がないのは並列計算が必要な所で
# 並列命令使いまくった FORTRAN
# C でも勝てない
# MS の FORTRAN は使ったことがないが…
728デフォルトの名無しさん:2013/02/24(日) 15:25:46.06
C#がCより速いのなんて見た事無いわ
729デフォルトの名無しさん:2013/02/24(日) 17:34:28.14
C#とCくらいなら
アルゴリズムの工夫>>>>>>>越えられない壁>>>>並列化>>>>>小手先の最適化>=言語
くらい
730デフォルトの名無しさん:2013/02/24(日) 17:36:14.98
それはないわ
明らかにC#は100倍くらい遅い
731デフォルトの名無しさん:2013/02/24(日) 17:40:34.86
起動が遅いのだけは間違いない
732デフォルトの名無しさん:2013/02/24(日) 17:46:54.01
スクリプト言語だと許容できる速度を出すためにアルゴリズムを工夫することになって
結果的に最初からCで書いた方が早かったんじゃないかなんてことがしばしばあるけど
C#ではさすがにそこまではないな
733デフォルトの名無しさん:2013/02/24(日) 17:50:19.07
unsafe使わないと遅い事がほとんどだな
734デフォルトの名無しさん:2013/02/24(日) 18:42:00.87
Cでも出来る範囲で遅かったら、Cの存在価値ないからな。
735デフォルトの名無しさん:2013/02/24(日) 20:09:35.27
逆だ。C#に向いている分野があるからC#の存在価値がある
736デフォルトの名無しさん:2013/02/24(日) 20:21:00.84
C++でコアな所つくってC#から呼び出したりしてる。
737デフォルトの名無しさん:2013/02/24(日) 23:13:41.93
>>736
C++はCと別言語
738デフォルトの名無しさん:2013/02/24(日) 23:15:13.12
バグってるからスレタイが読めない
739デフォルトの名無しさん:2013/02/24(日) 23:23:16.53
>>737
そうだけどC#から呼ぶためにインターフェイス部分はCにしてるよ。
740デフォルトの名無しさん:2013/02/24(日) 23:29:40.29
C++/CLI使えば別にC++でも
741デフォルトの名無しさん:2013/02/24(日) 23:40:26.12
switch(gs){
case 'g':
return x;
case 's':
x=v;
}
これを三項演算子で書くとどうなりますか?
742デフォルトの名無しさん:2013/02/24(日) 23:41:44.13
お前には理解できないものが出来上がるから聞くだけ無駄
訳:わたくしには分かりません
743デフォルトの名無しさん:2013/02/24(日) 23:46:00.58
書けない
744デフォルトの名無しさん:2013/02/24(日) 23:48:08.37
三項演算子は値返す以外できない
745デフォルトの名無しさん:2013/02/24(日) 23:51:44.54
return gs == 'g' ? x : ((gs == 's' ? x = v : 0), (switch以降の処理));
746デフォルトの名無しさん:2013/02/25(月) 00:02:15.44
わかんねえならif使えよ
冗長になるけど機能としては一緒だろ
747デフォルトの名無しさん:2013/02/25(月) 00:59:19.67
三項演算子とか読みにくいだけだから使うな
748デフォルトの名無しさん:2013/02/25(月) 06:20:49.80
3項演算子の華麗な使用例
http://toro.2ch.net/test/read.cgi/tech/1313183984/594
749デフォルトの名無しさん:2013/02/25(月) 11:13:42.68
boolの値を文字列表示したいときとか簡潔に掛けていいけどね
printf("%s\n", flag ? "true" : "false");
750デフォルトの名無しさん:2013/02/25(月) 12:20:12.22
printf("%c\n", flag["FT"]);
751デフォルトの名無しさん:2013/02/25(月) 12:29:05.84
なんでわざわざ気持ち悪く書くのw
752デフォルトの名無しさん:2013/02/25(月) 12:55:21.87
int n;
if (・・・)
 n = 式1;
else
 n = 式2;

式1と式2がほぼ同じで微妙に違うときとか条件演算子でまとめたくなるな。
まとめるのもやりすぎるとゴチャっとなるから悩むけど。
753デフォルトの名無しさん:2013/02/25(月) 13:01:32.73
>>751
だよな…
こう書くべきだな
printf("%c\n", (!flag)["TF"]);
754デフォルトの名無しさん:2013/02/25(月) 13:32:18.41
>>753
いや、寧ろprintf("%c\n", (!!flag)["FT"]);だろ。

ってのはさておき、"FT"[!!flag]だな。
755デフォルトの名無しさん:2013/02/25(月) 13:37:18.27
キモッ
756デフォルトの名無しさん:2013/02/25(月) 13:45:03.21
俺ならぜったいこうだな。

if (flag) {
printf("true");
} else {
printf("false");
}
757デフォルトの名無しさん:2013/02/25(月) 15:10:17.19
おいおい、
printf(flag ? "true" : "false");
派はいないのか?w
758デフォルトの名無しさん:2013/02/25(月) 15:13:52.23
可変長引数の関数の可変長部分以外に変なものを仕込むと
コンパイラが荒れ狂う可能性が高くなるからねぇw
759デフォルトの名無しさん:2013/02/25(月) 15:18:37.27
なんねーよ。
760デフォルトの名無しさん:2013/02/25(月) 15:34:05.52
やらかすとしても
printf の第一引数に非リテラルな文字列渡し
たまたま渡した文字列中にフォーマット制御の意図ではない % が居た
こんなんしか思い浮かばん
761デフォルトの名無しさん:2013/02/25(月) 15:58:02.03
フォーマット文字列解析して引数チェックするコンパイラの拡張機能は利用できなくなる。
>>758は低脳っぽいっからこの事を言っているのではないと思うが。
762デフォルトの名無しさん:2013/02/25(月) 18:16:02.39
どこのごみ屑だよそれ
http://ideone.com/0wPHZl
763デフォルトの名無しさん:2013/02/25(月) 22:06:13.29
教えてください。
char a[10];
scanf("%s", a);

としたとき、10こよりたくさん入力されてしまったら困るので、
do whileとstrlen(a)で10以上入力されたとき再入力させるようにしたのですが、
10こよりたくさん入力されたら、結局他の変数の領域までつぶしちゃうようなのです。

どうすれば回避できますか?

なんか見当違いならごめんなさい。
764763:2013/02/25(月) 22:09:26.10
配列を宣言するときの要素数は10のままで。
765デフォルトの名無しさん:2013/02/25(月) 22:19:34.22
>>763
%9s
766デフォルトの名無しさん:2013/02/25(月) 22:24:50.22
10こよりたくさんって、10こはおkなの?
767デフォルトの名無しさん:2013/02/25(月) 22:26:45.60
\0が出現するまでという処理でなければおkになりうる
768デフォルトの名無しさん:2013/02/25(月) 22:38:38.16
int main(void) {
  char a[10];
  int len = 0;
  int idx = 0;
  int c;

  while((c = getchar()) != EOF)
  {
    len++;
    if(len < 10)
    {
      if(c == '\n')
      {
        a[idx] = '\0';
        break;
      }
      else
      {
        a[idx++] = c;
      }
    }
    else
    {
      if(c == '\n')
      {
        len = idx = 0;
        continue;
      }
    }
  }
  return 0;
}
769片山博文MZパンク ◆0lBZNi.Q7evd :2013/02/25(月) 22:42:53.31
>>768 だせぇ
770デフォルトの名無しさん:2013/02/25(月) 22:44:15.56
>>769
かっこいいソースコードよろしく
771763:2013/02/25(月) 22:46:35.20
>>765
試してみましたが、
どうやら次のscanfに、はみ出た分を渡してしまってるような・・・。

>>766
10といったのは例えでそこはどっちでもいいです。
説明不足済みません。

>>768
試してみます
772デフォルトの名無しさん:2013/02/25(月) 22:57:29.27
printf使う奴は情弱
ホンモノはvramに出力させる
773デフォルトの名無しさん:2013/02/25(月) 22:58:18.90
>>769
ソースコードはよ
774デフォルトの名無しさん:2013/02/25(月) 23:02:31.34
%9s%*s
775デフォルトの名無しさん:2013/02/25(月) 23:10:01.12
mainの中に書いてるからださいといったのではないだろうか
776デフォルトの名無しさん:2013/02/25(月) 23:18:54.11
>>774だと結局読み飛ばした文字はストリーム上に残ってしまい、
次のscanfで読み取られてしまいます。

で、落ち着いてhttp://ja.wikipedia.org/wiki/Scanfをみたら

char a[10];
scanf("%9s%*[^\n]", a);
getchar();

でいけました。
みなさんありがとう。
777デフォルトの名無しさん:2013/02/26(火) 05:00:19.66
>>770,>>773
>>769は他のスレでも質問者に嘘を教えたりスレ違いの話題を投下して喜んでるマジモンの荒らしだから放置よろ
我慢できないならNG追加、質問者も混乱を避けるためにNG追加よろ
778デフォルトの名無しさん:2013/02/26(火) 09:51:34.32
私怨は放置で
779デフォルトの名無しさん:2013/02/26(火) 11:14:19.78
俺は放置してるけど>770みたいに反応する奴が後を絶たない。
780デフォルトの名無しさん:2013/02/26(火) 11:15:52.63
PCの電源を切っておけば、気にならなくなる
781デフォルトの名無しさん:2013/02/26(火) 11:18:45.09
久しぶりにC言語やりたくなった
782デフォルトの名無しさん:2013/02/26(火) 11:56:39.37
放置してても最近は初心者に嘘教えるとか
荒らし方が巧妙になってきてるから、
多少の注意喚起はしといたほうがいい。
783デフォルトの名無しさん:2013/02/26(火) 11:58:34.40
お前も巧妙な荒らしだ
784デフォルトの名無しさん:2013/02/26(火) 12:05:43.79
バ片山が来ると盛り上がるなw
785デフォルトの名無しさん:2013/02/26(火) 12:09:35.36
>>783
そういうことにしたら満足したか?
786デフォルトの名無しさん:2013/02/26(火) 13:57:43.96
ソフト系板は全て実名必須にすれば良いのに
787デフォルトの名無しさん:2013/02/26(火) 14:40:03.66
>>786
ほんとそれ思う
顔本と連携させてそういうのできないのかね
788デフォルトの名無しさん:2013/02/26(火) 15:07:58.14
俺のニートがバレるからダメだろ
789デフォルトの名無しさん:2013/02/26(火) 15:17:50.97
だめだよ。
実名晒しの脅しはゴミ山の十八番なんだから。
それを奪ったらかわいそうだよ。
790デフォルトの名無しさん:2013/02/26(火) 21:31:06.04
おすすめの入門書ってありますか?
ガチでなんにも分かんないから一から始められるやつが欲しいんだけど
791デフォルトの名無しさん:2013/02/26(火) 21:31:58.94
始めて何をしたいの?
792デフォルトの名無しさん:2013/02/26(火) 23:37:18.42
程度によるけど

『Cプログラミング入門以前』

から始めるといいかと思います
793デフォルトの名無しさん:2013/02/27(水) 00:05:35.81
言語だけなら色々な読物があるのだが、環境整備からとなると難しい。
794デフォルトの名無しさん:2013/02/27(水) 00:55:56.87
C言語ではなくプログラミングの初心者ならば
JavaScriptからはどうか。

実効環境はブラウザ。
書いたテキストの拡張子をいろいろといじるだけ。

まずプログラミングのなんたるかのさわりを楽しみたいなら
実行環境がコストゼロで与えられているJavaScriptではどうだろう

入門書を探すのは、同時に、プログラミングを楽しみたい・使いたいという
隠れた欲求がある。

それを満たしてくれるのは備え付けのブラウザくらいだ
795デフォルトの名無しさん:2013/02/27(水) 01:01:52.17
それならcodepad.orgでよくない?
796デフォルトの名無しさん:2013/02/27(水) 05:13:52.02
最近は http://ideone.com
797デフォルトの名無しさん:2013/02/27(水) 08:49:11.65
どっちがいいの?
798デフォルトの名無しさん:2013/02/27(水) 08:54:43.99
codepadのが軽いからC使いなら軽さ重視でcodepadだな
799デフォルトの名無しさん:2013/02/27(水) 09:05:02.34
処理系古いんだよねcodepad
800デフォルトの名無しさん:2013/02/27(水) 09:39:32.51
そうするとideone or codepadとK&Rで基礎を学ぼうか?
GUI や IDE はその次だな。
801デフォルトの名無しさん:2013/02/27(水) 19:10:01.23
伝説なんとかみたいでカッコイイideone
フォントもカッコイイと思う
802デフォルトの名無しさん:2013/02/27(水) 19:22:07.97
PATH通らないとか、studio.hで動かないとか、動いたけどなんか意図したとおりに動かないとか
ポインタ分からないとか、参考書一冊読んだけど何も出来る気がしない、という未来が見える
803デフォルトの名無しさん:2013/02/27(水) 20:03:40.03
knoppixを使うという手だてもある
Cどころか様々なことができる

もしかするとLINUX/UNIX環境への悟りが発生して
離れられなくなるかも
804デフォルトの名無しさん:2013/02/27(水) 21:35:33.01
どうせ個人で作れるようなソフトは既にフリーソフトとして公開されてるんだから、
今更言語の勉強なんかしてどうするのよ、それより英語の勉強しろ
805デフォルトの名無しさん:2013/02/27(水) 21:36:15.71
自分専用ソフトは自作が一番使いやすい
806デフォルトの名無しさん:2013/02/27(水) 21:38:58.27
>>804
そうでもない。そうでもないから新しいフリーソフトが公開されるんだよ
807デフォルトの名無しさん:2013/02/27(水) 21:40:23.92
ニッチな分野っていくらでもあるからなあ
808デフォルトの名無しさん:2013/02/27(水) 22:06:39.30
>後で振り返ってみると、何であんなに使いにくいものを一所懸命使っていたんだろうとか、
>今のサービス無しで一体どうやっていたのか思い出せない、といった事がしばしば起こる。
>既存のものを根底から変えることは仲々想像し難く、また現実的な問題があって一挙に変化が起こるわけではない。
>それでも、今までの方法が余りに融通が利かなすぎる場合には、少しの改善でも大きな喜びを持って迎えられるのである。
809デフォルトの名無しさん:2013/02/27(水) 22:10:31.18
モードレスダイアログボックスの設定でSTYLEをVISIBLEにしているのですが
ShowWindow関数を使わないと表示されないのですが何が悪さしているのでしょうか?
一応ShowWindowを入れれば目に見えるようになるんですが
#include "resource.h"
#include<windows.h>
DIG DIALOG 10 , 10 , 150 , 150
FONT 12, "MS ゴシック"
STYLE WS_VISIBLE | WS_POPUPWINDOW
CAPTION "モードレスダイアログボックス"
BEGIN
DEFPUSHBUTTON "ok",IDOK,7,69,50,14
PUSHBUTTON "cancel",IDCANCEL,100,69,50,14
LTEXT"モードレスダイアログボックスです",IDC_STATIC,39,16,94,8
END
//リソースになります
switch(msg){
case WM_COMMAND:
switch(LOWORD(wp){
case IDM_DLG:
hDlg=CreateDialog(hInst ,TEXT("DIG"), hWnd , DialogProc);
//ShowWindow(hDlg,SW_SHOW);
break;}
break;
//ダイアログボックスの呼び出しになります
810デフォルトの名無しさん:2013/02/27(水) 22:44:19.83
>>809
win32APIの仕様です。
811デフォルトの名無しさん:2013/02/28(木) 09:15:14.95
http://togetter.com/li/462898
gccの最適化のダメっぷりはよく知ってるんだけど、ISO C標準でないってどういう意味?
812デフォルトの名無しさん:2013/02/28(木) 09:57:29.80
>>811
お前が意味不明だよ
何のことだかさっぱり分からん
813デフォルトの名無しさん:2013/02/28(木) 12:21:01.45
>>811
gccつーても化石の2.xから最新の4.7や4.8まで色々あるけど
4.6や4.7の最適化のダメさってどういうところ?
814デフォルトの名無しさん:2013/02/28(木) 17:02:41.66
これ
低能rubistが群がってさらにアホなことになってるだけじゃねーの

高尚な話題出してるつもりが
本人たちの気付かぬところで低空飛行してるだけだ

閉鎖集団になると
横から口出ししても厄介野郎と思われて
そいつらの本当のレヴェルの低さが露呈しない

危険だよ
大本営なみに危険だ
優秀で高尚だと凝り固まってるアホの集団が
本当におぞましい議論をそこらじゅうに拡散させようとしてる
815デフォルトの名無しさん:2013/02/28(木) 18:52:20.86
>>790
亀だけど、ゼロからなら技術評論社の『C言語スタートブック』って本がいいかも。
コンパイラもついてるし、コマンドプロンプトの使い方やパスの通し方も載ってる。
要するにパソコンの使い方さえある程度知っていればプログラミング環境は整うような本。
内容もわかりやすい。

ただ、情報量はあまり多くないから、いずれはほかの本を読まなきゃいけなくなる。
816デフォルトの名無しさん:2013/03/01(金) 14:22:24.55
>>804
そんなもんxhamsterとxvideosとtube8とその他諸々の
エロ動画収集を自動化するために決まってんだろ
817デフォルトの名無しさん:2013/03/01(金) 14:24:36.25
アク禁された場合に抗う自動プロキシ経由接続完備
818デフォルトの名無しさん:2013/03/01(金) 16:36:28.48
http://www9.plala.or.jp/sgwr-t/c/sec13.html
このサイトに
>※ 単にcharとした場合、符号つきか符号なしかは処理系に任されます。
ってあるけど省略したらsignedになるんじゃないの?
819デフォルトの名無しさん:2013/03/01(金) 16:46:44.71
>>818
省略した場合にunsignedになる処理系も認めると言うことです。
実際、コマンドラインオプションでsigned/unsignedを切り替えられる処理系もあります。
820デフォルトの名無しさん:2013/03/01(金) 16:54:42.55
>>819
そういうのあるんだ
始めて知った、ありがとう
821デフォルトの名無しさん:2013/03/01(金) 17:47:04.90
charに関してはデフォがunsignedのほうがしっくり来るよね
822デフォルトの名無しさん:2013/03/01(金) 17:53:28.38
チラシの裏にでも書いてろ
823デフォルトの名無しさん:2013/03/01(金) 19:31:45.44
68系のコンパイラはunsignedなのが多かった。
なんかアーキテクチャによってどっちが有利とかあるんだろうな。
824デフォルトの名無しさん:2013/03/01(金) 20:05:53.80
そういうのがって、ちょー有名な
Microsoftのコンパイラなんだけど。
825デフォルトの名無しさん:2013/03/01(金) 20:35:58.35
オプションで切り替えるぐらいgccにだってある
826デフォルトの名無しさん:2013/03/01(金) 20:39:50.37
>>824
入門スレで何をいきまいてんだか
827デフォルトの名無しさん:2013/03/01(金) 22:50:38.68
これは安全ですか?

char* getChar() {
char *s;
s = "sss";
return s;
}

int main()
{ char *s = getChar();
828デフォルトの名無しさん:2013/03/01(金) 22:54:12.87
その後 s[0] = 't'; とかやったら死ぬかもね。
829デフォルトの名無しさん:2013/03/01(金) 22:55:47.25
安全
830デフォルトの名無しさん:2013/03/01(金) 22:56:07.29
書き込みはともかく、意図したように読める保障あったっけ
831デフォルトの名無しさん:2013/03/01(金) 23:22:30.58
>>830
"sss"がどのセクションに置かれるか考えれば自明
832827:2013/03/01(金) 23:23:07.11
>>828
ポインタに入れているのに、配列としてアクセスしているから死んじゃうって事ですか?


>>829
getChar()の変数sはメモリから消えているはずですが、mainで安全な理由がわからないです。
文字列"sss"はヒープに取られているということなのでしょうか?

javaだとthis.globalString = "aa";というコードよく書きますが、
C言語でm_globalChar = "aa";は安全なんですか?

"aa"は関数を抜ければ消えちゃう気がするんですが
833デフォルトの名無しさん:2013/03/01(金) 23:26:05.68
>>832
君の側にずっといるから、安心して
834デフォルトの名無しさん:2013/03/01(金) 23:27:56.39
>>831
で規格のどこを読めばいいの?
835デフォルトの名無しさん:2013/03/01(金) 23:30:50.37
>>832
>ポインタに入れているのに、配列としてアクセスしているから死んじゃうって事ですか?
違う。main()/s がさしているのは "sss"、これは文字リテラルと呼ばれ、格納先は書き込み可能な場所とは限らない。読むだけならば問題がない。

>"aa"は関数を抜ければ消えちゃう
大丈夫、消えない。
836デフォルトの名無しさん:2013/03/01(金) 23:44:03.25
6.4.5/5 String literals の規定によりstaticであることが保障されているから安心しろ
837デフォルトの名無しさん:2013/03/02(土) 00:04:00.24
"aa"は関数が呼ばれる前から存在している
838832:2013/03/02(土) 00:29:17.77
皆さん、回答ありがとうございます

char* inputTest() {
 char *s:
 if (条件)
     s = "a";
 else
     s = "b";
 return s;
}
main() { char *s; s = inputTest();

この場合でもmainの変数sは安全なのでしょうか?
839デフォルトの名無しさん:2013/03/02(土) 00:41:53.47
安全だ
840デフォルトの名無しさん:2013/03/02(土) 00:54:30.33
おめえ分かってねえだろ
841デフォルトの名無しさん:2013/03/02(土) 01:07:34.50
>>838
多分、関数を抜けた後にローカル変数の領域(スタック)が消滅してしまう事を知ったから不安なのだろう。

inputTest();の char *s;のために用意された領域は、関数を抜けると確かに消える。
しかし、inputTest();内で s= で得られた値(リテラルのアドレス値)は、関数をの戻り値として
main();の char *s; が受け取っている。そして、それを使っている。

inputTest();の char *s;の領域が無くなっても、main();のchar *s;がリテラルのアドレス値を
持っているから、それを使っても大丈夫。

ああ、説明がよく分からなかったら、無視してください。。
842デフォルトの名無しさん:2013/03/02(土) 13:21:16.40
たぶん、&nbsp;827&nbsp;はポインタとポインタの指す先を混同してるんだろう

言語によってはポインタが無効になるとそれが指す先も無効になる
(ガベージコレクション)があるけど、Cはそういうややこしいものは無い
843デフォルトの名無しさん:2013/03/02(土) 14:24:44.98
シェルに表示させる文字とリダイレクトさせる文字を分けることってできませんか?

@パラメータ入力を要求するメッセージを表示
Aパラメータ入力
B計算結果を羅列

↑のような流れのプログラムがあるんですが

@、Aだけは常に表示させて
Bはリダイレクトやパイプを使わないときだけ表示させたいです
844デフォルトの名無しさん:2013/03/02(土) 14:30:47.06
stdoutとstderrを使い分けてdev/nullを駆使する
845デフォルトの名無しさん:2013/03/02(土) 14:38:42.46
Unix系だったら isatty() っていうのでファイルディスクリプタが端末に繋がってるかどうかわかる。
846デフォルトの名無しさん:2013/03/02(土) 14:39:19.62
あう。デスクリプタ。
847デフォルトの名無しさん:2013/03/02(土) 15:06:46.56
\bってどんな時に使うんですか?
848デフォルトの名無しさん:2013/03/02(土) 15:13:49.19
エスケープシーケンスでググレ
849デフォルトの名無しさん:2013/03/02(土) 17:09:28.98
今時++使わずにこっち使うメリットあんの?
850デフォルトの名無しさん:2013/03/02(土) 17:13:44.04
今時#使わずに++使うメリットあんの?
851デフォルトの名無しさん:2013/03/02(土) 17:14:35.39
C++はなかなかつかいこなせない
852デフォルトの名無しさん:2013/03/02(土) 17:15:08.40
C#‥‥俺もC#に移行しようか、gcc が対応してくれたら
853デフォルトの名無しさん:2013/03/02(土) 17:15:33.82
Cしか使えない環境もある
854デフォルトの名無しさん:2013/03/02(土) 17:19:02.97
Cしか使えない俺もいる
855デフォルトの名無しさん:2013/03/02(土) 17:45:17.45
クラスを使わなければそれほど変わらなくない?
856デフォルトの名無しさん:2013/03/02(土) 18:18:29.60
その前提条件が既におかしい
857デフォルトの名無しさん:2013/03/02(土) 18:25:36.90
必要に応じてCもC++もC#もどれも使ってる。
858デフォルトの名無しさん:2013/03/02(土) 18:37:59.06
ソフト配布するときって免責事項書く?
859デフォルトの名無しさん:2013/03/02(土) 18:54:52.75
書いといたほうが無難。逆に書かないメリットあるか?
860デフォルトの名無しさん:2013/03/02(土) 19:00:26.12
このソフト[a.exe]は無料です。お金を払う必要はありません。
このソフト[a.exe]について作者は動作保証も使用に関しての責任は一切負いません。
861デフォルトの名無しさん:2013/03/02(土) 19:09:45.31
免責事項ってどのくらい有効なのあれ
862デフォルトの名無しさん:2013/03/02(土) 19:12:25.04
きやすめだ、きやすめ
863デフォルトの名無しさん:2013/03/02(土) 20:24:19.11
859は無難とまで云うとるが
864デフォルトの名無しさん:2013/03/02(土) 20:56:12.08
>>863
別に法的拘束力があるとかの意味じゃないよ。
無用なトラブルを避けらける(可能性が上がる)くらいの意味での無難。
865デフォルトの名無しさん:2013/03/02(土) 22:01:24.79
[a.exe]を実行した責任については作者は一切責任を負わないものとします。

と書いたとしても、a.exeがウィルスだったら逮捕されるよ
866デフォルトの名無しさん:2013/03/02(土) 22:56:07.00
逮捕されないなんて誰が言ったんだ?
867デフォルトの名無しさん:2013/03/02(土) 23:31:43.86
善意でソフト配信するのもリスク負わなきゃいけない世の中なんて・・・
西洋合理主義ってほんとどこまでいってもクソだな
868デフォルトの名無しさん:2013/03/02(土) 23:33:08.65
ポイズン
869デフォルトの名無しさん:2013/03/02(土) 23:39:47.48
TPPでまた変化あるかもな
870デフォルトの名無しさん:2013/03/02(土) 23:50:21.80
TPPなんて言ってる奴はチョン
そんな物ブラフだっつーの
871デフォルトの名無しさん:2013/03/02(土) 23:58:10.02
備えをしないのは愚か者だよ
872デフォルトの名無しさん:2013/03/03(日) 00:01:53.58
口を開けばすぐにチョンとかいってるやつの言葉は信用できない
チョンが信用ならないのは事実だがそれ以上に胡散臭い連中だ
震災以後はとくにそれが目立ってきている
873デフォルトの名無しさん:2013/03/03(日) 00:18:26.62
何かあってからでは手遅れということを前政権は教えてくれた
874デフォルトの名無しさん:2013/03/03(日) 00:20:00.81
だからこそ
何かが起こる前に現政権を妥当しなくてはならない
国民よ立ち上がれ
戦いのときは近い
875デフォルトの名無しさん:2013/03/03(日) 00:23:08.64
妥当だね
876デフォルトの名無しさん:2013/03/03(日) 00:34:20.69
A,B,C! ABC! は〜ん、Eきも〜ち〜♪
877デフォルトの名無しさん:2013/03/03(日) 00:36:55.80
T++
878デフォルトの名無しさん:2013/03/03(日) 00:38:40.87
.tpp
879デフォルトの名無しさん:2013/03/03(日) 01:05:21.16
tiny preprocessor ?
880デフォルトの名無しさん:2013/03/03(日) 05:59:37.21
TechnicalPairProgramming
881デフォルトの名無しさん:2013/03/04(月) 17:15:04.78
CentOS 6.3でC言語でプログラムを作成して動かしているのですが、
作成したプログラムのスタックサイズを調べる方法はありませんか?
関数単位、プログラム全体で知りたいです。
882デフォルトの名無しさん:2013/03/04(月) 17:58:42.74
void gethaddr(char*a){printf("%s:x",a,a);} でもって

....
return gethaddr(__FUNCTION__),r; とでも

あとは出力結果から定消費を考慮した引き算といっちゃんデカイアドレスを探すだけだよ
883デフォルトの名無しさん:2013/03/04(月) 18:17:55.91
?
884デフォルトの名無しさん:2013/03/04(月) 18:25:08.40
デバッガに詳しそうな人に聞かないとな
オレは使い方知らない
885デフォルトの名無しさん:2013/03/04(月) 19:16:40.56
prinntf("%s:%x",a,&a); だな
886デフォルトの名無しさん:2013/03/04(月) 19:30:28.88
call frame informationでも読め
887デフォルトの名無しさん:2013/03/04(月) 19:40:26.45
磯野そんなことより -fstack-usage しようぜ
888デフォルトの名無しさん:2013/03/04(月) 21:54:41.82
>>881
関数が相互再起してる場合はどうカウントするんだ?
889デフォルトの名無しさん:2013/03/05(火) 10:10:34.21
>>881
アセンブリ出力をして、スタックを操作しているニモニックを関数ごとに抽出。
関数こーリングツリーを作成して、再帰がない関数までのスタック操作量を積算。
再帰関数では再帰深度をロジックから解析し、スタック操作量を積算。
890デフォルトの名無しさん:2013/03/05(火) 13:18:27.05
>>889
使ってる共有ライブラリの中も考慮しろよ
というか普通は静的に分かるものじゃない
891デフォルトの名無しさん:2013/03/05(火) 13:50:16.40
組み込みだろ。ワーストケースを想定する方法としては、ありだと思うよ。
892デフォルトの名無しさん:2013/03/05(火) 19:04:21.19
C言語を勉強しています。
入力した行の長さを返すサンプルプログラムで
cygwinのgccではテキストファイルからリダイレクトできて
$ ./a.exe <text.txt
47
と実行できるのですが、DOSのコマンド上では同じソースファイルをコンパイルしても
C:\>プログラム名.exe <text.txt

C:\>
となってしまいます。コンパイラは LSI C-86 Ver.3.30 試食版 です。
893デフォルトの名無しさん:2013/03/05(火) 19:06:45.91
>>892
プログラムが間違ってるんじゃね
894デフォルトの名無しさん:2013/03/05(火) 19:08:38.81
> コンパイラは LSI C-86 Ver.3.30 試食版 です。
まずこれをすてろ。話はそれからだ。
895デフォルトの名無しさん:2013/03/05(火) 19:19:40.59
>>892
これで試してみて
#include <stdio.h>

int main(void)
{
int p=0, c, l=0;

while((c=getchar())!=EOF)
{
if(c=='\n') l++;
p=c;
}
if(p!='\n') l++;
printf("%d\n", l);

return 0;
}
896デフォルトの名無しさん:2013/03/05(火) 19:28:09.89
LSIC86はもうWindowsの64だと動かなくなってるんじゃないか?
今更やるだけ無駄のような
897デフォルトの名無しさん:2013/03/05(火) 19:34:45.72
コンパイラが動いてるならDOSモードな気はするけどどうなんだろ
エミュレータを使ってもいいし

マイコンでも20MHzいけるからRAMとか繋いでやればDOSくらい動きそうだ
898デフォルトの名無しさん:2013/03/05(火) 19:39:18.98
>>896
マシンはWindows XP の 32bit です。
マシンも古いし、何か軽い動作のものはないかと思いまして・・・
899デフォルトの名無しさん:2013/03/05(火) 19:42:53.58
>>895 訂正
int p=0, c, l=0;

int p='\n', c, l=0;
900デフォルトの名無しさん:2013/03/05(火) 19:43:47.58
LSIC使うくらいならコンパイルをVS2010のデベロッパコマンドプロンプトで行えば重くは無い
901デフォルトの名無しさん:2013/03/05(火) 19:45:41.49
>>898
hello,worldは動いた?
902デフォルトの名無しさん:2013/03/05(火) 20:03:58.39
>>901
それは普通に

>>900
やり方をぐぐってみます。
903デフォルトの名無しさん:2013/03/05(火) 20:10:00.84
そのクソなテキスト text.txt をバイナリエディタで開いて
・文字コード
・改行コード
この二つについて精査しろ
報告もしろ

今すぐやれ
904デフォルトの名無しさん:2013/03/05(火) 20:14:34.06
俺なら、VC入れるぐらいならcygwin入れてgcc入れるけどなあ…。簡単だし
905デフォルトの名無しさん:2013/03/05(火) 20:23:00.82
ttp://www.risec.aist.go.jp/project/knoppix/
もうコレ使えよ
捗るぞ
ただし文字コードはアレな。
906デフォルトの名無しさん:2013/03/05(火) 21:47:45.34
>>892
サンプルコードになにか原因があるような気がします。
http://ideone.com
に貼っていただければ納得のいく回答がつくかもしれません、おすすめです。
907デフォルトの名無しさん:2013/03/06(水) 00:44:41.31
クノピクス勧める奴ってなんなの?
せめてクソブンツだろ
908デフォルトの名無しさん:2013/03/06(水) 01:06:14.03
クソブンツはさすがに苦しい
909デフォルトの名無しさん:2013/03/06(水) 03:43:53.67
Vine が楽でいいとおもうけど
910デフォルトの名無しさん:2013/03/06(水) 07:04:18.05
js/linuxが一番お手軽
911デフォルトの名無しさん:2013/03/06(水) 23:09:39.46
sientificlinux最強
912デフォルトの名無しさん:2013/03/07(木) 04:42:42.33
fflushって、バッファを閃光のごとく吹き飛ばすフラッシュだと思ってたけど、
閃光はflashで、flushは(バッファを)吐き出すって意味だったということを知って衝撃を受けた。今まさに。
ポーカーのフラッシュもflushだし、いろんな所で誤用、誤記してきた気がするわ…orz
913デフォルトの名無しさん:2013/03/07(木) 05:14:30.22
トイレの水流すのがflushだな
914デフォルトの名無しさん:2013/03/07(木) 08:28:00.69
おれは最初flushはIT用語だと思ってた
たしか高校のころかな
英語の偏差値が30くらいだった
懐かしい
915デフォルトの名無しさん:2013/03/07(木) 14:02:38.02
CentOS6でC言語(gcc)で開発してるのですが、セグメンテーションフォルトで落ちる時のバックトレースを
シグナルハンドラ(SIGSEGV?)などで取得して、その情報をファイルや標準出力に吐いてから落ちたいのですが、
どうやればよいのでしょうか。
イメージ的には、落ちた時に作成されるコアファイルを用いてgdbで起動して、btコマンドで出力される
バックトレースの情報が取得できればと思っています。
サンプルとなるソースコードがあるサイトなどがありましたらお願いします。
916デフォルトの名無しさん:2013/03/07(木) 14:08:05.60
セグメンテーションフォルトで落ちるプログラムなんて作れないかわ
わからん
917デフォルトの名無しさん:2013/03/07(木) 14:09:41.69
いったいどんな品のないコード書いてるんだろう
918デフォルトの名無しさん:2013/03/07(木) 14:15:53.40
セグメンテーションフォルトの起こし方

int *p=NULL;
*p=4649;
919デフォルトの名無しさん:2013/03/07(木) 14:17:12.89
そのためにcore吐いてくれるんじゃないの?
920デフォルトの名無しさん:2013/03/07(木) 15:08:07.02
C言語はじめてからそういうアホなコードいっさい
書いたこと無いな。
たぶん頭のできが違うんだろう。
921デフォルトの名無しさん:2013/03/07(木) 15:38:50.37
組込機器で万が一潜在バグでメモリぶっ壊して落ちた時のエラー処理として
障害解析用の情報を取っておけるようにしておきたいのです。
922デフォルトの名無しさん:2013/03/07(木) 15:45:29.45
メモリぶっ壊して落ちる場合は机上でバッグがよい
923デフォルトの名無しさん:2013/03/07(木) 15:48:42.28
組み込みってデバッグ情報埋め込んだままリリースするのが普通なの?
924デフォルトの名無しさん:2013/03/07(木) 15:55:34.81
セグりそうな関数全部でバックトレース更新してmalloc(9)に入れときゃいいんじゃないの
925デフォルトの名無しさん:2013/03/07(木) 16:09:16.89
ポインタにNULLを入れて何回でもfreeしてやる
926デフォルトの名無しさん:2013/03/07(木) 16:40:41.21
このスレの人たちは2ちゃんねるの初心者多いですね。書き込む際に
SG(セキュリティー・ガード)に登録しないと個人情報がバレますよ。
SGに登録せずに書き込んだ場合、あなたのパソコン内の
情報は他人に見られていると考えてほぼ間違いないでしょう。
個人情報がばれる方の多くはこの登録を怠っています。
初期の頃から2ちゃんねるにいる方達は、ほとんどの方が
このBBSのコマンドの仕組みを知っています。
ですから簡単にあなたのIPアドレス等を抜き取り個人情報を見破ってしまいます。
このコマンドの方法は決して教えないというのが初期の頃から
2ちゃんねるにいる方達の間で暗黙の了解となっていましたが、
あまりの被害の多さに心を痛めた私はあえて公開することにしました。
SGしておけばまず抜かれるコマンド自体が無効になってしまうのでどんなにスキルが
ある人でもIPアドレスを抜くことが不可能になります。
SGに登録する方法は、
名前欄に「 fusianasan 」と入れて書き込みする。
これだけでSGの登録は完了します。

一度登録すれば、Cokkieの設定をOFFにしない限り継続されます。
fusianasanは、正式にはフュージャネイザン、又はフュジャネイザンと読みます。
元々はアメリカの学生達の間で、チャットの時にセキュリティを強化する為に
開発されたシステムです。これを行うことにより同一人物が書き込んでいるか
どうか判別する手段が遮断されるので安心です。
ぜひ書き込む前には
名前欄にfusianasanと入力してください。自分の身は自分で守りましょう
927デフォルトの名無しさん:2013/03/07(木) 18:22:22.86
>>926 詐欺おつ
928デフォルトの名無しさん:2013/03/07(木) 18:47:41.86
>>915

コアファイル出力設定

@「/etc/profile」内

ulimit -S -c unlimited > /dev/null 2>&1

A「/etc/init.d/functions」内

corelimit = "ulimit -S -c unlimited"

と、該当箇所を変更し、システム再起動。
929デフォルトの名無しさん:2013/03/07(木) 21:22:09.85
>>928
さすがにそれは的外れすぎ
930デフォルトの名無しさん:2013/03/07(木) 22:01:02.78
組み込みでOSがない場合はセグメンテーションフォルトが起こらずに暴走かハングアップするだけじゃね?
931デフォルトの名無しさん:2013/03/08(金) 01:02:39.72
CPUの例外ベクタに飛ぶから、そこで対処する。
932デフォルトの名無しさん:2013/03/08(金) 18:06:47.24
プロってメモリリークやセグメンテーションフォルトはまず起こさないの?
二重解放を知らず知らずに起こしてたり、エラーが起きた場合の解放し忘れやら
プログラム自体は動く事が多いから気づきにくいし、どんなあたりに気をつければ
安定で安全なプログラムになるの?
終了したら自動的にメモリ解放してくれればいいのに、GCは偉大と思う
933デフォルトの名無しさん:2013/03/08(金) 18:10:50.68
gcあってもメモリリークは起こるけどな
934デフォルトの名無しさん:2013/03/08(金) 18:11:43.67
ポインタにNULLを入れて何回でもdeleteすればいい
935デフォルトの名無しさん:2013/03/08(金) 18:17:35.11
セグメンテーションフォルトよりはメモリリークのほうがいいから
なるべく解放しないようにする
936デフォルトの名無しさん:2013/03/08(金) 18:21:31.25
>>932
とりあえずelectric fence使ってみれば。
937デフォルトの名無しさん:2013/03/08(金) 18:50:58.08
俺は才能ないからリークもSEGVも起こすぜ。
938デフォルトの名無しさん:2013/03/08(金) 19:27:33.27
才能じゃなくただの注意力散漫だろ
939デフォルトの名無しさん:2013/03/08(金) 19:49:00.75
>>936
調べてみたら結構便利そうね
今までwallopやデバッガで怪しそうなのは見てきたけど
注意力散漫だから見落とす事があったし
にしてもcallocやらmallocやらgloballockやらnewやらheapやらと多すぎて
自分以外に混乱起こす人いると思うんだ…たぶん
940デフォルトの名無しさん:2013/03/08(金) 19:51:11.26
>>932
ツールを使ってもよいが漢なら自分でなんとかする
941デフォルトの名無しさん:2013/03/08(金) 19:58:33.71
valgrindとMudflapも使っとけ
942デフォルトの名無しさん:2013/03/08(金) 20:41:46.96
C++ だと RAII でかなり防げるんだけどな。
943デフォルトの名無しさん:2013/03/08(金) 21:28:36.44
サーバ常駐のプログラムが一日に20Mづつリークするけど
月一でリブートするからおkってとこがあったなー
944デフォルトの名無しさん:2013/03/08(金) 21:30:14.61
>>935
>セグメンテーションフォルトよりはメモリリークのほうがいいから
それはプログラムの用途による。
しかし、daemonやサービスなどプログラムが走りっぱなしにするものでは、
エラーでコケる方がマシで、メモリリークは不具合箇所の特定が難しい。
それに長期運用しないと、不具合自体が顕在化しないので
セグメンテーションフォルトの方がずっとマシ、と言う感覚。
945デフォルトの名無しさん:2013/03/08(金) 21:49:45.03
リークするのはテメエの脳みそだけにしとけ
946デフォルトの名無しさん:2013/03/09(土) 01:42:45.89
ideone.com/81yqG1

C始めたばっかなんで冗長なコードだとは思うが
質問したいのは104行目の戻り値がなぜかbnという変数に入ってしまう(ように見える)んだがその理由と改善策
あと116行目以降の戻り値でキャストなしでポインタをうんぬんという警告が出るんだが、ポインタのあたりがよく分かってない
947デフォルトの名無しさん:2013/03/09(土) 01:58:14.76
bnに入ってしまわない
stratの返値はintと指定したのにintでない物をreturnしてる
124行目のセミコロンはおそらく誤記
carddとstrat関数に返値をreturnしないパスが存在する
948デフォルトの名無しさん:2013/03/09(土) 02:11:20.59
配列範囲外起こしてんぞ
949デフォルトの名無しさん:2013/03/09(土) 02:19:01.29
配列の添え字はゼロオリジン
950デフォルトの名無しさん:2013/03/09(土) 02:20:11.48
で?
951デフォルトの名無しさん:2013/03/09(土) 02:25:35.58
うん。
952946:2013/03/09(土) 02:29:50.71
みなさん長いコード見てくれてありがとう
>>947
えーと実際に走らせてみると多分102-108行目でbnが変な挙動をするんだよなぁ……
ポインタを返したいときは関数は何にすればよいのでしょう
953デフォルトの名無しさん:2013/03/09(土) 02:34:04.11
%sが指定子という事は、strat関数は戻り値で文字列を返したいのかな?
なら関数はchar*関数名(int)にするとreturnで文字列を返せる
954946:2013/03/09(土) 02:34:06.49
連投スマン
carddをvoidで書いてreturnなしにしてもbnが思い通りに動かなかったから
戻り値がおかしいわけではないようだ
要するにstrategyが3のときにbnが2になってくれないのです……なんでじゃ
955デフォルトの名無しさん:2013/03/09(土) 02:41:17.69
bnを変化させるのは50行目と85行目のみ
956デフォルトの名無しさん:2013/03/09(土) 02:45:51.62
>>946
突っ込みどころだらけではなしにならないんだが、取り敢えず>947の指摘はチェックしよう。
それと、慣れないうちは必ずブロック化した方がいいぞ。
957946:2013/03/09(土) 02:48:51.87
>>955
57行目と80行目のprintfは確認用なんだが、その間でどうもbnが動いてる
どう考えてもくさいのは58行目のcardd関数なんだが……
もしちょっと時間あるなら実際に走らせてみてもらえればわかるんだが、
結果の文章のplayerAで始まる各行の末尾の数字がそろわない行があると思う
958デフォルトの名無しさん:2013/03/09(土) 02:53:09.41
触れてないはずのデータが壊れてるならバッファオーバーランでもしてんじゃね
959946:2013/03/09(土) 02:56:48.13
>>956
ポインタとセミコロンの件は分かった。ありがとう

[carddとstrat関数に返値をreturnしないパスが存在する]
「パス」の意味がちょっと分からんのだがパスでググっても出なさそうなので教えてくれ
ブロック化は今すぐしてみる
960デフォルトの名無しさん:2013/03/09(土) 02:58:25.63
player配列の要素数はnum以上じゃないとダメだろう。
961デフォルトの名無しさん:2013/03/09(土) 03:39:39.56
962946:2013/03/09(土) 11:57:46.57
>>961
そんなことは分かるわww
返値をreturnしないパスというのは具体的になんなのかがよく分からない
963デフォルトの名無しさん:2013/03/09(土) 12:02:58.94
>>962
文字通りreturnしないパスだよ
964デフォルトの名無しさん:2013/03/09(土) 12:15:07.20
int func(int a)
{
  if(a==1)
  {
    return 123;
  }
}

パス1:関数に入る→ifで判定、真→returnで関数を抜ける
パス2:関数に入る→ifで判定、偽→returnせずに関数を抜ける
965デフォルトの名無しさん:2013/03/09(土) 12:23:11.72
変数の取りうる値を見てから答えてやれよw
966デフォルトの名無しさん:2013/03/09(土) 12:30:47.29
tftのよさを極限まで削った対戦方法だなw
967デフォルトの名無しさん:2013/03/09(土) 12:37:51.52
>>965=アホ
968デフォルトの名無しさん:2013/03/09(土) 12:41:02.56
論争が始まりそうな予感
969946:2013/03/09(土) 12:41:57.43
>>964
パスのことは分かりました、ありがとう
あとから色々付け加えるためにelseじゃなくてelse ifのままにしてたんだけど一応直した

>>966
とは?
970デフォルトの名無しさん:2013/03/09(土) 12:46:09.92
同じ戦略同士の対戦がない
対戦回数が少ない
971デフォルトの名無しさん:2013/03/09(土) 12:48:46.17
strategyには0から3のどれかが入ってる(ことになってる)んだから、値を返さないってことはないだろ
972946:2013/03/09(土) 12:55:17.83
>>970
あーそれはこれから色々付け加えるんだが
その前にtftがきちんと動いてくれないのでみんなに質問させてもらってる

もう一回質問したいことを繰り返すけど
strategyが3のときにbnが2以上になってくれない(というか多分59行目でcardd関数に入るとbnの値がおかしくなる)
のでその原因分かる人がいればおしえてください、ということです

自分の態度が悪いとかなんかあればスマン。以後気を付ける
Cはホントに初心者なんでわかんないことがあって聞き返すことがあるかもしれんがご容赦ください
973デフォルトの名無しさん:2013/03/09(土) 12:57:16.22
毎回battle関数に入るたびにbnを1にしておいて3以上にならないとかw
974946:2013/03/09(土) 13:10:54.80
>>973
battle関数の中でfor文があると思うんだが
その中で同じプレーヤー同士が何回か繰り返し対戦することになってる
そこでbnを増やしてるんだが、「strategy=3のときだけ」bnがおかしくなるんですよ……
975デフォルトの名無しさん:2013/03/09(土) 13:15:55.01
よく分からんが、このセミコロンはバグじゃねえの
else if(player[a].strategy == 3) ;
976デフォルトの名無しさん:2013/03/09(土) 13:17:51.17
55行目、
> for(c = 1; c < 3; c++) {
で良いの?
977デフォルトの名無しさん:2013/03/09(土) 13:17:54.57
まず、
>struct info player[3];

struct info player[4];
にしたか?
978デフォルトの名無しさん:2013/03/09(土) 13:20:41.83
37行目、リーグ戦みたいなループだよね?
それなら37行目は
> for (j = 0; j < num; j++) {
じゃなくて
> for (j = 0; j < num - 1; j++) {
では?
979デフォルトの名無しさん:2013/03/09(土) 13:22:33.57
そこは内側のループで弾かれるから動作に支障はない
980デフォルトの名無しさん:2013/03/09(土) 13:37:28.99
だからplayer[0],[1],[2],[3]で4だっつの
981946:2013/03/09(土) 14:00:55.15
>>977
player[4]にしたらちゃんと動いた!ありがとう!!
でも理由が分からん……とりあえずnum+1の数の配列を用意すればいいのか?
オーバーフローなのかなあ
982デフォルトの名無しさん:2013/03/09(土) 14:14:49.08
int num = 4;を#define NUM 4にして
struct info player[3];をstruct info player[NUM];にしとけ
for(j = 0; j < num; j++)なんかもfor(j = 0; j < NUM; j++)
983デフォルトの名無しさん:2013/03/09(土) 14:16:46.60
984デフォルトの名無しさん:2013/03/09(土) 14:19:00.05
>>981
ゼロオリジンを理解してないからだ
985デフォルトの名無しさん:2013/03/09(土) 14:32:07.51
日本語が通じないのはヤバイな…
986デフォルトの名無しさん:2013/03/09(土) 14:37:21.79
向いてないから死ね
987946:2013/03/09(土) 14:38:11.53
すげえ恥ずかしい勘違いをしていたな……
そうかplayer[4]と書いて0,1,2,3か……
大変お騒がせしましたorz
988デフォルトの名無しさん:2013/03/09(土) 14:41:12.22
だからアホだよお前
向いてないよ
人の話きかね―モン

聞いてから40分で解決してンだろ?

> 949 デフォルトの名無しさん [sage] 2013/03/09(土) 02:19:01.29
> 配列の添え字はゼロオリジン
989946:2013/03/09(土) 14:46:31.19
いや言い訳させてもらえるとゼロオリジンを理解していなかったわけではないんだが
その証拠に実は>>980は俺なんだ
思い込みの強い性格でな……まあそれが向いてないってことなんだろうけど
いい教訓になったよ、ありがとう
990デフォルトの名無しさん:2013/03/09(土) 15:38:06.70
宣言時の要素数が0オリジンじゃない欠陥言語
991デフォルトの名無しさん:2013/03/09(土) 15:59:43.62
>>989
いや言い訳は良いんだけど、それよりも前に、今までアドバイスくれたレスに返事レスが無いと
聞いているんだか聞いていないんだか分からない。
いちいち1レスごとにレスするのはまどろっこしいので、修正したソースをideoneに(新しく)上げるのが手っ取り早いと思うよ。
992946:2013/03/09(土) 16:37:58.82
みなさん色々ありがとう!
配列関係のレスに返事をしなかったのは配列には問題ないと「思い込んで」いたためです
申し訳なかった。

ideone.com/iLJYb1

こんな感じでバリバリ思い通りに動いてます!
これから遺伝アルゴリズムを入れるのですが
また詰まったらお世話になるかもしれません
そのときはできるだけ思い込みを排して人の話を聞くようにするので許してね!
993デフォルトの名無しさん:2013/03/09(土) 16:40:24.48
ポーランドの大数学者、ヴァツワフ・シェルピンスキーは・・・
荷物を一つなくしてしまったのではないかと心配していた。
「そんなことないわよ、あなた!」と妻は言った。
「六つともここにあるじゃないの」。
「そんなはずないよ」とシェルピンスキーは言った。
「何度も数えたんだ。ゼロ、1、2、3、4、5」

の逆バージョン
994デフォルトの名無しさん:2013/03/09(土) 16:41:02.49
>こんな感じでバリバリ思い通りに動いてます!

これ見た後に

># 1: hide clone 8 minutes 6 seconds ago
>result: not running

これ見てなんか笑った
995デフォルトの名無しさん:2013/03/09(土) 16:47:13.53
>>994
not runnningとなってるのは
アップロード時にコンパイルして走らせるチェックを選択しなかったためですw
自分のPC上では問題なく動いてますw
996デフォルトの名無しさん:2013/03/09(土) 19:26:10.92
997デフォルトの名無しさん:2013/03/09(土) 19:47:16.96
998デフォルトの名無しさん:2013/03/09(土) 19:47:49.84
999デフォルトの名無しさん:2013/03/09(土) 19:48:31.95
馬鹿w
1000デフォルトの名無しさん:2013/03/09(土) 19:48:36.07
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。