[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 11:53 / Filesize : 185 KB / Number-of Response : 845
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 15



1 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 06:14:52 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 14
pc11.2ch.net/test/read.cgi/tech/1181735298/


教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 91代目
pc11.2ch.net/test/read.cgi/tech/1182607405/

152 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:23:30 ]
って書いたらわかりました。
スレ汚しごめんなさい。

153 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:23:51 ]
1÷5
1は5で割り切れないので終了。余り 1

154 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:24:31 ]
strcpyとか

155 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:27:32 ]
>>151
strncat,strcpy,ctrncpy,sprintf,sscanf
ざっと思いつくのでこの程度。
あと、可変個引数使うときにある、printfのやつ。
あんま使ったこと無いから忘れたけど、vsprintfだっけ?

156 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:28:03 ]
>>152
どちらさまですか?

157 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 00:28:28 ]
>>150
おぬしは間違いなくstaticについて理解していない。
なぜstaticが付いているのかを考えるのじゃ

158 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:02:20 ]
質問です。
BASICのgotoみたいな命令はないのでしょうか?

159 名前:デフォルトの名無しさん [2007/06/28(木) 01:02:33 ]
Cで書いてコンパイルしたファイルを人に送ってもその人は実行できないんですか?
というかできなかったのです。一瞬だけ実行されてすぐ消えてしまいます。
どうすればいいかわかりますか?

160 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:05:29 ]
>>158
gotoというそのまんまの命令がある
loop:
printf("test");
goto loop;
みたいに使う

>>159
コマンドプロンプト経由で使えばおk



161 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:06:30 ]
あ、ちなみにif文で条件を満たしていなかったらmainの一番上まで戻るというのがやりたいのですが・・・・

162 名前:デフォルトの名無しさん [2007/06/28(木) 01:10:52 ]
>>160
そのファイル名のみを相手のコマンドプロントでコマンドさせるってことですか?

163 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:12:28 ]
構造体とポインタはどちらのほうが理解するのが難しい?

164 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:13:18 ]
>>161
int main(void){
start:
〜いろいろな処理〜
if(条件を満たしていない) goto start;


多分普通の人であれば
int main(void){
do{
〜いろいろな処理〜
}while(条件を満たしていない);

165 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:13:31 ]
おつむのレベルによる。

166 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:14:04 ]
>>162
渡したファイルはexe?
コマンドプロントで、exeのあるディレクトリに移動して実行すればオケ。

167 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:15:06 ]
>>163
一般的にはポインタが難しいと言われる。

168 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:16:06 ]
>>162
1.コマンドプロンプトを起動してもらう
2.コマンドプロンプトにexeファイルをドラッグアンドドロップしてもらう
3.Enterキーを押してもらう

これが一番手軽だと思う

169 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:17:32 ]
>>167
ポインタって何に便利なの?

170 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:18:24 ]
何に便利とか言い出すから一向に理解できないんだろ。



171 名前:デフォルトの名無しさん [2007/06/28(木) 01:19:15 ]
>>166
>>168
ありがとうございました

172 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:20:43 ]
>>169
必要にならないと分かりにくいと思う

173 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:24:36 ]
>>169
Nバイトの構造体配列をソートして並び替えることを考える。
このとき、Nバイトのコピーが頻繁に発生することになる。
構造体に対するポインタの配列として保存していた場合、ポインタのソートで済むことになる。
例えばポインタが4バイト、構造体が100バイト超とかで配列が1000超とかだとすれば
どちらが効率的かはわかるよね?

174 名前:デフォルトの名無しさん [2007/06/28(木) 01:24:45 ]
Cpad for Borland...ってやつで書いてるんですけどexeファイルがありません。
どうすればいいですか?
171と同一人物です

175 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:33 ]
>>170
お前がその便利さを知らない、説明できないだけだろ?えせプログラマは
こんなところで質問者をたぶらかしてないで、へちょいプログラマで満足してろよ?

176 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:29:34 ]
>>174
ファイルを保存している場所と同じ場所にexeファイルがあると思われ

177 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:30:55 ]
>>175
へちょくないあなたがへちょい>>170の代わりに答えてあげてください

178 名前:デフォルトの名無しさん [2007/06/28(木) 01:34:22 ]
>>176
あるにはあるのですが、ドラッグアンドドロップはできませんし、
そのディレクトリに移動して 〜.exe と打っても実行されません

179 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:40:02 ]
>>178
コマンドプロンプトって何かわかってるか?

180 名前:デフォルトの名無しさん [2007/06/28(木) 01:42:45 ]
なんか全体的に黒いやつですよね?
わかってるつもりです



181 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:43:02 ]
ja.wikipedia.org/wiki/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88

182 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:45:17 ]
>>180
「notepad」って打ってメモ帳が起動するか?
ドラッグアンドドロップでフルパスが表示されて、エンター押して実行できると思ったんだけどなぁ

183 名前:デフォルトの名無しさん [2007/06/28(木) 01:48:14 ]
>>182
メモ帳はでてきます。
でもファイルをドロップしようとすると○の中に×が入ってるようなのが出てきて
できません

184 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:49:57 ]
もしかしてvistaか?

185 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:50:51 ]
>>183 ちょっwwwwwww伏字エロいwwwwwwwww
ティ○ポの中にオ×コが入ってるようなので とか妄想しちゃうぞwwwww

186 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:51:04 ]
>>183
xpとかだとドラッグアンドドロップできないようになってるのかな?
じゃぁあきらめてフルパス(c:\cpad\test.exeみたいなやつ)を打って実行するべし
入力面倒だけど。

187 名前:デフォルトの名無しさん [2007/06/28(木) 01:54:18 ]
>>186
Vistaですよ。
かなりめんどいってことですね〜〜…
ありがとうございました

188 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:55:23 ]
VistaはD&Dできないのか・・・ ひとつ勉強になった。

189 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:56:12 ]
セキュリティ云々でできなくなったそうだ

190 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:57:04 ]
なぁ〜〜に、こうすりゃええがな。XPを仮想PCにインストール。仮想PCでプログラミング
あっ武勇伝、武勇伝、武勇でんでんででんでんっ♪



191 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:41:46 ]
ポインタが無かったらprintfすら・・・

192 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 02:43:50 ]
ファイル操作も出来ないね

193 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 03:03:13 ]
そもそもポインタって何?実体は?それが理解できていないとダメ。
ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF

194 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:10:08 ]
2つの文字列を指すポインタ(例えばs1はABC、s2はABを指してる)で
下のソースコードだと2つの文字列が改行にいくまで繰り返すって言う意味ですかね?
while((*s1 != '\n') || (*s2 != '\n'))
{〜〜
s1++;
s2++}

195 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:12:03 ]
(;^ω^)恐ろしいコード

196 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:18:58 ]
すいません、ちょっと適当に書き込んだんで…。
ホワイルの中身の意味が知りたくて。

197 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 07:21:18 ]
>>194
そのロジックだと、s1、s2の改行文字の位置が揃っていないと誤動作しそうだが。
#つーか、>194自身が挙げたサンプルで死亡確定だな。

198 名前:デフォルトの名無しさん [2007/06/28(木) 07:57:55 ]
>>194
s1にもs2にも改行コードないからプログラム起動して即吹っ飛ぶ。
s1がABC\n、s2がAB\nだったとしても一致しないのでやっぱり吹っ飛ぶ。
そのコードはs1とs2の改行コード位置が一致した場合にループ抜ける。

199 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:00:03 ]
〜〜の中にきっとbreakが含まれてるんだ

200 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:45:23 ]
C言語の精度って小数点以下いくつなんでしょうか??



201 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:49:39 ]
そういう精度の決まり方じゃない。
これの IEEE 方式。
ttp://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0

202 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:50:57 ]
言葉が足りなかった。
IEEE 方式のマシンが多い、と。
別にエクセス 64 のマシンでも C は使える。

C かどうかで決まるものではなく、
CPU が何かによって決まるもの。

203 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 10:07:58 ]
うん、それで、小数点以下いくつなんでしょうか??

204 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:11:40 ]
>>203
>>201に書いてあるだろ

205 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:14:24 ]
>>203
だから小数点以下いくつという形の精度じゃないと。
「浮動」小数点ってのは、そういう事だ。

206 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 12:07:34 ]
有効桁数って、確か中学で習うよな…?

207 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:02:25 ]
10進数だとIEEEの64ビット浮動小数点は小数点以下15桁ぐらいかな。
但しそれに掛ける10のn乗という指数が付くわけだが。


208 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:16:16 ]
有効桁数15〜16桁あたりだな。
本当は2進数で考えないといけないんだけど。

209 名前:207 mailto:sage [2007/06/28(木) 14:21:03 ]
#include <stdio.h>
#include <values.h>

int main(void)
{
printf("%d, %Lg, %Lg\n", sizeof(long double), LDBL_MAX, LDBL_MIN);
printf("%d, %g, %g\n", sizeof(double), DBL_MAX, DBL_MIN);
printf("%d, %g, %g\n", sizeof(float), FLT_MAX, FLT_MIN);

return 0;
}

gcc 4.1.1 (i386-redhat-linux) で上記のソースをコンパイルして
動かすと結果はこう出る。

12, 1.18973e+4932, 3.3621e-4932
8, 1.79769e+308, 2.22507e-308
4, 3.40282e+38, 1.17549e-38

e から後ろの部分が指数で「掛ける10のn乗」を表す。
3.3621e-4932 は 3.3621 掛ける10の -4932 乗だ。

但し上記の結果は環境依存で、同じ gcc でもコンパイルオプションに
よっては変わってしまう。だから全てについてこうであるという保証は
できない。(values.h も gcc 独自のヘッダかも知れない)。ただ大雑把に
言えることは float よりは double、また double よりは long double
の方が多くの範囲をカバーできるかも知れないというだけだ。
(コンパイラによっては long double はないかも知れないが)。


210 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:00:08 ]
ISO準拠の処理系ならlong doubleは必ずある。
209が使っている定数は<float.h>で提供されている。



211 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:01:51 ]
long double は必ずある。
しかし、double と同じサイズのこともある。

212 名前:デフォルトの名無しさん [2007/06/28(木) 17:10:52 ]
putchar関数の意味がよくわかりません。
質問が抽象的すぎてごめんなさい

213 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:12:06 ]
標準出力に文字(char)を一文字出力(put)する

214 名前:デフォルトの名無しさん [2007/06/28(木) 17:42:10 ]
…?
putchar('\n')
ってのはどういうことですか?

215 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 17:48:00 ]
標準出力はわかるか?
 通常は画面だと思っていい。
\n はわかるか?
 改行コードをあらわすエスケープシーケンスだ

つまり、画面上で改行する、ということ

216 名前:デフォルトの名無しさん [2007/06/28(木) 17:50:19 ]
それは
printf("\n")
とは違うんですか?

217 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:07:45 ]
printf は文字列を扱う
たまたまprintfで1文字出力するなら、putchar と同じ様になるな。
でも、printf の第一引数の文字列は % とか入ると違ってくるけどな。

218 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:08:09 ]
"\n" は文字列
'\n' は文字


219 名前:デフォルトの名無しさん [2007/06/28(木) 18:31:55 ]
でもこの場合では意味することは同じなんですよね?
というか、putcharでできることはprintfでもできるんですか?


220 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:32:55 ]
できるけど、効率は悪い。



221 名前:デフォルトの名無しさん [2007/06/28(木) 18:35:29 ]
それは打つ文字数が多くなるとかいうレベルの話ですか?
プログラムの内容には関係ないですよね?

222 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:36:12 ]
あります。

223 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:40:48 ]
printf は文字列を解析して
% が出てきたらどうするかとかいう処理を行ってる。
ま、出力自体のコストに比べりゃ微々たる差だがね。

224 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:41:45 ]
適材適所だ
printfで全部まかなうのもいいし、使い分けるのもいい。
同じことができるなら、片方はまったく無駄だと思ってるなら
それはキミが初心者だから。

