C統合・質問スレッド
..
655:デフォルトの名無しさん
07/02/16 00:40:54
>>653
関数a()に渡したarray2は、array2自体が何ら設定されていないのだがあんたの使うコンパイラは警告してくれないのか?
オプションで警告レベルを調整できるのなら引き上げておくことを進めておく。
で、件の目的なら>654でもいいがint * a(int size) {return malloc(sizeof(int) * size);}でもいいね。
656:デフォルトの名無しさん
07/02/16 01:07:52
#include <stdio.h>
void f(int i) {i = 42;}
void g(int* p) {*p = 42;}
int main(void)
{
int x = 7;
f(x);
printf("%d\n", x);
g(&x);
printf("%d\n", x);
return 0;
}
上と同じ理屈。短絡的に言えば引数経由で値を返したいときには*の数を1個増やすということになる。
#include<stdio.h>
#include<stdlib.h>
void MyAlloc(int**, int);
void MyFree(int*, int);
int main(void)
{
int size = 10;
int* array2;
MyAlloc(&array2, size);
MyFree(array2, size);
return 0;
}
void MyAlloc(int** array, int size) {*array = (int*)malloc(sizeof(int) * size);}
void MyFree(int* array, int size) {free(array);}
657:デフォルトの名無しさん
07/02/17 19:47:47
共有メモリ上にポインタを利用した連結リスト作成したいけど
どうやって作ればいいのですか?
658:デフォルトの名無しさん
07/02/18 14:52:37
>654-656
有難う御座いました!なぜダメなのかも解りました。
これで課題の〆切に間に合いそうです.。。
659:デフォルトの名無しさん
07/03/02 19:45:06
Windowsでマイクロ秒まで測る方法を教えてください
環境は、WindowsXP+bcc32です。
660:デフォルトの名無しさん
07/03/03 17:46:55
>>659
どんなアプリ作ろうとしてんの?
そもそもXPはRTOSじゃねーからマイクロ秒でなんらか
の値がとれたとしても精度はないよ?
661:デフォルトの名無しさん
07/03/10 13:47:24
Cを勉強したいんですが
まず最初に読んだらいい本ってありますか?
種類が多すぎてどれがいいか分からないんですけど
662:デフォルトの名無しさん
07/03/10 22:36:29
起動されているスレッドを順番に停止する関数を作りたいんですが、
何の関数を使えばいいんですかね?
pthread_join()は起動しているスレッドが自分で終了するまで待ってる関数だから
無限ループしているスレッドを終了できなし。
pthred_exit()はpthread_join()の戻り値を引数に使うからpthread_join()使わないと無理だし。
誰かお願いします。教えてください。
663:デフォルトの名無しさん
07/03/29 14:09:47
>>661
ナカーマ
しかし俺はさっきコンパイルという言葉を知ったモロ初心者><
664:デフォルトの名無しさん
07/04/03 16:42:11
推薦図書/必読書のためのスレッド PART34
スレリンク(tech板)l50
665:デフォルトの名無しさん
07/04/17 12:59:56
#include <windows.h>
#include <stdio.h>
void main()
{
double a;
a = 2/6;
printf("%f\n", a);
}
VC6にて上のように単純に2÷6を計算したら0が出力されます。
0.33333・・・を出したいのですがどうすればいいのでしょうか?
666:デフォルトの名無しさん
07/04/17 13:08:06
↑
解決済みです
667:デフォルトの名無しさん
07/05/14 22:11:03
windowsXP上でcのプログラミングをしたいのですが
フリーのものでコンパイラ、エディタなどでお勧めのものを教えてください
なるべく日本語のもので見易さ、編集しやすさ最優先で、
linux上でも動かしやすいものであれば嬉しいです(←これはついでなのでそこまで重要でもない)
668:デフォルトの名無しさん
07/05/14 23:51:43
残念ながらcは英語をベースにした言語なので、「日本語のc」はありません。
669:デフォルトの名無しさん
07/05/15 01:39:33
下らないレスするくらいなら相手するなよ…
>>667
好きなの選べ
URLリンク(homepage3.nifty.com)
670:デフォルトの名無しさん
07/05/15 01:49:55
>>667
Linuxなら、どのディストリにもgccが入っているだろうし、vi(vim)かそれが嫌ならemacsがあるだろ。
それを踏まえて、WinXPでもcygwin入れてgccを使えばいいし、取り敢えずvimでいいだろ。
671:下らなさの2乗
07/05/15 10:15:29
>>668
「c」などという言語はありません。
672:デフォルトの名無しさん
07/05/20 03:27:08
OS:VineLinux
コンパイラ:gcc
こんばんは、ppm形式(フルカラーraw形式)の画像のピクセルごとの,R,G,Bの色のデータを
メモリを動的に確保して1次元の配列にぶち込みました。
これを任意の角度回転しようと考えているのですが、
どうも1次元の配列ですと直交座標で扱いにくく困っています。
そこで新たに二次元配列を動的に確保して・・・とも考えたのですが
元画像、出力画像のデータを取り込んでいるので、得策でもないような気がします。
なんとか直交座標系として扱いつつ、元画像を回転させて出力画像を作る方法ありませんでしょうか?
ソースがあるだとかよい案があればよろしくお願い致します。
673:デフォルトの名無しさん
07/05/20 03:50:33
>>672
座標計算する関数を作ってしまうとか。
スレリンク(tech板:99番)
674:デフォルトの名無しさん
07/05/20 06:03:17
printfの書式で14.850000や2.00や5.012000の様に小数点以下で最後に0が続く場合、
その0を省略する方法を教えて下さい。
675:側近中の側近 ◆0351148456
07/05/20 08:16:09
>>674
(っ´▽`)っ
printf("%.0f\n", d);;
676:デフォルトの名無しさん
07/05/20 08:19:40
’0’、’1’、’2’、’3’を’-1’、’0’’、’1’、’2’に置き換えるためにhand=C-’0’-1とするのですが、この式の間の『’0’』の存在意義がよくわからないです。
677:側近中の側近 ◆0351148456
07/05/20 08:29:08
>>676
(っ´▽`)っ
>hand=C-’0’-1
このCには文字が入っているんじゃないかな?
このhandには数値が入っているんじゃないかな?
Cに'3'が入っている時を例に挙げよう。
'0' = 0x30 = 48
'3' = 0x33 = 51
hand = 51 - 48 - 1 = 2
つまり、文字を数値に変換するために'0'の値を引いているの。
'0'(文字の0)と0(数値のゼロ)は違うのはわかるよね。
メモリに格納される時のビット列が違うの。
2進法で考えると
'0'は00110000、0は00000000で格納されるよ
678:デフォルトの名無しさん
07/05/20 08:32:40
>>674-675
それよりも%gだろ
679:側近中の側近 ◆0351148456
07/05/20 08:34:52
>>674
>>678
(っ´▽`)っ
そうだった!
%.0fだと小数点以下が全く出なくなっちゃうね☆
680:デフォルトの名無しさん
07/05/20 08:38:50
あっ、はい。文字としての扱いのままでatoiとかはしてありませんでした。
大変ありがとうございます。ところで、、'0' = 0x30 = 48
'3' = 0x33 = 51
とゆう式の流れはまだ学習していません。できれば教えて下さい。
681:側近中の側近 ◆0351148456
07/05/20 09:01:43
>>680
(っ´▽`)っ
文字コードだよ。
ISOとかそういう偉いところが0x30は'0'を表すって決めたんだよ。
ところで、0x30は「16進法で30」っていう意味だよ。
0xがつくと16進法
0がつくと8進法
ちなみに'\n'は0x0a、'\0'は0x00だよ。
682:側近中の側近 ◆0351148456
07/05/20 09:06:10
(っ´▽`)っ
最も基本的な文字コード、ASCII
Wikipedia項目リンク
他の文字コードはASCIIを踏襲しているよ。
シフトJISとかunicodeとかもASCIIの文字コードを含んでいるよ。
683:672
07/05/20 09:21:35
>>673
ありがとうございます。
座標の計算関数はできてはいるんですが、力及ばず入出力を二次元配列でしか設計できませんでした
ということでそっちに行ってきます
684:デフォルトの名無しさん
07/05/20 09:23:06
大変ありがとうございます。やっと理解できました。
685:デフォルトの名無しさん
07/05/20 10:11:40
やっぱわかんないちす。51と48は何を表してるんすか?てか16進法わからないです。
686:デフォルトの名無しさん
07/05/20 10:19:34
やっぱわかりました。十進法ですね。
687:デフォルトの名無しさん
07/06/05 02:44:30
文字コードの話題がちょうどでてるので、タイムリーに質問。
cygwinでgccでコンパイルするときって、shift-jis以外は使えないんでしょうか?
ちなみに、OSはwin-xp proです。
「表」の字がコンパイルしたら、エラーがでました。
んで、色々しらべて、shift-jisがまずくて、他にもエラーがでる文字があるってことまではわかったんですが、
解決法がいまいちわかりませんでしたorz
もちろん、ソースの文字コードを色々と丸々かえて、再コンパイルしてみましたが、
完全に文字化けしてしまいました。
解決法とかはありますか?
また、もし、他の文字コードを使えるのでしたら、オススメの文字コードとかありますか?
688:デフォルトの名無しさん
07/06/05 04:18:32
>>687
つ input-charset
いろいろどころか全然調べてないだろ
689:デフォルトの名無しさん
07/06/05 04:31:44
ついでにexec-charsetも
690:デフォルトの名無しさん
07/06/05 05:00:00
んじゃ更に、
input-charset=euc-jp exec-charset=cp932
とか書いてみる。
691:デフォルトの名無しさん
07/06/06 03:06:28
>>688-690
勉強になりました。
dです。
692:デフォルトの名無しさん
07/06/13 13:28:58
グローバルで宣言してた変数などを
ポインタ等使ってローカルでの宣言で実装すると
常時使ってるメモリは少なくなると思うんですけど
速度的にはグローバルで宣言したほうが良いんですか?
693:デフォルトの名無しさん
07/06/13 15:33:33
>グローバルで宣言してた変数などを
>ポインタ等使ってローカルでの宣言で実装すると
>常時使ってるメモリは少なくなると思うんですけど
>速度的にはグローバルで宣言したほうが良いんですか?
グローバルかローカルかと言う議論にポインタは関係ない。
使用メモリを云々するほど広大なメモリを取り扱う話ならヒープを使うべきだ。
速度に関しては、実測が基本。
694:デフォルトの名無しさん
07/06/13 16:57:01
これの話にポインタは関係ないですけど、
複数の関数で共通した変数使う場合に
普通はグローバルで宣言してしまいますけど
ポインタなど使えばローカルの宣言でもイケるけどどっちが速いのか
って事を聞きたかったんです。
けど、実測しかないですか。
メモリも抑えなきゃいけないんだけど速度を最重視して作らないいけなくてorz
695:デフォルトの名無しさん
07/06/13 17:27:44
>>694
>複数の関数で共通した変数使う
ために
>ポインタなど使えばローカルの宣言でもイケる
というのはつまり、malloc() 等でヒープを確保するんだろ?
>普通はグローバルで宣言
した場合は static なデータとしてロード時に確保されるわけだが
使用するメモリ量にはまったく差がないし、速度にも有意な差があるとも思えん。
よって益々、>>693 の結論通り。
696:デフォルトの名無しさん
07/06/13 17:53:55
速度は変わらないんですね。
それだけ教えていただいて感謝してます。
ありがとうございました。
ただ、メモリ量は差はあると思われます。
697:デフォルトの名無しさん
07/06/13 18:12:45
スタックとヒープの区別もつかないやつが、「差はあると思われます」と言ってもなあ・・・
698:デフォルトの名無しさん
07/06/13 18:30:47
メモリ使用の差の話は、静的確保だとプログラムの実行期間中ずっと
確保されたままなのに対して、動的確保だとそうではない、ということだろ。
>常時使ってるメモリは少なくなると思うんですけど
699:デフォルトの名無しさん
07/06/16 01:11:57
寒いなスレ開いちまった。。
間違った事言ったなら質問者と回答者の立場はどうあれ一言くらい・・・
700:デフォルトの名無しさん
07/06/28 08:34:31
初心者とか中級者とか上級者の堺はどのあたりだと思いますか?
701:デフォルトの名無しさん
07/06/28 10:01:11
大阪のあたりじゃね?
702:デフォルトの名無しさん
07/06/30 06:08:03
境でした。。すみません
703:デフォルトの名無しさん
07/06/30 10:14:38
鳥取のあたりじゃね?
704:デフォルトの名無しさん
07/06/30 11:21:39
東京にも武蔵野市に境がある
705:デフォルトの名無しさん
07/06/30 11:25:12
住所にはないのに、町田市の駅にも境がある。
706:デフォルトの名無しさん
07/06/30 17:27:24
私はあなたたちを少しかいかぶっていたみたいです
こんなにイライラするレスを返されたのは初めてではありませんが
それでもかなり上位に来るうざさだと思います
日本語が通じてるのにわざと他の意味を探す病気がPGには流行っているみたいですね
私の知り合いもそういうビョーキにかかっている時期がありました
本人はただふざけているだけのようなのですが
周りからしてみればはたはた迷惑です
面白くもなんともないのに本人は延々とボケを続けるんですからね
あなた方もそれと同じ事やっているんですけどどうですかわかりませんか
全然面白くないですよ少しはバラエティ番組でも見たらどうでしょうか
バラエティ番組見たからってあなたたちが面白い事を言えるとは思いませんが?
冷めるネタくらいは学習できると思いますちょっとあまりにもこれは酷い流れだと思います
更新されてないスレッドでもお気に入り登録にして毎日巡回でもしているんでしょうかね
質問スレで質問する人回答する人、スレは違っても同じだったりすることがよくあるんじゃないでしょうかね
けれど同じスレで違うことを聞かばスレ違いと言い別のスレで同じ人が答えたり?面白いですねそういうの
このスレの人達は凄くつまらないです一ミリたりとも笑える要素がないと思います
笑えるスレにしてくださいとは言いませんがこういう流れを作るんだったら
もう少しひねるとかしてくださいねってくださいね
707:デフォルトの名無しさん
07/06/30 17:30:45
もう少しひねるとかしてくださいねってくださいねってくださいねってくださいねってくださいねってくださいね
いかん、流石に飽きた。
708:デフォルトの名無しさん
07/06/30 17:39:03
>>706
初級とか中級とかワケ解らん質問したのお前なのか?
くだらん質問をしたのを反省しろよ
709:デフォルトの名無しさん
07/06/30 22:56:03
>>706
人の振り見て輪が振りなおせ。そのレスもおもしろくないぞ。
おもしろくしたいと思うなら、まず自分からおもしろいレスというものを見せてほしい。
まあでも、この板にいるような人間なんて、それが本業ではないのだから、
おもしろさを期待するほうが間違っている。
と、やっぱりおもしろくないマジレスを返してみる。
710:デフォルトの名無しさん
07/07/01 04:32:22
>>706
で、君は誰なの?
711:デフォルトの名無しさん
07/07/01 21:21:08
数式Parserのライブラリってご存知ないでしょうか?
複素数計算機能を付加したいんですが、
bcに丸投げというのも力づくすぎるような気がしてまして・・・・
712:デフォルトの名無しさん
07/07/01 22:46:54
初歩的な質問で申し訳ないです
文字エンコードについての質問ですが、
HPから特定の文字列を検索して取得するプログラムを作ってたんですが、
対象のサイトの文字コードがEUCの場合、一旦JISに変換して文字列比較をしないといけないですよね?
文字エンコード変換の、簡単なソースを知ってたら教えていただけないでしょうか?
713:デフォルトの名無しさん
07/07/01 22:49:08
>>712
EUC⇔SJIS⇔iso2022の変換は難しくないが、どうせUTFとの変換で悩む羽目になるから
iconvか何かのライブラリを使っとけ。
714:デフォルトの名無しさん
07/07/01 22:53:46
>>713
返信ありがとうございます。
勘違いしてました。
オープン・ソース使ってうまくいかないと思ってたら
EUC -> SJIS しなくてはいけないのに
SJIS -> EUC としてました。
お手数かけましたm(_ _)m
715:デフォルトの名無しさん
07/07/02 00:15:07
初歩的な質問ですがよろしくお願いします。
とある関数内で、malloc()でヒープ領域を確保して
得たポインタを別のタスクに投げ渡すという処理をしています。
他のタスクに投げ渡したら領域を確保した関数は、終了します。
malloc()で作った領域は、free()を行うまで領域の確保されているんですよね?
逆にmalloc()のヒープ領域で無く関数内で定義した変数のポインタだと
どうなってしまうんでしょうか?
関数終了しても変数のポインタさえ分かればどこからでも
値は取り出せそうなのですが・・・・・。
聞きたいこととしては、
・malloc()で得た領域は、関数が終了しても参照できますか?
・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか?
です。よろしくおねがいます。
716:デフォルトの名無しさん
07/07/02 08:42:36
>・malloc()で得た領域は、関数が終了しても参照できますか?
yes
>・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか?
int *f(void)
{
int local;
return &local;
}
みたいなの?
それなら、関数終了時点でポインタは無効になる。
717:デフォルトの名無しさん
07/07/03 01:18:45
>>716
レスありがとうございます。
>・malloc()の代わりに関数内で定義した変数でも関数終了後に参照できますか?
の質問に対する例題としては、似たような感じです。
下のようにローカルなスコープで定義した変数を
他タスクに渡して処理を終えた時にもint localのポインタは有効であるか?
と言う事が気になってたのです。
丁寧な説明ありがとうございました。
int f( void ){
int local;
test(&local); /* 他タスクへイベント要求 */
}
718:デフォルトの名無しさん
07/07/03 11:19:17
無効
719:デフォルトの名無しさん
07/07/03 15:27:36
>>717
それだったら test() を終了後も local は使えるよ。
int local は f() からリターンするまで有効。
720:デフォルトの名無しさん
07/07/03 17:49:59
>>719
質問を読み違えてないか?
タスク云々といってるんだから、testが引数をなんらかの形で保存していて、
それがfが終わった後も有効かという話だろ。
721:デフォルトの名無しさん
07/07/03 17:53:52
testがポインタをグローバルな変数に入れたり、longjmpしたりするんかいな
722:デフォルトの名無しさん
07/07/03 17:58:31
>他タスクに渡して処理を終えた時
これがどういう・・
723:デフォルトの名無しさん
07/07/03 18:05:43
別スレッドに渡したり。
724:デフォルトの名無しさん
07/07/03 23:36:06
ただでcをやりたいんですが、なんてソフトをDLするといいですか?
725:デフォルトの名無しさん
07/07/04 00:42:18
環境は?
726:デフォルトの名無しさん
07/07/04 00:44:16
まあwindowsならBCC(Borland C++Compiler)で間違いないと思うよ。
CもC++もいける。
けどサイトが長い間落ちてるっぽいね
よくわからんけど
727:デフォルトの名無しさん
07/07/04 00:54:28
>>726さん
虫けらLevelの質問ですみません。
今日書店でC++ Buiider 6.0というのを見たんですが、
Buider 6.0ってなんなんですか?
後、聞きたいんですが、
トロイの木馬やキーロガー、白木葉子はどの言語で作れるのでしょうか?
728:デフォルトの名無しさん
07/07/04 00:57:01
そんなものが作りたいなら自力で全部やれ
そうでない限り作れん
729:デフォルトの名無しさん
07/07/04 01:04:35
>>728
自力……かぁ(´・ω・`)
まぁ…確かになぁー…
甘えてられないか
730:デフォルトの名無しさん
07/07/04 09:03:54
くだすれC++Builder(超初心者用)その3
スレリンク(tech板)
綴りが違う上に同じレス内でも違うのはどうかと
731:デフォルトの名無しさん
07/07/04 09:14:02
そういうのは”ログが残らない場所”で聞け
てかいろんな意味で貴殿はC/C++やられるのが良いと思う
俺は作った事無いから、作った事ある奴じゃないとわかんないと思うけどな
732:デフォルトの名無しさん
07/07/04 09:20:18
bccぐらい凡人でも猿でも軽々入手できるもんなんだから
そんなところで2chの質問スレに頼ってるようじゃ
何も書けんぞマジで
本当にやる気あるのか
733:デフォルトの名無しさん
07/07/04 10:57:33
いやいや、凡人や猿は何も考えずにVS買うよ
買ってくれておおいに結構
734:デフォルトの名無しさん
07/07/04 12:21:42
>>731
本買おうと思う。
開発環境は…どうなのかな家のPCネット繋がってないから
ネットカフェとかしかないんだ
735:デフォルトの名無しさん
07/07/04 16:33:15
>>724
KNOPPIX, Debian GNU/Linux, Fedora 7, Vine, Plamo, ...
736:デフォルトの名無しさん
07/07/04 16:35:05
…マイクロソフトのVisual C++ 6.0(開発ツール)って高いんですか?
737:デフォルトの名無しさん
07/07/04 16:38:48
いまさらそんなバージョン買うなよ
738:デフォルトの名無しさん
07/07/04 16:49:00
どうしよう
739:デフォルトの名無しさん
07/07/04 17:02:53
>>737
今はどんなバージョンがあるんですか?
後…高い?
740:デフォルトの名無しさん
07/07/04 17:04:54
VC++6.0 → 2002 → 2003 → 2005
今は2005だな、EEなら無料。
MFCとリソースエディタが無いけどな。
741:デフォルトの名無しさん
07/07/04 17:23:23
>>739
Visual C++ 2005 Express Edition 無料
Visual Studio 2005 Standard Edition 3万円弱
Visual Studio 2005 Professional Edition 11万前後
742:デフォルトの名無しさん
07/07/04 17:26:00
>>740さん
2005って高いんですか?
743:デフォルトの名無しさん
07/07/04 17:31:38
>>742
2005のEE=Express Editionは無料
今からプログラミング始めるの?
ググる事くらい覚えないと習得できないよ
744:デフォルトの名無しさん
07/07/04 18:06:14
>>741
Academic (中身はStandard) 4,800円もあるだろ。
745:デフォルトの名無しさん
07/07/04 18:06:19
>>743さん
ググれますが、携帯からしかネットできないんです
んでもって俺プログラミング初めてなんです。
FLASHLITE
XHTML
PHP
かじった程度の人間ですから。
>>741さんは何を使ってるんですか?
746:デフォルトの名無しさん
07/07/04 18:13:09
>>745
自分はProfessional版使ってるよ
これから勉強を始めるならExpress版でも十分できる
物足りなくなってから上位のバージョンを買えばいいと思うよ
或いはその頃には次期バージョンが出てるかもしれないし
じゃあまずPCでネットする環境を整える事から始めよう
747:デフォルトの名無しさん
07/07/04 18:15:35
>>746さん
優しいですね(´・ω・`)
ありがとう
748:デフォルトの名無しさん
07/07/05 11:44:35
私のコーディングスタイルは、
グローバル変数 int ThisIsIntExtern //単語の先頭を大文字
ローカル変数 int thisIsIntLocal //単語の先頭を大文字(ただし最初の文字は小文字)
関数 void this_is_function(){ } //全部小文字で、下線でつなぐ
#define THIS_IS_MACRO //全部大文字で、下線でつなぐ
なんですけれど、変でしょうか?
749:731
07/07/05 13:56:16
>>734
初心者なら本買ったほうが良いね
Visual Studio買う以外の手段には
ネットカフェでbcc落としてメモリに入れて持ち帰るって事も出来るんだが手こずるかも
付属のCD-ROMとかにコンパイラが入ってる本を買う手もある
けどね、分からない所はすぐぐぐれないとやってらんなくなるかな
750:デフォルトの名無しさん
07/07/05 23:01:16
>>748
別に統一されてりゃいいんじゃね?
Cのみだけど、俺の場合は
グローバル int g_iValue;
ローカル int iValue;
関数 int GetValue( void )
定数 #define VALUE_MAX
基本的に定数以外で"_"を使わない。
751:デフォルトの名無しさん
07/07/06 02:32:34
よい子がC言語の勉強実況してるからみてやろうぜ
WMPのファイル→URLを開く→URLリンク(matoinu.orz.hm:30000)<)
面白いぜwwwwww
752:デフォルトの名無しさん
07/07/08 11:29:59
大学の講義などでC言語を教える立場に立つ為にはどれほどの勉強が必要なのでしょうか
ちなみに私は今までさまざまなプログラムを作成してきていてそれなりにCを使えるようになったと思うのですが
その先はどうやって勉強すればいいのか?
というのは将来、教授になりたいのですが
近い将来に助手になったときにプログラミングを学生に教える立場になるわけです
Webサイトで先生方の講義資料などを拝見してみますと、自分の知識力の低さを痛感するばかりです
とはいっても詳細な入門書レベルの内容なら全て空で説明するくらいはできるのですが
問題はその先なのです
753:デフォルトの名無しさん
07/07/08 12:55:24
>>752
入門書なんていう役に立たないものを基準にしている辺りでダメ過ぎ。
754:デフォルトの名無しさん
07/07/08 13:30:11
>>753
プログラミングの講義はプログラミング言語の使い方を教える講義です
役に立つか立たないかという有用性は、工学的には非常に重要な要素ですが
それはプログラムを作る者それぞれの価値基準に基づくものであり
教える人間が考える有用性を基準に講義すべきでは無いと思います
755:デフォルトの名無しさん
07/07/08 13:41:22
>>752
講義資料を見て自分はまだ知らないと気づいた事って何?
756:デフォルトの名無しさん
07/07/08 14:14:29
最初から本買わせればいいじゃん
あなたは本に書いてあること繰り返し説明する手間も省けるし
学生も本読めば済む気だるい講義を飛ばしてさっさと応用を学べる、万々歳
757:デフォルトの名無しさん
07/07/08 16:26:13
講師なら言語の歴史や規格についても詳しくないとやだな。
環境依存のコードをさも標準かのように教えられたらたまったもんじゃない。
Cだけじゃなくアセンブラとかにもある程度精通してて欲しい。
少なくとも、例えばswitchとif-elseの羅列が最適化で大抵マシン語レベルで同じになるとか位は。
あとは、同じことを100回聞かれても折れない心と、mainが1000行あっても
解読できる根性があればいいんじゃね?
758:デフォルトの名無しさん
07/07/08 22:25:40
ちゃんと教えないと自分が凄く読みずらいコードを数十人分解読する羽目になるわけか
考えただけでおそろしくなた
759:デフォルトの名無しさん
07/07/08 22:44:38
×読みずらい
△読みづらい
○読み難い
760:デフォルトの名無しさん
07/07/08 22:55:09
× △読みづらい
○ ○読みづらい
761:デフォルトの名無しさん
07/07/09 06:20:06
やんでるか?お前ら
神経質なのはプログラミングだけで良いんだぞ
762:デフォルトの名無しさん
07/07/09 14:35:10
×やんでるか?
○やんでるのか?
763:デフォルトの名無しさん
07/07/09 14:38:28
やってるか?
764:デフォルトの名無しさん
07/07/09 14:42:29
あめならやんでるよ。
765:デフォルトの名無しさん
07/07/12 13:22:48
C言語をはじめようと、近所の図書館で「C言語を256倍使うための本」
なる本を借りてきたのですが、最初の数ページ目にCをやる前に、
パスカルとアセンブラをやれ、とあったのですが俺はどうすれば?
766:デフォルトの名無しさん
07/07/12 14:04:33
そんなクソ本やらずにサイトでも見てやれ
Programing PlaceとかWisdomsoftとか
767:デフォルトの名無しさん
07/07/12 20:41:57
Wisdomの人って若いよなー。
1981年って事は、今25〜26歳か。
自分の努力不足が身に沁みる。
768:デフォルトの名無しさん
07/07/12 21:52:00
256倍使うための本シリーズは全部糞本だから^^;
くだらねー本量産してんじゃねーと思う^^;
769:デフォルトの名無しさん
07/07/12 22:51:25
>>765
その本はあれだ、当時のマニア本だから。今勉強するために読む本じゃない。
770:765
07/07/23 22:10:38
レスをくれた人たちへ。
とりあえずアセンブリをやろうとMIPSの教本を同じ図書館で入手。
最初の数ページ目にC言語を先に理解しておく必要があるとあり、
無限回廊に突入。
771:デフォルトの名無しさん
07/07/24 00:18:50
>>770
>769
772:デフォルトの名無しさん
07/07/25 18:15:09
型の一時的な変換に関しての質問です。
もともと整数型,char型のデータをある関数内では実数型として扱わなければならないので
下のコメントのように別の配列を用意しました。
代入する際にキャスト変換(double)を使って型を合わせようとしたのですが
'double **' 型は 'int **' 型に変換できない(関数 main(int,char * *) )
2 番目のパラメータは int ** 型として定義されているので double ** 型は渡せない(関数 main(int,char * *) )
というように実数型に変換したつもりなのに整数型のままだったりするようです。
どうすれば正しく型変換できるでしょうか
#include<stdio.h>
int main(int argc, char **argv) {
unsigned char *data={1,0,1,1};
int **P={{1,0},
{0,1}}; //この2つが本来のデータ型
double a;
int i,j;
double *data2, **P2; //コピー。ある関数function内でdouble型で扱う必要がある
for (i=0;i<2;i++) {
for (j=0;j<2;j++) {
P2[i][j] = (double) P[i][j]; //型を合わせるために(double)でキャスト変換
}
}
for (i=0;i<4;i++) data2[i] = (double) data[i];
function(a,P2,data2);
}
void function (double x, double **y, double *z) //ある型変数の型定義
773:デフォルトの名無しさん
07/07/25 18:17:39
まてまて、配列でも構造体でもないものを{ }で初期化できないだろ。
774:デフォルトの名無しさん
07/07/26 07:27:42
ポインタだけ宣言して領域の確保がされてないし
いきなり2次元配列でコピーしてるし
2次元配列のポインタだけ渡しても大丈夫な関数なのか
775:デフォルトの名無しさん
07/07/26 10:07:59
上から下まで勘違いでできているな
776:デフォルトの名無しさん
07/07/27 05:01:05
でも文字列だけ定数置けるのって理論的におかしいよな。
777:デフォルトの名無しさん
07/07/27 07:36:20
別に
778:デフォルトの名無しさん
07/07/27 07:36:39
>>776
const int という意味ではないんだよね
779:デフォルトの名無しさん
07/07/30 10:22:05
URLリンク(tonosiki.mbnsk.net)
この問題の(3)と(4)が分かりません。
どうか教えて頂けないでしょうか・・・?
よろしくお願い致します。
780:デフォルトの名無しさん
07/07/31 10:35:21
Object not found!
781:デフォルトの名無しさん
07/07/31 10:54:58
>>779
スレリンク(tech板:469番)
782:デフォルトの名無しさん
07/08/02 20:15:17
蔵書整理してたら秘伝C言語問答ポインタ編が
amazonのユーズド価格がクソ高くなってるの発見したんだがなんなの?
783:デフォルトの名無しさん
07/08/04 18:28:16
とりあえず出してるだけだろ
自由に設定できるんだし
784:デフォルトの名無しさん
07/08/05 18:07:47
あ、値段設定って自由なんだ。
絶版本て高く売れるのかな。
785:デフォルトの名無しさん
07/08/21 03:18:00
本にもよると思う
なんか絶版になった参考書は高く売れたりするとか
前アマゾンで本を売りまくってる人の番組中にやってたよ
786:デフォルトの名無しさん
07/08/25 02:31:50
質問させてください。
以下のエラーメッセージが表示されてリンクに失敗しています。
考えられる原因があったら教えてください。
undefined reference to `__stdoutp'
787:デフォルトの名無しさん
07/08/25 03:02:32
回答させてもらいます。
以上の情報では詳細の回答ができません。
より詳細な回答が必要なら情報をください。
__stdoutpが見つからない。
788:デフォルトの名無しさん
07/09/05 18:03:01
何をどうしたら出たのか
789:デフォルトの名無しさん
07/09/09 12:45:04
質問です。
外部から提供されているヘッダーファイルにエクスポート用の関数が記述されており、
ヘッダーに手を加えずにこの関数に処理を追加したいと考えています。
そこで、#define で関数名の変更を試みたのですが、
error C2084: 関数は既に本体を持っています。
となってしまいました。
ヘッダーは今後も修正が入りそうなので、手を加えるのは回避したいのですが、
何か良い方法はあるでしょうか。
--test.h--(外部提供のヘッダーの例)
extern "C" void __stdcall test(int a, int b)
{
printf("%d + %d = %d\n", a, b, a+b);
}
--test_ex.h--(関数名を置き換えて、代わりにエクスポートさせたい関巣をを記述)
#define _test(a,b) test(a,b)
#include "test.h"
#undef _test
extern "C" void __stdcall test(int a, int b)
{
printf("合計出力\n");
_test(a, b);
}
790:デフォルトの名無しさん
07/09/09 13:20:43
>>789
#define test(a,b) _test(a,b)
#include "test.h"
#undef test
じゃないか?
791:デフォルトの名無しさん
07/09/09 15:04:35
>>790
あ、あれ。オオボケしてました。
意図した通りになりました。ありがとうございます。
792:デフォルトの名無しさん
07/10/21 23:30:44
VC++ Express 2005 の C/CLI で質問良いですか?
関数に System::String ^XX を引数渡しして関数内でXXに値をセット
させようとしてるんですけど、これってひょっとして無理ですか?
String のメンバ関数って新規にインスタンスを作る関数はあるんですけど、
既存コントラスタの内容を「変更する」メンバ関数が無いんですけど・・・。
WCHAR やら char を素直に引数に使った方が良いんでしょうか・・・
VC Express 2005 + WindowsSDK で
Get/WriteProvateProfileString のラッパークラスをマネージドで作ってるんですけど、
これってひょっとしてかなり無謀ですか?API呼び出しはさすがにアンマネージドですが・・・
そもそも、VCのマネージドコードってひょっとして誰も使ってない?
.Net勉強するなら素直にC#でしょうか?
VCで.Netの勉強がてらマネージドでガリガリ書いてるんですけど、
まさか全然イミネェータイムしてます?
793:デフォルトの名無しさん
07/10/22 00:52:02
System::Stringは書換不能な文字列。
どうするかというと、例えばSystem::String^% XXにするという手がある。
URLリンク(msdn2.microsoft.com)(VS.80).aspx
ネイティブで言えば、これでは呼出元に反映されないから、
void f(char const* p) {
p = "hoge";
}
こうするというのと同じこと。
void f(char const*& p) {
p = "hoge";
}
.NETの勉強についてだが、<C++を十分に理解しているのなら>、
C++/CLIでも構わないと俺は思う。逆にC++をよくわかっていないのなら、
素直に.NETに関してはC#で勉強すべき。
794:デフォルトの名無しさん
07/10/22 00:59:14
ステレオで広がる初音ミク音源検索
URLリンク(youtv.atspace.com)
795:デフォルトの名無しさん
07/10/23 09:31:07
>>793
動きました、ありがとうございます!
基本的な事なんでしょうが、個人レベルで言語理解は難しいですね・・・。
クラス自体を static ref に出来なかったりと色々苦労してます(汗
C++は「わかってるつもり」ですが、<static_cast>やら<reinterpret_cast>やらで
また勉強し直す必要がありそうです。
C#はwiki見た感じだと文法が凄く変わってるので一度じっくり
勉強しないと駄目ですね・・・
まさかC#がここまで市場を謁見するとは思いませんよ、普通(汗
APIが恐ろしいほど使いにくいC#に需要があるとは・・・
796:デフォルトの名無しさん
07/10/23 11:14:49
>まさかC#がここまで市場を謁見するとは思いませんよ、普通(汗
席捲だろ。とてもそうは見えないが。
797:デフォルトの名無しさん
07/10/23 23:46:00
質問なのですが、表示される文字の大きさを変えるにはどうすればいいのでしょうか?
798:デフォルトの名無しさん
07/10/23 23:55:43
モニターを買い換える。
799:デフォルトの名無しさん
07/10/24 00:06:56
>>797
それは「文字のサイズを変える」プログラムはどうすればいいか?ってことだよな?
800:デフォルトの名無しさん
07/10/26 14:12:47
アセンブラって何?
801:デフォルトの名無しさん
07/10/26 14:19:17
アセンブリ言語のプログラムを機械語のプログラムに変換するプログラム
802:デフォルトの名無しさん
07/10/31 11:38:23
C++を学習するのに適切な書籍、WEBを紹介してください。
機械語、Cなどの言語は習得済です。
803:デフォルトの名無しさん
07/11/01 23:23:45
質問です。
バイナリファイルを開いて、ファイルの先頭から順番に0、1を判別していきたいのですがどうすればいいでしょうか?
rbでファイルを開いてから後がどうしていいのかさっぱりわかりません。
804:デフォルトの名無しさん
07/11/01 23:41:13
getc(fp) でファイルの先頭から順番に 1 バイトずつ読み込める
805:デフォルトの名無しさん
07/11/25 19:54:45
mmapとSystem Vの共有メモリって、
どちらにどういう長所短所があるんでしょうか。
806:デフォルトの名無しさん
07/12/08 04:59:38
bcc5.5って実行が長いプログラムだと途中で止まるとか仕様ある?
807:デフォルトの名無しさん
07/12/08 05:28:15
ないだろ
808:デフォルトの名無しさん
07/12/08 06:11:57
だよな。同じプログラムを100回動かそうと思ってやってんだけど90回はできて100回はできない・・・
809:デフォルトの名無しさん
07/12/08 13:23:24
URLリンク(pink.gazo-ch.net)
810:デフォルトの名無しさん
07/12/09 00:33:09
>>808
そりゃどっかにバグがあんだよ。
勘だけど、メモリがらみと見た。
811:デフォルトの名無しさん
08/01/02 01:14:10
int型のiを文字列に直す方法はありますか?
コンパイラはgcc, 言語はC言語です。
あとstrcatが3つ以上の引数をとれないようなのは仕様ですか?
812:デフォルトの名無しさん
08/01/02 01:24:10
> int型のiを文字列に直す方法はありますか?
sprintf,snprintf
> あとstrcatが3つ以上の引数をとれないようなのは仕様ですか?
三つ目に何渡す気だ
813:デフォルトの名無しさん
08/01/02 01:35:00
いや
"a" + i + "b"
のようなことがしたいので、
strcat("a", i, "b");
と出来たらなと。
814:デフォルトの名無しさん
08/01/03 00:08:17
C++をやりましょう。
簡単にできますから。
815:デフォルトの名無しさん
08/01/03 12:01:51
>>814
サーセン本線はRubyでして。
816:デフォルトの名無しさん
08/01/03 15:24:37
sprintf()でなにが不足なんだ?
sprintf(buf, "%s%d%s", "a", 3, b);
817:デフォルトの名無しさん
08/01/15 13:06:42
教えてください。union ビットフィールド型を引数としてわたしたいのですが、
それは可能なのでしょうか?
818:デフォルトの名無しさん
08/01/15 19:25:45
>>817
なんでできないと思ったの?
819:817
08/01/15 20:56:24
>>818
union { /* WCER */
unsigned char BYTE; /* Byte Access */
struct { /* Bit Access */
unsigned char B7:1; /* Bit 7 */
unsigned char B6:1; /* Bit 6 */
unsigned char B5:1; /* Bit 5 */
unsigned char B4:1; /* Bit 4 */
unsigned char B3:1; /* Bit 3 */
unsigned char B2:1; /* Bit 2 */
unsigned char B1:1; /* Bit 1 */
unsigned char B0:1; /* Bit 0 */
} BIT; /* */
} WCER; /* */
このような定義がある場合に関数funk()の引数にWCER.BIT.B1を渡し、
関数内でB1の値を変更したいのですが、コンパイラが直接ビット操作のマシン語に置き換えるために、
引数や変数にはビット情報を保持できないと思っています。
その操作が必要なアドレスやビット位置を引数として渡して操作することは可能と思うのですが
処理速度を求めるためにビット直接操作したいのです。
820:デフォルトの名無しさん
08/01/15 20:58:41
WCERごと渡せばいいんでないの?
821:デフォルトの名無しさん
08/01/15 23:08:10
速度が欲しくて1ビット単位の書き換えとか頭おかしいんじゃね?
822:817
08/01/15 23:53:14
>>820
ありがとうございます。
WCERではなく、結合先によってビット位置が異なっています。
>>821
マイクロ秒単位で処理をつめていますので毎回ビット位置計算をすると相当な重さになってしまいます。
823:デフォルトの名無しさん
08/01/16 00:00:24
ビットフィールド使うのをやめるといいと思うんだ
824:デフォルトの名無しさん
08/01/16 01:15:46
>このような定義がある場合に関数funk()の引数にWCER.BIT.B1を渡し、
>関数内でB1の値を変更したいのですが、コンパイラが直接ビット操作のマシン語に置き換えるために、
>引数や変数にはビット情報を保持できないと思っています。
いいえ。ビットフィールドは渡せませんが、ビット情報は渡せます。
>処理速度を求めるためにビット直接操作したいのです。
いいえ。ビットフィールドを直接扱うことが最速とは限りません。
>WCERではなく、結合先によってビット位置が異なっています。
「結合先」ってなんですか? 自分語りをされても困りますが。
>マイクロ秒単位で処理をつめていますので毎回ビット位置計算をすると相当な重さになってしまいます。
いいえ。そんなのんびりした処理をするのなら多少重くてもなんら影響しません。
そもそも、ビット位置の計算は決して重い処理じゃありません。
結論。
>823
825:デフォルトの名無しさん
08/01/21 20:09:47
Cプログラマの為に、ポイントをまとめたドキュメントを販売しています。
プロのプログラマでもあまりにレベルが低い人が多すぎます。
そんな人に限って、自分のレベルの低さを自覚していない、、、
本人は構わないかもしれませんが、その下についた新人プログラマは
たまったものではありません。(私が経験しました。)
今になって分かりました。
彼らもまた、理解できていなかったのです。
プログラミング言語の一番の習得の近道はきちんと理解している人にアドバイスをもらうこと。です。
私のC言語に取り組んだ7年間をすべてぶつけたつもりでテキストを作りました。
私の会社の後輩からは、どんなテキストよりもわかりやすかった!や、
今まで教えてくれていた先輩や、テキストたちが、ちゃんと理解できていないことがわかりました。
と、嬉しいコメントをたくさんもらいました。
そしてなにより、彼らの社内での評価がとても高いということが、私の誇りです。
興味がある方はどうか、下のサイトをみてみてください。
URLリンク(mori.eco.to)
826:デフォルトの名無しさん
08/01/22 10:31:13
よし、NG追加
827:デフォルトの名無しさん
08/01/30 20:22:40
すいません、c言語初心者なのですが以下のプログラムがうまくいかないのですがなんででしょうか?
修正点教えてもらえませんか?
#include<stdio.h>
#include <string.h>
#define STR_SIZE 256
int main(int argc, char *argv[])
{
int cnt;
int pri_cnt;
int n;
int k;
int sort_cnt1;
int sort_cnt2;
char temp[1];
if(argc < 3)
{
printf("\nUsage : %s STRING1 STRING2 [STRING3 ...\n\n",argv[0]);
return 1;
}
printf("\n** String data **");
for(cnt = 1 ; cnt < argc ; cnt++)
{
printf("\n%s",argv[cnt]);
}
printf("\n** Changed string **");
828:デフォルトの名無しさん
08/01/30 20:23:32
for(cnt = 1; cnt < argc ; ++cnt)
{
k = strlen(argv[cnt]);
for(n = 0; n < k ; ++n)
{
argv[cnt][n] = argv[cnt][n] - 0x20;
}
}
for(sort_cnt1 = 1 ; sort_cnt1 < argc ; sort_cnt1++)
{
for(sort_cnt2 = sort_cnt1+1 ; sort_cnt2 < argc ; sort_cnt2++)
{
if(argv[sort_cnt1] > argv[sort_cnt2])
{
temp = argv[sort_cnt2];
argv[sort_cnt2] = argv[sort_cnt1];
argv[sort_cnt1] = temp;
}
}
}
for(pri_cnt = 0 ; pri_cnt < cnt ; pri_cnt++)
{
printf("\n%s",argv[pri_cnt]);
}
return 0;
}
829:デフォルトの名無しさん
08/01/30 20:26:33
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char str[256] = "<a href=\"URLリンク(localhost\)<)">link2</a>";
char *ptr;
int i = 0;
ptr = str;
while(1)
{
ptr = strstr(ptr,"http://");
if(!ptr)
break;
ptr += 7;
i++;
}
printf("http://の出現数は%dです。\n",i);
return 0;
}
http://の出現回数を数えているのですが、
悪い点、改善点等のご指摘を下さい。
830:デフォルトの名無しさん
08/01/31 13:08:31
>>827
そのプログラムの目的と、どううまくいかないのかくらい書け。
>>829
お前もだ。
取り敢えず、C++ならstring.hではなくcstringをインクルードしとけ。
strの文字数は、その場合は自分で256に決めずにコンパイラに任せておけ。
流れを説明し易いように、iなんて変数名でカウントするのはやめておけ。
ptrを初期化しないで後から代入しているが、宣言時に初期化してしまえ。
831:デフォルトの名無しさん
08/01/31 18:51:15
「g++43でコンパイルできないんだけど、どう修正したら
いいの?」とかいう質問はここでいいんでしょうか?
832:デフォルトの名無しさん
08/01/31 19:16:36
いいよ
もしソースが長いなら直接貼らずにどっかうpれ
833:デフォルトの名無しさん
08/01/31 19:19:07
>>831
他のコンパイラでコンパイルできると言うのなら、g++の問題だろうからgccスレがいいんじゃね?
そうじゃなくて、たまたま使ったのがg++だと言うのなら、ここでもいいと思うけど。
834:デフォルトの名無しさん
08/01/31 19:39:27
>>833
「他のコンパイラ」のほうの問題かもしれないだろ
C++だとそういうケースがよくある
835:デフォルトの名無しさん
08/01/31 20:01:39
upstreamの開発者の人にも一応pingは
したのですが、
具体的には
URLリンク(downloads.sourceforge.net)
をg++43でコンパイルしようとすると
param.h:34: error: explicit template specialization cannot have a storage class
というエラーが出てコンパイル出来ない、という問題です。
URLリンク(bugs.debian.org)
(私自身はdebianのmecabのメンテナではありません)
836:デフォルトの名無しさん
08/01/31 20:03:21
因みにg++41では問題ないです。
837:デフォルトの名無しさん
08/01/31 21:04:50
URLリンク(gcc.gnu.org)
g++の変更の論拠がここに書いてあるな。標準の7.1.1-1を見ると確かにエラーが正しいように見える
回避策は、
1. 単に32行目のstaticを削除する
これでg++-4.3ではちゃんとstatic扱いになるはずだけど、g++-4.2だとそうならないので複数定義エラーになる
2. lexical_cast自体を非staticにする
別にこれをstaticにする理由はないと思うので、20行目と32行目のstaticを削る
この場合、特殊化をヘッダに置いたままにしておくと複数定義になってまずいので、
ヘッダには宣言だけにして定義をparam.cppに移すか、あるいは単にinlineを付けるのでもいい
3. lexical_castを削除する
grepしてみたら使われてないようなので
838:デフォルトの名無しさん
08/01/31 21:35:02
>>837
何だか32行目のstaticを外す方向がいい気がするけど
(何で lexical_castがstatic扱いなのか今のところ良く分からない
ので)
そうすると確かにg++43ではコンパイルが通りますがg++41では
多重定義だといってはねられますね...
lexical_cast自体はparam.hの後の方で使われているっぽいです。
1.か2,かの方向で検討してみます。有難うございました。
839:デフォルトの名無しさん
08/01/31 21:45:36
>>838
>lexical_cast自体はparam.hの後の方で使われているっぽいです。
見逃がしてた、ありがとう
でも非staticテンプレートからstatic関数を参照するのはODR違反のような気がする
lexical_castを非staticにするのが良いかと思う
840:デフォルトの名無しさん
08/02/05 01:51:25
char *p[10];
みたいなことをしたいのですが
どうすればいいでしょうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5374日前に更新/239 KB
担当:undef