1read 100read
2013年01月プログラム29: C言語なら俺に聞け(入門編)Part 111 (1001) TOP カテ一覧 スレ一覧 2ch元 削除依頼
NetBeans Part6 (882)
GCCについて part10 (234)
【3DS】プチコンを語るスレ【DSi】 (676)
サウンドプログラミング5 (697)
GARMIN社のGPSのプログラム (652)
Pythonについて(アンチ専用) (787)

C言語なら俺に聞け(入門編)Part 111


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

2 :
乙〜

3 :
1乙。
日本のC言語底辺教育の総本山だ。
大事に使ってね。仲良く使ってね。

4 :
>>1
前スレ
> 986 名前:デフォルトの名無しさん [sage]: 2012/12/09(日) 20:24:53.93
> >>977
> 文字列反転関数
> void strrev(char *d)
> {
> int i;
> int len = strlen(d);
> char tmp;
> for (i = len / 2 - 1; i >= 0; i--) {
> tmp = d[i];
> d[i] = d[len - i - 1];
> d[len - i - 1] = tmp;
> }
> }
> これは、"1234"を"4321"に変換する
>
> 987 名前:デフォルトの名無しさん [sage]: 2012/12/09(日) 22:06:01.62
> 副作用かっこわるい
副作用?何?と思ったが分かった。
char* strrev(char *d) {
int i, len = strlen(d); char tmp;
for (i = len / 2 - 1; i >= 0; i--) { tmp = d[i]; d[i] = d[len - i - 1]; d[len - i - 1] = tmp; }
return &d[0];
}
なら良いのだな。
ところで、XORを利用したswapもあるんだね。
ttp://www8.cs.umu.se/~isak/snippets/strrev.c

5 :
>>4
前スレ987が勘違いしてる。
関数型言語でいう副作用排除なら、別エリアに編集する方法もある。

6 :
初心者なんだろうけど、いろいろと気持ち悪いコードだな

7 :
うん

8 :
何を返そうと、入力を破壊的に変更したら副作用だべ

9 :
前スレ986,987共に、引数はchar*だけなので、入力書き換えじゃなくて、引数から参照した先の状態書き換え。
C初学者が間違いやすい所。

10 :
Cには値渡しかないから、ポインタを参照渡しの代用にしてるんじゃないの。
なんにしても関数の外にあるものを変更したらそれは副作用だけども。

11 :
strdup()してから反転して返しても副作用と言うんかい?

12 :
関数内でstrdup()したなら、それをどういじくってから返そうと副作用じゃないのでは。
ヒープからメモリが確保される事も副作用と考えるならダメだけど。

13 :
ダメだけどね

14 :
調子にのってました
ごめんなさい!

15 :
うむ、分かればよろしい

16 :
C言語なら俺に聞け(入門編)Part 109
http://toro.2ch.net/test/read.cgi/tech/1350461655/
966 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/17(土) 12:11:48.06
純粋に関数としてみると、printfは書き込まれた文字数を返す関数。
画面に文字を表示するのはprintfの副作用。
968 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/17(土) 12:29:40.99
>>966
すみません、その副作用とはなんでしょうか。

17 :
977 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/17(土) 13:20:30.07
>>968
int x;
int foo(void)
{
x = 100;
return 200;
}
で、xの値が書き換わってしまうのはfooの副作用。
int bar(void)
{
printf("%d\n", 300);
return 400;
}
で、数字が表示されてしまうのはbarの副作用。

18 :
979 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/17(土) 13:42:07.78
>>977
うーん、return で返す値以外は、関数にやらせることが"副作用"なんですかね。
引数void戻り値なしなら、関数の処理は全部、"副作用"?
981 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/17(土) 14:08:18.34
>>979
>引数void戻り値なしなら、関数の処理は全部、"副作用"?
そのとおり
982 名前:デフォルトの名無しさん[sage] 投稿日:2012/11/17(土) 14:36:24.96
void func(int *a){
*a = *a + 1;
}
を副作用って言うのは、正直微妙な気がする。

19 :
微妙、じゃなくて
この計算機工学界隈での定義であり用語だろ

20 :
そうだけど、何か?

21 :
用語が実態と乖離してるのを微妙に感じるってことだろ

22 :
副作用ってのはその関数においてローカルでもstaticでもない変数に書き込みを加えることを指すわけで、
returnだの引数だのといった説明は的外れ。

23 :
間違えた。訂正。
副作用ってのはその関数が終了してもメモリ上に残るような変数に書き込みを加えることを指すわけで、

24 :
副作用の事は入門レベルじゃないが、Cは状態依存(Statefull)で、副作用を積極利用してる言語だからな。
計算モデルでの、宣言的プログラミングとは違うモデル(ハードがStatefullなんだからしょうが無い)。
入門レベルをクリアしたら、CTMCP(コンピュータプログラミングの概念・技法・モデル)とかで違いが判る。

25 :
R

26 :
R

27 :
R

28 :
R

29 :
R

30 :
R

31 :
R

32 :
いんぽ

33 :
R

34 :
R

35 :
C言語とR言語どっちが難易度高いですか?

36 :
R言語って知らないけど、とりあえずCはそれほど難しくないからRのほうじゃね

37 :
グローバルの時代にクーラー効いた部屋でC言語プログラミング
時代錯誤にも程があるカスがwwww

38 :
#include <math.h>
を書いて数学関数を使うプログラムを書いたのですがコンパイルでエラーになりました。
gccに-lmオプションをつけたらやっとコンパイルが通ったのですが、Cの教科書には-lmオプションのことなんか一言も書いて有りませんでした。
本当にありがとうございました。

39 :
Rー

40 :
Rー

41 :
>>38
コンパイルは通ってリンクでエラーになってたんだろ。

42 :
うん、こ

43 :
printf関数を使う時ってstdio.hをインクルードして使うじゃないですか
てことはstdio.hでprintf関数が定義&宣言されてると思ってたんですよ
けれど
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1331505108
のベストアンサーを見てみたら
>printf関数をコールするにはstdio.hと言うヘッダーファイルを#includeでインクルードします。
>そしてprintf関数が入ったライブラリファイルをコンパイルにリンクするように追加します。
って記述があったんです
これってprintf関数はstdio.hじゃぁなくてライブラリファイルで定義されてて
stdio.hでは宣言しかされてないってことなんですか?

44 :
R

45 :
* ゚・*:.。.:*・゜+ d(*´∀`)b そうです +.:*・゜゚・*:. *

46 :
おまえはきっとライブラリファイルがテキストファイルだと思ってんだろ

47 :
返信アリャシャス
すっきりしました

48 :
R

49 :
テキスト以外はバイナリだとおそわりました

50 :
R

51 :
tinko

52 :
Rいんぽ

53 :
いんきんたむし

54 :
>>43
まぁ、そんな感じでいい

55 :
Rくさい

56 :
皮でRを包む

57 :
Rがぁ?

58 :
Rのぉ?

59 :
金玉がソファーにはりついて気持ち良い

60 :
R

61 :
>>54
ありがとうございます…

62 :
床オナはRの事をこれっぽっちも考えてない

63 :
Rこりん

64 :
ぽこちん祭り

65 :
mallocしたメモリは関数の呼び出し元・呼び出し先のどちらでfreeするのがいいのでしょうか?
普通に考えれば呼び出し先で、freeすることはほとんど無いはずなのですが
GUIのWindowみたいにいつ終わるかわからないものは、呼び出し先でfreeするのがベストかと思います。

66 :
>>65
巣からでてくんな
main以外★mallocの後にfree不要と言うバカいるの?
http://toro.2ch.net/test/read.cgi/tech/1352812333/

67 :
山ほどあるcで書かれたコード嫁

68 :
後片付けは自分でしなさいとこだわる人もいるだろうけど、
手紙なら読んだ人が処分するよね。
相手が読むのだけを待って、読み終えたら自分で片付けなくては
いけないなんて効率悪いと思う。
ただ、誰が片付けるかは明確にしておかないといけないけど。

69 :
>>37
>グローバルの時代に
聞くからに、とっても悲惨な時代だと、どーしても思うのですが

70 :
てs

71 :
てすと

72 :
#include <stdio.h>
int uruu(int year);
int main(void)
{
int a,b;
int lastdays=0;
int i;
scanf("%d %d ",a,b);
for(i=a;i<b;i++){
if(uruu(i)==1){
lastdays+=366;
}
else{
lastdays+=365;
}
printf("%d",lastdays);
}
int uruu(int year){
if(year%400==0){
return 1;
}
else if(year%100==0){
return 0;
}
else if(year%4==0){
return 1;
}
else{
return 0;
}
}

73 :
↑ごめんインデントが汚いけれど
何がいけないの?

74 :
>>73
何がやりたいのか書かれてないのがいけない

75 :
ごめん
年度二つ入力して閏年考慮した上で、その間の日数を求めたい。
これはそのひな形。
とりあえず、動かないんだ。

76 :
scanfに整数わたしてる

77 :
>>75
scanf &

78 :
ごめん、それも忘れたたけど
まだ動かない

79 :
どうなることを期待して、何が出るかくらい書け

80 :
インデントつけないのが悪いな。{ } が合ってない。

81 :
例えば
2000、2007といれると
2000=閏年=366
2001=平年=366+365
みたいになることを期待してるんだけど

82 :
その期待に対して、何が出るか聞いてんだよ

83 :
for(i=a; i<=b;i++)

84 :
if(year%400==0){
  ↓
if((year%400) == 0)
%と=どっちが優先か忘れたけど

85 :
その前に、main()の } が足りないみたいだけど、コンパイル通るのか

86 :
ごめん、出来た。
けど、結局何がいけなかったのか分からない。

87 :
さっきのと比較しろや

88 :
int ndays(int y,int m)
{
int days;
int month;
int data[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
days=month[m];
if(uruu(y)==1 && m==2)
{
days+=1;
}
return days;
}

この関数なのですが、何か問題がありますか?
プロトタイプ宣言もしてあるのですが、動作しません。

89 :
>>88
>days=month[m];
わからんけど、ここな気がする

90 :
days=data[m];
こうじゃね?

91 :
「動作しない」と「コンパイルできない」くらい区別してくれ

92 :
time_tに変換してdifftime()すればいいものを。
課題とか実験とかなら判るけど、馬鹿に限って手を抜くことをしないからなぁ。

93 :
入門編でしか暴れられない奴が言ってもなあ。

94 :
difftimeを知ってるならもう中級者

95 :
数字の末尾が2,4,6,8であるかどうかの確認ってどうするんでしたっけ?

96 :
わからない

97 :
お年玉葉書か。

98 :
>>95
bool isLastDigit2468(int value)
{
char foo[20];
char digit = foo[sprintf(foo, "%d", value) - 1];
return digit == '2' || digit == '4' || digit == '6' || digit == '8';
}

99 :
>>95
i%10&&!(i%2)

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
日本語プログラミング言語『なでしこ』スレ5 (827)
関数型プログラミング言語Haskell Part20 (926)
NetBeans Part6 (882)
HSPプログラムコンテスト2011【part 2】 (452)
雑談スレ 4 (946)
新言語を開発したい (417)
--log9.info------------------
日本ドラマ史上最も演技が下手な役者 (794)
【火9】LAST HOPE/ラストホープ第1診【相葉雅紀】 (729)
【木10】最高の離婚 2【瑛太】 (266)
【日曜劇場】 JIN -仁- 各回MVPスレッド2 (555)
最後から二番目の恋 十番目 (219)
相棒のセリフだけで会話するスレ (882)
【水嶋ヒロ】KAGEROUドラマ化【齋藤智裕】 (428)
こんな「純と愛」は嫌だ!2 (656)
漫画アニメ等の実写化キャスティングを考えよう24 (606)
ドラマ24 勇者ヨシヒコと悪霊の鍵Lv.20【エラボトケ】 (626)
【NHK・よる★ドラ】書店員ミチルの身の上話 第1話 (299)
【日曜劇場】 ATARU Mission24【祝映画化】 (589)
【火9】遅咲きのヒマワリ 10開花 【生田斗真】 (390)
相棒11がつまらない理由★6 (476)
新・クレジットの序列 23 (348)
【フジ土23】高校入試19回目【長澤まさみ】 (961)
--log55.com------------------
【フェイスブック】ネット世論操作企業関連アカウントを大量削除、世論操作ビジネスは日本に拡大も
【米グーグル】ファーウェイとの一部ビジネス停止=関係筋 ★2
【世界保健機関】「ゲーム障害」を依存症に分類へ WHO、年次総会で採択予定
【社会】高校生マザーズは「おめでとう」を聞いたか 日本の10代妊娠・出産
【大雨】関東甲信越 21日は雷を伴って非常に激しい雨が降り、海は大しけとなるでしょう
【皇室】「上皇さまが座って首相を見送り」否定、宮内庁が毎日新聞の報道に強く反発「極めて非礼で尊厳を傷つける」
【イランは終わりだ!】バグダッドの米大使館付近へのロケット砲攻撃にトランプ激怒
【国際】グッチが「ターバン」風の帽子、シーク教徒から非難の声