225 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:42:18 ]
最近のコンパイラは賢いから、>>216なんかはputchar('\n');に最適化されるけどな。

226 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:43:47 ]
そこまでするのか! っていう最適化が
意外とされてるんだなあ。

227 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:48:02 ]
gccは printf("%s\n", "hoge"); を puts にしてくれたりするよね。

228 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:52:36 ]
>>227
こういうのってどうやって知るんですか?
○は□に最適化されるとか

229 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:55:28 ]
逆アセンブルしてもいいし、
両方のパターンを書いてコンパイルして
バイナリ比較して等しくなるかどうか確認したのでも。

230 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:57:45 ]
すごい!



231 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:08:41 ]
普通に gcc -S

232 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 19:31:12 ]
特徴的なものは宣伝していたりマニュアルに書いてあったりもする。

233 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:31:57 ]
スーパーハカーは自分で逆アセして知る。
一般人は掲示板で知る。

234 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:16:58 ]
確かに。
普通のハッカーなら掲示板でヒントを読んで自分で試して知るだろうな。

235 名前:ぴっころ [2007/06/28(木) 21:32:59 ]
突然お邪魔致します。ぴっころです。
2進数で表した時、2の倍数は最下位ビットが0になる事が分かりました。
では3の倍数は何かこのような決まりはあるのでしょうか?

236 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:33:54 ]
3進数で3の倍数は最下位ビットが0

237 名前:ぴっころ [2007/06/28(木) 21:36:37 ]
言葉足らずで申し訳ありません。
2進法で表した時です。

238 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:37:00 ]
ぴっころって誰だよ。

239 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:38:42 ]
>>235
ヒント1 : 2の倍数とは偶数のこと
ヒント2 : 3の倍数を並べてみよう

240 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:45:18 ]
2 進法では別に 3 (11) の倍数に特徴はないなあ。
3 (11) で割ったら余りが 0 になるということくらいだな。



241 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:45:44 ]
>>235
数学の問題だなあ。

3で割ると余り0

なんてのはあまり意味ないか・・・。

10進数で表した時に各桁を足して3の倍数ならそれは3の倍数
(123は1+2+3=6なので3の倍数)なんてのもあるが、関係ないね。


242 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:51:23 ]
3の倍数を2進法で表したものは、正規表現/(0|1(00)*1)*/にマッチする。

243 名前:ぴっころ [2007/06/28(木) 21:51:33 ]
>>238 ドラゴンボールのぴっころから取らせて頂きました。
>>239
   11
  110
 1101
 1100
 1111
10101
11000
11011
繰り返しもあるような無いような・・・。
ちょっと僕のキャパでは厳しいです・・・。

244 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:53:59 ]
>>243
18はどこへ消えた

245 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:54:19 ]
>>242
発想はいいがちょっと惜しいな。

1000000001の間に11を入れて1011000001も3の倍数だ。

246 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 21:55:49 ]
>>243
うそだ!
NHKのじゃじゃまる、ぴっころ、ぽろりのぴっころだろ?

247 名前:デフォルトの名無しさん [2007/06/28(木) 22:06:53 ]
bccってのをXPで使ってたんですが、vistaに変えたんですが環境設定ソフトでPATHの設定が出来ませんってのが出るんですが・・・・
vista出使える環境設定ソフトかPATHの設定方法を教えてください。

248 名前:ぴっころ [2007/06/28(木) 22:08:04 ]
   11
  110
 1101
 1100
 1111
10010
10101
11000
11011
11110
11→10→01→00
・・・。
ちょっときついです。
教えてもらえると助かります。

249 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:09:42 ]
1101のどこが3の倍数なんだよ。

250 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:11:40 ]
 1101
 1100

数が減ってるな
まぁ1001の書き間違いだろうからそれくらい勘弁してやれ



251 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:12:59 ]
>>247
マイコンピュータのプロパティの中にない?
XP/2003まではそこにあるんだけど。

252 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:23:37 ]
6bitでカルノー図書いてみたんだが一切簡単化できねーから周期性は無い臭い






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<185KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef