5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

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

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

1 :デフォルトの名無しさん:2011/09/29(木) 07:31:00.93
C言語の*入門者*向け解説スレッドです。

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

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
http://codepad.org/

2 :デフォルトの名無しさん:2011/09/29(木) 13:44:08.21
入門レベルのお話をたのむー
難しくってついて行けないオッサンです

3 :デフォルトの名無しさん:2011/09/29(木) 14:20:15.07
>>2
なんでも聞けよ

4 :デフォルトの名無しさん:2011/09/29(木) 16:01:06.66
退門編ってどこにありますか?

5 :デフォルトの名無しさん:2011/09/29(木) 16:15:45.92
前スレ、>>995
「void *」は型ではないが、「void* 」は型だと言っているのか?

6 :デフォルトの名無しさん:2011/09/29(木) 16:37:48.17
>>5
そう勘違いしてしまうことで
jもポインタだと誤解してしまう場合があるから
推奨してない。って事でしょう。

7 :デフォルトの名無しさん:2011/09/29(木) 16:42:42.83
失礼します。switch文をif文に書き換える問題なのですが、default文がうまくいきません。
(入力値が正しくてもprintfが実行されてしまします)

#include <stdio.h>
int main (void){
int grade;
int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;
printf("試験結果の成績(A,B,C,D,F)を入力してください。\n");
printf("入力終了は1\n");
while ((grade = getchar()) != '1'){
if (grade == 'a' || grade == 'A')
++aCount;
if (grade == 'b' || grade == 'B')
++bCount;
if (grade == 'c' || grade == 'C')
++cCount;
if (grade == 'd' || grade == 'D')
++dCount;
if (grade == 'f' || grade == 'F')
++fCount;
if(!((grade == 'a' || grade == 'A') || (grade == 'b' || grade == 'B') || (grade == 'c' || grade == 'C') || (grade == 'd' || grade == 'D') || (grade == 'f' || grade == 'F')))
printf("入力値が異常です、再入力\n"); }
printf("\n成績結果\n");
printf("A: %d\n",aCount);
printf("B: %d\n",bCount);
printf("C: %d\n",cCount);
printf("D: %d\n",dCount);
printf("F: %d\n",fCount);
return (0);}
よろしくお願いします

8 :デフォルトの名無しさん:2011/09/29(木) 16:46:17.46
else

9 :デフォルトの名無しさん:2011/09/29(木) 16:47:43.61
if 条件{
処理
}else if 条件{
処理
}else{
処理
}

10 :デフォルトの名無しさん:2011/09/29(木) 16:50:28.04
>>7
getchar で改行文字を読むからだよ

11 :デフォルトの名無しさん:2011/09/29(木) 16:52:23.91
>>8さん
>>9さん

さっそく、ありがとうございます、試してみました。
9さんの形にしても、必ず最後のif文が実行されてしまいます。
たとえば、Aと入力すれば実行されないつもりで書いているのですが・・・。



12 :デフォルトの名無しさん:2011/09/29(木) 16:57:07.86
getcherじゃなくて
getchにすればすこしわかりやすくなるんじゃね?

13 :デフォルトの名無しさん:2011/09/29(木) 16:58:43.21
>>10さん
おっしゃる通りでした。

if(!((grade == 'a' || grade == 'A') || (grade == 'b' || grade == 'B') || (grade == 'c' || grade == 'C') || (grade == 'd' || grade == 'D') || (grade == 'f' || grade == 'F') || (grade == ' ' || grade == '\n')))
printf("入力値が異常です、再入力\n");

と、空白と改行も条件に追加した所思うようにいきました。
みなさん、ありがとうございました。

14 :デフォルトの名無しさん:2011/09/29(木) 17:05:50.15
>>12さん

getch関数、初めて知りました。
試してみたところ、確かにこれなら改行を条件に追加しなくても思うように動きました。
勉強になります。
ありがとうございます。

15 :デフォルトの名無しさん:2011/09/29(木) 17:08:04.00
小文字でも大文字でも意味が同じなら、判定する前に入力を小文字にする関数でも挟めばいいのに……


16 :デフォルトの名無しさん:2011/09/29(木) 17:35:20.28
switch 使えと言いたくなるな。

17 :デフォルトの名無しさん:2011/09/29(木) 17:39:13.23
>>16
諮問内容を確認しろと言いたくなるな

18 :デフォルトの名無しさん:2011/09/29(木) 17:50:31.51
こういうこと。
switch(0)default:{
if (grade == 'a' || grade == 'A'){++aCount;break;}
if (grade == 'b' || grade == 'B'){++bCount;break;}
/*default*/ }

19 :デフォルトの名無しさん:2011/09/29(木) 18:12:50.75
Cにジャンプ命令ってないの?

20 :デフォルトの名無しさん:2011/09/29(木) 18:14:41.21
なにかここのところで大きなまちがいを犯しているような気がしてならない。
> int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;

配列にした方が……


21 :デフォルトの名無しさん:2011/09/29(木) 18:15:43.99
>>19
goto とか
if for while switch break continue とか

22 :デフォルトの名無しさん:2011/09/29(木) 18:21:17.87
要注意なので setjmp, longjmp

23 :デフォルトの名無しさん:2011/09/29(木) 19:52:34.67
>>21
goto使うと怒られるお;;

24 :デフォルトの名無しさん:2011/09/29(木) 20:10:46.24
char s1[16][128];
char s2[128][16];

s1は128文字まで入る文字配列が16個で
s2は16文字まで入る文字配列が128個という
イメージでおk?

25 :デフォルトの名無しさん:2011/09/29(木) 20:19:48.42
C言語検定ってどう思う?

26 :デフォルトの名無しさん:2011/09/29(木) 20:23:57.07
糞資格
履歴書に書くのも恥ずかしいレベル

27 :デフォルトの名無しさん:2011/09/29(木) 20:28:35.26
簡単なの?

28 :デフォルトの名無しさん:2011/09/29(木) 20:36:08.36
>>24
ヌル文字を入れないか
ヌル文字も文字に含めるならそう

29 :デフォルトの名無しさん:2011/09/29(木) 20:36:59.18
新卒で実務経験や実績を書けない人用じゃないの?

30 :デフォルトの名無しさん:2011/09/29(木) 20:50:13.65
高専の進学には役に立つかもしれん

31 :デフォルトの名無しさん:2011/09/29(木) 23:32:44.20
前スレの>>988さん
>入力を閉じている(CtrlD)のに再度入力できるのが不自然だと思う。
>標準入力をリダイレクトしてファイルから読んでいたら、そんな振る舞いはしないと思う。

例えば、lessでパイプからの入力を受け、その後端末からlessをコントロール、
まあちょっと違う話なんですけどねw

前スレの>>989さん
>現象から推測してreadが0を返したときに、 (以下略)

気になっているのはUbuntuとMac OS X、どちらの挙動が正しいのか、
あるいは未定義(?)なのか、なんですが....

32 : ◆QZaw55cn4c :2011/09/29(木) 23:57:24.38
>>31
以前もちょっとした議論になりましたが、MS-C や Borland C では、getchar()等がいったん EOF を返したら入力できない仕様でした。
まあ DOS 流では Ctrl-Z + enter でやっと EOF が入力できる変な端末ではありますが。
それにしても、Linux や FreeBSD が異端で、Mac OS X が正統‥‥ん?おっかしーなー。MAC OS X って確か BSD 界隈育ちだったはず。

http://hibari.2ch.net/test/read.cgi/tech/1314783907/954
宿題スレで議論になったのをお忘れですか?それとも理解できませんでしたか?

33 :デフォルトの名無しさん:2011/09/30(金) 00:18:20.24
>>32
いいからPCのCPU-Zのスクリーンショットをうpしてみろや

34 :デフォルトの名無しさん:2011/09/30(金) 00:39:58.14
>>19
「ジャンプ命令」文法上は無い。
ジャンプ文なら以下の4つ。
goto 識別子;
break;
continue;
return 式opt;

>>21
for, whileは繰り返し文、
if, switchは選択文

>>22
setjmp, longjmpは標準関数で、ジャンプ文では無い。

35 :デフォルトの名無しさん:2011/09/30(金) 00:41:42.70
>>34
へえ
あなたの中ではそうなんだね

36 :デフォルトの名無しさん:2011/09/30(金) 00:45:04.47
>>32
過去ログを参照してみたけど議論になった場所が分かりませんねえ
俺は●を持ってるから具体的なURLで示してみ

37 :デフォルトの名無しさん:2011/09/30(金) 00:46:51.10
>>24
まぁいいと思うけど
s1は charの配列(要素数128)の配列(要素数16)
s1は charの配列(要素数16)の配列(要素数128)

>>28
イミフ。charの配列とNUL文字は直接は関係ないぞ。
charの配列にはC文字列を格納することが多いとは思うけどね。


38 :34:2011/09/30(金) 00:48:16.90
>>35
>あなたの中ではそうなんだね
違います。「C言語の文法では」>>34の通りです。

39 :デフォルトの名無しさん:2011/09/30(金) 01:05:59.47
>>35みたいなアホも受け入れるこのスレの懐の深さが好き

40 :34:2011/09/30(金) 01:18:41.32
よく誤解する人がいるので強調しておくけど、議論の対象はC言語。
そしてC言語には「ジャンプ命令」という言葉は無い。
※念のため、K&R2ndで確認している。C99とかは知らない。 

ジャンプ文なら>>34で挙げた4つ
setjmp, longjmpは標準関数であり、「ジャンプ命令」ではない。

もちろんジャンプ文、longjmpはコンパイラによって、
「ターゲットCPUのジャンプ命令」に変換されるはず。
したがってアセンブラの範囲になれば、「ジャンプ命令」は存在する。

41 :デフォルトの名無しさん:2011/09/30(金) 01:24:10.27
>>33
意味不明

42 :デフォルトの名無しさん:2011/09/30(金) 01:37:48.24
C言語の「命令」ってどんなのがあるの?

43 :デフォルトの名無しさん:2011/09/30(金) 01:42:04.62
>>41
お前がCore2DuoやPhenomUX6を買ったと嘘を付くから証拠を見せろと前から言ってるだろ
まあそれも今となってはすっかり型遅れになったがな
スクショうpできないならPenV850MHzノート一台という事で

44 :デフォルトの名無しさん:2011/09/30(金) 01:42:44.65
なんていうかpedantic

45 :デフォルトの名無しさん:2011/09/30(金) 01:43:24.29
中の人バトンタッチしたんじゃないの?

46 :デフォルトの名無しさん:2011/09/30(金) 01:52:26.67
自分に都合が悪くなるとすぐコテを外すヘタレ
すぐバレる嘘

47 :デフォルトの名無しさん:2011/09/30(金) 01:58:45.00
>>40
嘘書くな。
setjmpなんていう標準関数はない。
setjmpはマクロだ。


48 :デフォルトの名無しさん:2011/09/30(金) 02:04:09.38
マクロとかw
ここはすごいのばっか出てくるなw

49 :デフォルトの名無しさん:2011/09/30(金) 02:05:08.18
C言語に限らず他の全部ので「命令」なんて無いんじゃない?
やっぱ「命令」ったら機械語だけっしょ。
それ以上のはやっぱりどこまで行っても文どまりじゃん


50 :デフォルトの名無しさん:2011/09/30(金) 02:05:36.98
日本語でおkwww

51 :デフォルトの名無しさん:2011/09/30(金) 02:15:03.42
>>28
「文字列」ではなくて「文字配列」だからいいんじゃないか

52 :デフォルトの名無しさん:2011/09/30(金) 02:34:27.47
>>43
キチガイ乙

53 :デフォルトの名無しさん:2011/09/30(金) 02:36:44.56
>>43
おまえQZ情報すごいな
どんだけ大ファンなんだよw


54 :デフォルトの名無しさん:2011/09/30(金) 02:37:42.41
>>43は頭おかしいだろ

55 :デフォルトの名無しさん:2011/09/30(金) 03:09:19.41
そんな必死に自演せんでも

56 :デフォルトの名無しさん:2011/09/30(金) 05:31:06.70
QZが嘘を見破られてファビョるの巻

57 :デフォルトの名無しさん:2011/09/30(金) 06:29:31.54
>>48
setjmpはマクロ、jmp_bufは型、longjmpは関数、と規格に書かれてる

58 :デフォルトの名無しさん:2011/09/30(金) 06:31:10.86
>>49
directiveは命令とも訳せるので
preprocessor directiveは命令と言えるね

59 :デフォルトの名無しさん:2011/09/30(金) 09:50:17.33
誰でもわかる糞みたいな議論だと活発っすね

60 :デフォルトの名無しさん:2011/09/30(金) 09:53:55.56
パーキンソンの法則だ
ttp://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%AD%E3%83%B3%E3%82%BD%E3%83%B3%E3%81%AE%E5%87%A1%E4%BF%97%E6%B3%95%E5%89%87

61 :デフォルトの名無しさん:2011/09/30(金) 15:44:49.80
QZにSSE2を使ったプログラムの問題を出してみな
解けないから
Pentium3じゃあさすがにSSE2は使えないわなあ

62 :デフォルトの名無しさん:2011/09/30(金) 16:09:08.28
>>61の文章からにじみ出てるオーラが半端無いので腹が痛いです

63 :デフォルトの名無しさん:2011/09/30(金) 18:49:05.72
チン      ☆  チン       ☆
       チン    マチクタビレタ〜   チン     ♪
           ♪
    ♪          ☆チン    .☆   ジャーン!   マチクタビレタ〜!
        ☆ チン   〃  ∧_∧  ヽ         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ  ___\(・∀・ #) /\_/ < >>32の具体的なURLマダ〜
        チン    \_/⊂    つ    ‖     \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|     ‖        マチクタビレタ〜!
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|   /|\
        |             |/

64 :デフォルトの名無しさん:2011/09/30(金) 18:55:14.23
標準入出力のそんな細かい振る舞いは
Cの範疇の話じゃないっしょ

65 :デフォルトの名無しさん:2011/09/30(金) 21:21:43.72
>>61
QZが在日でも、中年でも、ニートでも、ヒキコモリでも、PenIIIでも、てめえには関係ねえだろ!!!!1111!!!111!!!!!!

66 :デフォルトの名無しさん:2011/09/30(金) 21:23:29.16
と、中年ニートの在日チョンQZが暴れております

67 :デフォルトの名無しさん:2011/09/30(金) 21:37:55.99
なんだかニコ厨くさいぞ

68 :デフォルトの名無しさん:2011/10/01(土) 20:12:51.82
初歩的な質問ですみません
getchar()で入力された文字数を表示させるコードを書きたいのですが、
whileループ以降のprintfがうまく動いてくれません
どのようにすれば上記ができるようになるでしょうか?
コードは以下です。よろしくお願いします

http://codepad.org/gqGT7tLo

69 :デフォルトの名無しさん:2011/10/01(土) 20:16:26.07
'\n'

70 :デフォルトの名無しさん:2011/10/01(土) 20:20:50.17
n++を++nにする
EOFの入力はCtrl+z

71 :デフォルトの名無しさん:2011/10/01(土) 20:25:25.30
>>70
レスありがとうございます
Ctrl+zでEOFの入力、というのはどういうことでしょうか?EOFというのは特殊文字ということなのですか?
Mac+vimでコードを書いているのですが、Ctrl+zを入力するとsuspendしてしまいます…

72 :デフォルトの名無しさん:2011/10/01(土) 20:25:53.28
間違えた
n++は関係ないか

73 :デフォルトの名無しさん:2011/10/01(土) 20:33:11.41
>whileループ以降のprintfがうまく動いてくれません
というのはどううまく動かないのか
whileからぬけられないということか?
想定と違う数になるのか?
何も表示せずに終了するとか?

74 :デフォルトの名無しさん:2011/10/01(土) 20:36:30.76
>>71
Winだとそう
macはCtrl+d(多分

75 :デフォルトの名無しさん:2011/10/01(土) 20:48:52.86
getcharは1行ごとに動く
やりたいことは掟破りのgetch使うのでは

76 :デフォルトの名無しさん:2011/10/01(土) 20:49:55.69
うそ教えるなよ

77 :デフォルトの名無しさん:2011/10/01(土) 20:50:04.62
コード自体は幾つかの注意点を除けば問題ないだろう。
なので、Unxi系の端末では入力を閉じるにはCtrl+Dだということさえ判ればいいだろう。

で、コードはこう書いた方がいい。
--
#include <stdio.h>

int main()
{
// 中略
return 0;
}
--

78 :68:2011/10/01(土) 20:53:37.20
コマンドラインから文字列を入力した後、Ctrl+dを二回入力したところ、カウントしてくれるようになりました
Ctrl+dがなぜ2回入力されなければ動いてくれなかったのか不明ですが…

ありがとうございました!

79 :68:2011/10/01(土) 20:55:34.61
>>77
連投すみません
return 0;
の意味は何か教えていただけますか?
これを書かないと何か不具合があるのでしょうか

80 :デフォルトの名無しさん:2011/10/01(土) 20:59:05.93
ない
慣習

81 :デフォルトの名無しさん:2011/10/01(土) 20:59:27.40
>>79
一応それが正規の書法だし。
Macでおそらくコマンドインタプリタ(シェル)から起動していると思うのだけど、
そのコマンドインタプリタに対してプログラムが成城に終了したことを通知するために、0を返す。
実際、codepadに貼ったコードを見てみると、Outputに「ExitFailure」と書かれているのは判るかい?

82 :デフォルトの名無しさん:2011/10/01(土) 21:00:22.35
>>80
あんたにとって意味はないかもしれんが、世の中には真に無意味なことなどそうそう無いものだよ。

83 :デフォルトの名無しさん:2011/10/01(土) 21:01:01.16
codepadで入力が必要なプログラムってどう処理されるん?

84 :68:2011/10/01(土) 21:08:14.91
>>81
なるほど、returnすることで正常に終了した、という扱いになるのですね
ありがとうございます!

85 :デフォルトの名無しさん:2011/10/01(土) 21:09:08.94
return 0;
書かなくてもExitFailureって出るんだけど

86 :デフォルトの名無しさん:2011/10/01(土) 21:14:32.07
>>85
あんた馬鹿? 0を返さないから出るんだって言ってるでしょ。
C++なら、省略した場合に0を返すことになっているけど。

>>83
何も入力せずに入力を閉じた扱いになる。
空のファイルからのリダイレクトと似た振る舞いだね。

87 :デフォルトの名無しさん:2011/10/01(土) 21:36:52.78
ExitFailure=正常終了だと思ってるんでしょ
ちゃんと和訳してみるといいよ

88 :デフォルトの名無しさん:2011/10/01(土) 21:50:02.34
初歩的な質問ですみません

scanf("%100s %100s",&a,&b);

として複数の入力をスペースで開け受け付けて次の処理に移るようにしてるんですが、
一つの入力だけでも次へ進めることってできますでしょうか

89 :デフォルトの名無しさん:2011/10/01(土) 21:52:52.45
一行入力させて、
あとからスペースで区切ればいい
スペースで区切れなかったら「次の処理」に行けばいい


90 : 忍法帖【Lv=40,xxxPT】 :2011/10/01(土) 22:52:28.25
>>88
fgets() + sscanf()

91 :デフォルトの名無しさん:2011/10/01(土) 23:14:42.18
>>90
ありがとう御座います。できました。

92 :デフォルトの名無しさん:2011/10/02(日) 18:23:19.48
>>86
C99でも省略したときは0返すことになってるよ

93 :デフォルトの名無しさん:2011/10/02(日) 19:02:44.95
exitとreturnの違いってあるんですか?

94 : ◆QZaw55cn4c :2011/10/02(日) 19:11:44.84
>>93
当然違うが、int main() 内に置く return と exit() については一緒。

95 :デフォルトの名無しさん:2011/10/02(日) 19:23:20.41
なんで素材サイトって基本的に字が小さくて見づらいの?

96 :デフォルトの名無しさん:2011/10/02(日) 19:35:34.81
>>93
リターンキーとエンターキーくらい違う

97 :デフォルトの名無しさん:2011/10/03(月) 09:37:52.24
>>95
顔を近づけてよく見させたいから

98 :デフォルトの名無しさん:2011/10/03(月) 09:57:51.53
>>94
素材をつくっる様な人は、えてして大きなモニターを使っている。
大きなモニターに表示した場合、小さい字でも気にならない。
(意外な真実かもしれないぞ)

99 :デフォルトの名無しさん:2011/10/03(月) 10:08:40.93
>>95
サイト自体が無駄に凝ってて
メインのコンテンツがどこなのか分からないのとかあるな

100 :デフォルトの名無しさん:2011/10/03(月) 12:15:24.44
Ctr+マウスでグリグリぐらい覚えよう

101 :デフォルトの名無しさん:2011/10/03(月) 12:48:04.89
tableをtbl
countをcnt
flagをflg
こういう命名方法ってなんていうんだっけ?

102 :デフォルトの名無しさん:2011/10/03(月) 12:50:08.35
ハンガリー記法ではない



103 : 忍法帖【Lv=40,xxxPT】 :2011/10/03(月) 13:32:56.12
>>100
素人じゃないんだから、グリグリはないだろ。

104 :デフォルトの名無しさん:2011/10/03(月) 13:35:11.35
省略しすぎるのもどうかと思うね
3文字に省略するのがカッコいいとか思ってるんだろうけど
zgrとか書かれてても所見じゃ分からんよ

105 :デフォルトの名無しさん:2011/10/03(月) 13:36:38.84
>>104
3文字じゃなくて母音抜きじゃね
一緒だけど

106 :デフォルトの名無しさん:2011/10/03(月) 14:36:35.54
失礼します。pic16F84Aをしようして6個のLEDをランダムで点灯するプログラムはこれであってますか?

#include<pic.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main(){
int a;
a=rand();

TRISA=0x00;
TRISB=0xFF;

PORTA=0x00;
PORTB=0xFF;

for(a=0; < a=0; a<6; a++)

while(){
a=a%6+1;
PORTA=a;
PORTB=a;
}
}

こちらはc言語をはじめたばかりなので自信がないです。よろしくお願いします。




107 :デフォルトの名無しさん:2011/10/03(月) 14:41:16.49
初めてで組込(pic)をやるとは、根性有るな。スレ違なきもするが

108 :デフォルトの名無しさん:2011/10/03(月) 14:43:39.12
電子工学が専門なんだろう

109 :デフォルトの名無しさん:2011/10/03(月) 15:47:41.86
for(a=0; < a=0; a<6; a++)

この辺りが頭からクソが漏れそうだ


110 :デフォルトの名無しさん:2011/10/03(月) 16:10:00.87
是非!

111 :デフォルトの名無しさん:2011/10/03(月) 16:51:46.02
mallocした配列の要素数を知るにはどうしたらいいのですか?

112 :デフォルトの名無しさん:2011/10/03(月) 16:56:39.75
>>111
別に覚えておく。

113 :デフォルトの名無しさん:2011/10/03(月) 20:05:41.52
#include <stdio.h>
int main(){
int sum, n, num;
sum=0;
num=-1;
while(num <= sum){
printf("正の整数の上限値を入力してください:");
scanf("%d", &num);
for(n=1; sum<=num; n++){
sum=sum+n;
printf("n = %d sum = %d\n", n, sum);
}
}
return 0;
}

まで出来たけど、sumがはじめてnum以上になるまで繰り返すプログラムの表示を
num=21として入力した場合
n = 1 sum = 1
n = 2 sum = 3
n = 3 sum = 6
n = 4 sum = 10
n = 5 sum = 15
n = 6 sum = 21
n = 7 sum = 28
正の整数の上限値を入力してください:
になってしまいます。

114 :デフォルトの名無しさん:2011/10/03(月) 20:08:08.77
>>113の続き
n = 7 sum = 28
正の整数の上限値を入力してください: の部分をなくすのにどのコードを直せばいいのか
ヒントをください。

115 :デフォルトの名無しさん:2011/10/03(月) 20:11:05.84
ヒント

for(n=1; sum<=num; n++){


116 :デフォルトの名無しさん:2011/10/03(月) 21:03:22.26
>>115
出来ました!
ありがとうございます


117 :デフォルトの名無しさん:2011/10/04(火) 10:12:10.69
>>94
せっかくなのでw

「一緒」って具体的にはどういうことですか?

118 :デフォルトの名無しさん:2011/10/04(火) 15:50:07.34
規格書き写しただけだろ。触んな

119 :デフォルトの名無しさん:2011/10/04(火) 17:40:34.21
2次元配列を動的に作成するコードを関数化しようと思って下記のソースを作ってみたのですが、
初期化が正常に完了しなくて困っています。
どの部分がおかしいのでしょうか?

int X=2;Y=2;
float **a;
setup(a,X,Y);

void setup(float **in,int x,int y)
{
in = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++){
in[i] = (float*)malloc(sizeof(float) * y);
}
}

120 :デフォルトの名無しさん:2011/10/04(火) 17:48:50.35
>>119
そりゃあそうだろ
ポインタのポインタだけじゃ関数setup()内での代入は関数を抜けたら無効になる

int X=2;Y=2;
float **a;
setup(&a,X,Y);

void setup(float ***in,int x,int y)
{
*in = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++){
*in[i] = (float*)malloc(sizeof(float) * y);
}
}

こう書かなきゃな

121 :デフォルトの名無しさん:2011/10/04(火) 17:49:01.60
setupの前後でaのアドレスをprintfしてみれ
aのコピーをsetupに渡してるだけでaの値は何も書き換わってないぞ、と

122 :デフォルトの名無しさん:2011/10/04(火) 17:53:01.99
>>119
あとよくあるのがFILE *構造体を他の関数でopenして戻ったらおかしくなるやつ

これも

FILE *p;

setup(&p);

void setup(FILE **p)
{
*p = fopen("filename", "r");
}

と書かなければ正常に動かない
それと同じ

C++なら参照を使えばこの問題は起きない

123 :デフォルトの名無しさん:2011/10/04(火) 17:55:34.27
>>119
無理にポインタ渡ししなくても戻り値使えばいいんじゃね?
int X=2;Y=2;
float **a;
a=setup(X,Y);

float** setup(int x,int y)
{
float** in;
in = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++){
in[i] = (float*)malloc(sizeof(float) * y);
}
return in;
}

124 :デフォルトの名無しさん:2011/10/04(火) 17:58:18.13
>>123
代入するのが一つならそれでもいいが複数戻したい時は困るだろ
今回はいいけど

125 :デフォルトの名無しさん:2011/10/04(火) 18:04:23.19
>>124
別にポインタ渡しを使うなとは言ってないよw

126 :デフォルトの名無しさん:2011/10/04(火) 18:16:41.29
そのうち要素数もセットで管理したくなるから構造体にまとめるのもアリ

struct array2d {
 int numX, numY;
 float** body;
};

void setup(struct array2d* dst, int x, int y)
{
dst->numX = x; dst->numY = y;
dst->body = (float**)malloc(sizeof(float*) * x);
for(i = 0; i < x; i++) dst->body[i] = (float*)malloc(sizeof(float) * y);
}


127 :デフォルトの名無しさん:2011/10/04(火) 18:16:53.45
typedef struct {size_t d1,d2;float[]}arry2d_float;
arry2d_float*const setup(size_t b, size_t c){return (arry2d_float*)malloc(sizeof(arry2d_flpat)+sizeof(float)*(a+b);}
float const set(arry2d_float*const a, size_t b,size_t c,float d){float *r=(float*)((char*)a+sizeof(arry2d_flpat)+sizeof(float)*(a+b));return *r=d;}

128 :x127:2011/10/04(火) 18:19:08.17
a+bじゃだめだよなww

129 :デフォルトの名無しさん:2011/10/04(火) 18:28:00.67
>>122
その用途で参照を使うのはちょっとなぁ。

130 :119:2011/10/04(火) 19:10:05.09
ポインタ渡しだとエラーで、戻り値だと成功しました。
ネットで調べたら、main関数に戻ったときに保持されなくなると、書いてあったので戻り値方式でいきます。
色々アドバイスありがとうございました。

131 :デフォルトの名無しさん:2011/10/04(火) 19:27:40.08
>>130
悪い
バグってた

void setup(float ***in, int x, int y);
void unsetup(float **in, int x);

int main(void)
{
int X = 2, Y = 2;
float **a;
setup(&a, X, Y);
unsetup(a, X);
return 0;
}

void setup(float ***in, int x, int y)
{
int i;
*in = (float**)malloc(sizeof(float*) * x);
for (i = 0; i < x; i++)
(*in)[i] = (float*)malloc(sizeof(float) * y); // ここ
}
void unsetup(float **in, int x)
{
int i;
for (i = 0; i < x; i++)
free(in[i]);
free(in);
}

132 :デフォルトの名無しさん:2011/10/04(火) 21:25:36.88
ブロードキャストアドレスを得るには ioctl() が常套手段ですか?
何かもっといいかげんで簡単な方法は無いですか?
動作環境はUnix汎用(BSD,Linux他)です。

133 :デフォルトの名無しさん:2011/10/04(火) 21:48:40.97
>>119>>120

蛇足だけど、そのaは二次元配列にはなっていない。
要するにsizeof(float)*X*Yの連続した領域が確保されるわけじゃない。

2次元配列に見えればいい(a[i][j]でアクセスできればいい)のだろうから、
構わないのだろうけどね。



134 :デフォルトの名無しさん:2011/10/04(火) 21:54:59.67
>>132
ラッピングされたライブラリかなんかが欲しいってことなんだろうけど、これ以上どこを楽にしようか

135 :デフォルトの名無しさん:2011/10/04(火) 22:00:21.24
1次元配列を2次元配列のポインタにキャストして設定とかできるんだっけ

136 :デフォルトの名無しさん:2011/10/04(火) 22:02:23.20
>>133
あれ、二次元配列の大きさってsizeof(float)*X*Yになるって保証されてたっけ?

137 :デフォルトの名無しさん:2011/10/04(火) 22:02:51.57
必要なサイズの1次元配列確保するんじゃ駄目なの?

138 :デフォルトの名無しさん:2011/10/04(火) 22:27:22.49
>>136
サイズじゃなくて連続領域かどうかの話かと。

>>137
それでもいいし、各次元の先頭アドレスを詰めていくのでもいいよね

139 :デフォルトの名無しさん:2011/10/04(火) 22:33:27.90
>>133
それは分かってるよ

もし二次元配列にしたいなら (*)[Y]みたいに書かないとな
(実際はYは定数でなくてはいけないのでエラーになる)

140 :デフォルトの名無しさん:2011/10/04(火) 22:35:09.68
>>138
パディングが挟まったりとかは無いんだっけ?
連続してる保証があったのかなぁと

141 :138:2011/10/04(火) 22:39:08.35
>>139
それはまた別の話だけど、正しいことだね。

二次元配列を動的に生成したい→>>139(無理)
添え字演算子を使用した場合のみにおいて、二次元配列と同等のアクセスが可能なポインタを作成したい→>>119
ポインタ演算を含め、二次元配列と同等のアクセスが可能なポインタを作成したい→>>133

デリケートな話だけれど。

142 :138:2011/10/04(火) 22:46:21.19
>>140
もしそれが保証されていなければ、ポインタに成り下がったあとに正しくアクセスする術がない言語になってしまうよ

143 :デフォルトの名無しさん:2011/10/04(火) 22:49:30.63
スレ違いになるけどboostのmulti_arrayとかな

これは出来が悪かったstd::valarrayの代替用だが、結局パフォーマンスを
出そうとするとtemplateしかない

144 :デフォルトの名無しさん:2011/10/04(火) 22:52:36.20
>>142
多次元配列でもポインタで走査できるのって保証されてたんだ?
それは知らなかった

145 :デフォルトの名無しさん:2011/10/04(火) 22:52:55.79
メモリにおいての配列は連続するメモリのことをさすのであって
ポインタで繋いだ場合は別のデータ構造だと思うの

146 :138:2011/10/04(火) 22:58:14.22
>>143
スレ違いにならない範囲でいくなら、C99で char[m][n];

>>144
もしそこに不安を抱いていたなら、p + i*N + j; のような演算をしてこなかったということ?

147 :デフォルトの名無しさん:2011/10/04(火) 23:03:18.66
>>146
多次元配列でその計算が必要になることがないし

規格を読んでも日本語が難解でよくわからないなw
今度勉強しよう

148 :デフォルトの名無しさん:2011/10/04(火) 23:31:44.67
>>146
C99のはalloca()の糖衣構文らしいな
便利でいいんだけど下位の次元が可変という事はいちいちメモリにアクセスしたり
レジスタを食うわけで1次元配列で代用したくなる

149 :デフォルトの名無しさん:2011/10/04(火) 23:44:51.71
なんかややこい話になってる。配列が出てくるといつもこうだ!!

というのはさておき、1次元配列で代用ってどういうことだろ。同じことになりそうな…?
C99だとallocaを複数回つかって配列のポインタ配列が生み出されているということ?(つまり連続領域じゃない)

150 :デフォルトの名無しさん:2011/10/04(火) 23:54:45.84
[1]□→□□□□□□□□□
[2]□→□□□□□□□□□
[3]□→□□□□□□□□□
[4]□→□□□□□□□□□
[5]□→□□□□□□□□□
[6]□→□□□□□□□□□
[7]□→□□□□□□□□□
[8]□→□□□□□□□□□
[9]□→□□□□□□□□□

151 :デフォルトの名無しさん:2011/10/05(水) 04:00:14.04
int * data = (int*)malloc(sizeof(int) * w * h);
Int ** a2d = (int **)malloc(sizeof(int*)* h);

for(i =0; i != h; ++I)
a2d[i] = data + w;

a2d[x][y] = 100;

free(a2d);
free(data);

152 :デフォルトの名無しさん:2011/10/05(水) 04:03:05.23
* iを忘れてるね
これだからiPhoneは困る

153 :デフォルトの名無しさん:2011/10/05(水) 10:47:56.50
符号なし整数のビット幅はCHAR_BITS * sizeof(uint_type)

これってどこの処理系に行っても通用するの?


154 :デフォルトの名無しさん:2011/10/05(水) 10:56:26.03
>>151
いろいろおかしいだろ

155 :デフォルトの名無しさん:2011/10/05(水) 22:23:02.96
http://codepad.org/bsGYVXWW

ここまでは出来たんだが、
学生別平均 学生1:0.0 学生2:0.0 学生3:0.0 学生4:0.0
科目別平均 科目1:0.0 科目2:0.0 科目3:0.0

とこんなふうに出力表示を出すにはどうすればいいのでしょうか?

156 :デフォルトの名無しさん:2011/10/05(水) 23:01:53.54
まず、iとjがなんだかごっちゃになってしまっているのを直す。
numが学生ごとの合計だと思うけど、それを元に学生別平均を出そうとしていることはわかる。
なので、科目ごとの合計を入れる配列を用意すればいけるのではないか。
そのあとで、あちらこちらの計算間違いを直せばいいと思う。

157 :デフォルトの名無しさん:2011/10/06(木) 03:58:11.32
>>155
マルチか。

158 :デフォルトの名無しさん:2011/10/06(木) 20:54:16.04
星が2つ付いたポインタがどうしても理解できない。
char **argv
char *argv[]

上はポインタのポインタで下はポインタの配列。
全く違うものだよね。
ていうかポインタのポインタって何なんだ。
何の意味があるんだ。

159 :デフォルトの名無しさん:2011/10/06(木) 21:06:29.76
>全く違うものだよね。
同じじゃね?

>ていうかポインタのポインタって何なんだ。
>何の意味があるんだ。
データのソートの時にデータ自体の入れ替えが要らないから速いよ。
テキストエディタとかでもポインタ配列使うと、一行消した時に前に詰めるデータ転送が少量ですむ。

160 :デフォルトの名無しさん:2011/10/06(木) 21:22:44.03
うん

161 :デフォルトの名無しさん:2011/10/06(木) 21:53:49.43
bccというコンパイラは7の64bitでも使えますか?

162 :デフォルトの名無しさん:2011/10/06(木) 22:21:05.59
struct p2{char(*a)[2];char x0[8];}; 8バイト+sizeof(char*)+sizeof(char*)
struct a2{char a[2][4];}; 8バイト

違う。全くといってイイほど違う。

163 :デフォルトの名無しさん:2011/10/06(木) 22:41:01.92
あっそ。

164 :デフォルトの名無しさん:2011/10/06(木) 22:41:40.59
http://codepad.org/s6uDYxtq
このコードは規格上安全ですか?

165 :デフォルトの名無しさん:2011/10/06(木) 22:47:46.67
先頭アドレスの一致は大丈夫だろうけど
みなし配列化はパディング入る可能性があるから規格以前の問題じゃないかな

166 :デフォルトの名無しさん:2011/10/06(木) 22:51:47.58
bccというコンパイラは7の64bitでも使えますか?

167 :デフォルトの名無しさん:2011/10/06(木) 22:59:38.90
>>166
使えるけどbcc自体の評価が微妙。

168 :デフォルトの名無しさん:2011/10/06(木) 23:02:24.31
変数の名前ってどのくらいの長さまでなら許せる?

169 :デフォルトの名無しさん:2011/10/06(木) 23:41:02.44
>>158
なんの意味があるかと言われても、実際あるんだからcharと同じくらいの意味はあるでしょ。


>>159
ポインタを指すポインタと、ポインタの配列は別物だよ。
ただし、関数のプロトタイプ宣言中の仮引数並びでは、配列がポインタに成り下がるので
同じになるけどね。

char *a[] = {"foo", "bar", "boo"};

func(a);

とした時のfuncに渡る仮引数の型がchar **

170 :デフォルトの名無しさん:2011/10/06(木) 23:49:33.70
概念の違いよりも
ポインタの配列ならコンパイル時に要素数の情報が参照できる
ポインタのポインタではできない
この違いのほうが重要

171 :デフォルトの名無しさん:2011/10/07(金) 00:44:50.80
int main(int argc, char* argv[]) 派
int main(int argc, char** argv) 派

172 :デフォルトの名無しさん:2011/10/07(金) 02:08:28.73
書籍 Cプログラミングの非常識
4.9 char *argv[]の正しい意味
...
argvを使用する立場からは、char *argv[]という書き方のほうが意味がはっきりする
が、構造的な意味合いからはchar **argvの方がより明示的であろう。
...

4.10 char a[]とchar *aの違い
...
char a[10];
func(a);
func(char b[])
{
...
}
において、char b[]の代わりにchar *bとしても全く同じである。
...
ところが
char a[]="hello";

char *a="hello";
は異なる。


173 :デフォルトの名無しさん:2011/10/07(金) 10:24:39.17
win32apiで作った同じウィンドウ内の複数のエジットコントロール間を
Tabで移動できるようにするにはどうしたらいいの?

174 :デフォルトの名無しさん:2011/10/07(金) 11:37:45.04
WS_TABSTOP

175 :デフォルトの名無しさん:2011/10/07(金) 15:21:56.47
ある構造体のメンバのサイズを知りたいんですが
どうしたらいいですかね!

176 :デフォルトの名無しさん:2011/10/07(金) 15:23:54.28
ゆっくりしていってね!!!

177 :175:2011/10/07(金) 15:27:04.68
自己解決しました

178 :デフォルトの名無しさん:2011/10/07(金) 17:07:07.88
その結果がこれだよ!!!

179 :デフォルトの名無しさん:2011/10/07(金) 17:09:13.79
滞在時間ものの5分。

180 :デフォルトの名無しさん:2011/10/07(金) 19:02:28.52
質問です。

linuxのC言語でシステムCALLを使っています。
ret=system("ls > hoge.txt")

上記でlsの一覧をテキストに貼り付けそそテキストをopenしたいのですが、
systemでcallされた命令が終了するまで待機するにはどうすればよいのでしょうか?

ret = system("ls > hoge.txt");
while(WIFEXITED(ret) == FALSE); //システムコールが終了するまで待機の予定

ではダメみたいでした・・・

181 :デフォルトの名無しさん:2011/10/07(金) 19:04:36.70
fork


182 :デフォルトの名無しさん:2011/10/07(金) 19:30:39.25
>>181
調べましたけど、チンプンカンプンです。
土日の宿題ができました^^;


183 :デフォルトの名無しさん:2011/10/07(金) 19:49:31.03
>>180
lsの結果を欲しいということなら、popen使っても良いんじゃないかな?

184 :デフォルトの名無しさん:2011/10/07(金) 19:50:00.75
>>182
system()は同期関数だから返ってきた時点でls > hoge.txtは終了している。

185 :デフォルトの名無しさん:2011/10/07(金) 19:50:19.35
system, exec, fork のクソ命令は覚えるまで脳みそに丁寧にすりこんどけ
その臭いがとれなくなるまで嗅げ


186 :デフォルトの名無しさん:2011/10/07(金) 20:01:45.31
楽しようとして、苦しんでる人がいるとは

187 :デフォルトの名無しさん:2011/10/07(金) 21:54:40.49
>楽しようとして、苦しんでる人がいるとは

これこそ、プログラミングの神髄

188 :デフォルトの名無しさん:2011/10/07(金) 22:00:20.09
いかにサボるかを常に考え続けているからこそ苦しむ

189 :デフォルトの名無しさん:2011/10/07(金) 22:35:30.28
>>180
>>183のいうpopenを使うのが正統派だと思う。

$ ls | hoge

ってしている感じになる。

190 :デフォルトの名無しさん:2011/10/07(金) 23:22:19.08
横フォローだけど、lsの結果をファイルに保存することも必須なら、teeコマンドを併用するといいよ

191 :デフォルトの名無しさん:2011/10/08(土) 03:08:53.44
さっき別の板で貼ってあったんですが
これって何をしてるんですか?

.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
vip:
.ascii "Hello World!!¥0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
pushl %ebp
movl %esp, %ebp
andl $-16, %esp
subl $16, %esp
call ___main
movl $vip, (%esp)
call _puts
leave
ret
.def _puts; .scl 2; .type 32; .endef

192 :デフォルトの名無しさん:2011/10/08(土) 03:17:49.62
main() { puts("Hellow World!!"); }
してるだけちゃうか。

193 :デフォルトの名無しさん:2011/10/08(土) 05:08:07.10
このディレクティブとかオペランドの順序、gasでがすか?

194 :デフォルトの名無しさん:2011/10/08(土) 15:49:31.49
あるファイルをfopenで開いて書き込み処理をしてfcloseした後、また同じファイルをfopenで開こうとするとエラーが起こります。
エラーが起こらない時もあるのですが、その時はfclose後に数秒経ってからアクセスしていました。
fcloseが完了するのって数秒経たないといけない仕様なのでしょうか?

195 :デフォルトの名無しさん:2011/10/08(土) 15:55:12.26
気のせいか、環境のせい

196 :194:2011/10/08(土) 16:02:21.31
環境を書くの忘れてました。
OSはWindowsXPでVC++2008EEです。


197 :デフォルトの名無しさん:2011/10/08(土) 16:03:40.68
>>194
普通そんなことはない、バグか環境の問題。

198 :デフォルトの名無しさん:2011/10/08(土) 16:22:49.56
排他処理
コードみせて


199 :デフォルトの名無しさん:2011/10/08(土) 16:25:45.61
ウィルス対策ソフトが絡むなんてないか?

200 :838:2011/10/08(土) 16:46:40.51
うん

201 :194:2011/10/08(土) 16:55:43.92
>>195 >>197
別プロセスでロック掛かっているのを発見しました。
お騒がせしました。

202 :デフォルトの名無しさん:2011/10/08(土) 21:02:57.36
いえいえ

203 :デフォルトの名無しさん:2011/10/09(日) 02:19:49.96
関数ポインタとかビットフィールド構造体とか詳しく載せてるサイトご存知の方いらっしゃいますか?
書籍でもよいです。

204 :デフォルトの名無しさん:2011/10/09(日) 02:53:41.15
おいおまえら大変なことが判明したぞ。
http://codepad.org/JcSveevb
floatとdoubleで、速度差が全く無いだと!?


205 :デフォルトの名無しさん:2011/10/09(日) 02:58:01.30
ベクトル化とかをやらない限りは
そういう結果もありえる

206 :デフォルトの名無しさん:2011/10/09(日) 03:01:52.98
だな

207 :デフォルトの名無しさん:2011/10/09(日) 03:04:22.79
float使うのは情弱
情強はdoubleオンリー

208 :デフォルトの名無しさん:2011/10/09(日) 03:07:22.06
つまりDirectXは(ry

209 :デフォルトの名無しさん:2011/10/09(日) 03:20:31.91
サイズの方が問題
メモリを使いすぎるばかりか、キャッシュ効率も悪くなる


210 :デフォルトの名無しさん:2011/10/09(日) 03:27:56.92
>>204
CPUによる。x86ならfloatもdoubleも80bitで演算されるから基本そう変わらん。
もちろんサイズや型変換やコンパイラ/オプションにもある程度よるが。

211 :デフォルトの名無しさん:2011/10/09(日) 08:02:07.16
速度が違うだろうとはわかっていても
精度をおとすわけにはいかない

最近の64bitのwin7だと、doubleは何バイトっていえるの?

212 :デフォルトの名無しさん:2011/10/09(日) 09:28:22.58
昔からdoubleは8バイトと決まっておる。

213 :デフォルトの名無しさん:2011/10/09(日) 11:56:41.22
サイズがOSに依存するのはintだけじゃなかったけ?

214 :デフォルトの名無しさん:2011/10/09(日) 12:13:57.97
違う。仕様的にはほぼすべて環境依存。

215 : ◆QZaw55cn4c :2011/10/09(日) 12:18:46.23
ちょっと前のスレでは float の方が速い、double 使う奴はアホ、とのたまっていた方がいたんですけど。

216 : ◆QZaw55cn4c :2011/10/09(日) 12:19:40.87
ああ宿題スレのほうでしたかね。

217 :デフォルトの名無しさん:2011/10/09(日) 12:20:06.71
速さはそれぞれなんじゃね

218 :デフォルトの名無しさん:2011/10/09(日) 12:28:48.32
>>215
そんなレベル低いんならお前はコテ外せよ。
よく恥ずかしくないな。

219 :デフォルトの名無しさん:2011/10/09(日) 13:31:42.17
クズは速度云々言う資格ないだろw
ゴミみたいなクソ遅いコードしか書けないんだから

220 :デフォルトの名無しさん:2011/10/09(日) 14:08:04.88
http://codepad.org/1G201YE0
doubleよりfloatの方が2倍速いだろ

221 :デフォルトの名無しさん:2011/10/09(日) 15:51:50.75
>>220
お前はスレタイも読めんのか。

222 :デフォルトの名無しさん:2011/10/09(日) 15:55:11.23
fpu floatとfpu doubleの差は動作時の誤差って思える。
実は両方ともdoubleで実行してたりして

223 :デフォルトの名無しさん:2011/10/09(日) 15:55:19.15
スレタイ読んでない奴ばっかでしょ

224 :デフォルトの名無しさん:2011/10/09(日) 16:07:10.21
環境依存

225 :デフォルトの名無しさん:2011/10/09(日) 16:10:20.63
早くc言語おしえてくれよ><

226 :デフォルトの名無しさん:2011/10/09(日) 16:28:11.34
>>222
だからx86なら内部80bit演算だと言っとろうが。

227 :デフォルトの名無しさん:2011/10/09(日) 16:50:50.45
>>225
質問来てないだろ><

228 :デフォルトの名無しさん:2011/10/09(日) 17:07:39.82
このプログラムを 101010
010101
101010
...
という風に、一行ごとに1と0の順が変わるようにしたいのですが上手くいきません
どなたか教えていただけないでしょうか

http://codepad.org/I1zOpg0r

229 :デフォルトの名無しさん:2011/10/09(日) 17:16:49.07
質問させてください。
行列の指数計算(eの行列乗というか)をC言語で行いたいのですが、利用できる関数などはあるのでしょうか。

230 :デフォルトの名無しさん:2011/10/09(日) 17:22:08.30
y%2

231 :デフォルトの名無しさん:2011/10/09(日) 17:26:57.34
>>228
if((x+y)%2==0)

232 :デフォルトの名無しさん:2011/10/09(日) 17:48:37.48
>>228
printf("%c",'1'-(x+y)%2);


233 :デフォルトの名無しさん:2011/10/09(日) 22:28:26.40
if (x%2^y&1 == 0)

234 :デフォルトの名無しさん:2011/10/10(月) 01:00:29.04
int x,y;

235 :デフォルトの名無しさん:2011/10/10(月) 03:15:22.41
>>229
数値的にやるなら... 行列の乗算でテーラー展開だっけ? まずは対角化とか... とか?

こういう一般的なプログラムのスレより数値計算に詳しそうな人がいるスレで
聞いた方がいいかもね。あとどれだけ数学的知識があっての質問かにもよりそう。

236 :デフォルトの名無しさん:2011/10/10(月) 06:11:48.53
singned char = 0xff;

これが-1になるのは処理系依存でしょうか?

237 :デフォルトの名無しさん:2011/10/10(月) 08:39:47.15
サインドキャラで表す事が出来るのは127から−128まで、0xffは255

238 :デフォルトの名無しさん:2011/10/10(月) 09:24:33.97
整数型で表現できる値より大きい値を入れようとした場合は未定義です。処理系のマニュアルを参照してください


239 :デフォルトの名無しさん:2011/10/10(月) 10:27:52.54
>>229
Cには全然ない。
計算だけしたいならC++使って、まず行列関連のクラス作ってからやった方が速い。


240 :デフォルトの名無しさん:2011/10/10(月) 10:35:27.29
>>237-238
d


241 :デフォルトの名無しさん:2011/10/10(月) 12:44:25.82
C言語で開発されている方って動作テストする時一々コンパイルしているんですか?
コンパイルに時間がかかって大変じゃないですか?

242 :デフォルトの名無しさん:2011/10/10(月) 12:50:57.53
昔にくらべたら天国だよ

243 :デフォルトの名無しさん:2011/10/10(月) 12:57:33.95
そのためのライブラリだよ

244 :デフォルトの名無しさん:2011/10/10(月) 13:31:35.60
make -jすれば4倍速だしな。

245 : ◆QZaw55cn4c :2011/10/10(月) 14:54:11.03
そのための分割コンパイルですね。最近は makefile も自動生成できることですし。

246 :デフォルトの名無しさん:2011/10/10(月) 15:10:17.91
いつの時代だよ。makefileの自動生成なんて何十年も前からあるわ。

247 :デフォルトの名無しさん:2011/10/10(月) 15:23:33.76
相変わらず浅そうだ

248 :デフォルトの名無しさん:2011/10/10(月) 15:29:33.26
知ったかぶりの屑に反応すんなよw

249 :デフォルトの名無しさん:2011/10/10(月) 15:31:18.80
Qは20年前で成長が止まっている馬鹿ですから

250 :デフォルトの名無しさん:2011/10/10(月) 15:32:55.62
C言語で1/3*1の答えを1/3か0.3(1/3に近いもの)にする方法を教えて下さい

251 :デフォルトの名無しさん:2011/10/10(月) 15:33:04.02
なるほど、そういうことか。

252 :デフォルトの名無しさん:2011/10/10(月) 15:34:04.85
>>250
1.0/3*1

253 :デフォルトの名無しさん:2011/10/10(月) 15:41:43.39
>>252
できました、迅速な回答ありがとうございました

254 :デフォルトの名無しさん:2011/10/10(月) 15:42:45.50
*1はいらんけどな。

255 :デフォルトの名無しさん:2011/10/10(月) 16:59:36.59
>>235 >>239
ありがとうございます。C++で頑張ってみます。

256 :デフォルトの名無しさん:2011/10/11(火) 04:56:08.05
サンプルプログラムのソースコードとか眺めてたら関数の引数の定義で
main(argc, argv)
int argc;
char **argv;
{
}
な感じの定義があったんだけど
引数の定義を丸括弧の外側に出すってどこのC言語の入門書にも書いてなくて
これってどういうことなの?

257 :デフォルトの名無しさん:2011/10/11(火) 05:03:18.41
古い形式

258 :デフォルトの名無しさん:2011/10/11(火) 08:19:51.80
この形式って便利なのにC++だと使えないんだよな。なんでだろう


259 :デフォルトの名無しさん:2011/10/11(火) 08:23:35.47
どういうとき便利なんだろう

260 :デフォルトの名無しさん:2011/10/11(火) 17:20:39.59
バグをコンパイラのせいにするとき便利

261 :デフォルトの名無しさん:2011/10/11(火) 20:37:29.44
はあ?

262 :デフォルトの名無しさん:2011/10/11(火) 21:51:53.61
引数にコメントを付けたいとき便利じゃね?

263 :デフォルトの名無しさん:2011/10/11(火) 21:58:55.08
int main(
int argc、
char **argv
)
こうすれば書けるよ

264 :デフォルトの名無しさん:2011/10/11(火) 22:05:31.36
matrix4x4(m11, m12, m13, ...); double m11, m12, m13, ...: m11(m11), ... {}

こういう時に型を一回書くだけでいいから楽ちん

265 :デフォルトの名無しさん:2011/10/11(火) 22:06:24.35
>>264
すごい納得いった

266 :デフォルトの名無しさん:2011/10/11(火) 22:15:53.07
それって配列で渡した方がよくね?

267 :デフォルトの名無しさん:2011/10/11(火) 22:16:31.87
関数のプロトタイプ宣言は使えなくなるけどな

268 :デフォルトの名無しさん:2011/10/11(火) 23:26:29.37
可変長ってことか・・・

269 :デフォルトの名無しさん:2011/10/12(水) 12:48:19.92
入門書で
printf("%d\n", a)
こういう風にa前にスペースが入ってるのはなんのためですか?

スペース入れない
printf("%d\n",a)
でも同じように表示されるのですが…

270 :デフォルトの名無しさん:2011/10/12(水) 12:55:48.46
プログラマのおっさんはもれなく目が悪いので間が開いてるほうが見やすいのです


271 :デフォルトの名無しさん:2011/10/12(水) 12:57:28.49
,の手前は空けない、,の後は空ける。
これは世界の常識。

272 :デフォルトの名無しさん:2011/10/12(水) 13:34:49.90
両方空けるわ
二項演算子の前後は1スペースが普通だろ
カンマでも同じ

273 :デフォルトの名無しさん:2011/10/12(水) 13:40:22.47
カンマ演算子の場合は空けて、そうじゃ無いときは空けない

274 :デフォルトの名無しさん:2011/10/12(水) 13:41:05.85
非常識なやつだな。

275 :デフォルトの名無しさん:2011/10/12(水) 13:44:12.82
>>272
,は二項演算子ではない。

276 :デフォルトの名無しさん:2011/10/12(水) 13:47:18.15
>>269
心にゆとりを持つため

277 :デフォルトの名無しさん:2011/10/12(水) 14:50:41.97
>>269
試しにaの前にタブやら改行やら入れてみては?


278 :デフォルトの名無しさん:2011/10/12(水) 17:24:19.32
>>269ですが回答ありがとうございました。

ようするに一行空けと同じような感じで , の後は見易くするためスペース空けるものという程度の理解で先に進んでみます

279 :デフォルトの名無しさん:2011/10/12(水) 18:26:16.85
>>278
うん。
その辺がコーディングスタイルというものになって、論争のタネになる。

280 :デフォルトの名無しさん:2011/10/12(水) 21:18:06.90
>>278
プログラムコード以前に、英文とかアルファベットの文章の場合、カンマの後に
スペースを入れる習慣があるでしょ。もちろん見やすさのためにね。
英語のサイトとか見てごらん。

281 :デフォルトの名無しさん:2011/10/13(木) 02:07:14.83
質問です。
txtファイルからfscanfでwhileループなどを使って何行もデータを取り出していくときに、
なにも書きこまれていない行が出てきたら、そこは取り出さずに取り出し作業を終了する
にはどうすればよいのでしょうか?

282 :デフォルトの名無しさん:2011/10/13(木) 02:21:50.47
strlen()==0じゃだめなん?

283 :デフォルトの名無しさん:2011/10/13(木) 08:10:47.16
>>281
取り合えず取り出してからチェックして捨てるといいよ
そのほうがプログラムも簡単になるし、マシンへの負荷も小さい

284 :デフォルトの名無しさん:2011/10/13(木) 09:26:00.17
>>282
なるほど、それで文字列の個数を読み取って、0のとき終了すればいいんですね。
ありがとうございます><

>>283
そうなんですか。
ちなみに何も書きこまれていないデータを読み取った後、
どのようにしてそれだけを捨てれば良いのでしょうか?

285 :デフォルトの名無しさん:2011/10/13(木) 10:31:18.07
Cにこだわらないならそういうのはperlでやりゃいい
空白文字だけの行をスキップするとか
そりゃもういろいろできる

perlはテキストを行ごとに処理すんのに特化してるから
餅は餅屋


286 :デフォルトの名無しさん:2011/10/13(木) 11:11:42.62
Cの生みの親が死んじゃった・・・・・・


287 :デフォルトの名無しさん:2011/10/13(木) 13:27:25.17
K&RのRが死去

288 :デフォルトの名無しさん:2011/10/13(木) 13:36:49.95
糞C++を作ったストラウストラップの野朗が代わりに死ねばよかった


289 :デフォルトの名無しさん:2011/10/13(木) 13:45:54.97
https://twitter.com/#!/sfmnemonic/status/124306785371824128

Dennis Ritchie (1941-2011).
His pointer has been cast to void *;
his process has terminated with exit code 0.


290 :デフォルトの名無しさん:2011/10/13(木) 15:34:32.77
【訃報】C言語の開発者、デニス・リッチー氏が死去--享年70 [10/13]
http://toki.2ch.net/test/read.cgi/bizplus/1318487508/


291 :デフォルトの名無しさん:2011/10/13(木) 16:59:45.98
組み込み系です。
CAN通信のライブラリ探してコーネル大学のソースにブチあたったんですが
サブルーチンの開始が { ではなく
BEGIN

終了が } ではなく
END
とかになっててPascal風味で気持ち悪いんですが
こういうの流行ったんですかね?

292 :デフォルトの名無しさん:2011/10/13(木) 17:09:23.96
リッチー…R.I.P

293 :デフォルトの名無しさん:2011/10/13(木) 18:50:22.75
>>291
昔はね。
我慢して読もう。

294 :デフォルトの名無しさん:2011/10/13(木) 21:52:33.92
自分で読むだけなら置換すればいいよな。

295 :デフォルトの名無しさん:2011/10/13(木) 23:52:06.17
>>285
どうしてもCでやらなければいけないんです><
pearもそのうち学びたいですね。

296 :デフォルトの名無しさん:2011/10/14(金) 00:04:19.16
>>282
すいません、今更ですが、文字だけでなく、数字データがあるかどうかも知りたいんです

297 :デフォルトの名無しさん:2011/10/14(金) 00:14:54.18
>>296
#include <stdio.h>
#include <ctype.h>

int is_contain_digit(char *p)
{
while (*p) {
if (isdigit(*p++)) return 1;
}
return 0;
}

int main()
{
puts(is_contain_digit("foo1") ? "digit found." : "digit not found.");
puts(is_contain_digit("foo") ? "digit found." : "digit not found.");
puts(is_contain_digit("1bar") ? "digit found." : "digit not found.");
}

298 :デフォルトの名無しさん:2011/10/14(金) 00:17:01.15
演習問題とかやってんなら、
「空白」とか「数字」というのはisalpha()とかisdigit()とかそういうので一文字ずつ判定して
いったりするようなコードを想定しているんじゃ?

299 :デフォルトの名無しさん:2011/10/14(金) 00:21:10.28
しまった、リロードすべきだった。あと空白はisspace()か。手が滑った

300 :デフォルトの名無しさん:2011/10/14(金) 02:00:30.12
>>298
いろいろ試しましたがうまくいきません。

例えば、point.txtの中が
458
769
483

だった場合、どうにかして3行数字があるなとわからせて
fscanfを3回実行するというようなプログラムにしたいんです。

301 :デフォルトの名無しさん:2011/10/14(金) 02:42:20.80
どうしてもそのフローでやりたいのなら、まず読んで、各行がどのようなものかを把握したあとで、先頭に戻って再度読み直す。

302 :デフォルトの名無しさん:2011/10/14(金) 02:59:27.04
int n = 2;
int hoge[n] = {1, 2};
のように可変長配列を初期化しようとするとコンパイラに怒られるんですけど何でですか?

303 :デフォルトの名無しさん:2011/10/14(金) 03:01:25.26
>>302
C99を使えばいいと思います

304 :デフォルトの名無しさん:2011/10/14(金) 03:02:27.87
>>303
早速どうもです
C99使ってるんですけど警告が出ます

305 :デフォルトの名無しさん:2011/10/14(金) 03:26:00.61
ファイルを読まないと何があるかわからないのに、それを先にわかれって言うのは無理だろw

306 :デフォルトの名無しさん:2011/10/14(金) 03:30:25.43
せめて警告をそのまま貼れ

307 :デフォルトの名無しさん:2011/10/14(金) 03:36:53.86
直感的に要素数の指定をしつつ初期化子を使った初期化は組み合わせられない気がするんだけどなぁ。
そういうエラーとか出てないの?

初期化子よりも要素が少ないとき、あふれた分は無視されるという挙動を期待しているのかな。


308 :デフォルトの名無しさん:2011/10/14(金) 03:47:06.69
>>300
そのデータなら単に毎回 fscanf(fp, "%d", &i) みたいのを呼べばいいんじゃないの?
もっと具体的にどう駄目なんだ?

一般的な話としてfscanf()/scanf()は入力のフォーマットがしっかり決まってるときに
しか普通使わない/使えない。
で普通はfgets() + sscanf()にしたりする。どうしてもfscanf()でいくなら、毎回戻り値を
チェックして0だったら入力を捨てるとか、そういう処理が必要になってくるが大丈夫?

309 :デフォルトの名無しさん:2011/10/14(金) 06:04:29.53
main() { printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}

310 :デフォルトの名無しさん:2011/10/14(金) 06:25:20.98
>>306-307
Variable-sized object may not be initialized.
です。

311 :デフォルトの名無しさん:2011/10/14(金) 07:32:18.05
intにconstつけれ

312 :デフォルトの名無しさん:2011/10/14(金) 11:16:17.54
const付けたら可変長配列ではなくなる。
そもそも可変長なのに初期化子使いたいって…

313 :デフォルトの名無しさん:2011/10/14(金) 14:02:43.83
vector<int> hoge = {1, 2};

※ただしC++0x以降に限る。

314 :デフォルトの名無しさん:2011/10/14(金) 14:45:42.66
>302
>何でですか?
コンパイルの時点で「この関数はローカル変数にこれだけメモリを消費する。」
って決めうちしてるからじゃね?

malloc()使え。

315 :デフォルトの名無しさん:2011/10/14(金) 15:09:36.54
>>302
int [] = {1,2};


316 :デフォルトの名無しさん:2011/10/14(金) 15:10:21.90
あ、[]のあとにhoge忘れた


317 :デフォルトの名無しさん:2011/10/14(金) 15:27:07.13
>>310
ああやっぱ無理なんだね。
で、無理を通そうとしてるの?

318 :デフォルトの名無しさん:2011/10/14(金) 15:27:08.52
>>315
なんだ>>302が望んでたのはこれか。
可変長配列なんかいらなかったんだ。

319 :デフォルトの名無しさん:2011/10/14(金) 18:11:08.22
プロセス間、スレッド間で共有ロックをおこなうのに
いい方法を教えてください

320 :デフォルトの名無しさん:2011/10/14(金) 18:20:30.26
pthread semaphore

321 :デフォルトの名無しさん:2011/10/14(金) 19:06:31.66
>>320
共有ロックです

322 :デフォルトの名無しさん:2011/10/14(金) 19:17:52.57
構造体メンバーのサイズを性的に知るマクロって
標準的な環境(POSIXとか)で用意されてますか?

323 :デフォルトの名無しさん:2011/10/14(金) 19:40:32.12
>>322
offsetof というマクロがあるから、それをヒントに作って見れば?

324 :デフォルトの名無しさん:2011/10/14(金) 19:41:22.20
>>321
pthread_rwlock

325 :デフォルトの名無しさん:2011/10/14(金) 19:41:45.19
>>322
サイズならsizeof

326 :デフォルトの名無しさん:2011/10/14(金) 20:26:05.99
>>323
車輪の再開発して、友達に噂とかされると、恥ずかしいし・・・。

327 :デフォルトの名無しさん:2011/10/14(金) 20:31:17.38
>>326
struct X {
 int a;
 char b[3];
 int c;
};

#define Sizeof(s,m) sizeof(((s *)0)->m)

printf("[%d]\n",Sizeof(struct X, b));

328 :デフォルトの名無しさん:2011/10/14(金) 20:41:14.55
C++ならsizeof(X::b)とできるんだけどな。

329 :デフォルトの名無しさん:2011/10/14(金) 20:49:19.63
txtファイルの中の任意の場所に文字を書き込む方法はありませんか?

例えば下の「とまと」と「だいすき」の間に「も」を入れて
「とまともだいすき」にしたりとかです。

/**********test.txt***********
はんばーぐおいしい
とまとだいすき
****************************/

330 :デフォルトの名無しさん:2011/10/14(金) 20:54:57.41
sytem("sed s/とまと/とまとも/ text.txt");

331 :デフォルトの名無しさん:2011/10/14(金) 21:13:30.13
>>330
ありがとうございます。
このプラグラムで実行したら警告が出たのですがどうすればよいのでしょうか?

/*******************q.c**************************************************
#include <stdio.h>
#include <stdlib.h>
int main(void){

sytem("sed s/とまと/とまとも/ test.txt");


return 0;
}
************************************************************************/

/******************cmd***************************************************
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
q.c:
警告 W8065 q.c 5: プロトタイプ宣言のない関数 'sytem' の呼び出し(関数 main )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_sytem' が未解決(D:\C_PROGRAMMING\Q.OBJ が参照)
**************************************************************************

332 :デフォルトの名無しさん:2011/10/14(金) 21:15:23.46
system

333 :デフォルトの名無しさん:2011/10/14(金) 21:26:22.88
>>332
脱字でしたかwすいません。
次はコンパイルは通ったのですが、実行ができません。
何が原因なのでしょう?
/**********************cmd**********************************
D:\C_programming>bcc32 q.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
q.c:
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland

D:\C_programming>q
'sed' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
*************************************************************/

334 :デフォルトの名無しさん:2011/10/14(金) 21:27:04.07
>>327
それが恥ずかしいって話でしょ

335 :デフォルトの名無しさん:2011/10/14(金) 21:27:28.44
Windowsならsedは無いぞ。

336 :333:2011/10/14(金) 21:30:15.68
>>335
/(^o^)\

337 :デフォルトの名無しさん:2011/10/14(金) 21:30:37.81
>>327
Sizeof という名前は紛らわしいしダサいので、
公式または準公式、デファクトスタンダード的な名称があれば
おしえてください

338 :デフォルトの名無しさん:2011/10/14(金) 21:30:53.65
mainの引数ってコンパイルしたexeファイルは無理でしたっけ?
実用的じゃないですか?

コマンドライン上で数字を打ち込んでそれを引数にするのは現実的ですが
exeファイルを引数にするってどういうときでしょうか?


339 :デフォルトの名無しさん:2011/10/14(金) 21:31:42.50
>>337
デファクトスタンダードは sizeof だろw

340 :デフォルトの名無しさん:2011/10/14(金) 21:36:17.64
>>338
ランチャーとかモニターとかデバッグとか解析とか、色々ある

341 :デフォルトの名無しさん:2011/10/14(金) 21:38:00.47
>>338
自分の名前で挙動を変えるとかな。

342 :デフォルトの名無しさん:2011/10/14(金) 21:39:00.82
>>340
こういうの無理ですかね?

Hello.cはGoodBye.cをコンパイルし実行するプログラムとか。

GoodBye.cを実行したらいいって言ったら身も蓋もないんですが

ソースファイルでそういうプログラム作れるのかなと。

343 :デフォルトの名無しさん:2011/10/14(金) 21:45:14.39
作れる。

344 :デフォルトの名無しさん:2011/10/14(金) 21:45:55.78
#include <stdio.h>

int main(void)
{
  system("cc GoodBye.c; ./a.exe");
  return 0;
}


345 :デフォルトの名無しさん:2011/10/14(金) 21:48:09.08
仕様書を読ませると、プログラム設計書、プログラム本体、試験結果報告書を出力してくれるプログラムを作ってくれ

346 :デフォルトの名無しさん:2011/10/14(金) 21:48:53.58
>>344
すごいですね、systemとか初めて知った・・
じゃぁGoodBye.cの実行結果を引数にするプログラムは作れますか?


347 :デフォルトの名無しさん:2011/10/14(金) 21:51:22.97
その様な理想を目指したプロジェクトはたくさん有った、有る、お国のプロジェクトもあった。
しかし、広い分野で一般化できた(成功した)話しは聞かない。

348 :デフォルトの名無しさん:2011/10/14(金) 21:52:03.65
>>346
作れる

349 :デフォルトの名無しさん:2011/10/14(金) 21:52:20.51
仕様書記述言語を開発すればすぐに出来上がるよ

350 :デフォルトの名無しさん:2011/10/14(金) 21:56:06.18
system("cc GoodBye.c; ./a.exe | ./program");


351 :デフォルトの名無しさん:2011/10/14(金) 21:57:24.67
>>348
そうなんですか?
テキストファイルをmain引数にすることはできるけど、Cファイルの出力を引数
にする方法がわかりません。

Hello.cはGoodBye.cを引数にして、GoodBye.cの出力結果である文字goodbye
の文字数を数えるプログラムみたいなの無理でしょうか?

352 :デフォルトの名無しさん:2011/10/14(金) 21:57:37.09
>>349
簡単に作れるなら今がチャンス。大もうけできるぞw

353 :デフォルトの名無しさん:2011/10/14(金) 21:58:36.18
>>351
だから、できるって

354 :350:2011/10/14(金) 21:58:43.06
これじゃだめか…

355 :デフォルトの名無しさん:2011/10/14(金) 22:00:48.43
>>354
いえいえ、systemとかいう関数知りませんでした。ありがとうございます。

356 :デフォルトの名無しさん:2011/10/14(金) 22:08:43.01
CUIのコマンドで | でしたっけ?

これを使うとエクゼファイルの出力を入力にすることができるのは知っているのですが、
こういうコマンドを使わずに、エクゼファイルを引数にする場合はsystem使うしかないのですか?




357 :350:2011/10/14(金) 22:14:55.68
これでできたわ
system("cc GoodBye.c; ./program `./a.exe`");

358 :デフォルトの名無しさん:2011/10/14(金) 22:20:12.87
>>357
いやコマンドライン上でGoodBye.cを入力したいんですが。

359 :デフォルトの名無しさん:2011/10/14(金) 22:23:50.63
>>358
そう言うシェル作れ、簡単だから。

360 :350:2011/10/14(金) 22:25:22.21
#include <stdio.h>

int main(int argc, char* argv[])
{
  char cmd[100];
  sprintf(cmd, "cc %s; ./program `./a.exe`", argv[1]);
  system(cmd);
  return 0;
}

361 :デフォルトの名無しさん:2011/10/14(金) 22:27:31.89
>>359
cygwinあるのでそこらへんダイジョーベです。

>>360
やっぱり初心者には難しいプログラムになるんですね・・

|使うと簡単なソースプログラムでいいんですが・・



362 :デフォルトの名無しさん:2011/10/14(金) 22:39:53.98
仕様書記述言語で書けばすぐに出来上がりますが
その仕様書は四則演算レベルまで正確に規格通りに仕様を記述しないとうまくいきません

363 :デフォルトの名無しさん:2011/10/14(金) 22:48:32.78
殆どプログラムソースを書いている感じ

364 :デフォルトの名無しさん:2011/10/14(金) 22:58:58.46
>>349
あるよ

365 :デフォルトの名無しさん:2011/10/14(金) 22:59:50.23
>>339
sizeofはもうすでにあるから使えないよ。

366 :デフォルトの名無しさん:2011/10/14(金) 23:03:03.08
>>336
http://gnuwin32.sourceforge.net/
\(^o^)/

367 :デフォルトの名無しさん:2011/10/14(金) 23:15:06.00
「性的に」知りたいのか・・・

368 :デフォルトの名無しさん:2011/10/14(金) 23:16:13.28
リッチー死去 享年70歳

369 :デフォルトの名無しさん:2011/10/14(金) 23:21:27.89
>>334
そんなこといってもこの記述自体が車輪であるから、回答としては、マクロは用意されていないが有名なidiomならある、だろう。

370 :デフォルトの名無しさん:2011/10/14(金) 23:54:05.21
#include <stdio.h> /* >>329 */
#include <string.h>
int main(void) {
    char buffer[128], c[128], to[128];
    char *p;
    const char head[] = "とまと";
    const char body[] = "も";
    const char tail[] = "だいすき";
    int length;
    strcpy(c, head);
    length = strlen(c);
    strcat(c, tail);/* とまとだいすき */
    strcpy(to, head);
    strcat(to, body);/* とまとも */
    for(;;) {
        p = fgets(buffer, sizeof(buffer), stdin);
        if(p == NULL) break;
        p = strstr(buffer, c);
        if(p != NULL) {
            *p = '\0';
            fputs(buffer, stdout);
            fputs(to, stdout);
            p = p + length;
            fputs(p, stdout);
        } else {
            fputs(buffer, stdout);
        }
    }
    return 0;
}

371 :370:2011/10/14(金) 23:56:20.50
bcc32 between.c
between < text.txt

372 :デフォルトの名無しさん:2011/10/15(土) 00:02:47.21
>>370
strcpy(c, head);
この時点でアウト

373 :350:2011/10/15(土) 00:07:48.76
とまとだいすき

374 :370:2011/10/15(土) 00:09:37.67
おまえにいってない

375 :デフォルトの名無しさん:2011/10/15(土) 00:13:50.74
フフ

376 :333:2011/10/15(土) 00:55:02.06
>>370
ありがとうございます。
ちなみにそのプログラムのどこに何を追加すれば
test.txtを>>329のように修正できるのでしょうか?

377 :デフォルトの名無しさん:2011/10/15(土) 02:09:02.19
できないよ。
バグを直したとして、
./a.out < test.txt > /tmp/test.txt && mv /tmp/test.txt .
ってやればできる

378 :333:2011/10/15(土) 02:53:02.10
ユーザ関数内でファイルオープン&ファイルの内容を読み取ることはできますか?

379 :デフォルトの名無しさん:2011/10/15(土) 02:57:47.04
心配しなくてもすべてのことはできる。

380 :333:2011/10/15(土) 03:03:01.00
>>379
方法おしえてください

381 :デフォルトの名無しさん:2011/10/15(土) 03:05:03.46
openしてreadすればいい。

382 :デフォルトの名無しさん:2011/10/15(土) 08:43:32.34
>>378
こんなのでいいのか
http://codepad.org/kRotkDew

383 :デフォルトの名無しさん:2011/10/15(土) 10:24:15.36
>>339
sizeofはデファクトスタンダードじゃなくて、ただのスタンダードだろ。

384 :382:2011/10/15(土) 11:22:24.86
修正
http://codepad.org/fZ9LeXKt

385 :333:2011/10/15(土) 11:38:39.83
>>384
Pathの部分に、自分が読み込みたいファイルの"te.txt"を入れて
コンパイルしたら以下の警告が出てきてしまいました・・・

警告 W8057 test.c 26: パラメータ 'path' は一度も使用されない(関数 read_file_print )

386 :デフォルトの名無しさん:2011/10/15(土) 12:34:21.14
>>369
じゃあ デファクトになりそうなレベルのかっこういい名称を
考えてみませんか?

387 :デフォルトの名無しさん:2011/10/15(土) 12:43:14.58
いい加減>>333はC言語を勉強し直した方がいい

388 :333:2011/10/15(土) 12:47:14.64
分からないなら答えないで下さい
うざいです

389 :382:2011/10/15(土) 13:01:15.63
>>385
http://codepad.org/XtcxEhR2

390 :333:2011/10/15(土) 14:15:22.83
同じようなものを何度も書かれてもわかりません
もっとわかりやすいものをください

391 :デフォルトの名無しさん:2011/10/15(土) 15:27:14.54
おまえはアホか

392 :デフォルトの名無しさん:2011/10/15(土) 15:31:50.34
コミュ障すぎワロタw

393 :デフォルトの名無しさん:2011/10/15(土) 16:03:02.88
なりすましだろ

394 :333:2011/10/15(土) 16:06:07.56
>>391>>392
2ch初心者は10年ROMってろ

395 :デフォルトの名無しさん:2011/10/15(土) 16:32:21.24
Cに触れたばかりの中学生かストレスが溜まり過ぎた底辺SEというところか

396 :デフォルトの名無しさん:2011/10/15(土) 16:33:42.69
>同じようなものを何度も書かれてもわかりません

こんな事書く時点で嘘だろ

397 :333:2011/10/15(土) 16:51:51.16
>>393
よくわりましたね

398 :333:2011/10/15(土) 16:54:53.74
>>388>>390はぼくの偽物です^^;
>>389を試してみたところ、コンパイルできましたが、起動すると
動作が停止しました・・・

399 :デフォルトの名無しさん:2011/10/15(土) 17:29:53.30
>>333の人気に嫉妬

400 :デフォルトの名無しさん:2011/10/15(土) 17:30:26.59
>>398
× if ((fp = fopen(path, "r")) < 0) return;
○ if ((fp = fopen(path, "r")) == NULL) return;

401 :333:2011/10/15(土) 18:09:33.76
>>400
見事に表示されました!ありがとうございます、これで無事家に帰れます^^

402 :デフォルトの名無しさん:2011/10/15(土) 18:16:37.06
昨日から泊り込みでやってたの?

403 :333:2011/10/15(土) 18:19:26.21
>>402
うん。

404 :デフォルトの名無しさん:2011/10/16(日) 17:29:43.54
Cです
JavaでのarrayListなどのように
プログラムの途中で要素を追加したり、逆に削除したり
ということはCではできないのでしょうか?

405 :デフォルトの名無しさん:2011/10/16(日) 17:31:51.30
>>404
誰かに作ってもらうか、自分で作るしかない。

406 :デフォルトの名無しさん:2011/10/16(日) 17:34:17.16
>>405
ありがとうございます
要素の追加削除や配列の要素数の変更など
色々なところでJavaに比べて難しいですね・・・
どうするかちょっと考えたいと想います

407 :デフォルトの名無しさん:2011/10/16(日) 17:36:44.63
自己参照構造体使って自分で作る

408 :デフォルトの名無しさん:2011/10/16(日) 17:36:58.35
今時なんでCなんてやってんの?
やるならC++だろ。

409 :デフォルトの名無しさん:2011/10/16(日) 17:41:45.44
>>406
そのへん自由にしたければ、C#やれ。 普通に使えるぞ

410 :デフォルトの名無しさん:2011/10/16(日) 17:49:04.87
>>406
DBを利用するという手もある

411 :デフォルトの名無しさん:2011/10/16(日) 17:49:37.63
名前は聞いたことはあるものの
CとC++とC#の違いも正直よく分かっていないので
それなら一番基本そうなCで作っています・・・
自己参照構造体は聞いたこともありませんでしたので、今ぐぐって読んで何とかやってみます

412 :デフォルトの名無しさん:2011/10/16(日) 17:58:38.31
C言語によるスーパーLinuxプログラミングにライブラリが紹介されてたような気がする

413 :デフォルトの名無しさん:2011/10/16(日) 18:01:43.11
Cはアセンブラに近い言語だから、細かい指示が必衰。メモリー管理必衰。
C++は、低級も高級も仮想化もメタもOOPも何でもできるが、複雑な子。メモリー管理必衰。
Java、C#は殆どのメモリー管理は言語任せ。だから、管理しなくても書ける。

414 :デフォルトの名無しさん:2011/10/16(日) 18:25:47.72
>>413
鼻水フイタw

415 :デフォルトの名無しさん:2011/10/16(日) 18:27:48.49
盛者必衰の理をあらはす

416 :デフォルトの名無しさん:2011/10/16(日) 19:07:06.82
C#を出さなければJava厨乙っていえたのに、立場がわかりにくいです><

417 :デフォルトの名無しさん:2011/10/16(日) 19:39:02.97
そこじゃない

418 :デフォルトの名無しさん:2011/10/16(日) 19:53:38.65
本人からしたら何に鼻水ふかれてるのかもよくわからないんだな

419 :デフォルトの名無しさん:2011/10/16(日) 20:01:41.81
つーか、今時Cだけの処理系とか存在すんのか?

420 :デフォルトの名無しさん:2011/10/16(日) 20:08:41.97
組み込み用のマイコンとかはCしかないものだらけでしょう

421 :デフォルトの名無しさん:2011/10/16(日) 20:13:33.26
あぁ、PICとかか。
組み込みっても大きいのはみんなgccベースだろうしな。

422 :デフォルトの名無しさん:2011/10/16(日) 20:56:03.89
>>413
もしかして:必須

423 :デフォルトの名無しさん:2011/10/16(日) 20:59:23.31
誤字指摘する人久しぶりに見た

424 :デフォルトの名無しさん:2011/10/16(日) 21:01:18.62
いやこれは誤字ではなく誤記だと思う。

425 :デフォルトの名無しさん:2011/10/16(日) 21:03:55.44
誤記でもなくてただのアホだろ。

426 :デフォルトの名無しさん:2011/10/16(日) 21:04:17.97
そうだね
なんかごめん好きなだけ馬鹿にして

427 :デフォルトの名無しさん:2011/10/16(日) 21:47:47.12
哀執

428 :デフォルトの名無しさん:2011/10/16(日) 21:54:07.85
デイト?

429 :デフォルトの名無しさん:2011/10/16(日) 22:25:45.40
親切でいいことじゃないか

430 :デフォルトの名無しさん:2011/10/16(日) 23:35:23.51
>>417
そこを含めてだったのに何でわかってもらえなかったかが不思議
必衰してる行を見てほしい

431 :デフォルトの名無しさん:2011/10/16(日) 23:41:27.26
うん

432 : 忍法帖【Lv=21,xxxPT】 :2011/10/17(月) 11:40:04.33
やさしいC→明解C言語中級編 と来たら次は??

433 :デフォルトの名無しさん:2011/10/17(月) 11:47:37.53
新版明解C言語中級編

434 :デフォルトの名無しさん:2011/10/17(月) 15:23:55.51
プログラミングなら、エディタのマクロでもできる(マクロがあるエディタを利用)
エディタのマクロでできないことがCでできるのだ。
マクロがないエディタ(メモ帳など)で、マクロがほしいなぁとおもったらCでプログラミングする。

435 :デフォルトの名無しさん:2011/10/17(月) 15:39:25.88
なんのこっちゃ(・ω・`)

436 :デフォルトの名無しさん:2011/10/17(月) 16:15:00.57
秀丸使いは頭のおかしい人が多いということ

437 :デフォルトの名無しさん:2011/10/17(月) 16:33:34.71
java script の演算でフォームを作って
変数a+b=xの計算をやるプログラムを作ったのですが
xの値をかえた時に式が正しくなる方法を教えてください。

438 :デフォルトの名無しさん:2011/10/17(月) 16:35:17.37
ここはC言語のスレ。

439 :デフォルトの名無しさん:2011/10/17(月) 19:00:05.03
                        ,、ァ
                      ,、 '";ィ'
________              /::::::/l:l
─- 、::::;;;;;;;;;`゙゙''‐ 、    __,,,,......,,,,_/:::::::::/: !|
  . : : : : : : `゙'ヽ、:::゙ヾ´::::::::::::::::::::::`゙゙゙'''‐'、. l|   またまた ご冗談を
、、 . : : : : : : : : r'":::::::::::::::::::::::::,r':ぃ::::ヽ::::::::ヽ!                 ,、- 、
.ヽ:゙ヽ; : : : : : :ノ:::::::::::::::::::::;;、-、、゙:::     rー-:'、                /   }¬、
. \::゙、: : : :./::::::::::::::;、-''"::::::::::   ,...,:::,::., :::':、           _,,/,,  ,、.,/   }
   ヽ:ヽ、 /:::::::::::::::::::::::::     _  `゙''‐''"  __,,',,,,___       /~   ヾ::::ツ,、-/
     `ヽ、:::::::::;;;、、--‐‐'''''',,iニ-    _|  、-l、,},,   ̄""'''¬-, '  ''‐-、 .,ノ'゙,i';;;;ツ
   _,,,、-‐l'''"´:::::::'  ,、-'" ,.X,_,,、-v'"''゙''yr-ヽ / ゙゙'ヽ、,    ,.'      j゙,,, ´ 7
,、-''"    .l:::::::::::;、-''"  ,.-'  ゙、""ヾ'r-;;:l  冫、     ヽ、 /    __,,.ノ:::::ヽ. /
       l;、-'゙:   ,/       ゞ=‐'"~゙゙') ./. \    /  '''"/::::;:::;r-''‐ヽ
     ,、‐゙ ヽ:::::..,.r'゙         ,,. ,r/ ./    ヽ.   ,'     '、ノ''"   ノ
   ,、‐'゙     ン;"::::::.       "´ '゙ ´ /      ゙、 ,'            /
  '     //:::::::::            {.        V           /
        / ./:::::::::::::            ',       /         /
.    /  /:::::::::::::::::.            ',.     /   ,.、     /

440 :デフォルトの名無しさん:2011/10/17(月) 19:02:18.63
     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶


441 :デフォルトの名無しさん:2011/10/17(月) 21:03:14.42
みんなの中でも、C言語のすれだろ

442 :デフォルトの名無しさん:2011/10/17(月) 21:06:23.74
       ____         / ̄ ̄ ̄\
       /___ \      /  ___ ヽ
    /  |´・ω・`|  \    /   |´・ω・`| \ みんな〜
   /     ̄ ̄ ̄   \  / _,    ̄⊂二二)
   |  i          ヽ、_ヽl |        |
  └二二⊃         l ∪  |          |
     |   ,、___,    ノ    |    ,、   |
     ヽ_二コ/   /     ヽ  / \  /
   _____/__/´     __ヽノ____`´

443 :デフォルトの名無しさん:2011/10/17(月) 21:10:21.49
>>440
これ誰?
ミンキーモモ?

444 :デフォルトの名無しさん:2011/10/17(月) 22:13:14.77
産地の異なるワインの味覚成分を正規化した特徴量として数値化した。
産地ごとの標準的なワインの特徴量と未知のワインの特徴量を比較して
未知のワインがどの産地かを当てよ。
ヒント:パターン認識、最短距離法、ノルム(ユークリッドノルム)
<実行結果例>
産地ごとの標準的なワインの特徴量
酸味 渋味 甘味
産地A: 0.70 0.50 0.60
産地B: 0.60 0.70 0.50
産地C: 0.50 0.60 0.70
未知のワインの特徴量
酸味 渋味 甘味
1番目: 0.63 0.67 0.51 →このワインは産地Bです
2番目: 0.46 0.61 0.65 →このワインは産地Cです
3番目: 0.73 0.48 0.59 →このワインは産地Aです
4番目: 0.48 0.57 0.69 →このワインは産地Cです
5番目: 0.63 0.69 0.48 →このワインは産地Bです
6番目: 0.73 0.52 0.58 →このワインは産地Aです
7番目: 0.54 0.61 0.66 →このワインは産地Cです
8番目: 0.57 0.74 0.51 →このワインは産地Bです
9番目: 0.72 0.48 0.55 →このワインは産地Aです

scanf はしなくていいんでこれをC言語でお願いします

445 :デフォルトの名無しさん:2011/10/17(月) 22:37:42.86
>>444
#include <stdio.h>
typedef struct{ double params[3]; }wine_t;
int main(void){
wine_t base[]={
{{0.70, 0.50, 0.60}}, {{0.60, 0.70, 0.50}}, {{0.50, 0.60, 0.70}}
};
wine_t target[]={
{{0.63, 0.67, 0.51}}, {{0.46, 0.61, 0.65}}, {{0.73, 0.48, 0.59}},
{{0.48, 0.57, 0.69}}, {{0.63, 0.69, 0.48}}, {{0.73, 0.52, 0.58}},
{{0.54, 0.61, 0.66}}, {{0.57, 0.74, 0.51}}, {{0.72, 0.48, 0.55}}
};
int i, j, k;
char *result=NULL, *place_name[]={"産地A","産地B","産地C"};
double min_distance=0.0, distance, diff;
for(i=0;i<9;i++){
for(j=0;j<3;j++){
distance=0.0;
for(k=0;k<3;k++){
diff=(target[i].params[k]-base[j].params[k]);
distance+=diff*diff;
}
if(j==0 || min_distance>distance){
result=place_name[j];
min_distance=distance;
}
}
printf("%d番目: %.2f %.2f %.2f →このワインは%sです\n", i+1, target[i].params[0], target[i].params[1], target[i].params[2], result);
}
return 0;
}

446 :デフォルトの名無しさん:2011/10/17(月) 23:46:35.17
>>443
超絶美少女ゆのさまです

447 :デフォルトの名無しさん:2011/10/18(火) 01:30:43.74
>>94
違う

448 :デフォルトの名無しさん:2011/10/18(火) 01:33:38.59
>>447
何が違うのか説明してみて

449 :デフォルトの名無しさん:2011/10/18(火) 02:52:30.64
>>448
mainでのreturnを、コンパイラがexitと同様になるようにしてたり、してない場合もある。

450 :デフォルトの名無しさん:2011/10/18(火) 10:40:58.94
>>448
生成されたコードをデバッガに掛けてみればすぐに分かることだが、return 0;では
そのままeaxやraxに0を持って終了するのに対し(x86やx64の場合)、exit(0)では
ご丁寧にexit()をcallしている場合が多い

これだけでもはっきりと生成コードに違いがある場合があるのだから、>>94みたいに
「int main() 内に置く return と exit() については一緒。」と言い切るのは馬鹿の
所業としか言いようがない

451 :デフォルトの名無しさん:2011/10/18(火) 10:43:50.07
exitは開いてるストリームを閉じて一時ファイルを削除します
returnとは違うんですよ

452 :デフォルトの名無しさん:2011/10/18(火) 10:45:42.12
>>451
プログラムの終了時にも開いているストリームは閉じられて一時ファイルは削除されるんですけど

453 :デフォルトの名無しさん:2011/10/18(火) 11:00:29.10
/* S.c */
#include <stdio.h>
int main(void)
{
int r,s;
printf("円の半径入力=");
scanf("%d",&r);
s = r*r*3.14;
printf("円の面積= %d",s);

return 0;
}

Ubuntu gcc環境だと日本語部が化けます。どうにかなりませんでしょうか?

454 :デフォルトの名無しさん:2011/10/18(火) 11:01:08.89
>>452
それは気をきかせてるだけ
C言語はreturnの場合はべつに閉じなくてもいい

455 :デフォルトの名無しさん:2011/10/18(火) 11:08:15.11
>>454
>プログラムの終了時

456 :デフォルトの名無しさん:2011/10/18(火) 11:43:33.90
return と exit の動作の違いを調べようとJISのサイトで規格表を見ようとしているんだが
どうやらうちの環境では表示できないようだ。
Acrobat 8では見られたんだが、最新のXでは表示できない…
みんなはどう?

457 :デフォルトの名無しさん:2011/10/18(火) 11:59:09.82
system("pause")に相当する、外部プログラムを呼ばない方法を教えてください。

458 :デフォルトの名無しさん:2011/10/18(火) 12:08:38.97
void Pause(void)
{
cout << "適当に入力してEnterで終了" << endl ;
char c ;
cin >> c ;
}
int main(void)
{
Pause() ; return 0 ;
}

459 :デフォルトの名無しさん:2011/10/18(火) 12:36:22.11
>>445
素早いご回答ありがとうございます。
私は初心者なのでtypedef structというのがわかりません。
どのような意味なのでしょうか?

460 :デフォルトの名無しさん:2011/10/18(火) 12:46:58.77
任意のキー1つで進める方法はありませんか?

461 :デフォルトの名無しさん:2011/10/18(火) 12:56:27.01
getch();

462 :デフォルトの名無しさん:2011/10/18(火) 13:39:48.79
kbhit

463 :デフォルトの名無しさん:2011/10/18(火) 14:50:21.06
>>458
スレタイも読めんのか?

>>459
条件つけるなら先に書け。意味が判らないなら調べろ。

464 :デフォルトの名無しさん:2011/10/18(火) 14:50:34.91
ありがとうございます。
これでpauseと同じことができそうです。

465 :デフォルトの名無しさん:2011/10/18(火) 15:05:34.83
>>463
うざいwww

466 :デフォルトの名無しさん:2011/10/18(火) 15:39:11.66
>>465
おまえがな。

467 :デフォルトの名無しさん:2011/10/18(火) 15:43:58.19
>>463
ポインタ無しでお願いします。

468 :デフォルトの名無しさん:2011/10/18(火) 15:49:50.87
>>467
>444をポインタなしでということなら、ほぼ無理です。諦めましょう。

469 :デフォルトの名無しさん:2011/10/18(火) 17:18:31.04
>>463
融通聞かない頭カチカチの老害乙

470 :デフォルトの名無しさん:2011/10/18(火) 17:28:11.32
アセンブリ勉強したいのですが、アセンブリの勉強=アセンブリ言語を組む
ということでしょうか?良くわからないので教えてください。

C言語の勉強=とりあえずC言語でプログラムを書くってのが勉強の手法ですよね。



471 :デフォルトの名無しさん:2011/10/18(火) 17:29:09.95
同時にコンパイラの勉強もしたいです。

コンパイラとアセンブリは似たようなものですか?いずれもコンピュータの
根幹の機能だと思うのですが・・

472 :デフォルトの名無しさん:2011/10/18(火) 17:30:58.41
>>471
本を読め。

473 :デフォルトの名無しさん:2011/10/18(火) 17:32:42.93
>>470-471
推薦図書スレでオススメの本を聞いて
それで勉強すればおk

474 :デフォルトの名無しさん:2011/10/18(火) 17:33:54.45
>>472
何をしたらいいかわからない・・

C言語の場合、とりあえず組むんだなと思って専門書を読み始めるのですが

コンパイラ、アセンブリの場合何をするのかわからない、理論を学ぶのか、
それとも何か組んだりするのか、入門者の場合何したらいいですか?



475 :デフォルトの名無しさん:2011/10/18(火) 17:39:55.73
コンパイラの本なんて腐るほど出てるから適当に本屋で眺めてよさそうなの持って買えればいいじゃん

476 :665:2011/10/18(火) 17:43:51.17
>>475
コンパイラ勉強したら何できます?個人で。

大学なんですが光や通信なんてのは大規模な設備必要っぽいから
個人でできないってわかるんですが。

477 :デフォルトの名無しさん:2011/10/18(火) 17:44:55.83
>>476
コンパイラの勉強をしたらコンパイラを作るのが普通。

478 :デフォルトの名無しさん:2011/10/18(火) 17:45:17.77
コンパイラの勉強をしても、こんなしょっぱなから人に聞いてばかりの君には何も出来ないと思うよ

479 :デフォルトの名無しさん:2011/10/18(火) 17:49:21.69
>>477
なるほどコンパイラは作るもんなんですか・・
そのコンパイラってのは集積回路のことですか?
それともソフトウェアのこと?

>>478
ノーベル賞とった偉人は人に良く質問するという、あるあるがあるんで。

480 :デフォルトの名無しさん:2011/10/18(火) 17:50:17.32
>>479
残念だが、お前には何もできない。

481 :デフォルトの名無しさん:2011/10/18(火) 17:50:55.96
>>479
ノーベル賞とうような人がする質問とお前の質問は全く別物だから勘違いしないように

482 :デフォルトの名無しさん:2011/10/18(火) 17:51:38.51
>>480
阪大生ですが何か?

483 :デフォルトの名無しさん:2011/10/18(火) 17:52:18.39
阪大のレベルの低下が懸念されるな

484 :デフォルトの名無しさん:2011/10/18(火) 17:55:06.20
阪大は俺でも入れるくらいだからたいしたことはない
そもそも高校生から全く成長して無くても阪大生名乗れるしなw

485 :デフォルトの名無しさん:2011/10/18(火) 17:55:59.58
>>484
2行目日本語でオーケー牧場

486 :デフォルトの名無しさん:2011/10/18(火) 17:57:36.37
>>485
大学入ったあと何もしてないぼんくらでも一生懸命勉強した奴でも肩書きは同じ大学の学生ってことだろ
文字読むときは脳みそ動かして読めよまじで


487 :デフォルトの名無しさん:2011/10/18(火) 17:59:56.51
>>485
受験時にボーダー超えてるかどうかにしかすぎないってこと

488 :デフォルトの名無しさん:2011/10/18(火) 18:00:11.61
c言語で色々と作りたいんですけどどうすればいいんですか?

489 :デフォルトの名無しさん:2011/10/18(火) 18:00:25.30
>>479
コンパイラの勉強をする前に、コンパイラとは何かくらい調べたら?
国語辞典くらい持ってるでしょ?

490 :デフォルトの名無しさん:2011/10/18(火) 18:01:00.45
>>484
阪大生か?

ここにいる奴らでコンパイラとか勉強してる人はやっぱ大卒?

491 :デフォルトの名無しさん:2011/10/18(火) 18:02:31.15
日本人でノーベル賞取ったやつらより俺のほうが頭良いと思う
あいつらよりプログラミングの能力においては俺のほうが上な自信あるww
化学とか物理とかだろ?情報学で俺に勝てる奴いない

492 :デフォルトの名無しさん:2011/10/18(火) 18:06:07.93
>>491
実験で使うためにプログラム組んだりしてるかもよ?
実際どうなのか知らないけど

493 :デフォルトの名無しさん:2011/10/18(火) 18:07:12.16
C言語ってjavaに比べたら機能少なすぎない?

ゲーム作るならjava以外ありえないよな・・



494 :デフォルトの名無しさん:2011/10/18(火) 18:07:47.60
>>493
標準ライブラリがすべてではないだろ

495 :デフォルトの名無しさん:2011/10/18(火) 18:10:51.92
コンパイラが何かも調べられないやつには何もできない。

496 :デフォルトの名無しさん:2011/10/18(火) 18:11:20.47
>>493
環境次第。

497 :デフォルトの名無しさん:2011/10/18(火) 18:12:20.10
>>494
いやいやw
標準ライブラリ以外ですごいんじゃない?

パッケージやボクシング、オーバードライブなど全ては
クラス指向向きのための魔法だけど、そういうのCにあるの?

498 :デフォルトの名無しさん:2011/10/18(火) 18:12:53.95
>>495
調べて200字で説明せよって言われて説明できるやつはいないよ。
難しすぎる。

499 :デフォルトの名無しさん:2011/10/18(火) 18:14:50.46
天才で暇を持て余してるならファミコンのプログラムのnesasmを出力するCコンパイラ作ってくれ

500 :デフォルトの名無しさん:2011/10/18(火) 18:14:56.05
誰もそんなことは言っていない。

501 :デフォルトの名無しさん:2011/10/18(火) 18:16:11.28
>>497
今時Cはないって。
普通C++。ゲーム機ならC++だろ。

502 :デフォルトの名無しさん:2011/10/18(火) 18:22:39.25
>>499
日本語でOK

Cコンパイラでファミコンの機能を作れってことか?

パソコンにコントローラー繋いでゲームしたらマシンパワーがすごくて
動作が快適すぎたりしないの?

503 :デフォルトの名無しさん:2011/10/18(火) 18:24:05.04
快適すぎて何が問題なんだ。

504 :デフォルトの名無しさん:2011/10/18(火) 18:25:52.10
C言語でファミコンソフトを開発できるようにしてほしいってことだけど難しい日本語だったかなあ

505 :デフォルトの名無しさん:2011/10/18(火) 18:27:54.86
>>504
それだとコンパイラだけじゃなく開発環境そのものが必要になっちまうだろ。

506 :デフォルトの名無しさん:2011/10/18(火) 18:29:03.21
>>503
ファミコンの内部集積ベースにあうようなコンパイラプログラムを作れということでしょ?
ファミコンでも快適に動くコンパイラプログラムなのにそれをそのまま作ってWindowsとかで動かした快適すぎて逆にバグじゃね?
マリオ時速何キロ出るんだろう。



マシンパワーに見合ったコンパイラを作らないと意味ないんじゃないですか?

507 :デフォルトの名無しさん:2011/10/18(火) 18:30:13.70
>>506
速度調整できるエミュレータでおk

508 :デフォルトの名無しさん:2011/10/18(火) 18:30:38.79
>>504
>>502はまだ日本に来て日が浅いんだ。許してやってくれ。

509 :デフォルトの名無しさん:2011/10/18(火) 18:31:15.74
ゲ製行けよ

510 :デフォルトの名無しさん:2011/10/18(火) 18:31:25.57
>>507
そんなのバグを認めてるみたいじゃん

511 :デフォルトの名無しさん:2011/10/18(火) 18:33:22.48
>>510
実機速度で動かせるってことだよ

512 :デフォルトの名無しさん:2011/10/18(火) 18:34:04.89
コンパイラを作る意味が分からない。
C言語の環境があればプログラムを組むことさえできたら処理内部の情事なんて
どうでもよくないですか?

513 :デフォルトの名無しさん:2011/10/18(火) 18:35:38.62
>>512
動かすつもりはないの?

514 :デフォルトの名無しさん:2011/10/18(火) 18:35:44.35
>>512
学者とか専門の人は必要なんじゃね?

515 :デフォルトの名無しさん:2011/10/18(火) 18:35:45.79
そうですみんな自己顕示欲を満たしたくて新しい言語を作ってるんです

516 :デフォルトの名無しさん:2011/10/18(火) 18:36:33.83
>>456
英文なら持ってるよ。
一応、俺流の訳を付けておいた。

5.1.2.2.3 Program termination

1 If the return type of the main function is a type compatible with int, a return from the
initial call to the main function is equivalent to calling the exit function with the value
returned by the main function as its argument; reaching the } that terminates the
main function returns a value of 0. If the return type is not compatible with int, the
termination status returned to the host environment is unspecified.

main関数の戻り値の型がintと互換性のあるものなら、main関数の最初の呼出しからの復帰は、
main関数の戻り値を引数とするexit関数の呼出しと同等です。main関数を終了する } に到達
すると、0という値を返します。
戻り値の型がintと互換性がないならば、ホスト環境へ返される終了状態は特定されない。

517 :デフォルトの名無しさん:2011/10/18(火) 18:38:56.02
C言語で2Dアクション作りたいな。3Dのライブラリで2D作りたい。


518 :デフォルトの名無しさん:2011/10/18(火) 18:40:30.35
作ればいいじゃん

519 :デフォルトの名無しさん:2011/10/18(火) 18:42:05.18
バグっぽい動作も仕様としてあえていれたいんだけどどうしたらいい?


520 :デフォルトの名無しさん:2011/10/18(火) 18:44:37.14
実装すればいい

521 :デフォルトの名無しさん:2011/10/18(火) 18:45:41.63
自分で考えられないならゲームなんて無理

522 :デフォルトの名無しさん:2011/10/18(火) 18:46:30.31
スーパーDKのCGって神過ぎるんだけどあれを超えるアクションゲーが
未だに出ないのが不思議で仕方ない。


523 :デフォルトの名無しさん:2011/10/18(火) 18:51:29.78
>>512
作りたいから作るんだよ。
お前の作るプログラムこそどうでもいいわ。

524 :デフォルトの名無しさん:2011/10/18(火) 18:52:41.47
>>523
俺はゲームなど高次なものを作りたいんだよ。


525 :デフォルトの名無しさん:2011/10/18(火) 18:57:33.72
勝手に作れよ。

526 :デフォルトの名無しさん:2011/10/18(火) 18:57:37.17
ゲーム作るとか一人では不可能に近いよ。

527 :デフォルトの名無しさん:2011/10/18(火) 19:01:59.15
>499
   __,, , , , _ 、 ,,, ... ,, _ ..,_
 ー=、 、ー-、`ヽ、、ヽ`!i' , ,i",r'",-'"=ミ
    `ヽ`ヾ`、 ! ヽ ! l! i! !_i_/_<'"``
     `,ゝ、iliー'" "、,"、',  i, リ
      !/!,li ,;;-=o=-,ッィ=。ゥィ
  __  i、`!', '; `ー /;;!i、''; ,!
ー''`ヽ`,ーi'`''"!、ヽ , `一'、 /   __
    `il `i ! ヽ、   ̄ ̄ / iヽ、/ ,.ヽ_
     i! !`   `ーァ、-ー'  ! ノ!トi,!'",ノ-、
   ,..=、i! iヽ-、 rィ',;'!ヽー-、!  `/_,i' _,.!'、
ーニー-、._ `ヽゞニ-、.;' i! ! ,  `ト_ノ`x-'" ノ
=ニヽ、 , `, /ヾ=ソ ノ !/   !、`ー`''イ、
-ー-、 `i, / / ヽ `イ_,  i -'" ̄`! !   ヽ
   ゝノ /-'"  `   ' !    ヽ     !

   朝鮮に かえるんだな
   おまえにも 同胞がいるだろう・・・

528 :デフォルトの名無しさん:2011/10/18(火) 19:13:05.97
最初から丁寧に教えろください

529 :デフォルトの名無しさん:2011/10/18(火) 19:13:20.92
>>463のいう条件ってtypedef structを知らないということだろうか。

>>468
ほぼ、か。じゃあできるね。

530 :デフォルトの名無しさん:2011/10/18(火) 19:16:17.12
>>490
大学の授業でコンパイラってのがあったよ。
情報系なら大抵あるのかな

531 :デフォルトの名無しさん:2011/10/18(火) 19:23:40.50
>>528
まず、服を脱ぎます。

532 :デフォルトの名無しさん:2011/10/18(火) 19:33:04.71
脱ぎましたぞ
次はどうすればいいの?

533 :デフォルトの名無しさん:2011/10/18(火) 19:36:06.70
>>530
常識レベルの行列計算テクニックをまとめただけみたいな卒論らしきもの.pdfをネットで見かけたことがあるがよく見ると早稲田大学だった
一流の大学でこんなんだから学部でコンパイラなんて作らないのが普通なんじゃね?


534 :デフォルトの名無しさん:2011/10/18(火) 19:49:46.13
このスレのせいでC言語が余計に分かりにくくなった。
自分のテクニックや知識を披露するだけで相手の事何も考えてない。

535 :デフォルトの名無しさん:2011/10/18(火) 19:50:45.29
噛み砕けばアホみたいに分かりやすい事でも変な用語を混ぜるせいでいつも
引っかかる。本当にこのスレで質問して無駄に過ごした時間を返してほしい。


536 :デフォルトの名無しさん:2011/10/18(火) 19:53:06.47
>>535

つ時間  ほらよ

537 :デフォルトの名無しさん:2011/10/18(火) 19:59:44.69
回答者は常に腰を低くしとけよ。

538 :デフォルトの名無しさん:2011/10/18(火) 20:02:07.46
C言語を教えて誰か

539 :デフォルトの名無しさん:2011/10/18(火) 20:02:56.03
>>538
ほらよ。
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E
>>537
お前、頭おかしいってよく言われるだろ。

540 :デフォルトの名無しさん:2011/10/18(火) 20:03:46.29
>>539
優しい方ありがとう…

541 :デフォルトの名無しさん:2011/10/18(火) 20:12:54.28
ww

542 :デフォルトの名無しさん:2011/10/18(火) 20:13:33.26
>>539
基本的に教える側ってのは余裕があるんだから、腰低くして当然じゃないか?
教えられる側は混乱してるんだから多少イライラしてても仕方ないだろ。

543 :デフォルトの名無しさん:2011/10/18(火) 20:14:27.02
お前、頭おかしいってよく言われるだろ。

544 :デフォルトの名無しさん:2011/10/18(火) 20:15:05.44
C言語よくわからなかった
むずかしいんだな

545 :デフォルトの名無しさん:2011/10/18(火) 20:15:42.72
10文字程度の英数字を、32bitのハッチュ値にしたいんだけど
なんか短くてそこそこ性能のいい方法を教えてください。

546 :デフォルトの名無しさん:2011/10/18(火) 20:16:54.41
ハッチュ!

547 :デフォルトの名無しさん:2011/10/18(火) 20:20:11.56
"何でこんな事が分からないんだよ、ちょっと考えれば分かるだろ!!"
 ↑
これは典型的なブーメラン。IQ20のくせに人に物を教えようとするとこうなる。

548 :デフォルトの名無しさん:2011/10/18(火) 20:20:40.85
みんな頭良いのな

549 :デフォルトの名無しさん:2011/10/18(火) 20:21:52.19
>>542
読んだ人もいるであろう、ジョブズ29歳のインタビュー:
>教育におけるコンピューターは、批判なしで無限に対話してくれる存在としては
>書籍以来初めてのものになるでしょう。
http://www.gizmodo.jp/2011/07/29woplayboy.html

言い換えると、書籍とコンピュータ以外は
批判有りで有限にしか対話してくれない。

引きこもり以外はみんな身にしみて知ってる。
だから安易に人には聞かない。

550 :デフォルトの名無しさん:2011/10/18(火) 20:22:14.14
>>545
どういうハッシュ値が欲しいんだ。
適当でよければ+/*するなりXORするなりすればいいだろう。
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0

551 :デフォルトの名無しさん:2011/10/18(火) 20:24:44.24
>>547
IQ10が何言ってんだ。

552 :デフォルトの名無しさん:2011/10/18(火) 20:25:08.91
俺に最初から簡単に説明してくれる人いない?


553 :デフォルトの名無しさん:2011/10/18(火) 20:26:43.64
>>552
月5万円くれ
週に90分×2教えるから

554 :545:2011/10/18(火) 20:26:51.99
>>550
ずらしたりひっくり返したりした程度では同一判定されないレベル
な適当な感じでいいです。
標準関数に使えそうなのがあるならそれでいいや って感じ

555 :デフォルトの名無しさん:2011/10/18(火) 20:27:32.39
何がわからないか説明する能力にないヤツに説明するのは難しい

556 :デフォルトの名無しさん:2011/10/18(火) 20:28:49.40
適当でいいなら最初の4文字をシフトして終わり


557 :545:2011/10/18(火) 20:29:03.82
普通にCRC32とかそのあたり使えばいいんだよな。
存在忘れてたわ。 >>550ありがとう。

558 :デフォルトの名無しさん:2011/10/18(火) 20:29:19.17
>>555
C言語のことがです

559 :デフォルトの名無しさん:2011/10/18(火) 20:30:47.89
>>549
最終的には本に頼るしかないんかな・・
何か果てしないね。
>>555
説明する能力のある奴は、その場所だけ調べればいいだけだから質問なんてしないだろwwww
いるんだよな、わかっている事なのに確認のため質問する奴。

560 :デフォルトの名無しさん:2011/10/18(火) 20:33:56.37
みだりに信じてはいけない。確認のため左右へ問うことが大切と、韓非子は言いました

561 :デフォルトの名無しさん:2011/10/18(火) 20:40:21.79
ワザと頓珍漢な質問をする
間違った答えで自信満々で自己レスする
こうするとこう確率でちげーよバカつって答え教えてくれる本当の馬鹿が釣れる

562 :デフォルトの名無しさん:2011/10/18(火) 20:42:26.01
そうまでして人に頭を下げたくないの?
安いプライド守るために必死だなw

563 :デフォルトの名無しさん:2011/10/18(火) 20:42:48.17
>>561
wwww
その手法は良く使ってたww

564 :デフォルトの名無しさん:2011/10/18(火) 20:43:09.85
windowsでC言語のプログラムできないかな?

565 :デフォルトの名無しさん:2011/10/18(火) 20:44:14.31
>>562
いやいや、教える側はつけあがるからね。

"こんな事も分からないの!?!?"こんな事言う奴はぶん殴られてOK。




566 :デフォルトの名無しさん:2011/10/18(火) 20:46:45.86
>>565
高校出ても小学校の問題解けなかったりするから難しい話だな
えてしてそういう奴ほど>>565っぽい

567 :デフォルトの名無しさん:2011/10/18(火) 20:49:04.80
>>563
質問が低レベルなときに限るけどね

568 :デフォルトの名無しさん:2011/10/18(火) 20:49:05.73
>>564
VC++でも拡張子を.cにすればCでコンパイルしてくれるはず
一番楽なのはcodepad使う。これならiPadだってプログラミングできる。

569 :デフォルトの名無しさん:2011/10/18(火) 20:56:23.47
>>553
すくねーwwww
毎日はいれよww

570 :デフォルトの名無しさん:2011/10/18(火) 21:16:56.98
女『車のエンジンがかからないの…』
男『あらら?バッテリーかな?ライトは点く?』
女『昨日まではちゃんと動いてたのに。なんでいきなり動かなくなっちゃうんだろう。』
男『トラブルって怖いよね。で、バッテリーかどうか知りたいんだけどライトは点く?』
女『今日は○○まで行かなきゃならないから車使えないと困るのに』
男『それは困ったね。どう?ライトは点く?』
女『前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。』
男『…ライトは点く?点かない?』
女『○時に約束だからまだ時間あるけどこのままじゃ困る。』
男『そうだね。で、ライトはどうかな?点くかな?』
女『え?ごめんよく聞こえなかった』
男『あ、えーと、、ライトは点くかな?』
女『何で?』


571 :デフォルトの名無しさん:2011/10/18(火) 21:18:59.61
男『あ、えーと、エンジン掛からないんだよね?バッテリーがあがってるかも知れないから』
女『何の?』
男『え?』
女『ん?』
男『車のバッテリーがあがってるかどうか知りたいから、ライト点けてみてくれないかな?』
女『別にいいけど。でもバッテリーあがってたらライト点かないよね?』
男『いや、だから。それを知りたいからライト点けてみて欲しいんだけど。』
女『もしかしてちょっと怒ってる?』
男『いや別に怒ってはないけど?』
女『怒ってるじゃん。何で怒ってるの?』
男『だから怒ってないです』
女『何か悪いこと言いました?言ってくれれば謝りますけど?』
男『大丈夫だから。怒ってないから。大丈夫、大丈夫だから』
女『何が大丈夫なの?』
男『バッテリーの話だったよね?』
女『車でしょ?』
男『ああそう車の話だった』
女『もう、男って人の話聞かないんだから』
男『ごめん、ごめん。で、ライト点く?』
女『やっぱ怒ってんじゃん』
男『怒ってないってば』
女『絶対怒ってる。何カリカリしてるの? 人が大変な時に!』
男『いや、俺はただライトが付くかどうかを…』
女『話を逸らさないで! ライトがどうこうじゃなくて今あなたの話をしてるの!』

572 :デフォルトの名無しさん:2011/10/18(火) 21:50:28.21
>>559
本を読んで自習「できる」ってのも一つの能力なんだよな。
俺みたいにCの本を30冊以上買って読んでも
書けるのはハローワールドだけというとんでもないのもいる。

573 :デフォルトの名無しさん:2011/10/18(火) 21:52:30.53
>>572
ハローワールドだけで済まされるのは2〜3冊までだろう
なんで30冊も買っちゃったの?

574 :デフォルトの名無しさん:2011/10/18(火) 21:59:01.20
さすがにジョークだろう

575 :デフォルトの名無しさん:2011/10/18(火) 22:04:45.07
変数の定義や制御文を覚えたけど、それから先何をすればいいのかわからん
何ができるのかもわからん

576 :デフォルトの名無しさん:2011/10/18(火) 22:08:30.04
まず、何がやりたいか決めるんだ!

577 :デフォルトの名無しさん:2011/10/18(火) 22:13:53.20
他人のPCに侵入してヘローワールドさせるプログラムなら入門書30冊では難しい

578 :デフォルトの名無しさん:2011/10/18(火) 22:16:11.68
ハローワルドってwwネタ乙
チンパンジーに反復練習させて仕込んだらできるんじゃないかwww?

そんな俺も未だにゲーム作れないがw

579 :デフォルトの名無しさん:2011/10/18(火) 22:19:54.90
ならC++プログラムからnsfの再生ができるdllライブラリを作ってください
自作ゲームでnsf鳴らしたいんだ

580 :デフォルトの名無しさん:2011/10/18(火) 22:20:37.41
ハローワークって出して

581 :デフォルトの名無しさん:2011/10/18(火) 22:21:24.26
はっきりいってゲームはかなり難しい部類だよ



582 :デフォルトの名無しさん:2011/10/18(火) 22:37:51.09
撒き餌さ投稿ばっかだな。

583 :デフォルトの名無しさん:2011/10/18(火) 22:40:57.36
えささ?

584 :デフォルトの名無しさん:2011/10/18(火) 22:52:30.26
撒き餌(まきえ)
捲き餌さ(まきえさ)


よし、大丈夫だ、うちのFEP(死語)


585 :デフォルトの名無しさん:2011/10/18(火) 22:54:45.54
>>573
買った本がわからなかったから別の本を買った。
それを繰り返したらこうなった。
K&Rの緑と白から始まって足かけ何十年だろ。
今年も2冊くらい買ったがモノにならん。
Cのセンスがないんだろうなあ。

586 :デフォルトの名無しさん:2011/10/18(火) 23:07:24.50
N88BASIC→アセンブラ→C言語
この順に学べばOK!

587 :デフォルトの名無しさん:2011/10/18(火) 23:08:30.64
>>533
たしかに、ぐぐったらそんなに当たり前の授業ではないようだった。
三流なんだけどな…

卒論、卒研は玉石混交なんであまり。
インデントスタイルについて研究しました。でも卒業できるんじゃないかね。

588 :デフォルトの名無しさん:2011/10/18(火) 23:16:20.87
>>585
ありがちな住所録(コンソール)でもつくったら

589 :デフォルトの名無しさん:2011/10/18(火) 23:39:32.15
>>434
エディタ、ワープロのキーボードマクロ → エディタのマクロ → AWK → C
アセンブラは、NEC PC-98でリセットボタンのある機種でやったことがあるよ
暴走したらリセットをおしました

590 :デフォルトの名無しさん:2011/10/18(火) 23:44:07.65
情報系だけど卒論何書かされるんだろ
プログラミング書いて提出何てありえないだろうしww
怖いなぁ・・

591 :デフォルトの名無しさん:2011/10/18(火) 23:45:40.62
プログラミングを書くってなんか違うような

592 :デフォルトの名無しさん:2011/10/18(火) 23:45:56.97
strtok, scanfがきにいらないから自作してみるとか

593 :デフォルトの名無しさん:2011/10/18(火) 23:56:49.02
いや光とか結局工学系の事やるんだろうな・・
プログラミングは道具にすぎない・・


594 :デフォルトの名無しさん:2011/10/19(水) 00:35:50.17
C言語を一から覚えるのにオススメの本ある?


Cが覚えられなくて改造コードを作る毎日orz

595 :デフォルトの名無しさん:2011/10/19(水) 00:39:39.11
>>594
クライイング・ザ・C言語って本おすすめしない

596 :デフォルトの名無しさん:2011/10/19(水) 00:41:04.85
>>594
「改造コード」か
悪いことしてる自覚持てよ

597 :デフォルトの名無しさん:2011/10/19(水) 01:00:46.20
最近の質問の印象
  |   |  | |   |    |  | |   |   |   || | |
  |   |  | レ  |    |  | |   |  J   || | |
  |   |  |     J    |  | |  し     || | |
  |   レ |      |  レ|       || J |
 J      し         |     |       ||   J
             |    し         J|
             J                レ
     /V\
    /◎;;;,;,,,,ヽ
 _ ム::::(l|l゚Д゚)| …うわぁ
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

598 : ◆QZaw55cn4c :2011/10/19(水) 01:01:36.53
>>474
昔々、MS-DOS の時代ならば、OS の勉強をすることが、即アセンブリ言語を習得することだったんですけれども、今の時代はどうやってアセンブリ言語を勉強すればいいんでしょうかね。

>>447
ISO/IEC を調べていますのでしばしお待ちを。

599 : ◆QZaw55cn4c :2011/10/19(水) 01:04:38.87
>>516
おっと thnks.

600 : ◆QZaw55cn4c :2011/10/19(水) 01:06:45.08
>>549
>言い換えると、書籍とコンピュータ以外は
>批判有りで有限にしか対話してくれない。
残念ながら、対偶になっていません。論理学の勉強をお勧めします。

601 :デフォルトの名無しさん:2011/10/19(水) 01:43:39.91
>>600
バグだらけのプログラムしか書けないQが何を偉そうに「論理学」だあ?
千年早ええっつーの

602 : ◆QZaw55cn4c :2011/10/19(水) 02:12:33.32
>>601
即席で書いてるせいもあり多少のバグが混入して残念な想いではありますが、「バグだらけのコードしか書けない」とはあんまりですねえ。
それにしても最近は宿題スレもご無沙汰だ。瞬速で回答がつくので、手をつける隙もありません。すばらしい‥‥‥。

603 :デフォルトの名無しさん:2011/10/19(水) 07:20:29.55
>>598
>>474
今の時代はどうやってアセンブリ言語を勉強すればいいんでしょうかね。

取っ掛かりとしては、「Cでコンパイル時にアセンブリソースを出して読む」など。

604 :デフォルトの名無しさん:2011/10/19(水) 07:52:34.48
URLを入力
そのサイトにアクセス
タイトルを出力

っていうCUI作りたいんだが、サイトにアクセスってどうすりゃいいんだ?

605 :デフォルトの名無しさん:2011/10/19(水) 07:55:41.68
プログラミングスキルとコミュニケーションスキルは負の相関を持つみたいだね

606 :デフォルトの名無しさん:2011/10/19(水) 08:10:45.93
>>604
環境による。

607 :デフォルトの名無しさん:2011/10/19(水) 08:25:31.15
>>603
今Mac OS Xで main(){puts("Hello World!");} のアセンブリを出してみたら以下のように
なった。ちょっとだけトリッキーw

(インデントとか壊れるかもしれんが単純にコピペ)

.cstring
LC0:
.ascii "Hellow World!!¥0"
.text
.globl _main
_main:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call L3
"L00000000001$pb":
L3:
popl %ebx
leal LC0-"L00000000001$pb"(%ebx), %eax
movl %eax, (%esp)
call _puts
addl $20, %esp
popl %ebx
leave
ret

608 :デフォルトの名無しさん:2011/10/19(水) 08:29:45.32
>>604
wget

609 :デフォルトの名無しさん:2011/10/19(水) 08:59:48.94
>>605
現状のまま乏しいリソースを割り振ろうとするか、相乗効果で両方アップを狙うか、にもよるな。

610 :デフォルトの名無しさん:2011/10/19(水) 09:15:36.83
クズは最近アセンブリに手を出した俄か臭がぷんぷんするんだが
まともにアセンブリやったことあれば、あんな無駄だらけのコードは普通は書けない

611 :デフォルトの名無しさん:2011/10/19(水) 11:25:20.09
なんでmunmapをしないとclose後も書き込み出来るの?

612 :デフォルトの名無しさん:2011/10/19(水) 13:08:45.66
>>610
だからQは自分を大きく見せようと平気で嘘をつく自己愛性人格障害なんだってば

613 :デフォルトの名無しさん:2011/10/19(水) 15:38:26.46
linuxのGCCで教えてください。

/dev/ttyAM0というデバイスファイルがあります。
このファイルはデバイスがあってなくても存在します。

C言語でこのデバイスに関連付けされている、機器が存在するか否かを判断するには、
どうすればよいのでしょうか?

614 :デフォルトの名無しさん:2011/10/19(水) 15:53:15.95
解決しました。
普通にOPENすれば良いだけでした。

615 :デフォルトの名無しさん:2011/10/19(水) 17:12:16.07
>>611
closeはファイルディスクリプタでの参照を閉じるだけで仮想メモリ空間での参照は
munmapするまで残っているから。

とか適当に答えてみるw

616 : ◆QZaw55cn4c :2011/10/19(水) 20:51:49.97
>>610
http://toki.2ch.net/i4004/kako/1295/12954/1295492625.html>>324
たしかに、トイ――お遊びとしてしか書いたことないし(せいぜい500ステップくらいね)、そもそも 32bit のアセンブラはやったことないです。
いまから、またやりたいな、と思っていますが gcc の吐くモトローラにはいまいちなじめなくって。

>>612
ん?自己愛性人格障害ってなんですか?

617 :デフォルトの名無しさん:2011/10/19(水) 21:35:51.56
いいからさっさと死ねよ

618 :デフォルトの名無しさん:2011/10/19(水) 21:37:43.30
心無い一言に泣いている人もいるんです。

619 :デフォルトの名無しさん:2011/10/19(水) 22:22:00.95
うざいからNG設定したわ

620 :デフォルトの名無しさん:2011/10/19(水) 22:31:56.61
日下部陽一もそうだが
唯一ありがたいことはちゃんと名乗ることだな。
NGワードで簡単にあぼんできる。

621 :デフォルトの名無しさん:2011/10/19(水) 22:58:18.16
音楽流したり止めたりするプログラム教えてください

622 :デフォルトの名無しさん:2011/10/19(水) 23:01:48.03
DirectX

623 :デフォルトの名無しさん:2011/10/19(水) 23:16:25.76
戻り値ってのがなにかさっぱりわかんねえ
理解しなきゃいけないもんなのかすらわからない
いつも形式的にreturn 0;って全部に書いちゃってるけどやはり理解したい
どの本やサイト見てもなんかフワフワしてるから誰かわかりやすく教えてください‥‥

624 :デフォルトの名無しさん:2011/10/19(水) 23:25:07.32
必要ないならvoidにするといいんだよ!

625 :デフォルトの名無しさん:2011/10/19(水) 23:25:07.97
>>623
関数の実行結果を値として受け取れる。
足し算関数なら、合計の値。
文字検索なら、見つかった位置(あるいは存在しないよとか)

サブルーチンの場合は、実行結果の成功・失敗

626 :デフォルトの名無しさん:2011/10/19(水) 23:29:50.18
>>625
戻り値がないと関数が実行されてもこちら側に受け取ることができない、というわけですね
とてもよくわかりました
ありがとう!

627 :デフォルトの名無しさん:2011/10/19(水) 23:30:53.87
C言語の入門書レベルで作れるような結構大きめで複雑なプログラム組みたいんだけど何かいい案無い?

628 :デフォルトの名無しさん:2011/10/19(水) 23:33:22.10
b

629 :94:2011/10/19(水) 23:33:46.72
>>623
main() の戻り値のことなら。
そのプログラム(main())を呼び出すプログラムなりシェルスクリプトなりが main() の戻り値を使用しているのなら、それにあわせて書いてあげればいいでしょう。
もしmain() を呼び出すプログラムなりシェルスクリプトなりが main() の戻り値を使用しそうにないのなら、適当に、あるいは書かなくても問題ないでしょう。
作法はあるようですが(>>516) ナーバスになることはないと思います。
main() 以外の戻り値については、どなたかお願いします。

煽ったり叩いたりするために便利ではありますが。

630 :デフォルトの名無しさん:2011/10/19(水) 23:34:34.15
>>627
定番としてはマスターマインド(ヒットアンドブロー)とか

631 :デフォルトの名無しさん:2011/10/19(水) 23:42:23.46
>>629
すいません
かなりの初心者なのでそこまでは理解できなさそうです
ただ、戻り値を説明しているところがあまりにも用語などで難しくされたものが多かったので質問させてもらい無事把握することができました
またそれなりに知識がついたら読み返させて頂きます。ありがとう

632 :デフォルトの名無しさん:2011/10/19(水) 23:45:15.64
そんな慌てて逃げなくてもいいじゃん

ゆっくりしてってね!

633 :デフォルトの名無しさん:2011/10/19(水) 23:46:02.53
断る

634 :デフォルトの名無しさん:2011/10/19(水) 23:46:56.32
>>630
ぐぐってみたけど結構面白そうだな
できるか分かんないけど頑張ってみるわ
thx

635 :デフォルトの名無しさん:2011/10/19(水) 23:48:28.78
いえいえ

636 :デフォルトの名無しさん:2011/10/19(水) 23:48:51.20
$ echo "int main(void){ return 0; }" > test.c
$ cc test.c ; ./a.exe; echo $?
0

$ echo "int main(void){ return 1; }" > test.c
$ cc test.c ; ./a.exe; echo $?
1


637 : ◆QZaw55cn4c :2011/10/19(水) 23:56:58.98
>>631
QZに餌をやるな

638 :デフォルトの名無しさん:2011/10/19(水) 23:58:10.51
>>622
それ以外に方法ありませんか?

639 :デフォルトの名無しさん:2011/10/20(木) 00:01:07.17
dxライブラリ

640 :デフォルトの名無しさん:2011/10/20(木) 00:04:45.46
sdl

641 :デフォルトの名無しさん:2011/10/20(木) 00:10:17.52
>>637
コテを消し忘れた馬鹿発見

642 :デフォルトの名無しさん:2011/10/20(木) 00:32:24.74
>>627
設定ファイルのとおりに、文字列を置換するプログラム

/* 設定ファイル(第一のフィールドは置換対象の文字列、第二のフィールドは置換文字列) */
コンサドーレ札幌 札 幌
川崎フロンターレ 川 崎
ヴィッセル神戸 神 戸
名古屋グランパス 名古屋
0 0
1 1
2 2
3 3
A A
B B
C C
D D
a a
b b
c c
d d
, ,
≪ <
≫ >
* *

643 :デフォルトの名無しさん:2011/10/20(木) 00:40:49.86
設定ファイルのコメントは、たとえば、行頭に#があればコメントとみなす

644 :デフォルトの名無しさん:2011/10/20(木) 00:52:33.19
>>642
設定ファイルとは何ぞや


645 :デフォルトの名無しさん:2011/10/20(木) 01:04:12.46
>623
数値やデータを関数に渡して(引数)、関数内で色々処理して、結果を関数呼び出し元に返す(戻り値)。

数学のsin、cosは習ったか?
float sin(float kakudo /*引数*/)
{
float kotae;
/*
sin値計算
*/
return kotae;/*戻り値*/
}

...

printf ("%f\n",sin(x));



646 :デフォルトの名無しさん:2011/10/20(木) 01:09:45.31
>623

----- return_test.c ---------
int main(void)
{

return 10;/*戻り値*/

}
---------------------------

------- return_bat_test.bat -----
return_test.exe

echo %ERRORLEVEL%
pause
-----------------------------



647 :デフォルトの名無しさん:2011/10/20(木) 01:10:57.13
>>645
多分お前みたいな説明ならそのへんのサイト見る方がましだと思うぞ
用語並べた受け売りでしかないな

648 :デフォルトの名無しさん:2011/10/20(木) 01:24:14.43
>>644
設定ファイルとは、第一のフィールドに置換対象の文字列を記載し、第二のフィールドは置換文字列を記載したテキストファイルです

649 :デフォルトの名無しさん:2011/10/20(木) 01:33:45.90
>647
その辺のサイト紹介してやれよ。

650 :デフォルトの名無しさん:2011/10/20(木) 01:39:35.26
非難するだけならチョンでも出来る。


651 :デフォルトの名無しさん:2011/10/20(木) 01:43:57.39
かみ合わない声闘はチョンの十八番

652 :デフォルトの名無しさん:2011/10/20(木) 02:25:31.35
>>649
そのへんのサイトは>>623が見たって言ってんだろアホ

653 :デフォルトの名無しさん:2011/10/20(木) 02:47:29.84
C言語とやらの代表例となるものをあげてくれんかの

654 :デフォルトの名無しさん:2011/10/20(木) 02:50:34.23
gcc

655 : ◆QZaw55cn4c :2011/10/20(木) 08:16:42.39
>>641
QZに餌をやるな

656 :デフォルトの名無しさん:2011/10/20(木) 09:13:32.93
>>627
超簡易スクリプト言語の開発

657 :デフォルトの名無しさん:2011/10/20(木) 09:22:07.64
>>656
後のCコンパイラの誕生であった。

658 :デフォルトの名無しさん:2011/10/20(木) 11:59:48.52
MS-DOS で思考ルーチン使ったオセロとか動かすことってできる?

659 :デフォルトの名無しさん:2011/10/20(木) 12:06:47.59
>>658
充分可能かと。実際、MS-DOSパソコン時代にゲームとして販売されていたし。
まぁ、そのこと自体Cが関係するわけでもないから続けたいなら適当なスレへ。

660 :デフォルトの名無しさん:2011/10/20(木) 12:10:02.64
>>659
そうなのか
サンクス

実はC言語で思考ルーチンつくってみようかなと思って

661 :デフォルトの名無しさん:2011/10/20(木) 12:28:49.09
DOSだと作れないものってあるの?

662 :デフォルトの名無しさん:2011/10/20(木) 12:47:37.91
パソコンの上で動くものなら何でも作れる。OS(Windows)すら可能

663 :デフォルトの名無しさん:2011/10/20(木) 13:07:22.00
20.314のdouble型があり、
これを整数と小数にわけて別々の配列に入れたいのですが、
どうしたらいいですか。

配列A=20
配列B=0.314


664 :デフォルトの名無しさん:2011/10/20(木) 13:13:20.21
整数部分を確定して引く。

665 :デフォルトの名無しさん:2011/10/20(木) 13:17:26.58
>>664
は、正しく無い場合がある。
問題は、精度を何処まで許すかによる。
>>663、精度は精度は何処まで期待するのか?

666 :デフォルトの名無しさん:2011/10/20(木) 13:18:22.86
大事なので、2回言って(ry

667 :デフォルトの名無しさん:2011/10/20(木) 13:26:00.62
>>665
精度は、配列に入れた後に計算をするのである程度あったほうがいいです。

>>663では配列に入れたいといっていますが、
計算するので、配列ではなく
整数部分をint型、小数部分をfloat(double)型にしたいと思います。

668 :デフォルトの名無しさん:2011/10/20(木) 13:34:37.73
667です。
modfを使ったらできました。
ありがとうございました。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* main */
int main(void) {
double x, y;
double iptr;

x = 3.1415;

y = modf(x, &iptr);
printf("seisu is : %.0f \n syosu is : %.4f\n", iptr, y);

return 0;
}

669 :デフォルトの名無しさん:2011/10/20(木) 13:45:09.85
>>663
つ [modf()]

670 :デフォルトの名無しさん:2011/10/20(木) 13:54:34.00
x = 3.1415;

n = (int) x;

y = x-n;

では異常にデカイ数はダメと言うことか。

671 :デフォルトの名無しさん:2011/10/20(木) 13:58:51.10
modf()が正解ですよ。フォーマットのビット演算で実数部、小数部取出しているので誤差無しだ。

672 :デフォルトの名無しさん:2011/10/20(木) 15:45:49.62
現在、数字(int,doubleなど)を
配列に入れるために、sprintfをつかって文字列にし、
strcatで配列に結合させるプログラムを書いています。
一度なら大丈夫なのですが、for文で何回か回すと、
値が大きく増えてしまったり、変な数字になってしまいます。

数字を文字列にする場合に、sprintfを使わないほうがいいのでしょうか。

673 :デフォルトの名無しさん:2011/10/20(木) 15:54:40.47
sprintfさんは悪くないと思う

674 :デフォルトの名無しさん:2011/10/20(木) 15:56:30.08
sprintf()を使っているのなら、strcat()なんていらない。

675 :デフォルトの名無しさん:2011/10/20(木) 15:59:30.41
君の恥ずかしいコードを全て晒しなさい

676 :デフォルトの名無しさん:2011/10/20(木) 16:34:33.27
voidは値を返さない場合に使うらしいですがなぜ値を返さなくていい場合が存在するのかイメージが出来なくて困っています
なにをするにせよ結果を受け取らない限り此方には何もわからないんじゃないか、と思ってしまいます
値を返さなくていいプログラム、とはどういうものですか?
そもそも何か考え方が間違っているのでしょうか‥‥

677 :デフォルトの名無しさん:2011/10/20(木) 16:37:25.60
コード貼り付けます。

#include<stdio.h>
#include<math.h>
#include<string.h>
int main(void){
double syosu_a;
double seisu_b;
double syosu_aa;
double seisu_bb;
double syosu_roku_aa;
char seisu_sp_aa[20]="";
char syosu_sp_aa[20]="";
double syosu_roku_bb;
char seisu_sp_bb[20]="";
char syosu_sp_bb[20]="";
double b=123.432;
double a=19.920;
int count;


678 :デフォルトの名無しさん:2011/10/20(木) 16:42:16.09
続きです。

for(count=0;count<17;count++){

printf("---------------------------------\n");
syosu_a=modf(a,&seisu_b);
printf("seisu is : %d \nsyosu is : %.4f\n",(int)seisu_b, syosu_a);

syosu_roku_aa=syosu_a*60;
printf("syosu_roku_aa is : %f\n",syosu_roku_aa);
sprintf(seisu_sp_aa,"%s%d",seisu_sp_aa,(int)seisu_b);
sprintf(syosu_sp_aa,"%s%f",syosu_sp_aa,syosu_roku_aa);
strcat(seisu_sp_aa,syosu_sp_aa);
printf("ABC is : %s\n\n",seisu_sp_aa);

seisu_sp_aa[0]=0;


679 :デフォルトの名無しさん:2011/10/20(木) 16:44:22.97
最後です。
syosu_aa=modf(b,&seisu_bb);
printf("seisu is : %d \n syosu is : %.4f\n",(int)seisu_bb, syosu_aa);

syosu_roku_bb=syosu_aa*60;
printf("syosu_roku_bb is : %f\n",syosu_roku_bb);
sprintf(seisu_sp_bb,"%s%d",seisu_sp_bb,(int)seisu_bb);
sprintf(syosu_sp_bb,"%s%f",syosu_sp_bb,syosu_roku_bb);
strcat(seisu_sp_bb,syosu_sp_bb);
printf("QWE is : %s\n",seisu_sp_bb);

seisu_sp_bb[0]=0;

}


}



680 :デフォルトの名無しさん:2011/10/20(木) 16:54:32.14
>>676
画面に出力したり、ファイルに出力したりとかで処理が終わったら
別に値を返してもらわなくったっていいよね
あとは複数の値を返却したい場合、戻り値を使わずにポインタ渡しだけで済ませたりとか

681 :デフォルトの名無しさん:2011/10/20(木) 17:02:36.38
>>679
>sprintf(seisu_sp_aa,"%s%d",seisu_sp_aa,(int)seisu_b);
第一引き数を取り込むのは鼻から悪魔。
どうしてもseisu_sp_aaに追記したいのなら、
sprintf(seisu_sp_aa + strlen(seisu_sp_aa, "%d", (int) seisu_b);

sprintf(strchr(seisu_sp_aa, '\0'), "%d", (int) seisu_b);
とする。
で、ループを回る間seisu_sp_aaはクリアしているのにsyosu_sp_aaをクリアしてないから溢れている。

682 :デフォルトの名無しさん:2011/10/20(木) 17:03:46.12
>>680
ありがとうございます
では逆にvoidを使うのはどういった時なのでしょうか
本などには引数を持たない時と書かれているんですが引数を持たない関数、というのがピンと来ません
それも加えて教えてもらえると嬉しいです

683 :デフォルトの名無しさん:2011/10/20(木) 17:06:25.18
>>679
>syosu_a=modf(a,&seisu_b);
変数名のルールが判らん。全部_aに統一しないのは何で? ややこしくてかなわん。
途中経過が要らないなら、
sprintf(seisu_sp_aa, "%d%f", (int) seisu_b, syosu_a * 60);
でよさそうだけど……

684 :デフォルトの名無しさん:2011/10/20(木) 17:11:54.44
>>682
関数の戻り値の型がvoidの場合は>680。
引き数リストがvoidの場合は、例えば一文字キー入力のように副作用だけでできている関数など。

685 :683:2011/10/20(木) 17:12:44.13
ああ、途中だった。
小数部だけ60倍する意味も判らん。

686 :デフォルトの名無しさん:2011/10/20(木) 17:14:53.09
>>684
ああーよくわかりました!
ありがとうございます

687 :デフォルトの名無しさん:2011/10/20(木) 18:22:20.75
よく考えてみたら、C言語はUNIXをアセンブラから
移植するために開発された言語なんだから
少なくともオペレーティングシステムをアセンブラで書ける
技量を持った人でないと理解できないに決まってるわけだよ。
そりゃ素人が何十年学んでも無理だ罠。
あきらめてアセンブラでOS書くことから修行する。

688 :デフォルトの名無しさん:2011/10/20(木) 18:48:34.53
そんなことしなくていいようにC言語は開発されたんだよ。

689 :デフォルトの名無しさん:2011/10/20(木) 18:52:50.78
確かにそれじゃ本末転倒だよな

690 :デフォルトの名無しさん:2011/10/20(木) 18:53:33.75
うん

691 :デフォルトの名無しさん:2011/10/20(木) 19:29:31.63
>>681
ありがとうございます。
syosu_sp_aaもクリアしました。

>>683
ありがとうございます。
変数名のルールは、特に決めていませんでした。
どんどん増えてわかりづらくなってしまいました。
sprintf(seisu_sp_aa, "%d%f", (int) seisu_b, syosu_a * 60);
これでできました。
小数部だけ60倍するのは、貼り付けたコードは、一部でしたので
後々必要になってくるからです。

ありがとうございました。


692 :デフォルトの名無しさん:2011/10/20(木) 20:43:43.04
いえいえ

693 :デフォルトの名無しさん:2011/10/20(木) 21:05:07.87
入力時の質問

例えば

年齢: 歳

と表示させて":"と"歳"の間に文字やら数字やら入力させることってできる?

694 :デフォルトの名無しさん:2011/10/20(木) 21:06:32.81
うん

695 :デフォルトの名無しさん:2011/10/20(木) 21:14:33.17
>>663

int a;
double b=20.314, c, d;

c=b;
a=(int)c;

d=b-a;

printf("%d,%f",a ,d);



20,0.314000

て表示されるはず

696 :デフォルトの名無しさん:2011/10/20(木) 21:15:55.01
>>663
あ、配列か
すまん、間違えた

>>695はなかったことに

697 :デフォルトの名無しさん:2011/10/20(木) 21:16:23.07
うん

698 :デフォルトの名無しさん:2011/10/20(木) 21:16:51.61
>>694
どうやってやるか教えていただきたい

699 :デフォルトの名無しさん:2011/10/20(木) 21:18:36.48
いいよ

700 :デフォルトの名無しさん:2011/10/20(木) 21:21:44.43
>>699
じゃあお願いしやす

701 :デフォルトの名無しさん:2011/10/20(木) 22:01:10.05
cursesとかじゃないの

702 :デフォルトの名無しさん:2011/10/20(木) 22:02:14.00
環境を聞いてからにした方が

703 :デフォルトの名無しさん:2011/10/20(木) 22:14:26.40
年齢: 歳
って表示した後にsystem("clear");して
年齢:6歳
って表示するだけじゃねーの

704 :デフォルトの名無しさん:2011/10/20(木) 22:16:55.48
>>693
puts("年齢: 歳");
for(i = 0; i != 100; ++i)
puts("");
printf("年齢:%d歳", age);

705 :デフォルトの名無しさん:2011/10/20(木) 22:25:48.65
a.hっていうヘッダーファイルで
extern HWND hWnd;
って変数宣言して、
そのa.hをインクルードしたファイル(b.cpp)の局所変数でhWndっていう変数があるんだけど
局所変数だから、そっちが優先されて使われるから、モウマンタイだとおもってたんだけど、
hWndがa.objとb.objで重複宣言されているってエラーがでるんだけど、
そういうもんなの?

706 :デフォルトの名無しさん:2011/10/20(木) 22:28:28.32
こんなんじゃね?
#include <stdio.h>

int main(void){
int age;

printf("\n年齢:  歳\r年齢: ");
fflush(stdout);
scanf("%d", &age);

printf("\nage=%d\n", age);

return 0;
}

707 :デフォルトの名無しさん:2011/10/20(木) 22:35:37.46
>>705
両方にあるんだろ、有名コンパイラは滅多に嘘つかない。

708 :デフォルトの名無しさん:2011/10/20(木) 22:45:27.37
>>707
関数の仮引数がhWndですけど、それってローカル変数だけど
駄目なんすか?

709 :デフォルトの名無しさん:2011/10/20(木) 22:47:44.00
問題が起るソース出せ。又は、問題が起る最小のソースにして出せ。
作ってる間に気がつくと思うが、気がつかなかったらチェックする。

710 :デフォルトの名無しさん:2011/10/20(木) 23:26:06.65
>>703
キー入力のたびにそれやるのかぁ

711 :デフォルトの名無しさん:2011/10/20(木) 23:27:55.24
ゲームなんか60分の1秒毎にやってるわけだが

712 : ◆QZaw55cn4c :2011/10/20(木) 23:28:35.06
extern なんぞ使わなくともよい。extern を使うことこそミス・誤解への第一歩。

713 :デフォルトの名無しさん:2011/10/20(木) 23:33:14.45
すごいな。このスレにいるだけでそんなことも言えるようになるんだな
俺には恥ずかしすぎてとてもできない。

714 :デフォルトの名無しさん:2011/10/20(木) 23:35:03.89
昔、VRAM直書きしたことあったな

715 :デフォルトの名無しさん:2011/10/20(木) 23:35:14.64
たまにいる、ソースファイル1つで総て、と言う貴重な人が…

716 :デフォルトの名無しさん:2011/10/20(木) 23:36:22.16
自信満々に嘘を吐くのが得意

717 :デフォルトの名無しさん:2011/10/20(木) 23:38:06.61
>>704
改行しまくるだけ?

718 :デフォルトの名無しさん:2011/10/20(木) 23:40:14.78
>>717
うん

719 :デフォルトの名無しさん:2011/10/20(木) 23:43:22.38
>>706
thx

てか\rってどういう動作するの?
確か"復帰"だったよな


720 :デフォルトの名無しさん:2011/10/20(木) 23:57:59.75
txtファイルの任意の行に文字列を挿入するプログラムを教えて下さい

721 :デフォルトの名無しさん:2011/10/21(金) 00:02:53.94
>>719
行頭にキャレットを移す

APIを使えばもっといろいろとできる

722 :デフォルトの名無しさん:2011/10/21(金) 00:05:40.39
externまみれにするのもどうかと思うがな

723 :デフォルトの名無しさん:2011/10/21(金) 00:09:00.76
>>720
emacs
vi
notepad

724 :デフォルトの名無しさん:2011/10/21(金) 00:17:55.95
>>711
コンソールを秒間60フレームで書き換えることも辞さない雰囲気だな。

725 :デフォルトの名無しさん:2011/10/21(金) 00:28:26.73
>>724
ttp://codepad.org/M2KFDxil

726 :デフォルトの名無しさん:2011/10/21(金) 00:46:06.58
>>721
行頭ってことは>>709のプログラムだと"年"ってことか?

727 :デフォルトの名無しさん:2011/10/21(金) 00:47:35.47
>>726
タイプライターの動画を見ればイメージしやすいと思う

728 :デフォルトの名無しさん:2011/10/21(金) 00:54:24.91
gcc-coreとcc1はどういう関係なんでしょう?

gcc-coreというツール群の中のcc1というサブプログラムという認識で
あっていますか?

729 :デフォルトの名無しさん:2011/10/21(金) 02:52:16.91
x=x+1 を、 x++ とする利点を、
ソースコードを短くする以外で教えてください

730 :デフォルトの名無しさん:2011/10/21(金) 03:00:01.47
>>729
変数名が長くなってもインクリメントであることがすぐに分かる

731 :デフォルトの名無しさん:2011/10/21(金) 03:01:20.85
わかりやすい。
x=x+1なんて普通書かないから、ひょっとしてx=y+1と間違ってんのか?とか
読む人を疑心暗鬼にからせない。

732 :デフォルトの名無しさん:2011/10/21(金) 03:02:07.80
>>730
それは除外条件だろ。

733 :デフォルトの名無しさん:2011/10/21(金) 03:08:43.27
>>732
どういうこと?

734 :デフォルトの名無しさん:2011/10/21(金) 03:09:47.99
いや、すまん。忘れてくれ。

735 :デフォルトの名無しさん:2011/10/21(金) 03:10:25.32
x += 1

736 :デフォルトの名無しさん:2011/10/21(金) 04:07:12.90
>>729
配列の添え字としてi++をつかえますね

for(i = 0; i < 10; i = i + 1) {
  a[i] = 0;
}

for(i = 0; i < 10; i++) {
  a[i] = 0;
}

for(i = 0; i < 10; ) {
  a[i++] = 0;
}

737 :デフォルトの名無しさん:2011/10/21(金) 04:09:03.99
#include <stdio.h>
int main(void) {
  char c[5];
  int i;
  i = 0;
  c[i++] = 'w';
  c[i++] = 'o';
  c[i++] = 'r';
  c[i++] = 'd';
  c[i] = '\0';
  puts(c);
  return 0;
}

738 :デフォルトの名無しさん:2011/10/21(金) 04:13:00.95
まぁ、
 i = -1;
 c[i = i + 1] = 'w';
とかもできるわけだが。


739 :デフォルトの名無しさん:2011/10/21(金) 06:57:19.89
>>729

・短くなることに含まれるかもしれないが、タイプミスしにくい。
・Cのイディオムなので、読み易くなる。
→x = x + 10; とのタイプミスなどを視覚的に疑い安くなる。
・CPUのインストラクションセットに、インクリメントが含まれている場合があり、
 最適化しやすい。

740 :デフォルトの名無しさん:2011/10/21(金) 08:19:24.71
し〜プラプラにスムーズに移行できる


741 :デフォルトの名無しさん:2011/10/21(金) 12:02:02.06
(´・ω・`)へえ

742 :186:2011/10/21(金) 12:07:47.25
へえプラプラ

743 :デフォルトの名無しさん:2011/10/21(金) 12:34:10.14
名前欄に嘘書いて何したいんだ?

744 :デフォルトの名無しさん:2011/10/21(金) 15:48:26.86
学校の課題のように問題を解いてそのプログラムを提出すると、
それが正しいかどうかを見てくれるサイトってありますか?

745 :デフォルトの名無しさん:2011/10/21(金) 15:52:39.48
ここ

746 :デフォルトの名無しさん:2011/10/21(金) 16:30:49.19
宿題スレに問題と答えを書くと、暇な人が突っ込んでくれるかもしれない

747 :デフォルトの名無しさん:2011/10/21(金) 16:54:14.76
>>744
http://judge.u-aizu.ac.jp/onlinejudge/

748 :デフォルトの名無しさん:2011/10/21(金) 16:56:54.55
正しいかどうか見る観点が必ずしも「題意のとおり」とは限らない
それを承知のうえ、というより楽しむのがここ

与太話に発展するのがいやならやめとけ

749 : ◆QZaw55cn4c :2011/10/21(金) 19:10:47.60
>>713
>>715
>>716
http://pc12.2ch.net/tech/kako/1201/12011/1201153965.html>>139
>あまり知られていないが、これは 「仮定義(tentative definition)」 という仕様。
>extern も static もついていない、初期化を伴わないグローバル変数の宣言は 「仮定義」 と見なされる。
>対する、extern も static もついていない、初期化を伴うグローバル変数の宣言は 「外部定義(external definition)」 と見なされる。
>外部定義は必ず実体定義を伴う。
>外部定義が複数あると、二重定義となりエラーとなる。
>しかし、仮定義は他に実体定義がなければ実体を定義し、
>他に実体定義があれば実体定義を伴わない単なる宣言と見なされる。
>複数の仮定義を書いた場合、実体は1つだけ定義され、それらの仮定義は実体を共有する。

>>715
むしろモジュールが20も30もになると、extern なんて使ってらんないのですけど、ご経験はないのでしょうか?

>>714
そういうのはありますね。

750 :デフォルトの名無しさん:2011/10/21(金) 19:46:47.72
実務経験ゼロの中年ニートが何かほざいてるよ

751 :デフォルトの名無しさん:2011/10/21(金) 20:19:45.72
>>747
ありがとうございます!


752 :デフォルトの名無しさん:2011/10/21(金) 20:43:24.10
年収ゼロが実務とか腹筋崩壊さすなよ

753 :デフォルトの名無しさん:2011/10/21(金) 20:50:36.47
>>752
ダイエットしろ

754 :デフォルトの名無しさん:2011/10/21(金) 20:58:02.65
まさか実務経験って、モリタポ500円乞食のことか?w

755 :デフォルトの名無しさん:2011/10/21(金) 21:03:41.39
シープラプラってなんなん?

756 :デフォルトの名無しさん:2011/10/21(金) 21:18:16.18
すいません質問です。
WinAPIを使おうと思ったのですが↓でコンパイルするとエラーが出ます。
どうすればいいのでしょうか?

/*******************************************/
#include <Windows.h>

int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR 1pCmdLine,
int nCmdShow
){
MessageBox( NULL,"test","test", MB_OK);
return 0;
}
/*********************************************/

/**********エラーメッセージ*******************
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
s.c:
エラー E2293 s.c 6: ) が必要
*** 1 errors in Compile ***
*********************************************/


757 :デフォルトの名無しさん:2011/10/21(金) 21:21:23.22
1pCmdLine

758 :デフォルトの名無しさん:2011/10/21(金) 21:25:00.46
変数名の頭文字に数字は使えない

759 :デフォルトの名無しさん:2011/10/21(金) 21:31:33.68
>>757-758
ご返答ありがとうございます。
ではどのようにすればうまくいくのでしょうか?
1pCmdLine → pCmdLineにするとたくさんエラーが出ました。

/*************************エラーメッセージ*************************************
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
s.c:
警告 W8057 s.c 11: パラメータ 'hInstance' は一度も使用されない(関数 WinMain )
警告 W8057 s.c 11: パラメータ 'hPrevInstance' は一度も使用されない(関数 WinMain
)
警告 W8057 s.c 11: パラメータ 'pCmdLine' は一度も使用されない(関数 WinMain )
警告 W8057 s.c 11: パラメータ 'nCmdShow' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
/******************************************************************************

760 :759:2011/10/21(金) 21:33:40.23
ちなみにOSはWidows7 32bitです

761 :デフォルトの名無しさん:2011/10/21(金) 21:35:08.50
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)


762 :デフォルトの名無しさん:2011/10/21(金) 21:35:34.76
>>759

警告はとりあえず無視して良い。

記憶で書いているけど、Windows用にコンパイルスイッチが必要だったはず。
-Wだったかな?

今は通常のCとしてコンパイルしようとしてmainが無いので、文句を言っている。

763 :759:2011/10/21(金) 21:49:19.84
>>7
その通りでやったら無事いけました!
ありがとうございます!

764 :デフォルトの名無しさん:2011/10/21(金) 22:38:31.38
いえいえ

765 :デフォルトの名無しさん:2011/10/21(金) 23:28:13.06
横レスで、蛇足というかなんというかだけれど、写し間違いだと思う。
×1p(いち・ぴー)
○lp(える・ぴー)

766 :デフォルトの名無しさん:2011/10/21(金) 23:51:07.87
質問お願いします.
配列a[1000]に0か1をランダムに選択していきたいのですが,
int a[1000]={
{0 + rand() % (2 - 0),0 + rand() % (2 - 0),…}
};
といったようにこれを1000回繰り返さないといけないのでしょうか?
なにかいい方法があれば教えてください.

767 :デフォルトの名無しさん:2011/10/22(土) 00:02:17.10
文字の配列の終わりに\0がセットされているように、
main関数のargv[]配列の最終要素にはヌルポインタが
セットされているという記述を本で読みましたが、マジでしょうか?
それは誰がセットしてくれているのでしょうか?
ポインタの配列を作る場合、そうしないといけないという決まりが
あるのでしょうか?

768 :デフォルトの名無しさん:2011/10/22(土) 00:02:39.83
1000回書くのが嫌ということなら
for (i=0; i<1000; i++) a[i] = rand()%2;

769 :デフォルトの名無しさん:2011/10/22(土) 00:03:19.44
ループ

770 :デフォルトの名無しさん:2011/10/22(土) 00:10:14.66
>>767
それが規格で決まってるかどうかは知らないけど、決まってるなら便利だなぁ。

自分でポインタ配列作るときはそんな決まりはないよ。
ただ、センチネル(門番、番兵)という手法があるので、そうすることはある。

771 :デフォルトの名無しさん:2011/10/22(土) 00:10:43.47
Cの配列初期化に非定数は使えんよ。0/1千個配列なんてそもそもの要求を見直した方がいいと思うけど
int a[1000]={0};unsigned cnt=rand()%1000;for(unsigned i=0;i<cnt;++i){unsigned n=rand()%1000;a[n]=~(a[n]&1);}

772 :デフォルトの名無しさん:2011/10/22(土) 00:14:41.52
>>768
>>769
そうですよね!
気づきませんでした.
あほな質問に答えて頂きありがとうございました.

773 :デフォルトの名無しさん:2011/10/22(土) 00:16:23.75
いえいえ

774 :デフォルトの名無しさん:2011/10/22(土) 00:37:52.24
俺は774になる

775 :デフォルトの名無しさん:2011/10/22(土) 00:42:58.23
srand しないなら 1000/CHAR_BITS バイトの定数でよかんべ
起点を変えるだけで srand とほとんど区別がつかなくなるし

776 :デフォルトの名無しさん:2011/10/22(土) 00:47:18.42
>>771
なにそれ?

777 :デフォルトの名無しさん:2011/10/22(土) 00:54:56.85
>>776
内緒

778 :デフォルトの名無しさん:2011/10/22(土) 00:58:37.26
(´・ω・`)ふ〜ん

779 :デフォルトの名無しさん:2011/10/22(土) 01:05:35.43
>>767

私は規格書を参照できないのですが、argv[argc]はNULLでなければならないとなっています。
NULLをセットするのはコマンドライン引数をセットする人と同じく、処理系です。

コマンドライン引数を1つずつ処理するときのイディオムは
for (i = 0; i < argc; i++) {
// argv[i]を参照
}
ですが、argv[argc] == NULLなので、Javaと同じように以下でもOK。

while (argv++) {
// *argvを参照
}

780 : ◆QZaw55cn4c :2011/10/22(土) 01:45:38.26
>>767
では規格の面から裏打ちを。
ISO/IEC 9899:1999 5.1.2.2.1.2
argv[argc] shall be a null pointer.

781 : ◆QZaw55cn4c :2011/10/22(土) 01:48:10.29
>>750
アマチュアでも規格くらいは読みます。
>>750 も規格を勉強しましょうね。

782 :デフォルトの名無しさん:2011/10/22(土) 01:56:25.72
結局出来ることは他所からのコピペだけで、頭を使うってことがないんだよな

783 :デフォルトの名無しさん:2011/10/22(土) 02:15:30.53
ポインタ使うメリットって何?
嫌でも学ばなきゃならない時がきますか?

784 : ◆QZaw55cn4c :2011/10/22(土) 02:21:20.57
>>783
来ます。

>>782
コピペだって頭は使います。

785 :デフォルトの名無しさん:2011/10/22(土) 02:43:19.77
for(;;){}のループと
while(1){}のループどっちが好きですか

786 :デフォルトの名無しさん:2011/10/22(土) 02:48:58.70
コピペが彼の頭を使う限界なんだろw

787 :デフォルトの名無しさん:2011/10/22(土) 02:50:26.03
前のQよりは今のQのほうがずっとマシ
前のは本当にアレだった

788 : ◆QZaw55cn4c :2011/10/22(土) 03:05:24.41
>>787
それは興味深い。
前のQZのいつ頃あるいはどんなところがアレだったか、ちょこっとだけ教えてくださいませんか?

789 :デフォルトの名無しさん:2011/10/22(土) 03:08:52.40
自分の妄想をソースにしてたよ
アレは直らないから中の人がバトンタッチしたと思ってる

790 :デフォルトの名無しさん:2011/10/22(土) 03:22:07.39
今も昔もゴミ以下なことはかわってないだろ

791 :デフォルトの名無しさん:2011/10/22(土) 04:27:27.99
>>788
前のQZは>>655みたいな感じだったよ

792 :デフォルトの名無しさん:2011/10/22(土) 06:02:03.01
static変数とグローバル変数の区別がいまいちつかないのですがどなたか簡単に教えていただけませんか

793 :デフォルトの名無しさん:2011/10/22(土) 06:32:00.20
ファイルスコープと全体スコープ

794 :デフォルトの名無しさん:2011/10/22(土) 06:47:07.28
1.staticをつけたら、それが含まれるファイル内でのみ可視になる(他のファイルからみえない。情報を隠蔽できる)
2.関数からでたら関数内の変数は、もうつかえないが、
関数内の変数にstaticをつけておけば、また関数にはいれば、前の状態が保持されている

795 :デフォルトの名無しさん:2011/10/22(土) 07:17:48.47

関数A

関数A
このブロック間は変数の結果が初期化されず保持



関数A
ブロックを出ているので初期化


関数A
スタティック変数

わかりにくいもしれないですがこういうことであってますか?
これがもしグローバル関数であればブロックを出てからも適応されるということですかね?

796 :デフォルトの名無しさん:2011/10/22(土) 07:43:19.57
>>749
前スレでも書いたけど、規格では仮定義の挙動は1つの翻訳内についてしか書かれていないから
本来その動作は未定義でしょう。

もちろん、UNIXやcommon extensionで複数定義が認められているから、ほとんどの処理系で
動作はするでしょうけど、規格厳密合致プログラム(strictly conforming program)としては
アウトだと思う。

初心者に規格厳密合致プログラムを薦めるべきかまではわからんけど。

797 :デフォルトの名無しさん:2011/10/22(土) 07:58:27.60
>>795
何言ってるか不明。変数はどこにある?
何言っているか不明な時点で、何か誤解があるように思う。

とりあえずブロック内とトップレベルで、staticの意味が変わってくる。

・トップレベルの場合
static無しの場合: 外部結合(プログラム全体から参照できる。)
static有りの場合: 内部結合(ソースファイル内からのみ参照できる。)

・ブロック内の場合
static無しの場合: ブロックに入るたびにスタックに積まれる。
static有りの場合: プログラム開始時から特定の領域のみ確保される。(結果的に値が維持される)



798 :デフォルトの名無しさん:2011/10/22(土) 08:04:33.49
センスがないから諦めれ

799 :デフォルトの名無しさん:2011/10/22(土) 08:22:08.92
#include<stdio.h>

int add(int);
int main()

{
int sum;

sum = add(5);
printf("sum = %d¥n", sum);

sum = add(10);
printf("sum = %d¥n", sum);

return 0;
}

int add(int n)
{
static int total = 0;
total += n;

return total;
}

携帯端末からだったので書き方悪すぎましたすいません
例えばこういう場合なら{}でだけ値が維持されるってことですよね?
グローバル関数だとしても維持されるんじゃないのでしょうか?

800 :デフォルトの名無しさん:2011/10/22(土) 08:40:07.08
>561 名前:デフォルトの名無しさん[sage] 投稿日:2011/10/18(火) 20:40:21.79
>ワザと頓珍漢な質問をする
>間違った答えで自信満々で自己レスする
>こうするとこう確率でちげーよバカつって答え教えてくれる本当の馬鹿が釣れる

801 :デフォルトの名無しさん:2011/10/22(土) 08:46:38.56
そもそも教えてあげられる答えがあるならそれは頓珍漢な質問じゃないんじゃねえの?
パンダはなんでキリンなの?とか聞かれても答えようがないから頓珍漢と言えるんだろうが

802 :デフォルトの名無しさん:2011/10/22(土) 09:02:11.00
親切心で手を差し伸べても裏で舌を出しているような世の中だよ

803 :デフォルトの名無しさん:2011/10/22(土) 10:32:51.36
http://codepad.org/CE2HMKEN

outputの1行目はなして

i16[0x00008000]

にならないですか?

804 :デフォルトの名無しさん:2011/10/22(土) 11:01:55.14
>>803
printf()の引数に積んだ時にintに変換されてるから。
i16 & 0xffffとすればいい。

805 :デフォルトの名無しさん:2011/10/22(土) 11:24:29.53
なんだかこんらんしてきました
http://codepad.org/PkE40CKy

806 :デフォルトの名無しさん:2011/10/22(土) 11:25:29.61
>>805
int/shortは符号付だからだよ。
unsigned int/unsigned shortにすればいい。

807 :デフォルトの名無しさん:2011/10/22(土) 11:26:20.11
符号付のshort を int に代入する場合は
i32 = i16 & 0xffff;
としなければならないということですか?

808 :デフォルトの名無しさん:2011/10/22(土) 11:30:57.35
>>807
目的による。
符号拡張したいかどうか。

809 :デフォルトの名無しさん:2011/10/22(土) 11:33:14.97
i16 = i32 >> 16; でi16は0x8000
になっているけど
‌int代入する場合は
(unsigned short)i16;
ってしなければいけないってことですか?
http://codepad.org/b9lgoMlT

810 :デフォルトの名無しさん:2011/10/22(土) 11:33:59.24
>>809
だから目的によると言っとろうが。

811 :デフォルトの名無しさん:2011/10/22(土) 11:36:56.46
なるほどなるほど
符号付整数であつかうかどうかってことですね
http://codepad.org/I0BfqH13

やっとわかりました
ありがとうございました

812 :デフォルトの名無しさん:2011/10/22(土) 11:38:08.04
>>811
のせるリンク間違いました
http://codepad.org/xtOT6HtG

813 :デフォルトの名無しさん:2011/10/22(土) 12:31:30.23
ファイル1があり、そこからデータを読み込んで、プログラムAで処理しているのですが、
ファイル1が更新されたときに、プログラムを動かすことはできますか?


814 :デフォルトの名無しさん:2011/10/22(土) 12:33:34.03
もちろんできます。

815 :デフォルトの名無しさん:2011/10/22(土) 12:34:39.10
ファイルを監視するプログラムを作り常駐させてファイル1に変更があったらAを起動させる


816 :デフォルトの名無しさん:2011/10/22(土) 12:43:21.49
常にファイルに追記なら、定期的にプログラムAでサイズチェックをして、前回より大きくなってたら処理するとか。
書き直しなら、更新時間をチェックして、前回の処理以降に更新してたら処理するとか。

817 :デフォルトの名無しさん:2011/10/22(土) 12:44:23.62
>>814
>>815ありがとうございます。

どのようにやったらいいでしょうか。

818 :デフォルトの名無しさん:2011/10/22(土) 12:51:00.03
>>816ありがとうございます。
http://simd.jugem.jp/?eid=57
このサイトみたいなプログラムを組み、
タイマーで定期的にチェックし、最後にif文で、
前回のサイズより大きかったらAを機動させようと思います。

819 :1 ◆K4uC7X8rB6 :2011/10/22(土) 14:25:34.52
   / ̄\
  |  ^o^ | < コーラ おいしいです
   \_[]⊂/)
   _| |/ |
  |    /
         / ̄\
        |     | < それは しょうゆ です
         \_/
         _| |_
        |     |



       / ̄ ̄ ̄ ̄\
      /;;::       ::;ヽ
      |;;:: ィ●ァ  ィ●ァ::;;|
      |;;::        ::;;|
      |;;::   c{ っ  ::;;|
       |;;::  __  ::;;;|
       ヽ;;::  ー  ::;;/
        \;;::  ::;;/
          |;;::  ::;;|
          |;;::  ::;;|
   / ̄ ̄ ̄      ̄ ̄ ̄\
   |;;::              ::;;|
   |;;::              ::;;|

>>825

820 :デフォルトの名無しさん:2011/10/22(土) 14:29:53.32
すいません、質問です。

WinAPIのプログラムと普通のC言語のプログラムを
組み合わせることは可能でしょうか?

例えばですが、

#include <Windows.h>
#include <stdio.h>

int main(){
・・・・・・・
if(a==1)→WINAPI WinMain()で作ったプログラムへ飛んでゲームが始まる

みたいな感じで、普通のC言語のプログラムでif分岐などを使って
WinAPIをユーザ関数みたいに使えたらいいなと思っています。


821 :デフォルトの名無しさん:2011/10/22(土) 14:41:07.80
>>820
>if(a==1)→WINAPI WinMain()で作ったプログラムへ飛んでゲームが始まる

でなかった時は、何をしたいの?

822 :デフォルトの名無しさん:2011/10/22(土) 14:43:32.00
普通に可能です


823 :デフォルトの名無しさん:2011/10/22(土) 15:16:33.69
>>821
まだ考えていませんが、if(a==2)なら別のWINAPI WinMain()で作ったプログラムへ飛んで
別のゲームを始めたり、普通のC言語で作ったゲームのプログラムへ飛ばしたり
したいです。

>>822
そうなんですか!
どのように記述すればよいか教えてもらえないでしょうか?

824 :デフォルトの名無しさん:2011/10/22(土) 15:45:18.18
system("gikoparo.exe");

825 :デフォルトの名無しさん:2011/10/22(土) 15:57:27.21
>>818
ちなみに、OSによっては「ファイルが更新されたら教えてくれるサービス」
みたいのがあって、そういうOS限定ならそういうのを使うこともできる。

826 :デフォルトの名無しさん:2011/10/22(土) 16:13:54.86
int MyAppMain(HINSTANCE hThisApp, void const * pArg) { /* ry */ ; return 0 ; }

int main(void) {
if(a == 1)
MyAppMain((HINSTANCE)GetModuleHandle(0), 0) ;

return 0 ;
}

827 : ◆QZaw55cn4c :2011/10/22(土) 16:14:12.44
>>796
未定義なのは、外部宣言のメモリ空間への割付は本来リンカのお仕事だから、という気がしないでもありません。

828 :デフォルトの名無しさん:2011/10/22(土) 18:18:01.67
◆QZaw55cn4cって糞だよなぁ

829 :デフォルトの名無しさん:2011/10/22(土) 19:02:05.57
ありがとうございます。試しに↓のプログラムでコンパイルして実行して見ましたがダメでした。
なにがいけないのでしょうか?

#include <stdio.h>
#include <Windows.h>

int MyAppMain(HINSTANCE hThisApp, void const * pArg) { /* ry */ ; return 0 ; }

int main(void) {
int a;
printf("ゲームを始めるなら1を入力>");scanf("%d",&a);
if(a == 1){MyAppMain((HINSTANCE)GetModuleHandle(0), 0);}

return 0 ;
}
/**********************************************************************
D:\C_programming>bcc32 -W test.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.c:
警告 W8057 test.c 4: パラメータ 'hThisApp' は一度も使用されない(関数 MyAppMain )

警告 W8057 test.c 4: パラメータ 'pArg' は一度も使用されない(関数 MyAppMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照)

D:\C_programming>test
'test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

830 :デフォルトの名無しさん:2011/10/22(土) 19:07:53.73
エラー読めよ

831 :デフォルトの名無しさん:2011/10/22(土) 19:18:38.57
Error: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照)


832 : ◆QZaw55cn4c :2011/10/22(土) 19:28:57.03
>>829
まずはここがわかりやすいかと。
http://wisdom.sakura.ne.jp/system/winapi/index.html
http://wisdom.sakura.ne.jp/system/winapi/win32/win3.html

bcc32 -W とか gcc-3 -mno-cygwin -mwindows でコンパイルするのならば、
WinMain() から記述しはじめなければなりません。main() はまったく使いません。

833 :デフォルトの名無しさん:2011/10/22(土) 19:37:32.10
どちらかといえば、君はむしろ教わる側ではないかと・・・

834 :デフォルトの名無しさん:2011/10/22(土) 19:54:12.33
彼は教える側の言うことが理解できないから

835 :デフォルトの名無しさん:2011/10/22(土) 20:34:26.90
教える側だと思う奴は、責任もって理解させろよ。
できないなら、教えるなんてやろうと考えるな。

836 :デフォルトの名無しさん:2011/10/22(土) 20:35:54.03
初心者が初心者に教えるスレはここですか?

837 :デフォルトの名無しさん:2011/10/22(土) 20:37:32.13
初心忘れるべからず

838 : ◆QZaw55cn4c :2011/10/22(土) 20:44:47.21
>>833
はい、それはそうだと常々考えています。間違いなく私は教わるほうです。
でも、困っている人がいれば、知りうる限りの情報はお出ししようかと考えています。

>>834
>>796http://hibari.2ch.net/test/read.cgi/tech/1314783907/766 のことならば、折に触れて再考しています。
(規格全部の構成を整理して把握するのはまだできていない)
ただし、昔の .obj とかで考えてみても、モジュール間で共有する変数の最終的なロケーションと最終的なサイズを決めているのはリンカ、という気がしてなりません。
(参照:MS-DOS 6.2 プログラマーズリファレンスマニュアル Vol.1: 付録B インテルオブジェクトモジュールフォーマット: B.12 レコードフォーマットおよび B.14 共有変数の型に関するマイクロソフト表現法)
coff や elf の事情がわかる資料があればいいのですけれども。

839 :デフォルトの名無しさん:2011/10/22(土) 20:53:50.68
>でも、困っている人がいれば、知りうる限りの情報はお出ししようかと考えています。

どちらかというと借り物の知識を無知な人にひけらしたがっているような気がするね。
別にいい人を装うことはないと思うよ


840 :デフォルトの名無しさん:2011/10/22(土) 20:56:54.05
やたらリンクをつけて引用しているけど、本当に内容を理解できてるのかな

841 :デフォルトの名無しさん:2011/10/22(土) 21:00:36.74
>>839
「ひけらしたがって」じゃなくてな「ひけらかしたがって」だぞ俺、自重orz

842 :1 ◆K4uC7X8rB6 :2011/10/22(土) 22:13:47.69
誰か丁寧にわかりやすくこの場で教えて

843 : ◆QZaw55cn4c :2011/10/22(土) 22:26:05.50
>>839
まっ、それもそうですかね。

844 :デフォルトの名無しさん:2011/10/23(日) 00:21:19.14
>>829
直接は関係ないことだけど、メッセージが「警告」「Error」みたいに日英混ざってるのね。
コンパイラーとリンカーで違うっぽいね。

845 :デフォルトの名無しさん:2011/10/23(日) 11:41:17.78
標準出力から入力って出来る?

846 :デフォルトの名無しさん:2011/10/23(日) 11:53:00.96
0<&2

847 :デフォルトの名無しさん:2011/10/23(日) 11:53:19.41
>>845
出来ません


848 :デフォルトの名無しさん:2011/10/23(日) 11:53:45.82
0<&1

849 :デフォルトの名無しさん:2011/10/23(日) 12:03:33.15
おしりでご飯は食べられない

850 :デフォルトの名無しさん:2011/10/23(日) 12:16:52.65
iPadで言うと、タッチパネルセンサーが標準入力で、ディスプレイが標準出力

851 :デフォルトの名無しさん:2011/10/23(日) 16:10:21.57
>>845
できますよ

852 :デフォルトの名無しさん:2011/10/23(日) 16:17:26.37
>>845
パイプのことだろうか
aの標準出力をbの入力にする
$ a | b

853 :デフォルトの名無しさん:2011/10/23(日) 16:25:33.17
>>852
それは出力を別のアプリの入力に渡してるだけ。

コアラの親が出したう○ちを子コアラが食べるようなもの。


854 :デフォルトの名無しさん:2011/10/23(日) 16:28:38.60
そうまでしてユーカリ食べたいのかと聞いてみたいな

855 :デフォルトの名無しさん:2011/10/23(日) 16:32:31.69
肛門から食べたいと言う話じゃ無いのか?

856 :デフォルトの名無しさん:2011/10/23(日) 16:38:56.03
何者のウンコ喰えば標準出力から入力出来るようになるんだろうな?

857 :デフォルトの名無しさん:2011/10/23(日) 16:39:38.80
ディスプレイからゲームの世界に入りたいって話だろ


858 :デフォルトの名無しさん:2011/10/23(日) 17:29:44.53
>>855
ムカデ人間の話は本当にやめろ!

859 :デフォルトの名無しさん:2011/10/23(日) 21:42:34.01
 ○| ̄|○| ̄|○| ̄|_

860 :デフォルトの名無しさん:2011/10/23(日) 22:29:57.62
>>845
popen

861 :デフォルトの名無しさん:2011/10/23(日) 22:33:28.72
>>860
○ 標準出力を入力
× 標準出力から入力

862 :デフォルトの名無しさん:2011/10/23(日) 22:42:54.72
自分で書いてて何言ってるんだか分からんなw

出力からの入力は不可能(浣腸NG)
出力を入力として受け取るのは可能(スカトロOK)

863 :デフォルトの名無しさん:2011/10/23(日) 23:16:08.51
うん

864 :デフォルトの名無しさん:2011/10/23(日) 23:51:14.78
自分でうんこを食って出す永久機関ができないか挑戦してみた
けど、うまくいかない。 だれかおかしなところを直してくれ。

main(){
 char s[256];
 setvbuf(stdin, NULL, _IONBF, 0);
 setvbuf(stdout, NULL, _IONBF, 0);

 printf("0\n");
 for(;;){
  fgets(s,sizeof(s),stdin);
  printf("%d\n",atoi(s)+1);
 }
}

で、名前つきパイプAを作って
./a.out >A <A
とやってみたがダメだった。
cat A | ./a.out >A
もダメだ。どこかでまだバファリンしてるんだろうか。

865 :デフォルトの名無しさん:2011/10/24(月) 00:03:52.99
./a.exe > a < a
で動いてるようだが。

866 :デフォルトの名無しさん:2011/10/24(月) 00:15:22.85
マジで? りろんはあってたのか。
環境依存にぶちあたるとは・・・ もはやCは関係なくなったな

867 :デフォルトの名無しさん:2011/10/24(月) 00:34:47.80
ポインタのポインタを学ぶため
まずメモリにデータを作り込んでから表示させてみようと
以下のソースを作ってコンパイルしました。

#include <stdio.h>
int main () {
char **p = { "abc","def","ghi" };
printf("%s\n", **p);
p++;
printf("%s\n", **p);
p++;
printf("%s\n", **p);
}

すると以下の警告が出ますが、コンパイルは通ります。
test01.c: In function ‘main’:
test01.c:3: 警告: initialization from incompatible pointer type
test01.c:3: 警告: スカラー初期化子内の要素が多すぎます
test01.c:3: 警告: (near initialization for ‘p’)
test01.c:3: 警告: スカラー初期化子内の要素が多すぎます
test01.c:3: 警告: (near initialization for ‘p’)

実行ファイルを実行すると、Segmentation faultと出て終了します。
各文字列が出るはずなのですが、何がまずいのでしょうか。

868 :デフォルトの名無しさん:2011/10/24(月) 00:39:53.97
>>867
char **p = { "abc","def","ghi" };

char *p[] = { "abc","def","ghi" };

869 :デフォルトの名無しさん:2011/10/24(月) 00:43:43.43
>>867>>868

↓もまずい。
printf("%s\n", **p);

printf("%s\n", *p);

それから、p++とは(*p)++を比べてみるのもいいかも。


870 : ◆QZaw55cn4c :2011/10/24(月) 00:55:29.19
>>867
するのだったら、
http://codepad.org/ArBCmMtt
でしょう。
領域の確保を常に考えなければなりません。>>867 では、"abc"、"def" 等のための領域は静的ではあっても確保されていますが、
"abc" の先頭アドレス、"def" の先頭アドレス、等を格納する領域は確保されていません。

871 :デフォルトの名無しさん:2011/10/24(月) 01:52:05.07
http://codepad.org/79gN2eY3

エラー E2342 練習用プログラム.c 23: パラメータ 'o' は int * 型として定義されているので int は渡せない(関数 main )
エラー E2342 練習用プログラム.c 23: パラメータ 'p' は int * 型として定義されているので int は渡せない(関数 main )

↑のようなエラーが出てて改善方法がわかりません。
1次元配列を使った関数が分からないので良ければ教えていただきたいです。


872 :デフォルトの名無しさん:2011/10/24(月) 02:10:02.64
>>871
× wairu(a[R],a[R]);
○ wairu(a,a);
int wairu()だから、関数の最後でreturn 0;か何かする。

873 :デフォルトの名無しさん:2011/10/24(月) 07:40:01.38
>>872
分かりました。ありがとうございました。

874 :デフォルトの名無しさん:2011/10/24(月) 13:47:58.56
みんなGetAsyncKeyStateって日本語でどうやって読むの?

875 :デフォルトの名無しさん:2011/10/24(月) 13:55:28.76
まずはお前が日本語を読めるようになってからにしろ

876 :デフォルトの名無しさん:2011/10/24(月) 14:35:44.84
>>874
非同期の鍵盤状態の取得

877 :デフォルトの名無しさん:2011/10/24(月) 15:49:54.86
1から7の範囲で乱数を発生させて
4以外の乱数が発生すれば終了としたいのですが
なにか良い方法はないでしょうか?

878 :デフォルトの名無しさん:2011/10/24(月) 15:53:27.90
どんな条件を「良い」というのかによる
とりあえずエスパーすると rand() は使うなという縛りがあるんだな?

879 :デフォルトの名無しさん:2011/10/24(月) 15:59:35.12
>>878
int i=4;
if(i=4){
i = rand() % 7 + 1;
printf("%d\n",i);
};
というようにしてうまくいかなくて困ってます.
とりあえず,1,2,3,5,6,7のなかから1つの値をランダムに選択したいです.

880 :デフォルトの名無しさん:2011/10/24(月) 16:00:55.16
>>878
ifじゃなくてwhileでした

int i=4;
while(i=4){
i = rand() % 7 + 1;
printf("%d\n",i);
};


881 :デフォルトの名無しさん:2011/10/24(月) 16:02:38.67
>>879
答えを貼るのは簡単だが・・・

まずいのが if 文
代入と比較を間違えているし
繰り返すなら if 文じゃなく while 文
そして rand() を実行する前に 4 かどうかはわからない

882 :デフォルトの名無しさん:2011/10/24(月) 16:02:45.16
while(i == 4)

883 :デフォルトの名無しさん:2011/10/24(月) 16:10:00.62
>>881
>>882
ありがとうございます.
代入と比較の違いがわかってよかったです.


884 :デフォルトの名無しさん:2011/10/24(月) 16:12:28.74
operatorって糞だよね
全部関数で書くべき

885 :デフォルトの名無しさん:2011/10/24(月) 16:17:20.04
>>877
4 以外で即終了? それとも表示などをしてから終了?

>>879
1,2,3,5,6,7 には 4 が含まれていないので、
4 以外で終了ということは「必ず終了」になる

揚げ足が取りたいのではない
問題を整理せよと言いたい

886 :デフォルトの名無しさん:2011/10/24(月) 16:49:58.52
ファイル(テキスト)で、5秒ずつデータが更新(増える)されるとします。
5秒後に処理するときに、増えたところから処理することは可能でしょうか。

A   →5秒後  A
A         A
         B
B
こんな感じでBから処理できますか。
またどのようにしたらいいでしょうか。
お願いいたします。

887 :デフォルトの名無しさん:2011/10/24(月) 16:50:32.80
>>874
ゲットアシンクキーステート

888 :デフォルトの名無しさん:2011/10/24(月) 16:53:12.81
入門編や初心者にお勧めの本はよくありますがそこから更に先にすこし踏み込んだ本はないでしょうか

889 :デフォルトの名無しさん:2011/10/24(月) 16:54:03.40
>>885
読解力が足りない。
ただ、1-6の乱数で、4以上が出たら1加えるのがいいとは思うけどね。

890 :デフォルトの名無しさん:2011/10/24(月) 16:54:56.06
>>886
ftell+fseek

891 :デフォルトの名無しさん:2011/10/24(月) 17:05:09.51
>>889
現に 877 が困っている様子から困っている原因を指摘したまで
終了条件を見落としている誰かさんの大きなお世話は謹んで辞退させていただく

892 :デフォルトの名無しさん:2011/10/24(月) 17:16:59.57
static const int Transed[] = {1, 2, 3, 5, 6, 7};
int i = rand() % (sizeof(Transed) / sizeof(* Transed));
printf("%d\n", Transed[i]);

893 :デフォルトの名無しさん:2011/10/24(月) 17:24:48.00
>>891
>>877>>879 が別人だと思ってるってこと?

894 :デフォルトの名無しさん:2011/10/24(月) 17:55:09.73
#include <stdio.h>
int main(){
char variable_a;
char *pointer_a;
variable_a = 'a';
pointer_a = &variable_a;
printf("変数variable_aの中身は %c ", variable_a);
printf("そのメモリ アドレスは %p \n", pointer_a);
return 0;
}
ってどういう処理の流れになるんですか?

895 :デフォルトの名無しさん:2011/10/24(月) 18:07:40.93
>>892
なるほど。

srand(time(NULL));
i=rand()%7+1;
だと毎回、i=7になるからな。

896 : ◆QZaw55cn4c :2011/10/24(月) 18:31:04.72
>>888
http://www.amazon.co.jp/dp/4871482006/

897 :デフォルトの名無しさん:2011/10/24(月) 18:35:28.93
>>894
どこがわからないのかを。
そのままじゃ書いてるとおりとしか

898 :デフォルトの名無しさん:2011/10/24(月) 19:17:45.56
例の形が崩れ、見づらくて申し訳ありません

AAAA→5秒後→AAAABBB(実際には改行が入り、縦型)

>890
ありがとうございます。

ftell,fseekを見たのですがいまいちわかりませんでした。
簡単なプログラム教えていただけませんか。

899 :デフォルトの名無しさん:2011/10/24(月) 19:27:52.64
>>888
ttp://www.amazon.co.jp/dp/4774146129/

900 :デフォルトの名無しさん:2011/10/24(月) 19:41:04.86
>>899
レビューはボロボロですけど‥‥‥。

901 :デフォルトの名無しさん:2011/10/24(月) 21:00:41.61
診断室とか作法とかリファクタリングとかは初心者向けに含まれているのかどうかがわからん

902 :デフォルトの名無しさん:2011/10/24(月) 21:39:51.54
>>898です

fseekを用いて、挑戦しているのですが、
http://simd.jugem.jp/?eid=57
このページを参考にし、5秒間で増えた分のバイト数を出そうとしています。
fssek(fp,0,SEEK_END);で最後の行まで読み込み、
sz=ftell(fp)でファイル位置を取得しているみたいなので、
5秒後の処理でfssek(fp,sz,SEEK_END);で増えた分のバイト数を取得できるかと
おもったのですが、うまくできませんでした。
ファイルポインタの位置を蓄えておくにはどのようにしたらいいのでしょうか。

903 :デフォルトの名無しさん:2011/10/24(月) 21:42:15.85
テキストファイルの中にある複数の英字の文字列をソートして書きこむプログラム教えてください

MOJI
EIGO
NIPPON

 ↓

EIGO
MOJI
NIPPON

904 :デフォルトの名無しさん:2011/10/24(月) 21:43:19.47
>>903
ttp://hibari.2ch.net/test/read.cgi/tech/1312201995/

905 :デフォルトの名無しさん:2011/10/24(月) 21:45:42.63
>>903
qsortでおk

906 :デフォルトの名無しさん:2011/10/24(月) 22:03:23.37
>>888
Cの本で言えば下記がおすすめ。
エキスパートCプログラミング
C言語 ポインタ完全制覇

プログラム全般なら以下あたり
プログラミング作法
珠玉のプログラミング

一番のおすすめは、C以外の言語をマスターすること。
なるべく毛色が違うものが良い。
Ruby, JavaScript, LISP,

907 :デフォルトの名無しさん:2011/10/24(月) 22:07:51.27
>>902
fssek(fp,sz,SEEK_END); でどうなると思っていたの?

908 :デフォルトの名無しさん:2011/10/24(月) 22:14:04.52
>>902
最初の処理の続きから5秒間で増えたデータの最後まで
読み込むのかなと思いました。


909 :デフォルトの名無しさん:2011/10/24(月) 22:26:34.24
>>908
fseek について調べた方がいい

fseek(fp, 0, SEEK_END);
でファイルポインタの指す先を (ファイルの終端+0) に移動させる
ftell(fp);
でファイルポインタの指す先を得る

この二つを組み合わせてファイルサイズを得ることが出来る


fseek(fp, sz, SEEK_END);
の場合 終端+sz に移動させようとすることになる

910 :デフォルトの名無しさん:2011/10/24(月) 22:38:10.12
>>909
ありがとうございます。
fseek(fp, sz, SEEK_CUR)とすると
現在位置からsz分、読み込むということでよろしいですか。

911 :デフォルトの名無しさん:2011/10/24(月) 22:39:51.27
>>910
読み込むのではなく、移動する

912 :デフォルトの名無しさん:2011/10/24(月) 22:49:02.23
今のプログラムは、

タイマー{
fp = fopen( fname, "rb" );
if( fp == NULL ){
printf( "%s FILE IS ERROR\n", fname );
return -1;
}
if(i==0){
fseek( fp, 0, SEEK_END );
i++;
}
else{
fseek(fp,ftell(fp),SEEK_CUR);
}
sz = ftell( fp );
printf( "%s file size : %d bite\n", fname, sz );
fclose( fp );
}
という感じで、while分の中でfcloseし、fopenするからだめなのでしょうか。

913 :デフォルトの名無しさん:2011/10/24(月) 22:56:21.62
>>912
いつでも
fseek( fp, 0, SEEK_END );
でおk

書き込みアプリケーションが fflush するまではファイルサイズが変わらないのは仕様なのでしょうがない

914 :デフォルトの名無しさん:2011/10/24(月) 23:14:02.10
>>912
そうなんですか!
ということは、実際にはできてると考えて大丈夫でしょうか。

915 :1 ◆K4uC7X8rB6 :2011/10/24(月) 23:16:17.41
1000ゲット

916 :デフォルトの名無しさん:2011/10/24(月) 23:16:19.03
>>914
4秒ごとにfflushしながら書き込むプログラムを作って確認すればいい

917 :デフォルトの名無しさん:2011/10/25(火) 01:33:43.03
C言語でデータベース(MySQL)にデータを保存するには
どうしたらいいですか?
簡単なサンプルとかありますか?

918 :デフォルトの名無しさん:2011/10/25(火) 03:18:57.20
検索したら
http://dev.mysql.com/doc/refman/5.1/ja/c.html
が出てきたけど、どうしたらいいですか

919 :デフォルトの名無しさん:2011/10/25(火) 07:05:59.14
fstatでfile_statにファイル状態を得た後

if (file_stat.st_size < 0
   || (file_stat.st_size + 0UL != (unsigned long int) file_stat.st_size))

でファイルサイズエラーと判別してるコードを読んだんだけど
file_stat.st_size + 0UL != (unsigned long int) file_stat.st_size
一体これはどういう意味なの?

左辺はoff_t型で、右辺はそれをULに型キャストしてるから
ULより大きいサイズだとエラーになるという事かな。

920 :デフォルトの名無しさん:2011/10/25(火) 08:13:25.65
C言語初心者だけどファイル入出力(fopenとか)って勉強しておいたほうがいい?
初心者はあまり使わないような気がするんだが

921 :デフォルトの名無しさん:2011/10/25(火) 08:16:39.09
初心者なら使わないとか意味分からないんですけど一生初心者でいるつもりなんですか

922 :デフォルトの名無しさん:2011/10/25(火) 08:19:09.29
>>920
実務じゃどうせOSのAPIじゃないと使いもんにならんから勉強しなくていいよ

923 :デフォルトの名無しさん:2011/10/25(火) 08:34:47.50
>>921
“まだ“勉強しなくていい

だったなすまん

924 :デフォルトの名無しさん:2011/10/25(火) 08:35:43.95
>>922
そうなのか

925 :デフォルトの名無しさん:2011/10/25(火) 09:07:48.63
fp = fopen("output.txt", "w");

926 :デフォルトの名無しさん:2011/10/25(火) 09:17:46.39
>>920
メモリに大量のデータを記憶しきれない場合、ファイルに記憶できる

927 :デフォルトの名無しさん:2011/10/25(火) 09:41:27.48
>>926
そんなことってあるのか

928 :デフォルトの名無しさん:2011/10/25(火) 10:28:51.20
C言語の文字列で空白ごとに文字を区切って配列に格納すること可能ですか?

例えば、

あいうえお\0かきくけこ\0さしすせそ

みたいに。

どうもstrcpyかsprinfを使ってでお願いします。

私がやると\0を入れると自動的に書き込まれないようになってる気がしました

929 :デフォルトの名無しさん:2011/10/25(火) 10:29:16.11
空白というかヌル文字です
失礼しました

930 :デフォルトの名無しさん:2011/10/25(火) 10:52:44.01
>>929
strcpyは\0までをコピーするから

931 :712:2011/10/25(火) 11:30:39.48
映像を受けとるプログラムを教えてくれませんか?

また、わかりやすいサイトでもいいので教えてください。

932 :デフォルトの名無しさん:2011/10/25(火) 11:36:56.25
>>931
誤爆か?


933 :デフォルトの名無しさん:2011/10/25(火) 12:39:01.21
>>928
char notAsciz[1000];

strcpy(notAsciz, "あいうえお");
char * second = strchr(notAsciz, '\0') + 1;
strcpy(second, "かきくけこ");
char * third = strchr(second, '\0') + 1;
strcpy(third, "さしすせそ");

int firstLen = sprintf(notAsciz, "あいうえお");
int secondLen = sprintf(notAsciz + firstLen + 1, "かきくけこ");
sprintf(notAsciz + firstLen + 1 + secondLen + 1, "さしすせそ");

934 :デフォルトの名無しさん:2011/10/25(火) 13:04:38.36
>>928
こういう意味?

int i;
char s[50], *p, *q[] = { "あいうえお", "かきくけこ", "さしすせそ" };

for(p = s, i = 0; i < sizeof q / sizeof q[0]; i++)
p += sprintf(p, "%s", q[i]) + 1;


935 :デフォルトの名無しさん:2011/10/25(火) 14:02:41.60
C言語で処理したデータをmysqlにINSERTする
プログラムを教えてください。

936 :デフォルトの名無しさん:2011/10/25(火) 14:19:35.73
>>928
“あいうえお”の後ろに\0 をつければ?

937 :デフォルトの名無しさん:2011/10/25(火) 14:22:01.60
>>935
mysql_query(& mysql, "insert command string");
こんな要領。

938 :デフォルトの名無しさん:2011/10/25(火) 14:22:16.78
>>936
ばーか。

939 :デフォルトの名無しさん:2011/10/25(火) 14:26:58.16
自己紹介乙。

940 :デフォルトの名無しさん:2011/10/25(火) 15:17:57.94
>>928
#include <stdio.h>
#include <string.h>
int main()
{
char text[100] = {0};
char *data[3] = { "あいうえお", "かきくけこ", "さしすせそ" };
char *p;
int i;

p = text;
for (i = 0; i < 3; i++) {
sprintf(p, "%s", data[i]);
p += strlen(data[i]) + 1;
}
p = text;
while (1) {
if (*p) printf("%c", *p++);
else {
printf("\\0");
if (!*++p) break;
}
}
printf("\n");
return 0;
}


941 :デフォルトの名無しさん:2011/10/25(火) 15:34:13.59
>>935
>>918

942 :デフォルトの名無しさん:2011/10/25(火) 16:49:15.59
C言語で改行コードがCR(\n)になっていると思うんですが、
それをCR+LF(\r\n)に変更することはできますか?

943 :デフォルトの名無しさん:2011/10/25(火) 16:50:35.70
>>942
もちろん!

944 :デフォルトの名無しさん:2011/10/25(火) 16:53:31.28
>>943
どうしたらいいですか?

945 :デフォルトの名無しさん:2011/10/25(火) 17:16:18.84
問題
printfのような可変長引数の関数をluaにバインディングするCソースを書きなさい。

946 :デフォルトの名無しさん:2011/10/25(火) 17:17:32.93
>>943
strcatで\r\nをつけたらできました
ありがとうございました。

947 :デフォルトの名無しさん:2011/10/25(火) 17:51:09.78
>>945
お前が欲しいだけだろ。
宿題スレにでも池。

948 :デフォルトの名無しさん:2011/10/25(火) 18:16:52.54
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < ちょーっと難しい問題出すとすーぐこれだ
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\


949 :デフォルトの名無しさん:2011/10/25(火) 18:19:17.47
>>948
あなたにはとっては難しいの?

950 :デフォルトの名無しさん:2011/10/25(火) 18:59:47.01
>>949
簡単だろ?答えてみろよw

951 :デフォルトの名無しさん:2011/10/25(火) 19:07:26.60
>>937
ありがとうございます。
最初は書き込む予定でしたが、ファイルから読み込み、
MySQLに入れることにしました。

C言語で、やるにはどのようにしたらよいのでしょうか。
何回も申し訳ありません。

952 :デフォルトの名無しさん:2011/10/25(火) 19:30:12.40
>>948
入門だからな

953 :デフォルトの名無しさん:2011/10/25(火) 19:34:25.44
>>951
SQLite

954 :デフォルトの名無しさん:2011/10/25(火) 19:59:50.75
るあってなん?

955 :デフォルトの名無しさん:2011/10/25(火) 20:12:11.72
スクリプト言語

956 :デフォルトの名無しさん:2011/10/25(火) 20:12:44.10
>>953
参考になるサイトありますか?

957 :デフォルトの名無しさん:2011/10/25(火) 20:17:03.46
http://www.sqlite.org/

958 :デフォルトの名無しさん:2011/10/25(火) 21:52:13.11
"ABSCD"test.txt"AAAAA"
のプログラムがあるときに、
""の中がABSCDとAAAAだけになってしまい、
test.txtが認識されません。
どうしたらいいですか?

959 :デフォルトの名無しさん:2011/10/25(火) 21:57:20.78
>>956
ここをちょっと読んで見て
http://codezine.jp/article/detail/374

960 :デフォルトの名無しさん:2011/10/25(火) 22:12:41.47
>>919
簡単な話にしかレスが付かないの法則? w

>file_stat.st_size + 0UL != (unsigned long int) file_stat.st_size
>一体これはどういう意味なの?
>
>左辺はoff_t型で、右辺はそれをULに型キャストしてるから
>ULより大きいサイズだとエラーになるという事かな。

少し違って、
off_t が UL より大きいサイズのとき左辺は off_t 型で
st_size が負の値のとき != が成り立つ(エラーになる)、じゃないかな。

off_t は符号付き整数、というのは常に正しいんだっけ? 忘れたw

961 :デフォルトの名無しさん:2011/10/25(火) 22:54:32.36
makeコマンドで実行ファイルを作りますが、
そのタイミングでシェルを動かすことは可能ですか?


962 :デフォルトの名無しさん:2011/10/25(火) 22:56:34.93
可能です。
というか、常に動いているが。

963 :デフォルトの名無しさん:2011/10/25(火) 22:57:30.39
>>960
負数のチェックは上の st_size < 0 でしてるんでは?
longでは負数となる領域になってないかチェックしてるんだと思う。

964 :デフォルトの名無しさん:2011/10/26(水) 00:19:34.43
教科書の以下の問題を教えてください。
正解は下記のようですが、if(c !='\n')
を省略すると2行にわたって表示されてしまいます。
なぜこの文が必要なのでしょうか。


#include <stdio.h>
int main(void)
{
int c;
printf("文字を入力してください!\n");
c=getchar();
while (c !=EOF){
if(c !='\n')
printf("入力文字のJISコードは、0X%2xです。\n",c);
c=getchar();
}
return 0;
}


965 :デフォルトの名無しさん:2011/10/26(水) 00:31:41.38
お金儲けできるプログラム教えてください

966 :デフォルトの名無しさん:2011/10/26(水) 00:37:03.78
投資を自動化しろ

967 :デフォルトの名無しさん:2011/10/26(水) 00:43:21.70
>>964
改行も文字として扱われるから

968 :デフォルトの名無しさん:2011/10/26(水) 00:47:44.23
>>964
2行目のASCIIコード(JISコード)は何と出てる?

それをCではどう表現する?
'\n' ではないのかね?

969 :デフォルトの名無しさん:2011/10/26(水) 03:48:24.08
Cの標準入出力にはバッファがあるって話だろ?
入力された文字は一旦バッファにためられ改行が入力された時点で一気にバッファから出力されるから
getchar()でそれを一文字ずつ拾ってくと最後に改行コードを拾うことになると

970 :デフォルトの名無しさん:2011/10/26(水) 04:41:04.08
getchar()が1文字入力ってリファレンスに書いてあるのに
実際にやってみると一文字キー入力しただけは何も起きずその後にEnterキーを押してはじめて動く
そこで1文字入力するってのはキー押してからEnter押すことなんだと勘違い

971 :デフォルトの名無しさん:2011/10/26(水) 07:17:00.15
次スレ立てます

972 :デフォルトの名無しさん:2011/10/26(水) 07:17:50.46
次スレ立てました
C言語なら俺に聞け(入門編)Part 91
http://hibari.2ch.net/test/read.cgi/tech/1319581056/

973 :デフォルトの名無しさん:2011/10/26(水) 07:28:35.24
おつ!

974 :デフォルトの名無しさん:2011/10/26(水) 08:29:08.52
>>919
off_tが64ビットサイズで、unsigned long intが32ビットサイズの場合なんかを想定してんのかな。
キャストで丸められて初めて不等式が成り立つ。

975 :デフォルトの名無しさん:2011/10/26(水) 10:35:25.11
5が出るまで数字を入力し続けて
5が出たら
その入力した数字全ての平均を出すプログラムの作り方を教えてください

976 :デフォルトの名無しさん:2011/10/26(水) 10:45:28.18
>>975
カウンター、合計値=0
5以外の入力->カウンターを+1、合計に入力値を足す。
5を入力->(double)合計値/カウンター

977 :デフォルトの名無しさん:2011/10/26(水) 10:45:29.60
>>972



978 :デフォルトの名無しさん:2011/10/26(水) 10:54:16.24
>>975

#include <stdio.h>

int main(void){
int counter = 0, goukei = 0, n;
while (1) {
printf("in = ");
scanf("%d", &n);
if (n == 5)
break;
counter++;
goukei += n;
}
if (counter > 0)
printf("%g¥n", (double) goukei / counter);
return 0;
}

979 :デフォルトの名無しさん:2011/10/26(水) 11:06:04.66
ありがとうございます
5kという計算式で
kに数字を入力して
100になる時のkを求めるプログラムはどうやって作るのでしょうか疑問符

980 :デフォルトの名無しさん:2011/10/26(水) 11:18:36.75
if(k==100/5) {

}

981 :デフォルトの名無しさん:2011/10/26(水) 16:00:12.56
strcatの要領でint型の配列を
結合する関数があれば教えてください

982 :デフォルトの名無しさん:2011/10/26(水) 16:01:08.56
ないです

983 :デフォルトの名無しさん:2011/10/26(水) 16:16:27.58
>>982
なにかいい方法知らないですか?
a[10]={0,1,2,3}とb[]={4,5}結合させたいとすると,
a[10]={0,1,2,3,b[0],b[1]}みたいな感じでするしかないのでしょうか?

984 :デフォルトの名無しさん:2011/10/26(水) 16:18:28.01
ポインターを使うんですよ

985 :デフォルトの名無しさん:2011/10/26(水) 16:23:51.08
>>983
そういう関数作れば?

986 :デフォルトの名無しさん:2011/10/26(水) 16:24:48.08
ああごめん、>>981すら読まずに。。。

>>981
ないので必要なら作る。

987 :デフォルトの名無しさん:2011/10/26(水) 16:50:09.63
Ex:
int intcat(int * dest, int destCnt, int const * src, int srcCnt)
{
for (int ic = 0; ic < srcCnt; ++ic) {
dest[destCnt++] = src[ic];
}
return destCnt;
}
// Usage: destCnt = intcat(dest, destCnt, src, srcCnt);

988 :デフォルトの名無しさん:2011/10/26(水) 17:02:34.34
Sentinel どうすんのさ?

989 :デフォルトの名無しさん:2011/10/26(水) 17:10:07.58
じゃあフォーク。
void array_cat(void * dest, int destCnt, void const * src, int srcCnt, size_t size)
{
memcpy(dest + size * destCnt, src, size * srcCnt);
}

int main()
{
int ia[10] = {1, 2, 3};
int ib[] = {11, 12};
array_cat(ia, 3, ib, sizeof(ib)/sizeof(*ib), sizeof(*ia));
for (i = 0; i < 10; i++){
printf("%d: %d\n", i, ca[i]);
}
return 0;
}

>>988
ね。どうするも伝えられてないので。

990 :デフォルトの名無しさん:2011/10/26(水) 17:14:02.38
int型でsentinelは相性が悪いな。
値域を厳密に仕様化できないとね。
たとえば、0-32767しか扱わなくていいなら-1をSentinelにできるけど。
それを考え出すと、サイズを別に管理したくなる。
尤も、それならそれで>987みたいに別に持たずに構造体にした方が判り易い気がするが。

991 :デフォルトの名無しさん:2011/10/26(水) 17:49:25.72
CSTLでok

992 :デフォルトの名無しさん:2011/10/26(水) 18:03:55.14
台形近似法を用いてf(x)=cos(x)を任意の範囲で積分するプログラムを
ユーザ関数を定義して作成しなさい.
その際の区分間距離も任意に入力できるようにすること。

実行例
積分範囲を入力せよ
x0 = 0
xl = 10
区分間距離を入力せよ
length = 1
ans = 9.949055
積分範囲を入力せよ
x0 = 0
xl = 100
区分間距離を入力せよ
length = 5
ans = 49.588107

お願いします。

993 :デフォルトの名無しさん:2011/10/26(水) 18:07:35.16
ここは宿題スレじゃねぇ。

994 :デフォルトの名無しさん:2011/10/26(水) 18:15:44.11
へえ

995 :デフォルトの名無しさん:2011/10/26(水) 18:16:01.71
といっても宿題レベルの分り易い質問にしか答えられないからな。
入門スレだから仕方ないといえばそれまでだが…

996 :デフォルトの名無しさん:2011/10/26(水) 18:39:06.92
つーか積分なんて
一般人にはわからんぞ

997 :デフォルトの名無しさん:2011/10/26(水) 18:40:36.76
>967 >968 改行が表示されるのはわかっていたのですが、getcharの理解が足りなく
     文字列がバッファされているのがわかりませんでした。
     質問の仕方が悪くすいませんでした。
>969 >970 この説明ではっきりとわかりました。
書き込みをしてくれた皆様ありがとうございました。m(_ _)m


998 :デフォルトの名無しさん:2011/10/26(水) 18:48:26.06
宿題じゃ無いとしたら、CでやるよりMathematicaやMatLabみたいな数式処理ソフト使った方が良いと思う。

999 :デフォルトの名無しさん:2011/10/26(水) 19:18:39.43
銀河鉄道999

1000 :デフォルトの名無しさん:2011/10/26(水) 19:19:18.90
>>1
ガッ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

219 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)