facebook twitter hatena line google mixi email
★お気に入り追加


■ このスレッドは過去ログ倉庫に格納されています

  • 1
  •  
  • 2014/02/16(日) 01:49:14.42
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 124
http://toro.2ch.net/test/read.cgi/tech/1389096769/
★過去スレ
ttp://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++の宿題片付けます 166代目
http://toro.2ch.net/test/read.cgi/tech/1381909900/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています

ここまで見た
  • 459
  •  
  • 2014/03/13(木) 18:23:12.89
https://ideone.com/QBPqKE
スタックの実装ミス ( >>456 ) と
push_p push_s pop_p pop_s → push, pop の置き換えが間違ってる

ここまで見た
  • 460
  •  
  • 2014/03/13(木) 18:38:15.55
皆さんありがとうございました。
push()、pop()内のポインタのインクリメント、デクリメントと、stack_empty()の引数にtop_pを渡し、その関数内のpush()を変更することで実行することができました。
ありがとうございました。

ここまで見た
  • 461
  •  
  • 2014/03/13(木) 21:05:50.39
プログラミング?をやってみたいんだけど初心者にオススメの無料ソフト教えて

ここまで見た
  • 462
  •  
  • 2014/03/13(木) 21:49:07.81
>>461
Visual Studio 2008 Express

ここまで見た
  • 463
  •  
  • 2014/03/13(木) 21:50:54.76
なんで古いバージョンだよ

ここまで見た
  • 464
  •  
  • 2014/03/13(木) 21:58:25.23
普通にくらん

ここまで見た
  • 465
  •  
  • 2014/03/13(木) 22:42:46.43
確かにこれからはclangかもしれませんね
最新のFreeBSのCコンパイラはclangらしいですね

ここまで見た
  • 466
  •  
  • 2014/03/14(金) 00:05:55.19
BSDはGNUがきらいだからだよ

ここまで見た
  • 467
  •  
  • 2014/03/14(金) 00:53:55.02
嫌いというか、さすがにGNUは無いだろ。
あの思想は解らなくもないが、最近の活動はキチガイとしか思えん。

ここまで見た
  • 468
  •  
  • 2014/03/14(金) 04:33:36.56
>>467
最近の基地外ぶりはいかほどか?なにかやらかしたの?

ここまで見た
  • 469
  •  
  • 2014/03/14(金) 11:30:34.42
ここ最近は静かなもんだよ

ここまで見た
  • 470
  •  
  • 2014/03/14(金) 22:24:52.73
GCCをモジュール化しようって提案を却下したぐらいか?
プロプライエタリソフトウェアに利用されやすくなるからっつって。

ここまで見た
  • 471
  •  
  • 2014/03/15(土) 13:29:01.85
main()から呼ばれる関数first()、first()のみから呼ばれる関数second() 
このようなfirst()second()2つの関数から成るソースからオブジェクトファイルを作成する際、
ヘッダファイルとオブジェクトファイル元のソースの構成は、次の内どれが推奨されますか?

(1)ヘッダにfirst()のみを記述し、ソースはsecond()first()の順に記述する
(2)ヘッダにfirst()second()を記述し、ソースはfirst()second()の順に記述する
(3)その他

ここまで見た
  • 472
  •  
  • 2014/03/15(土) 13:32:40.24
ヘッダにfirst()のみ記述、ソースにsecond()のプロトタイプ, first(), second()の順

ここまで見た
  • 473
  •  
  • 2014/03/15(土) 13:40:05.92
もしsecondが今後別ファイルから呼び出す可能性があるような独立した機能なら
firstとsecondを別のCファイルにしてそれぞれヘッダ作って
main⇒firstのヘッダ、first⇒secondのヘッダ をインクルード

そこまでしないなら472と同じ

ここまで見た
  • 474
  •  
  • 2014/03/15(土) 13:47:58.45
早い解答ありがとうございます
>>472の形で構成することにします
ありがとうございました

ここまで見た
  • 475
  •  
  • 2014/03/15(土) 13:52:50.30
不必要な公開は避けるということだな。
下手に公開すると使っていいのかと勝手に使われてしまったりとか。

こういう公開、非公開の面倒な運用を言語仕様に取り込んで、
public、privateの指定だけでコントロール出来るようにしたのがC++。

ここまで見た
  • 476
  •  
  • 2014/03/15(土) 14:49:09.18
publicな宣言とprivateな宣言と同じファイルに混ぜて書かなきゃいけないのが嫌。

ここまで見た
  • 477
  •  
  • 2014/03/15(土) 15:01:47.55
p_implだっけ?

ここまで見た
  • 478
  •  
  • 2014/03/15(土) 16:23:16.11
>>472
ごめん>>472の利点が解んない。

ヘッダなしで
second(){}
first(){ second() ;}
main(){ first() ; }

でいいじゃん。

ここまで見た
  • 479
  •  
  • 2014/03/15(土) 16:40:22.85
>>475
protect さんの居場所はどこに?

ここまで見た
  • 480
  •  
  • 2014/03/15(土) 16:44:21.87
>>479
ドコニモアリマセン

ここまで見た
  • 481
  •  
  • 2014/03/15(土) 16:46:24.23
>>477
ニキビの写真ばかり出てくるのだが‥‥
それはそうとして、いにしえの stdio.h/FILE * と同じ技法なのにどうして別名をつけたがるのだろう、この業界は?

ここまで見た
  • 482
  •  
  • 2014/03/15(土) 17:08:34.72
あちこちでリネームばかりやってるよね

ここまで見た
  • 483
  •  
  • 2014/03/15(土) 17:38:02.55
