【ANSI-C】 C言語なら俺に聞け! Part 129
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/08/27(日) 15:43:44まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
【ANSI-C】 C言語なら俺に聞け! Part 128
http://pc8.2ch.net/test/read.cgi/tech/1151282084/
GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は
専門の別スレッド↓があるのでそこへさようなら。
【初心者歓迎】C/C++室 Ver.30【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1156145524/
C/C++の宿題を片付けます 73代目
http://pc8.2ch.net/test/read.cgi/tech/1155355501/
新・推薦図書/必読図書のためのスレッド 1
http://pc8.2ch.net/test/read.cgi/prog/1146889623/
0075デフォルトの名無しさん
2006/08/30(水) 02:58:27読んだ。
固まった。
顎が落ちた。
なんだこりゃ。
C++じゃねえじゃん。
マジで>>70が言うとおりコンパイラ実装側が手を抜くためとしか思えんな!
誰が使うんだ、こんな糞規格って
>>71が可哀想すぎる…
こんなのってないよ…
0076デフォルトの名無しさん
2006/08/30(水) 06:59:23今更名前にC++が入ってるのは詐欺だな。
0077デフォルトの名無しさん
2006/08/30(水) 07:32:38委員会のメンバが胡散臭すぎる。
0078デフォルトの名無しさん
2006/08/30(水) 10:02:29return;
}
void b () {
return a ();
}
これとくに警告とか出ないんですけどこういう書き方正しいんでしたっけ?
return a ();のところ
0079デフォルトの名無しさん
2006/08/30(水) 10:04:55C++ では有効。それが無いと template 書くときに困る。
0080デフォルトの名無しさん
2006/08/30(水) 10:10:08gcc使ってたんですけど今-pedanticというオプションつけたら警告出ました
それつけわすれてました
0081だいころ
2006/08/30(水) 11:45:16何か良いフリーのソフトを配布しているサイトをご存知でしたら、
教えて貰えないでしょうか。
宜しくお願いします。
0082デフォルトの名無しさん
2006/08/30(水) 11:53:21へ へ|\ へ √ ̄| へ
( レ⌒) |\ ( |\)| |/~| ノ ,__√ /7 ∠、 \ . 丶\ _ __
|\_/ /へ_ \) | | | |∠ | |__ | / ! | | |_〜、 レ' レ'
\_./| |/ \ .| |( ̄ _) | ) | | i | へ_,/ ノ ,へ
/ / ̄~ヽ ヽ. | | フ ヽ、 ノ √| | ! レノ | !. \_ ー ̄_,ー~' )
/ /| | | | | |( ノ| |`、) i ノ | | \_ノ ノ / フ ! (~~_,,,,/ノ/
| | | | / / | | . し' ノ ノ | | / / | |  ̄
\\ノ | / / | |___∠-". | | ノ / ノ | /(
\_ノ_/ / (____) し' ノ/ / / | 〜-,,,__
∠-''~ ノ/ (_ノ 〜ー、、__)
0083取り敢えずdoxygen
2006/08/30(水) 11:54:13スレタイ読めますか?
0084デフォルトの名無しさん
2006/08/30(水) 12:45:52「明解C言語入門編」
「解きながら学ぶC言語」
「プログラミング言語C」
で勉強していこうと思います。
これらで効率よくプログラミングを学んでいける方法、
読み方を教えてください。
0085デフォルトの名無しさん
2006/08/30(水) 12:47:111ページ目から始めて、最終ページまで読めばいいと思うよ。
0086デフォルトの名無しさん
2006/08/30(水) 12:52:220087デフォルトの名無しさん
2006/08/30(水) 13:07:39doxygenでも使え。
0088デフォルトの名無しさん
2006/08/30(水) 13:14:14最近の初心者は最初からやるべき参考書を沢山ピックアップしすぎ。
1冊何か読んでちゃんと理解すれば次に何を読むべきかわかるから、
その時に2冊目を買えばいい。何にもわからないうちに買い置きするのは危険。
解きながら学ぶC言語って、明解C言語入門編例解演習の改定本だろ?
明解C言語入門編と相当内容が被っているから両方買った時点で効率悪すぎ。
0089デフォルトの名無しさん
2006/08/30(水) 13:22:02そうです。明解Cは少しずつ読み進めていて、
問題もたくさん解いたほうがいいのかなと思って購入してしまいました。
明解だけに絞って進めていこうと思います。
最初問題を解くときなどは、問題を見たら
すぐに回答を見て理解しながら自分で写すいった方法でいいのでしょうか?と
それとも時間をかけまず1から自分で全部考えてみてから回答を見て、
こういう方法でやるんだ、と納得して次に進む方法がいいのでしょうか。
後者だと時間が結構かかってしまいます。
0090デフォルトの名無しさん
2006/08/30(水) 13:28:39しかし俺はそんな超人的なことは無理で、問題をよく考えて解説を何度も読んで、それでなんとか理解できる程度。
何が言いたいかというとだ、こんな所で聞く時間があったら1ページでも多く読め
0091デフォルトの名無しさん
2006/08/30(水) 13:30:18大学受験勉強は、問題を見てすぐ答えを見てその流れを理解して覚える、
といったような方法を取ってきていたのですが、
プログラミングとなるとどう勉強していったら分からないといったところが
率直なところです。
大学では、ちょこちょこと説明した後課題が出されて、
それについて自分でいろいろ調べといていくといったやりかたでやってますが
自習となるとちょっと・・・
0092デフォルトの名無しさん
2006/08/30(水) 13:33:25テストで良い点を取るための勉強とは違うのだよ
0094デフォルトの名無しさん
2006/08/30(水) 13:49:51>大学受験勉強は、問題を見てすぐ答えを見てその流れを理解して覚える、
なにその非効率な勉強方法
解きもしないで身につくわけがない
C言語も同じ
0095デフォルトの名無しさん
2006/08/30(水) 13:52:27宿題を提出したり、テスト当日漬けには物凄く効率はいいがな。
ただ、指摘どおり身に付かないので追えなくなったらニート確定w
0096デフォルトの名無しさん
2006/08/30(水) 13:53:52落ちたときにつらいw
0097デフォルトの名無しさん
2006/08/30(水) 14:02:19一概に非効率だとは言い切れない。
だがプログラミングの勉強においてその方法は何の役にも立たない。
0098デフォルトの名無しさん
2006/08/30(水) 14:18:16実行させて思う通りに動かなくて悩んで・・・そうやって憶えるもんだ
009984
2006/08/30(水) 14:39:53大学受験でこの勉強方法が効率的だった(というか自分に合っていた)というのは
実体験も含めて分かってます。ここでそれは特に説明はしません。
>>94>>97>>98で言われているように
プログラミングに関しては効率的ではないことは分かりました。
ただ、初歩の部分というのは覚えだけのことが多くありますよね。
それにも>>98の方法が本当に効率的なのかというのは疑問でもあります。
もうちょっと参考書の使い方の部分まで考えていきたいのです。
例えば、
まずその章の説明を読んで例題を読む。
次にそれを自分で書き写しながら理解していく。
そこから同じことを使う練習問題を何題か解いてみる。
というような感じで。
0100デフォルトの名無しさん
2006/08/30(水) 14:42:39早く理解すること より 正しく理解すること のほうが重要な分野だぞ?
010184
2006/08/30(水) 14:46:36なるほど。としか言い様がありません。
プログラムの経験が極浅いために、
イマイチ受験的な考えから抜け出せない感じです。
0102デフォルトの名無しさん
2006/08/30(水) 14:48:550103デフォルトの名無しさん
2006/08/30(水) 15:09:50人にアドバイスを貰っておいて、今度はそれを疑いだすとか基地外か?
第一、今のお前には、どんなアドバイスを貰っても
それが本当に効率的かどうかを判断できる能力が備わってないだろ。
本当は自分の中である程度勉強法が固まっていたものの、
不安だったので背中を押してもらおうとスレ住民に聞いたが、
反発されたのでうだうだ言っている。そんな風にしか見えない。
0104デフォルトの名無しさん
2006/08/30(水) 15:15:52実際に使ってみないと判らない事がい〜〜〜〜ぱいあるのだと思い知る事になるだろう。
010584
2006/08/30(水) 15:16:35全く自分の意に反しているレスです。
>それが本当に効率的かどうかを判断できる能力が備わってないだろ
判断できる能力とはどのような能力でしょうか。
>>98で書かれた方のやり方は一般的で最もいい方法だとは思いますが、
「初歩の段階で」というのを付け足して差し出がましく意見したまでですが。
下の3行も全く違いますね。
これ以上書くと荒れると思うので、では。
0106デフォルトの名無しさん
2006/08/30(水) 15:20:540107デフォルトの名無しさん
2006/08/30(水) 15:23:52そうやって知識も無いくせに自分が一番正しいと思っていればいい。
0108デフォルトの名無しさん
2006/08/30(水) 15:27:390109デフォルトの名無しさん
2006/08/30(水) 15:29:272) 早くゴミコードを生産する奴 しかし、なんとなく正しく動いてるっぽい
3) 時間はかかるが安心できるコードを生産する奴 しかし、正しく動かない
4) 時間はかかるが安心できるコードを生産する奴 正しく動作している
俺は 2) が一番やっかいだ
0110デフォルトの名無しさん
2006/08/30(水) 15:30:25011184
2006/08/30(水) 15:30:53写すというのはノートにじゃなくて
実際にそれを入力(写)して実行してみるということです。
誤解があったようなので最後に一言だけ。
0112デフォルトの名無しさん
2006/08/30(水) 15:31:220113デフォルトの名無しさん
2006/08/30(水) 15:35:59ケースバイケースだな。 全く別の仕事まわすとかして対処してたりする。
0114デフォルトの名無しさん
2006/08/30(水) 15:36:190115デフォルトの名無しさん
2006/08/30(水) 15:39:37http://pc8.2ch.net/test/read.cgi/tech/1153542424/63-
0116デフォルトの名無しさん
2006/08/30(水) 15:39:46部長でもやらせとけ
0117デフォルトの名無しさん
2006/08/30(水) 15:49:060118デフォルトの名無しさん
2006/08/30(水) 15:51:420119デフォルトの名無しさん
2006/08/30(水) 15:54:58効率を過剰に求めて自爆してもおかしくはないな
0120デフォルトの名無しさん
2006/08/30(水) 16:01:20最近のCの問題って自己参照型構造体まで出まくりだぞ。
0121デフォルトの名無しさん
2006/08/30(水) 17:24:30>>74
「Embeded C++」というより、「!C++」の方がしっくり来る
0122デフォルトの名無しさん
2006/08/30(水) 21:40:21お勉強でコード書き始める香具師は期待薄だよな。
これって、面白くてはまりこんでいる香具師の方が、
結果的に自分でなんでもやってみて、先々伸びるじゃん?
>>84
無知の知ってしってるか?
おまえは今のままでは絶対にまともには成長しない。
自分が無知だと本当に思っては居ないからだ。
0123デフォルトの名無しさん
2006/08/30(水) 22:25:45俺にとって C ってのはアーキテクチャに依存しない(と言っても限界はあるが)
アセンブラなんだけど、おまえさんたちの位置付けってどぉよ。
0124デフォルトの名無しさん
2006/08/30(水) 22:30:330125デフォルトの名無しさん
2006/08/30(水) 22:41:470126デフォルトの名無しさん
2006/08/30(水) 22:59:42struct String_T {
int length;
char value[1];
};
当人が、可変長オブジェクトについて、
この型の使い方に意義を出すか、許容するかの問題と同じに感じる。
0127デフォルトの名無しさん
2006/08/30(水) 23:39:47あ、議論に意味が無いってことか?
0128デフォルトの名無しさん
2006/08/30(水) 23:47:530129デフォルトの名無しさん
2006/08/31(木) 01:41:52都市伝説の類かとすら思ってた。
変な書き方しなけりゃ吐かれるコードの質はCと大差ないC++は
超級覇王アセンブラですか?
0130デフォルトの名無しさん
2006/08/31(木) 02:06:12時は流れても、C++は永遠にCのトランスレーターでしょ?
0131デフォルトの名無しさん
2006/08/31(木) 02:13:26現在実用されてる C++ コンパイラのうちで、
C のトランスレータと言えるものは一つも知らん。
0132デフォルトの名無しさん
2006/08/31(木) 02:24:030133デフォルトの名無しさん
2006/08/31(木) 02:24:37MIWA-C++というのがトランスレータでした。しかし、例外処理が
取り入れられると、どうしてもトランスレータでは機能を実現でき
なくなり、また一度にコンパイルできるコンパイラの方が速度が
速いので、トランスレータは消えて行った。
0134デフォルトの名無しさん
2006/08/31(木) 02:32:310135デフォルトの名無しさん
2006/08/31(木) 02:38:52Cへのトランスレーターがあるかないかじゃなくて、
せいぜいC++ができることは(と言うかC++の思想自体が)
その程度といいたかっただけだ。
一応別言語なのに、printf("\n");はないでしょ。
cout <<endl; じゃないのか?ということ。
Cと文法(構文)が似ているJavaはまったく別言語として捉え
られているけど、Cの文法を拡張したC++はなんかCと同じ
ように見られている。これじゃC++はいつまでたってもCの
ゴニョゴニョと言われても仕方ないんじゃないの?
ということ。誤解なきよう。
0136デフォルトの名無しさん
2006/08/31(木) 02:46:56Cの文法を拡張したのがC++、という時代はとっくに過ぎ去って、
今ではCの上位互換性を保ちつつも全く異なる言語になってしまって
いると思う。
0137デフォルトの名無しさん
2006/08/31(木) 02:51:110138デフォルトの名無しさん
2006/08/31(木) 02:56:01そうは言ってもBetterCのためだけにC++使う奴なんて
いい加減絶滅したとも思うけど。
0139デフォルトの名無しさん
2006/08/31(木) 02:58:03まったく別言語になったのかよりも、
それを言うならC++のクラスライブラリーによって
別言語になったように感じているだけじゃないのか?
最近で、C++は言語自体の更新というか拡張とかあったの?
0140デフォルトの名無しさん
2006/08/31(木) 03:02:49それ以前の仕様については、今更変える必要も無いってとこだろうし。
0141デフォルトの名無しさん
2006/08/31(木) 05:15:01下の2つの関数でabesi()が 「たわば!」になるのはわかるのですが
hidebu()のほうは一応実行できます
これは、偶然うまくいっているだけで実は「ひでぶ!」なのか
それともこれで大丈夫なのでしょうか
どなたか教えてもらえませんか?
まだ、無残に飛び散る訳にはいかないのです
...
#include <stdio.h>
char* abesi(){
char rin[80]="ke-n";
return rin;
}
int hidebu(){
int you_ha_shock=4649;
return you_ha_shock;
}
int main(){
//abesi();
printf("%d",hidebu());
return 0;
}
0142デフォルトの名無しさん
2006/08/31(木) 06:14:49ひでぶはいいがあべしは駄目。
ひでぶは値を返すのに対し、あべしはポインタを返す。rin[]はあべし関数
終了後消滅するので、どこか変なアドレスを指す事になる。
0143デフォルトの名無しさん
2006/08/31(木) 06:53:41C++0x
http://pc8.2ch.net/test/read.cgi/tech/1149440647/
0144デフォルトの名無しさん
2006/08/31(木) 13:32:52じゃあ、Visual Basicは何のゴニョゴニョだ?
0145デフォルトの名無しさん
2006/08/31(木) 16:40:07愛を失ってさ迷っていましたが
血渡しだと大丈夫だと知って安心しました
次の殿商社を求めて旅立つことにします
お世話になりました
0146デフォルトの名無しさん
2006/08/31(木) 23:44:520147デフォルトの名無しさん
2006/08/31(木) 23:56:390148デフォルトの名無しさん
2006/09/01(金) 05:05:190149デフォルトの名無しさん
2006/09/01(金) 09:48:59しずめる方法は俺が知っている。俺に任せろ。
0150デフォルトの名無しさん
2006/09/01(金) 18:59:32sprintfでやるには、バッファをあらかじめ用意し置く必要がある。
このバッファサイズを決めるにはどうすればよいでしょうか?
やっぱり十分なサイズを確保しとけ!ですか??
0151デフォルトの名無しさん
2006/09/01(金) 19:03:280152デフォルトの名無しさん
2006/09/01(金) 19:17:02CHAR_BITとsizeof(int)を使って、最大の桁数を算出すりゃいい。
俺はやらないけどな。
0153デフォルトの名無しさん
2006/09/01(金) 19:18:12C99なら、snprintfで最初の引数をNULLにすれば必要なバッファの大きさが戻り値として得られたと思う。
また、処理系によってはバッファの大きさを得るための関数が独自に用意されていることもある。
0154デフォルトの名無しさん
2006/09/01(金) 19:22:25バッファが足りないと-1を返したりしてややこしい。
VC++の_snprintfもそうだった気がする。
0155デフォルトの名無しさん
2006/09/01(金) 20:53:25これで必要なバッファサイズがわかる。
0156デフォルトの名無しさん
2006/09/01(金) 21:55:200157デフォルトの名無しさん
2006/09/01(金) 22:31:00ある処理を行うためのサブルーチンはできて、あとはそれの組み合わせなのですが
今までは何も考えず、様々なところでグローバル変数を使ってました。
もう少し、わかりやすく移植しやすいプログラムを作りたいのですが
何かよい方法はありますか?
引数で渡す方法ですと、インプットはそれで良いですがアウトプットでは
返り値だけだと足りません。(だから今まではグローバル変数を多用していた)
特にC言語だと色々とやりたいようにできるのがメリットでもありデメリットでもあるんですよね・・・
0158デフォルトの名無しさん
2006/09/01(金) 22:36:46構造体、もしくは構造体へのポインタを使えばよいだろ。
0159デフォルトの名無しさん
2006/09/01(金) 22:39:21> 返り値だけだと足りません。(だから今まではグローバル変数を多用していた)
呼ぶ側で引数にアドレス入れて、関数側でそのアドレスに値を入れてあげるように
つくれば、引数で値のやりとりができるよ
0160デフォルトの名無しさん
2006/09/01(金) 22:51:40でも、そのやり方だと引数が多くなるよね。
まあ俺も、色々と良い方法がないか思案している。157もがんばってくれ。
0161デフォルトの名無しさん
2006/09/01(金) 22:55:03その関数が処理するデータを構造体にまとめて、そのポインタを引数とする。
この方法を発展させると C++ でのクラスに行き着く。
0162デフォルトの名無しさん
2006/09/01(金) 22:57:15唐突に何かを理解した気がする。
質問者じゃないがありがとう。
0163デフォルトの名無しさん
2006/09/01(金) 23:03:05でもそうすると、お互いきちんとその構造体を理解し管理しないとだめですよね。
あと、構築するときは
メイン処理
|
|−中ぐらいの処理
|
|−中ぐらいの処理
| |
| |−実際の処理を行う小さなサブルーチン
| |−実際の処理を行う小さなサブルーチン
| |−実際の処理を行う小さなサブルーチン
こんな感じ?
0164デフォルトの名無しさん
2006/09/01(金) 23:07:45構造体を理解し管理するのも、関数を提供する側にするのが望ましい。
そこでコンストラクタ、デストラクタという考え方に至る。
0165デフォルトの名無しさん
2006/09/02(土) 01:01:12fprintf(file,b1,b2);
fclose(file);
の手続きと同じなんだよ。
構造体とかクラスとかでオブジェクトへのアクセスの原点は。
0166デフォルトの名無しさん
2006/09/02(土) 07:39:04文字コードを出力させるようなプログラムで
printfの出力がおかしくなります。その理由が
よくわかりません。
#include <stdio.h>
#define MAX 8
int main()
{
int i;
unsigned short CODE;
unsigned char hi,lo;
CODE=0x8888;
for (i=1; i<=MAX; i++)
{
lo = CODE & 0xFF;
hi = CODE >> 8 & 0xFF;
printf("0x%x:%c%c ",CODE,hi,lo);
if ( (i % 4) == 0 )
printf("\n");
CODE++;
}
printf("\n");
}
0167デフォルトの名無しさん
2006/09/02(土) 07:44:24そうですか。
0168デフォルトの名無しさん
2006/09/02(土) 08:20:06>printfの出力がおかしくなります。その理由が
いいえ、printf()の出力がおかしいのではなく、あなたがおかしいのです。
初心者スレにでも逝ってください。
0169150
2006/09/02(土) 14:50:53VBでは十分なサイズを事前に用意するっていう
行為なんてやらないので「自分できめる」ことに抵抗あった。
Cならそんな無駄なことはしないと思ってたけど、
一般的なら適当なサイズを指定しときます。
0170デフォルトの名無しさん
2006/09/02(土) 16:36:01型は適当に相互変換できるし、下手すると変数すら事前に宣言しなくてもいいし>VB
0171デフォルトの名無しさん
2006/09/02(土) 16:42:020172デフォルトの名無しさん
2006/09/02(土) 17:32:09それにべったり依存しているVBをOOPだというのも俺は違和感を感じない。
0173デフォルトの名無しさん
2006/09/02(土) 17:40:360174デフォルトの名無しさん
2006/09/02(土) 17:45:25頭が痛くなる。
オブジェクト指向とかをCでやろうと思ったけど
他人(職場の人)が見てもわかりやすく、使いやすいようにと思うと
結局そこまで踏み込めない。そう思うとシンプルなつくりがベストなのかな?
せいぜい、関数ポインタと構造体をうまく組み合わせて
なるべくわかりやすく作るしかないのか・・・
ちなみに仕事はファームウェアの設計で、今はLANドライバを担当しています。
■ このスレッドは過去ログ倉庫に格納されています