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


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

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



1 名前:静的領域の名無しさん mailto:sage [2008/08/12(火) 18:23:10 ]
C言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
  C/C++の宿題を片付けます 114代目
  pc11.2ch.net/test/read.cgi/tech/1216746971/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
  C言語なら俺に聞け(入門篇) Part 33
  pc11.2ch.net/test/read.cgi/tech/1217073697/
過去スレ
  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

2 名前:静的領域の名無しさん mailto:sage [2008/08/12(火) 18:24:48 ]
しまった宿題スレチェックし忘れた

C/C++の宿題を片付けます 115代目
pc11.2ch.net/test/read.cgi/tech/1217741118/

3 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:47:27 ]
>>1 乙 といわざるを得ない

4 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:59:01 ]
立ったな
>>1

5 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 19:35:35 ]
C言語を勉強したくて本を買ってテキストエディタに書いて練習してます。 
コンパイラがあると便利なのですけど、無料のコンパイラとかあるのでしょうか。 


6 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 19:41:20 ]
Visual C++ 2008 Express Edition

7 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:20:22 ]
>>6
ありがとうございます。
いろいろ検索して、LSI C-86 というものを今インストールしてみました。
まったくの初心者なのでこれで十分かと思ってます。
C言語のことほとんど知らないのですが、DOSプロンプトみたいな画面に
文字が出てくるのですね。びっくりしました。


8 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:25:26 ]
3つの数 int i, j, kを
昇順にソートする一番早い方法はなんですか?

9 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:29:00 ]
変数そのものをソートすることは不可能です

10 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:34:16 ]
>>8
入れ子のif/else文を書く



11 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:37:32 ]
qsortは無駄ですかね?


12 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:42:27 ]
配列にまず入れろって
話はそれからだ

13 名前:デフォルトの名無しさん [2008/08/12(火) 20:42:36 ]
プログラミング始めてみた、一つ疑問があるんだけど

printf関数とかって

どうやってディスプレイに文字を表示させてるんだ?

14 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:45:27 ]
環境に依存した方法で書かれてます

15 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:47:44 ]
>>12
そうしてます。質問の仕方が悪かったです。すいません

int data[3]に入れています。

16 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:48:20 ]
>>7
LSI-C試食版は(スモールモデル限定だから)大きいプログラムには向かないかもしれません。
あと、フリーならば Borland C か cygwin の gcc があります。

17 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:49:45 ]
>>11
generic なかきかたには負けてしまいますが、普通の c でかくなら最速だと思います。枯れているでしょうし。

18 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:51:07 ]
int型の配列の比較に使える関数ってありますか?
全要素が同じかどうかわかるようなやつです。
strcmpみたいな

19 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:51:37 ]
たった、三つくらいならどんなソート方法でも一緒だから
好きにやれば良いよね

20 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:51:38 ]
モニタに表示するにはドライバというプログラムをあーしてこーするんだが
OSがドライバとの間の仲介をしてくれる
これがハードウェアを操作する手順

printf→OS→ドライバ



21 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:55:05 ]
>>11
3件しかデータがないなら、オーバヘッドがある分確実にqsort()は無駄です。

>7
LSI-Cは整数型が16ビットしかないので、学習には全くお勧めできません。

>>18
memcmp()でできますが、自分でループを書いたほうがいいかも知れません。

22 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:55:23 ]
>>21
自分でループを書いたほうがいい理由はなんですか?

23 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:58:43 ]
>>22
自分でmemcmp()に辿り着けないレベルなら、勉強になるジャマイカ。

24 名前:11 mailto:sage [2008/08/12(火) 21:05:43 ]
>>19 >>21
そういわれればはそうですね。

25 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:20:58 ]
char *buff1,*buff2;に

strcat(buff1,buff2)ってできませんか?

26 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:22:39 ]
buff1がbuff2をコピーしうるだけの十分なバッファを指してれば可能

27 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:24:26 ]
実行したらエラーになりました・・・
対策を教えてください

28 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:26:11 ]
>>27
実行しない

29 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:26:30 ]
>>25
できますが、事前に充分な格納場所を割り当てることを忘れずに。

30 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:30:57 ]
buff1に実体がないとエスパー



31 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:02:52 ]
うまくできません・・・

buff1="abc";
buff2="testtest";

みたいに結合前に代入しているんですが・・・

32 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:08:25 ]
>>31
だからbuff1に十分な場所がないとだめだとみんなが。
そもそもそれ以前の話だけどね

33 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:12:03 ]
そのbuff1の領域をあらかじめ広げておく方法がわかりません。
それ以前の話とはchar buff1="abc";
この宣言がよくないですか?

34 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:14:14 ]
広げるっていうのは

char buff1[256];

とか[]の中の数字を大きくするか
mallocで動的に確保するかしかないよ