>>478
main()は別なんでしょ。

ここまで見た
  • 484
  •  
  • 2014/03/15(土) 17:59:50.75
ヘッダにfirst()やsecond()のソース書くの?

ここまで見た
  • 485
  •  
  • 2014/03/16(日) 09:04:53.31
/* first.h */
#ifndef FIRST_H_
#define FIRST_H_
void first(void);
#endif /* FIRST_H_ */

/* first.c */
#include "first.h"
static void second(void);
void first(void)
{
}
static void second(void)
{
}

/* main.c */
#include "first.h"
int main(void)
{
  first();
  return 0;
}

ここまで見た
  • 486
  •  
  • 2014/03/16(日) 09:38:04.30
firstがmainからしか呼び出されないと分かっているのなら
firstを公開する必要はないと思うしそもそもヘッダすら必要なく一つのファイルに全てを書けばいい

ここまで見た
  • 487
  •  
  • 2014/03/16(日) 09:48:52.06
secondはfirstからしか呼ばれないわけだから
secondをmainに公開する必要はないと思うしfirstをモジュール化することには意味があると思う

ここまで見た
  • 488
  •  
  • 2014/03/16(日) 09:59:09.99
first、 second の実装がでかくなるので ファイルを分けたい
second は first の下請けでしかなく、公開したいのは first

元受け関数は公開 下請けは非公開 こういう需要はあるでそ

ここまで見た
  • 489
  •  
  • 2014/03/16(日) 10:15:47.43
本当にmainとfirst、secondだけで、規模もそんなに大きくなければ、
ファイルを分けるのもめんどくさいので、1つのファイルに書いてしまうけど、

ある程度の規模で特に複数人数での開発とかだと、
公開と非公開に分けるのはかなり重要。

ここまで見た
  • 490
  •  
  • 2014/03/16(日) 11:16:23.98
そもそもfirst()のファイルはmainとは別という質問者の条件なので、
関数の規模にかかわらず、全部mainに書くという答えはおかしい。

ここまで見た
  • 491
  •  
  • 2014/03/16(日) 12:20:24.10
first、secondという関数名から察するに両関数は同じ階層レベルの関数と思われるから
firstを公開するのであればsecondも公開するべきだし
secondがfirstからしか呼ばれないのであればsecondという関数名は不適切で
subFisrtなどに変更するべきだ

ここまで見た
  • 492
  •  
  • 2014/03/16(日) 12:23:46.91
確かに名言はされていないから想像でしかないが
説明するための名前だろう
本質的な部分じゃない

ここまで見た
  • 493
  •  
  • 2014/03/16(日) 13:08:25.67
プログラミングなんかできてもIT奴隷にしかなれないよ

ここまで見た
  • 494
  •  
  • 2014/03/16(日) 15:12:40.49
>>493
じゃあ、できなかったら何奴隷になるんだ?

ここまで見た
  • 495
  •  
  • 2014/03/16(日) 16:39:41.94
性奴隷だろ言わせんな恥ずかしい

ここまで見た
  • 496
  •  
  • 2014/03/16(日) 18:19:18.53
char sexy[] = "char! each!";

ここまで見た
  • 497
  •  
  • 2014/03/16(日) 18:43:20.79
きゃあ!えっち!

ここまで見た
  • 498
  •  
  • 2014/03/16(日) 18:44:28.09
だがかっこいいじゃん
派遣のなかだとプログラマーは上級職なんだし憧れの的だろ
俺みたいに工場の軽作業で組み立てしてる派遣よりかっこいい
ITというのが何よりかっこいい

ここまで見た
  • 499
  •  
  • 2014/03/16(日) 19:08:11.40
でも動かないから精神を病む人は多いよ

ここまで見た
  • 500
  •  
  • 2014/03/16(日) 21:12:22.93
>>497
まてまて、「char」の読み方は「シャア」だろJK
シャア「坊やだからさ」

ここまで見た
  • 501
  •  
  • 2014/03/16(日) 21:15:17.68
よっしゃー

ここまで見た
  • 502
  •  
  • 2014/03/16(日) 21:31:43.87
>>500
アニヲタ死ねよwwww

ここまで見た
  • 503
  •  
  • 2014/03/17(月) 03:33:06.43
atofって先頭から数字の部分を数字に変換しますよね
その数字に変換した文字数をカウントする方法ってないですか?

ここまで見た
  • 504
  •  
  • 2014/03/17(月) 03:38:39.98
atof→ftoa→sizeof

ここまで見た
  • 505
  •  
  • 2014/03/17(月) 03:51:43.74
strtod使って先頭番地と格納された番地を比較
NULLが格納されてたときは別処理

ここまで見た
  • 506
  •  
  • 2014/03/17(月) 03:53:51.54
%g%n で解決

ここまで見た
  • 507
  •  
  • 2014/03/17(月) 04:03:17.27
すまん
NULLじゃなくて'\0'の番地だった

ここまで見た
  • 508
  •  
  • 2014/03/17(月) 04:09:23.15
別処理もいらんわ

ここまで見た
  • 509
  •  
  • 2014/03/17(月) 04:14:41.04
>>504-508
ありがとうございます
>>505が簡単そうなのでこれをstrtofにして使ってみます

ここまで見た
  • 510
  •  
  • 2014/03/17(月) 09:23:33.95
文字列(全角文字は考えずに必ず半角英数文字だけ)が
buff[256]にあるとして、その中の
25バイト目から40バイトまでのみを表示したいって時のやり方教えてください

お絵かきランド
フリック回転寿司
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード