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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 23:38:08 ]
言語の入門者向け解説スレです。

教えて欲しいのではなく宿題を丸投げしたいならこちらへ。
 C/C++の宿題を片付けます 108代目
 pc11.2ch.net/test/read.cgi/tech/1211980711/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

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

75 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:22:12 ]
>>71
char *p;
if(!p) { }
はOK. というか C++ では NULL よりは 0 の方が好まれているようです。
>>73
あ な た の 存 在 が 迷 惑 で す。

76 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:23:36 ]
正常な状態を検知するのに否定を使うのはセンスに欠けると思う。

77 名前:71 mailto:sage [2008/06/15(日) 18:27:21 ]
ちょっと調べてみた

NULLの値が0でなくても、
if(!p)
if(p != 0)
if(p != NULL)
は同じ結果になるようです。

サンクス

78 名前:デフォルトの名無しさん [2008/06/15(日) 18:28:52 ]
>>75
ド素人をド素人のままのさばらせておくお前もあいつと同じく迷惑な存在。
www.kouno.jp/home/c_faq/c5.html#3

79 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:31:32 ]
>>76
trueが正常とは限らないだろう。例えば、
if (!(p = malloc(n))) {
perror("malloc");
return 1;
}
正常だった場合の処理;

もっとも、この書き方は、コーディング規約で禁止しているところもあると聞くが。

それはともかく、
if (!strcmp(a, b)) ...
は頂けないかな。

80 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:38:05 ]
>>78
ド素人のスレなので、そこんとこよろしく

81 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:39:12 ]
if (!strcmp(a, b)) ... で等しい時に真なんだもんな。
直感に反するわ。

82 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:40:06 ]
>>69
んーまあ比較演算子のない条件式を「変」だと思えるピュアな心があればいいんじゃないかな。
ただし、識別子と意味が食い違って紛らわしくなるような場合はいかん。いかんよ。

83 名前:デフォルトの名無しさん [2008/06/15(日) 18:40:47 ]
>if(!p)
>if(p != 0)
>if(p != NULL)
>は同じ結果になるようです。

流石ド素人。
なかなか諧謔のセンスがある。
このような頭の悪い人間はプログラミングの世界から手を引いた方がよい。
疑似科学の学者になったほうがよいのではないか?



84 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:42:09 ]
>>71 >>77
まあ逝ってきなさい
www.kouno.jp/home/c_faq/c5.html

85 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:47:03 ]
このおばちゃんは元気でやってるの?
この画像がニュースで流れて以来、情報が無いのですが
ちゃんと避難できたでしょうか?
2chart.fc2web.com/2chart/obachannnigeteeeeeeeee.html

86 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:58:34 ]
>>83
うっかりミスだとわかるだろうに
天下を取ったようなその書き込み

もっと大きな気持ちで行こうよ

87 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:04:23 ]
いや、人には色々心の傷があるんだよ。触れないでおくも吉

88 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:04:47 ]
>>83のような口調でエラー/警告メッセージを吐くコンパイラがあったとしたら、
俺なら窓から投げ捨てる。

89 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:07:34 ]
いやちょっと欲しいかも

90 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:08:34 ]
>>82
if (isdigit(c)) ...
とかだと比較演算子が現れないけど、これを無理矢理
if (isdigit(c) != 0) ...
とか書く訳?

91 名前:デフォルトの名無しさん [2008/06/15(日) 19:11:41 ]
>>86
ごめんなさい、今日ちょっとイライラしているんです。
そもそも>>69を書いたのは私で論争を起こそうと考えたからなんです。
あー、ごめんなさいごめんなさい、CもしたことがないのにCのポインタがナントカとか言って
ごめんなさい。人間ド素人は私の方なんです。あぁ、こういうことを平然というから味の素並に
嫌われる元なんですね、ごめんなさいごめんなさい。

92 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:15:29 ]
いちいちageる奴にろくなのは居ない

93 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:41:48 ]
>>90
真偽を返す関数は逆に比較すべきじゃない。



94 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:06:42 ]
>>90
それは特殊だなって見ればわかるじゃん

95 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:10:25 ]
書いてもいいし書かなくてもいい
ただ、自分のやり方として首尾一貫するのが大事

96 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:55:51 ]
そそ if(p) と if(p != 0) では同じ実行結果となるけどコンパイラが展開したコードは微妙に違うのをだすよね(オプティマイズの指定にもよるけど)

てことは置いといてもっと気楽に行こうよ。
そう書いたらダメとか、それは間違ってる・・とかより >>74 や >> 95 に一票(もしかすると同一人?)

>>90 は頭を柔らかくね。何年かして、そのプログラム見たときに何か感じるものがあればいいんじゃない?

97 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:03:36 ]
pがポインタ型なら全く同じ意味だから、
まともなコンパイラなら同じコードを生成するよ。

98 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:45:51 ]
逆に、違うコードを吐いたところで9割9分くらいは目くじら立てることないと思う。

99 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:55:03 ]
GetRandom関数の意味を教えてください


100 名前:デフォルトの名無しさん [2008/06/15(日) 22:55:37 ]
>>99
スレ違い

101 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:02:35 ]
>>100
すいませn
どこいけばいいですか?

102 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 23:38:08 ]
>>97
あああ、ちがうよ〜。 or reg, reg とするか cmp reg,0 とかの話。


>>98
そりゃ目くじらどころかござにも引っかからないだしょ。

103 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 02:39:16 ]
>>78
ん、確かに。失礼しました。



104 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 04:33:31 ]
HWND型の比較はどうやってすればいいですか?

105 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 07:28:50 ]
==

106 名前:aaa mailto:sage [2008/06/16(月) 15:30:50 ]
scanfで入力させると
例えば
int a;
printf("数値:"); scanf("%d",&a)
実行結果  数値:●●

ってなって入力させると改行がはいるじゃないですか?
これを実行結果が 数値:●●センチ
のようにできますかね?

107 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:34:43 ]
一般的には無理
環境によっては可能かも知れないが、かなり特殊だと思う

108 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:36:31 ]
って言うかC言語の問題じゃなくてOSの入出力インタフェースの問題だな

109 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:41:22 ]
一回画面クリアして書き直すとか

110 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:01:11 ]
例えば3〜入力した数までの数をある法則で計算していく時、
その中から素数を計算から除外したい時はどのようにしたらいいんでしょうか?

111 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:03:13 ]
素数かどうかを判定して素数なら除外する

112 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 17:03:35 ]
>>110
素数判定して除外すればいい。
恐らくは、こんな要領。
for (int ic = 3; ic < inputedNumber; ++ic) {
if (isPrime(ic)) continue;
someFunction();
otherFunction();
}

113 名前:112 mailto:sage [2008/06/16(月) 17:04:10 ]
ちっ、細かく書き過ぎて先を越されたぜ



114 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:01:41 ]
物理シュミレーションをやりたいんだけど、いい入門書ない?

115 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:36:59 ]
セグメンテーションエラーをなおす方法としてなにがあります?

116 名前:デフォルトの名無しさん [2008/06/16(月) 19:39:41 ]
>>115
デバッガの使い方覚える

117 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:57:35 ]
どうやってつかうの?

118 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:00:57 ]
べんきょうする

119 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:09:40 ]
>>114
分野をはっきりさせないと答えられない。

120 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:15:55 ]
>>115
どこまで進んで落ちてるのか調べればいいんじゃ?
適当にprintfいれるとか。

121 名前:デフォルトの名無しさん [2008/06/16(月) 20:19:35 ]
以下のようなデータファイルをfgetsとsscanfを使って読み込みたいのですが、
どうすればよいでしょうか?

test.datの中身
1 2 3 4 5 6 7 8 9 10 11 ... 1000

char line[10000];
int a[1000];
FILE *fp;

fp=fopen("test.dat","r");
fgets(line, sizeof(line), fp);

とすると、lineにtest.datの内容が文字列として格納されます。
ここからsscanfを用いて、1〜1000をa[0]〜a[999]に格納したいです。
繰り返し構文を用いて何とかできませんでしょうか?

122 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:04:37 ]
ものすごい初歩的な質問ですが宜しくお願いします。
ためしにファイル名a.cとして文字列を表示させるだけのプログラムでコンパイルを試みたところ
Error E2209 a.c1: Unable to open include file 'stdio.h'
Warning W8065 a.c 4: Call to function'printf'with no prototype in function main

と表示されできません。
なにがいけなかったのでしょうか。

123 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:06:42 ]
標準インクルードパスがちゃんと設定できてないとか?



124 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:12:28 ]
>>123
レスありがとうございます。

確認してみましたができてました。

ちなみにプログラムは
#include <stdio.h>
int main(void){
printf("あああああ\n");
return 0;
}
ふつうのプログラムです。

125 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:14:37 ]
とりあえずプログラムに間違いは全く見受けられないから、
どっかの設定に問題があるとしか。

126 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:18:53 ]
>>124
できてないからおかしなことになっとるんじゃ

127 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:19:29 ]
確認させてください。

ボーランド社のコンパイラを使っております。ファイルをC:\Borlandに解凍して、

環境変数でPathの末尾に;C:\Borland\BCC55\Binを付け加える

二つのcfgファイルを作る

であっていますか?

128 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:30:22 ]
>>121
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6933.c
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6934.c

fgetsとsscanf 不使用
> char line[10000];
無理

129 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:35:32 ]
セミコロン有って98?


130 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:36:03 ]
>>120
それをやったのですけど
そのプログラムではfread,fseekを使ってるプログラムで
ひさしぶりにつかったらどうやって組み立ててたのかわからなくて。

宿題のスレにお願いしたのですけど。
ここにはるとマルチになるので


131 名前:130 mailto:sage [2008/06/16(月) 21:42:14 ]
これ
a-draw.com/uploader/src/up1643.zip.html
このファイルをダウンロードしてもらって解凍してもらいたいんです。
prog.cのファイルを実行してセグメンテーションエラーをとってほしいんです
けど。

132 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:42:25 ]
すでに現段階でマルチだよ

133 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:46:20 ]
>>127
cfg ファイルの中身が間違っている可能性が高い



134 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:49:36 ]
>>133
レスありがとうございます
bcc32.cfg内は
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
ですよね。
ilink32.cfg内は
-L"c:\Borland\Bcc55\lib"
ですよね・・・

とくにファイルの移動とかはしていません。デフォルトのままです

135 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:51:49 ]
中身は問題なさそうだな・・・。
んで、そのファイルはどこに置いてる?

136 名前:130 mailto:sage [2008/06/16(月) 21:54:14 ]
prog.cですけど
きちんと動けばtextフォルダ内にテキストファイルができます

137 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:54:27 ]
あいや、cfg ファイルね

138 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:55:16 ]
って、質問者からしてちゃうやんけw
>>135>>134 へのレス。

139 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:56:03 ]
ワロタ

140 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:56:32 ]
Binに入れています。

141 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:57:47 ]
だが断る

142 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:58:11 ]
cfg ファイルは非Unicodeのプレーンテキストファイル?

143 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:00:26 ]
はい



144 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:01:54 ]
C:\Borland\Bcc32\include\stdio.h はある?

145 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:02:12 ]
文字コードはANSIでした。
拡張子もtxtではなくcfgに書き換えています。

146 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:02:32 ]
環境変数かえてから再起動してないってオチでわ?

147 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:03:19 ]
コンパイラ走ってるからそのあたりは大丈夫そうに思える。

148 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:04:30 ]
自分のレス番名前に入れろ

149 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:04:32 ]
「登録された拡張子は表示しない」
設定になっているがために
本当は .cfg.txt になってるのが .cfg と表示されている・・・とかはない?

150 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:05:43 ]
>>144
ありました。

>>146
何回も再起動しました;;

>>147
コマンドプロンプト開いてbcc32でズラズラでてきます。

151 名前:122 mailto:sage [2008/06/16(月) 22:07:27 ]
>>149
拡張子は全て表示するようにしています.



152 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:11:37 ]
だが断る

153 名前:122 mailto:sage [2008/06/16(月) 22:15:42 ]
蛇足(?)ですが、JDKも導入しています。こちらはフツウに動作してくれます。



154 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:28:52 ]
見てみようと思ったがダウンロードできん。

155 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:43:34 ]
>>151
んじゃ、もう Borland は捨てよう。
インスコして即使える VC++ 2008 Express Edition にしよう。

156 名前:122 mailto:sage [2008/06/16(月) 22:51:29 ]
>>155
ですね・・・

Visual C++は初めて使う(学校ではUltra-C Proというソフトつかって勉強してました)のですが、まったく仕様がかわりますか?
基本画面を見ただけでごちゃごちゃしていてよくわからないのですが、、、

157 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:52:53 ]
コマンドプロンプトからコンパイルする時にインクルードパスを指定してみたら?

158 名前:122 mailto:sage [2008/06/16(月) 22:54:56 ]
>>157

コマンドプロンプトの使い方がまったくわかりません;;

159 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:55:52 ]
> bcc32.cfg内は
> -I"c:\Borland\Bcc55\include"

> C:\Borland\Bcc32\include\stdio.h はある?
→ありました

Bcc使ったこと無いんだが、Bcc55ってのとBcc32ってディレクトリできるん?

160 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:00:56 ]
>>159
御免。それ間違えただけ。

161 名前:122 mailto:sage [2008/06/16(月) 23:01:08 ]
>>159

>C:\Borland\Bcc32\include\stdio.h

これはBcc55の間違いでした。すみません。

162 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:01:28 ]
>>156
基本的な使い方はそこいらのサイトに載ってると思う。

163 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:03:23 ]
>>160-161
了解です。

bcc -ehoge.exe hoge.c
でいいのかな。

インクルードパスを明示的に指定するために
bcc -I"c:\Borland\Bcc55\include" -ehoge.exe hoge.c
とやってみるか、インクルードファイルをフルパス指定にするために
#include "c:\Borland\Bcc55\include\stdio.h"
に変えてみるとか。



164 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:04:36 ]
って\あやしくね?Windows分かりませんで逃げていい?(汗

165 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:05:15 ]
#include の中は \ 1つでいいよ

166 名前:122 mailto:sage [2008/06/16(月) 23:14:16 ]
>>162
ちょっとググってみます。

>>163

おぉぉおぉぉぉおお!できました!ありがとうございます!
しかし、もうVisualC++をインストールし終えてしまいました^^;
でもありがとうございます!

167 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:17:29 ]
>>166
お。できたんだ?
ってことはコンフィグファイルがうまく効いてないのかしら。
その辺はますます使ったこと無いのでわかりませんが、VCに移行するんですね^^;
がんばってねー

168 名前:122 mailto:sage [2008/06/16(月) 23:25:10 ]
>>167

VisualC++は使い慣れるのにけっこう時間が必要のようです^^;;;
当分、メモ帳+VisualC++の併用していこうとおもいます。
167さんのアドバイスで新しい書き方を覚えましたし、満足です^^
ありがとうございました。がんばりまうs!

169 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:29:44 ]
どうでもいいけどC言語以前の問題だと思う

170 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:31:33 ]
さらに入門以前の問題でもある

171 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:51:44 ]
>>168
メモ帳使う方が混乱すると思うぞw

172 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:00:15 ]
しかし、Visual C++コマンドプロンプトの存在は
bcc32.cfgを用意するなどといった手間がない分、Borland C++より優位。
インストーラの力は偉大だ。

173 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:07:07 ]
>>168
今までのレス見てて原因分かったぞ
bcc32.cfgのincludeを指定してるパスが間違ってるんじゃないのか



174 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:08:15 ]
>>134 で特に間違いはないように見えるけど

175 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:09:39 ]
見逃してたwww






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

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

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