35 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:15:42 ]
たぶん色々わかってないから説明が必要なんだろうけど、
俺ツタヤ行くから誰かが教えてくれるはず

36 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:16:05 ]
realloc()でもすれば?

37 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:21:11 ]
>>36
質問内容から察するに
前提条件から書かないと
質問者には意味が分からないはず

38 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:30:39 ]
realloc()があればmalloc()もfree()もいらない。

39 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:32:48 ]
>>38
何を言っているんだ?

40 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:34:18 ]
とりあえず、今日はみんな寝よう



41 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:36:48 ]
char * foo = realloc(NULL, 100); // same as char * foo = malloc(100);
realloc(foo, 0); // same as free(foo);

42 名前:7 mailto:sage [2008/08/12(火) 22:39:30 ]
>>16 >>21

65535までの数しか扱えないみたいですね。 
でも、今週から本買って始めた超初心者ですので、とりあえずこれで頑張ってみます。 


43 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:40:03 ]
>>41
なるほど勉強になった。で、何の話だっけ?

44 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 23:02:47 ]
>>42
別にMSの回し者じゃないが
個人的には>>6が良いと思うけどなぁ

45 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 23:40:48 ]
rubyみたいに!?も関数名に使えたら便利なのに・・・

46 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 23:44:17 ]
たとえばなにがどう便利になると言うのか

47 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:18:51 ]
関数の外に影響する関数には最後に!つけたり、真偽を返す関数には?をつけたりして可読性をあげるんだよ。あれ便利じゃん?

48 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:21:46 ]
そんなもん自分で勝手にサフィクスでもプレフィクスでもつければすむことだろう

49 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:32:12 ]
!?がもっともシンプルでもっともわかりやすいんだよ


50 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:35:19 ]
>>49
その代わりに否定の!と三項演算子がつかえなくなるのはいやなんですが。



51 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:38:05 ]
lispみたいに関数名の最後にpをつければいいじゃん

52 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:42:31 ]
>>51
ctype.h関数群の is〜、もありますね。

53 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:54:37 ]
>>49
そんなものはただのお前の好みであって便利でもなんでもない

54 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:06:02 ]
>>50
いや、使えるだろ・・・
くっつけて書かなければ

55 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:08:37 ]
いちいち空白を入れるのはうざい・・・そう思っていた時期が俺にもありました

56 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 02:25:39 ]
>>54
そう作ればそうでしょうけれども。
現在の仕様では識別子の文字セットと演算子として使用する文字とはまったくかぶらないのでひっつけてかいてもOKなのです。

57 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 02:47:53 ]
!がどういう関数につくのかよくわからないが、?に関しては関数名で自明になるように作るでしょ。
Is〜 Has〜みたいにさ。
?がついたからわかりやすいんだ!という向きにはひまわりでもやってなさい、といいたい。

58 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 06:21:41 ]
まさか関数の命名規則に不満がある人がいるとは思わなかった

59 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 07:41:37 ]
コンパイル前にsedで変換すりゃいいだけじゃん。
あ、ゴメン、そういうの出来ないのか、そりゃ〜悪かった。



60 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 07:54:36 ]
>>59
IDE使っててそういう発想がなかったのだろうよ。或いはMakefileを書けないとか。

それはさておき。
今のところ$と@は使われていないけれど、変数名なんかに使えたっけ?



61 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 08:57:58 ]
[a-zA-Z_][a-zA-Z0-9_]*

62 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:43:24 ]
処理の進行状況を表示したいのですが、


1%
2%


100%みたいに表示するのではなく

"1"%   ""この数字だけ次々更新していく方法はないんですか?コンソールプログラムです

63 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:47:53 ]
>>62
www.kumei.ne.jp/c_lang/intro/no_59.htm

64 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:48:57 ]
簡易的に、\nじゃなくて\r使うとか

65 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:51:30 ]
>>62
標準関数では無理
対象となるコンソールのスペックによる

66 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:58:49 ]
\rでできました。ありがとうございます

67 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:19:19 ]
うわ、いくらこのスレでも>63と>65はものの見事に恥かきっ子w

68 名前:65 mailto:sage [2008/08/13(水) 11:20:30 ]
>>67
いや、べつに

69 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:25:29 ]
間違ってもいいから、とにかくいう

70 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:31:07 ]
最後の行という限定条件があるけどね




71 名前:デフォルトの名無しさん [2008/08/13(水) 11:36:11 ]
柴田望洋の明解C言語って本を借りてきたんだけど
エディタはどれを使えばいいの?
visual C++ってのが無料の統合開発環境らしいんでそれを使おうと思ってるんだけど
それでいいですか?
CとC++の違いがオブジェクト指向どうこうかいてあったけど
プログラムは初めてで何の事だか・・・

72 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:38:52 ]
本が今ひとつであることと、VisualStudioでは標準でC++を作らせようとしていることを除けば特に問題ないかと。
取り敢えず、ソースファイルの拡張子はcppにしないように気をつけてね。

PC自体の知識と意欲があるならLinux使うなりCygwin入れるなりを薦めるけどね。

73 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:39:58 ]
>>71
それでいいよ
ファイルの拡張子を .c にすればCとして処理される。
標準関数が安全じゃないと警告が出るときがあるけど


74 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:40:12 ]
\r知らないくらい許してやって

75 名前:71 mailto:sage [2008/08/13(水) 11:46:14 ]
>>72
linuxとかが開発に向いてるってのは聞いたことあるけどプログラム初めてなんで
とりあえずお手軽なとこで・・・

>>73
初心者がちまちまやってる分には特に問題なさそうですね

どうもありがとうございました。さっそくインストールしてみます。


76 名前:デフォルトの名無しさん [2008/08/13(水) 11:53:19 ]
勝ち誇りage

77 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:08:34 ]
VSEE入れてコマンドラインからcl叩く分にはlinuxでgcc使うのと大して変わらんと思うがなあ
IDEを使うと便利なんだけど、IDEを使えるようになるまでの苦労というものが初心者にはあるから。。

78 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:43:09 ]
私もVisual C++ 2008 Express Editionをインストールしてみました。 
いろんなサイト見て、ひとつ練習にプログラムを作りました。 

そのあと次に新しいものを作るとき、また最初からプロジェクトとか
作る必要があるのでしょうか。「新規作成→ファイル」で作れると思ったのですが… 
新しいプログラムを作るやり方を教えてください。よろしくお願いします。 


79 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:46:24 ]
>>78
新規プロジェクトでまずいことでも?

80 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:57:23 ]
>>79 
いえ、毎回プロジェクトから作っていく以外に方法があるのかと思った次第です。
例えば、同じプロジェクトの中に新しいファイルを作って保存したりできないかと… 
毎回新しくプロジェクトを作るのが当然のことでしたらそれでやるしかありませんので。
特に問題ありません。 

今、いつくかのサイトで調べてみましたら、
「作成される実行ファイルは、一つのプロジェクトにつき一つだけです。 」と書いてありました。 
毎回プロジェクトから作る必要があるみたいですね。






81 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 20:01:08 ]
>>80
> 例えば、同じプロジェクトの中に新しいファイルを作って保存したりできないかと…
それは可能ですよ。だけど、main関数のあるファイルは追加しない。
追加するとどうなるんだ?mainが2つあるというエラーメッセージが出るんじゃないかな?

82 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 20:12:24 ]
いいかげんスレ違い
pc11.2ch.net/test/read.cgi/tech/1217525513/1


83 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 22:18:19 ]
VC++で拡張子が.cのものをコンパイルすると

1>cl : コマンド ライン error D8045 : C ファイル '.\Test.c' を /clr オプションと共にコンパイルできません

とエラーになることがあるんですけど対処法を教えてください。

84 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 22:19:56 ]
素人すぎるだろ
プロジェクトとmain関数の意味ググってこいやボケ

85 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 22:43:21 ]
>>83
Win32プロジェクトを作れ

86 名前:デフォルトの名無しさん mailto:yosi0517@gmail.com [2008/08/13(水) 23:15:52 ]
Cを覚えるまえにベーシックをやっていたんですがベーシックの頃の癖が抜けません。やはりCから入ったほうがよかったのでしょうか? 

87 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:17:50 ]
ベーシックの頃の癖ってなんだ?

88 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:19:47 ]
後藤とか?

89 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:20:18 ]
グローバル変数じゃないか

90 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:23:33 ]
たとえばPRINT""って書いてみたり



91 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:25:43 ]
整数の変数をI%にしちゃうとか

92 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:28:22 ]
for i=0 to 9 とか

93 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:30:03 ]
どうせポインタがわからないとかそういうんじゃねーの?

READ/DATAは当然ないし

94 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:30:42 ]
>>84
1プロジェクト複数exeを期待したんだと思うよ
コマンドラインから入ったら結構そう期待してしまいそう

95 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:31:27 ]
行の最初に 10 20 30 とか

96 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:32:28 ]
言語の違いなんて気にスンナ

ベーシックとFORTRANとC++とJavaとアセンブラの仕事を同時並行した俺がいる
こつ、覚えすぎないことw

97 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:33:11 ]
GOSUBとかON ERROR GOTO とかかな

98 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 00:33:54 ]
行番号じゃないのか

99 名前:sage [2008/08/14(木) 02:38:20 ]
カンマ区切りのデータを配列に移すとき、

例)abc,def,ghi,jkl....
皆ならどういう風にするのでしょうか?
条件)
・strtokはなし。
・分かりやすさ重視。


100 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 02:41:59 ]
そんなもん頭から解釈していく意外にやることなかろう








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

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

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