C言語なら俺に聞け( ..
[2ch|▼Menu]
175:デフォルトの名無しさん
07/05/10 22:48:20
>>173
system("gnuplot < data.txt");

とかじゃだめかな?
data.txtはあらかじめ作っておく。

176:デフォルトの名無しさん
07/05/10 22:49:27
>>172,174
ありがとうございます。m(_;_)m
>is系関数に渡すときは unsigned char でキャストするのは定石。
助かります。

177:デフォルトの名無しさん
07/05/10 23:27:12
>>173
とりあえず表示を残すだけなら "gnuplot -persist" とすれば良いけど、
グラフを表示しているプロセス(gnuplot_x11)のIDを
外部プログラムを使わずに見付けて殺す方法が分からん。

178:デフォルトの名無しさん
07/05/10 23:50:48
system("gnuplot ... &")ではダメ?
真面目にプロセス管理したいならfork()/exec*()を使う羽目になるけど。

179:デフォルトの名無しさん
07/05/11 06:20:36
初歩的な質問ですがお願いします。
strlenなどの文字列を扱う関数は引数としてchar型の文字列への先頭ポインタをとります。
つまり、strlen(s)とすると配列sの先頭アドレスが渡され、結果が返ります。
しかし、strlen("test")とした際も結果は出力されます。
この"test"という文字列はどのようにプログラム内部で扱われるのでしょうか?
自動的に一時的にメモリに確保されるのでしょうか?

では宜しくお願いします。

180:デフォルトの名無しさん
07/05/11 07:31:33
>>179
exeファイルの中に入ってるでしょ
実行時にどう配置されるかはシステムによる
プログラム上ではポインタとして扱われる

181:デフォルトの名無しさん
07/05/11 07:44:13
>>179
ほぼ、static const char foo[] = {'t', 'e', 's', 't', '\0', }; strlen(foo);と同じ。

182:デフォルトの名無しさん
07/05/11 15:35:08
クリリンのAAきぼん

183:183
07/05/11 20:29:09
↓のソースで、☆印の行は何か意味があるでしょうか。
 あってもなくても変わらない気がするのですが...
( 環境:Windows Vista , Visual Studio C++ Express Edition )

#include <stdio.h>
#include <windows.h>

#define THREAD_NUM 4
#define DATA_NUM 12

typedef struct _thread_type {
int thread_no;
int *data;
CRITICAL_SECTION *cs;
} thread_arg_t;

void thread_func(void *arg) {
thread_arg_t* targ = (thread_arg_t *)arg;
int i, result;

for (i = 0; i < DATA_NUM; i++) {
// EnterCriticalSection(targ->cs);
result = targ->data[i] + 1;
Sleep(0); ☆
targ->data[i] = result;
// LeaveCriticalSection(targ->cs);
}
}



184:183
07/05/11 20:30:00
int main() {
HANDLE handle[THREAD_NUM];
thread_arg_t targ[THREAD_NUM];
int data[DATA_NUM];
int i;
CRITICAL_SECTION cs;

/* データの初期化 */
for (i = 0; i < DATA_NUM; i++) data[i] = 0;

InitializeCriticalSection(&cs);

for (i = 0; i < THREAD_NUM; i++) {
targ[i].thread_no = i;
targ[i].data = data;
targ[i].cs = &cs;
handle[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread_func,
(void *)&targ[i], 0, NULL);
}
WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE);
DeleteCriticalSection(&cs);
for (i = 0; i < DATA_NUM; i++) printf("data%d : %d\n", i, data[i]);
return 0;
}


あとSleepは、
 ・0ミリ(引数の分)秒ウェイト状態にする。
 ・0はMPUを他の優先度のスレッドにのみ譲る。
 ということでしたよね?


185:デフォルトの名無しさん
07/05/11 20:30:46
>>183
Win32では 「0を指定した場合、 スレッドは、 実行準備ができている同じ優先順位のほかのスレッドにタイム スライスの残りを譲ります。」

186:デフォルトの名無しさん
07/05/11 20:39:55
なんでMSDN Libraryで調べれば直ぐ分かるような事を質問するんだろうな

187:183
07/05/11 20:40:06
>>185
おーありがとございますー!!

188:デフォルトの名無しさん
07/05/12 00:12:06
printf("%s/n","Hello World");

上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。


189:デフォルトの名無しさん
07/05/12 00:14:46
意味が分からん。

190:デフォルトの名無しさん
07/05/12 00:15:28
>>188
マルチうざい

191:デフォルトの名無しさん
07/05/12 00:25:14
>>190
すみません

192:デフォルトの名無しさん
07/05/12 00:33:48
>>190
ごめんなさい、でも教えてください蟹

  Viiv  
 ミ(エ)ミ....


193:デフォルトの名無しさん
07/05/12 00:35:48
あのーコールバックの書き方が解からないのですが
助けてください。動作するサンプル提示してくれませんか?

194:デフォルトの名無しさん
07/05/12 00:37:14
何のコールバックだよ…

195:デフォルトの名無しさん
07/05/12 00:37:38
URLリンク(www.google.co.jp)

196:蟹NIC
07/05/12 00:37:47
printf("%p/n","Hello World");

上のprintf文の%pでどのように"Hello World"を処理しているのか分かりません。
どなたか教えてください。 

  Viiv  
 ミ(エ)ミ....

197:デフォルトの名無しさん
07/05/12 00:49:14
>>188
可変長引数でも調べて推測してください。

様は第一引数の中を読んでいって、%フラグに当たったら対応する引数をフラグに従って変換した上で元の文字列に挿入してるんだと思う。


198:デフォルトの名無しさん
07/05/12 00:56:33
別に挿入なんかしてないけどね。

199:デフォルトの名無しさん
07/05/12 01:55:15
>>197
ご教授ありがとうございます。

200:デフォルトの名無しさん
07/05/12 02:30:45
そんなに知りたいならglibcのソースでも読めばいいのにな

201:デフォルトの名無しさん
07/05/12 02:37:18
ソースリーディングは初心者には難しい

202:デフォルトの名無しさん
07/05/12 02:45:10
>>196
------------------------------------------------------------
60 名前: デフォルトの名無しさん 投稿日: 2007/05/12(土) 00:10:17
printf("%s/n","Hello World");

上のprintf文の%sでどのように"Hello World"を処理しているのか分かりません。
どなたかご教授して下さい。
------------------------------------------------------------

この質問って流行ってるのか?

203:デフォルトの名無しさん
07/05/12 02:49:12
馬鹿がマルチしてるだけじゃない?

204:蟹NIC
07/05/12 03:16:31
>>202 いいえ、まマイブームレベル位かな

  Viiv  
 ミ(エ)ミ....


205:デフォルトの名無しさん
07/05/12 06:53:20
>>117
配列は番兵を使うために便宜的に要素+1の部分にアクセスできるんだぜ?



206:デフォルトの名無しさん
07/05/12 07:27:03
>>205
ねーよwwwwwwwwwwwwwwwwwwwwwwwwwww

#include <stdio.h>

int main() {
int a[4] = { 0, 0, 0, 0 };
int b = 0;

a[4] = 3;
printf("%d\n", b);

return 0;
}

で 3 が表示されたぜ(gcc 4.0.1 for Mac)。

207:デフォルトの名無しさん
07/05/12 07:33:50
ポインタを向けるだけなら未定義動作にならないってだけでしょ

208:デフォルトの名無しさん
07/05/12 07:43:23
>アクセスできる
をどう好意的に解釈しても、ポインタを向けるだけ、にはならん罠。

209:デフォルトの名無しさん
07/05/12 07:45:46
どちらかというと205宛てに書いたレスなのだが…

210:デフォルトの名無しさん
07/05/12 08:50:05
>>205
>配列は番兵を使うために便宜的に要素+1の部分にアクセスできるんだぜ?
マジレスするとそれは文字列のときだけな。
char a[] = {1, 2, 3}; // sizeof a == 3
char b[] = "123"; // sizeof b == 4


211:デフォルトの名無しさん
07/05/12 08:50:21
釣りだって

212:デフォルトの名無しさん
07/05/12 08:51:17
知ってるよ

213:デフォルトの名無しさん
07/05/12 08:52:22
char c[3] = "123";

214:デフォルトの名無しさん
07/05/12 09:00:47
charの配列だけchar配列じゃなくて文字配列って言うことが多いし
文字配列には後ろに'\0'が付くみたいな覚え方をしてたから
なんかcharの配列だけは特別な代物のように思ってた過去

215:デフォルトの名無しさん
07/05/12 09:01:56
文字配列とは言わんなあ。
文字列としか。

216:デフォルトの名無しさん
07/05/12 11:26:20
私の処で文字配列といった場合、それはナルターミネートされていない。

217:デフォルトの名無しさん
07/05/12 11:35:24
相変わらず嘘と無価値な雑談でしか伸びないスレだな

218:デフォルトの名無しさん
07/05/12 11:36:38
君も仲間だ、歓迎するよ

219:デフォルトの名無しさん
07/05/12 13:01:15
質問です。
#include <stdio.h>
int main(void)
{
float a,b;
char e;
printf("変数a=");
scanf("%f",&a);
printf("変数b=");
     scanf("%f",&b);
printf("文字=");
scanf("%c",&e);
printf("変数a=%f 変数b=%f 文字列d=%c\n",a,b,e);
return 0;
}
これをコンパイルすると文字列データを読みこんでくれません。。
おそらくprintfかscanfの仕様に問題があるのでしょうがこれの理由と回避方法をご教示願いたいです。

220:デフォルトの名無しさん
07/05/12 13:17:40
>>219
・文字と文字列の違いを理解しよう。
・scanf()の仕様に気をつけよう。

221:デフォルトの名無しさん
07/05/12 13:20:11
演算子を使わないで割り算や掛け算ってどうやるんですか?たとえば9÷3

222:デフォルトの名無しさん
07/05/12 13:22:43
演算子を使わないで演算するには、関数を使えばいい。

223:デフォルトの名無しさん
07/05/12 13:25:01
>>222
関数を自分でつくるということですかね?

224:デフォルトの名無しさん
07/05/12 13:25:16
>>219
scanf("%c",&e);

scanf("%*[ \t\n]");
scanf("%c",&e);

変数b を読み込んだ後、改行文字がバッファに残っている
バッファに残った改行文字を次の scanf("%c",&e); で読み込んだため
変数e には改行文字が入ってしまった

この問題を回避するには、バッファに残っている改行文字を読み飛ばせば良い

225:デフォルトの名無しさん
07/05/12 13:27:18
つか入門書安易にscanf使いすぎ。
エラーチェックしなさすぎ。

226:デフォルトの名無しさん
07/05/12 13:38:59
>>223
つ[div()]

227:デフォルトの名無しさん
07/05/12 13:54:31
>>224なるほど ありがとうございます。

228:デフォルトの名無しさん
07/05/12 14:22:00
>>222
数学を一度勉強した方がいいですね。
具体的には線形空間というやつですよ・・・

229:デフォルトの名無しさん
07/05/12 14:27:06
数学の話じゃないだろ・・・常識的に考えて。

230:デフォルトの名無しさん
07/05/12 14:27:32
>>228
演算子を使わずにできる?
もちろんシフト演算も無しで

>>221
関数以外だとインラインアセンブラ使えば
演算子を使ったとは言われないとか?

231:デフォルトの名無しさん
07/05/12 14:28:43
>>228
何を寝惚けたことを?

232:デフォルトの名無しさん
07/05/12 14:44:24
設問の定義があいまい

233:デフォルトの名無しさん
07/05/12 14:51:20
// 演算子を使わない足し算。
int add(int a, int b)
{
FILE * fp = fopen("/dev/null", "w");
int rtn = fprintf("%*s%*s", a, "", b, "");
fclose(fp);
return rtn;
}

234:デフォルトの名無しさん
07/05/12 14:52:56
>>233
負数対応キボン

235:デフォルトの名無しさん
07/05/12 14:57:17
>>233
代入演算子を使っているw

>>234
わはは、そりゃ確かに>233じゃ無理だ。

236:デフォルトの名無しさん
07/05/12 14:58:03
int add(int a, int b) {

}

237:デフォルトの名無しさん
07/05/12 14:58:57
ミスった。

int add(int a, int b) {
 __asm {
  mov eax, a
  add eax, b
 }
}

238:デフォルトの名無しさん
07/05/12 15:02:00
そういえば関数呼び出しの括弧も演算子なんじゃなかったっけ?

239:デフォルトの名無しさん
07/05/12 15:02:17
>>222がなんでそんなことをしたくて何を「演算子」と呼んでいるかしらんが
if文だりなんだり使って全部作ればいいんじゃね
足し算なら1+1 = 2
だからa,bが両方とも1なら2を出力するというように
それらをすべて0〜9のを自分でつくる
あと桁上げの関数ももちろん自分で作って

240:デフォルトの名無しさん
07/05/12 15:03:27
比較にも演算子が必要だな。

241:デフォルトの名無しさん
07/05/12 15:04:40
if じゃなくて switch ならイケる。
ただ、コード量が多すぎて int 全部を網羅できないな。
char 程度ならともかく。

242:デフォルトの名無しさん
07/05/12 15:05:01
switch しか無いな

243:デフォルトの名無しさん
07/05/12 15:05:06
つまんないからもうやめていいよ

244:デフォルトの名無しさん
07/05/12 15:07:01
お前らほんと数学分かってないんだな・・・
まじ小学校からやり直せよ

245:デフォルトの名無しさん
07/05/12 15:08:19
>>235
そこにある=は初期化子であって演算子ではない。

246:デフォルトの名無しさん
07/05/12 15:12:47
>>244
プログラミング言語において「演算子」が何を指すかを勉強し直してきてください。

247:デフォルトの名無しさん
07/05/12 15:13:17
>>241
桁上げの関数作ればできるだろ
switchだって演算子を裏に隠しているだけに過ぎないし
ちなみに足し算とかってそもそも写像なんだから
なんでそんなことやりたいのかよくわからん
数学じゃなくてC言語で言う「演算子」は人間が勝手に付けた分類だから
それにこだわっても意味が無い
>>228のいうように少し数学を学んだほうがいい


248:デフォルトの名無しさん
07/05/12 15:13:39
>>245
しかし残念 >>238

249:デフォルトの名無しさん
07/05/12 15:15:31
>>247
何で数学の演算子にこだわるのか理解できないのだが。
ここは C 言語スレだぞ?

250:デフォルトの名無しさん
07/05/12 15:18:44
元質問者出てこいよ
後出しで、四則演算子のことでした、とか言いそうだが

251:デフォルトの名無しさん
07/05/12 15:19:36
>>222-250

252:デフォルトの名無しさん
07/05/12 15:20:53
>>221
>演算子を使わないで割り算や掛け算ってどうやるんですか?たとえば9÷3
割り算や掛け算って言ってるけど

253:デフォルトの名無しさん
07/05/12 15:22:43
>>222の問題意識が何なのかということだぁね

C言語だと同じことできるけどこれは演算子と呼ぶ
これはそう呼ばないだけの違いになってしまうから
C言語での「演算子」の意味にこだわって
わざわざ考えるほどの価値がある物と思えない
もし>>222がC言語において何を演算子と呼ぶのかをどうやって決めたか
知りたいとかなら別だけど

結局のところC言語での演算子と数学での演算子の区別すらつかずに
質問しちゃったってオチの気がするw

254:デフォルトの名無しさん
07/05/12 15:24:37
C仕様書には区切り句で何らかの作用を起こすもの(代入とかな)を演算子とすると書かれてるんだから
演算子を使わずに何かをするなんて無理だろ

255:デフォルトの名無しさん
07/05/12 15:27:00
ここは環境依存おkだから、
インラインアセンブラ使えばおk。

256:デフォルトの名無しさん
07/05/12 15:30:17
2で割った剰余を取る演算て最近のコンパイラだと
勝手に0x01とのビットANDもしくはそれより速いコードに変えてくれるんでしょうか?

257:デフォルトの名無しさん
07/05/12 15:32:47
>>254
てことはC言語の演算子は数学の演算子の定義に沿って定義されている
ということだな べんきょうになったw

258:デフォルトの名無しさん
07/05/12 15:33:27
>>256
Yes.

259:デフォルトの名無しさん
07/05/12 15:36:31
sizeof まで演算子だしなあ。

260:デフォルトの名無しさん
07/05/12 16:02:59
(void)printf("ほげほげ");
と、printfまでキャストをする必要はあるのでしょうか?

261:デフォルトの名無しさん
07/05/12 16:04:21
>>260
無い。そもそもintをvoidにキャストしてどうするんだ?

262:デフォルトの名無しさん
07/05/12 16:04:27
>>260
ない。
ただし、戻り値を取得し忘れてるわけじゃなく明示的に捨ててるんだという意思表示として
(void)にする流儀はあるにはある。
好み、コーディングスタイルレベルの話。

263:デフォルトの名無しさん
07/05/12 16:05:26
>>261
戻り値を使わないことを明示する効果がある。
lintのようなチェッカを黙らせる効果もあるな。

264:デフォルトの名無しさん
07/05/12 16:06:37
そうそう、コーディング規約に「戻り値は必ずチェックすること」という項目があって、
それの評価を厳密に行なう運用の場合にもそうする必要があるね。

265:デフォルトの名無しさん
07/05/12 16:10:14
>>263
lint対策か。それなら納得

266:デフォルトの名無しさん
07/05/12 16:57:40
コンパイラにもよる。
たとえばFreescaleのCodeWarriorは(void)をつけないとwarningを出すのがデフォルト動作。

267:デフォルトの名無しさん
07/05/12 18:42:50
int main(void){
  int a=1;
  kansu(a);
}
までやっておいて

@int kansu(int a){
  printf("%d",a*2);
  }
Aint kansu(int *a){
  printf("%d",a*2);
  }

@だと正常に動いたのですが、
Aだと「*」がダメだ〜 とコンパイラに怒られるのですが、
この違いとは何なんでしょうか?

268:デフォルトの名無しさん
07/05/12 18:45:51
>>267
(2)の*は、意味も分からないで適当につけたの?

269:デフォルトの名無しさん
07/05/12 18:47:47
int kansu(int *a){
  printf("%d",a*2);
  }
 ↓

printf("%d",*a*2);
       ↑
    これじゃね?

270:デフォルトの名無しさん
07/05/12 18:50:45
gets()関数で文章を読み取ってます。リダイレクションでメモ帳で作った文章入れると、改行のところ以降プログラムに読み込まれません。
どうしてでしょうか?改行があっても最後までいきたいんですが

271:デフォルトの名無しさん
07/05/12 18:52:22
>>270
getsは改行文字までしか読み取らない
manにも書かれてる基本仕様

ついでにgetsを使うのは推奨されない

272:デフォルトの名無しさん
07/05/12 18:53:05
>>271
じゃあ代理のものとして、何を使ったらいいですかね

273:デフォルトの名無しさん
07/05/12 18:54:58
>>268
気のせいかもしれませんが、
関数を定義してるプログラムを見ると多くが *a となっていたので、
違いを知りたいなと思って作ったプログラムなので、
かなり不備はあるかもしれません・・・。

>>269
Aの場合だと必ずメモリ関連でセグメントエラーか、警告が出続けてしまうんです。
試したところ、、、セグメントエラーが出ました。


274:デフォルトの名無しさん
07/05/12 18:56:55
>>272
fgets(・・・, stdin)

275:デフォルトの名無しさん
07/05/12 18:58:02
>>274
stdinっていうのはなんでしょうか

276:デフォルトの名無しさん
07/05/12 18:59:01
>>272
>gets() を使うのは極めて危険である。(中略)代わりに fgets() を使うこと。
URLリンク(www.linux.or.jp)

これぐらい自分で調べろ

277:デフォルトの名無しさん
07/05/12 18:59:34
>>273
コールするほうも
kansu(&a);
と変えないとだめだよ。

こういうところで試行錯誤してるなら、入門書を一冊買ったほうがだいぶ時間の節約になると思うけど。

278:デフォルトの名無しさん
07/05/12 19:00:09
>>275
とりあえずググれや。

279:デフォルトの名無しさん
07/05/12 19:00:11
>>273
int kansu(int *a) にするなら
int main(void){
  int a=1;
  kansu(&a); < &をつけなきゃ
}

280:デフォルトの名無しさん
07/05/12 19:01:56
>>276
危険なんですね。
fgetsにしたら
呼び出し時のパラメータが足りない:fgets(関数 main )
ってなってコンパイルできないんですが・・・・

281:デフォルトの名無しさん
07/05/12 19:02:58
>>280
URLリンク(www.bohyoh.com)
ちゃんと必要な引数を与えている?

282:デフォルトの名無しさん
07/05/12 19:04:35
>>277,279
すごい納得できました。ありがとうございました。

入門書は・・・買ったんですが、、、馬鹿なので理解できない^^;

283:デフォルトの名無しさん
07/05/12 19:06:16
>>281
なんかよくわからないんですが、
char型の配列に文章をいれたいんです・・・・

char bunsyo[256]
みたいなやつにです

284:デフォルトの名無しさん
07/05/12 19:07:28
>>283
fgets(bunsyo, 255, stdin)

285:デフォルトの名無しさん
07/05/12 19:08:16
>>283
gets()をfgets()に変更するくらいの手続きを自分で考えられない(≒検索できない)なら、
プログラマに向かないからとっとと諦めた方がいいよ。

286:デフォルトの名無しさん
07/05/12 19:09:04
>>284
ダウト。慣用句的にそれを使っているのなら、
一度マニュアルページをよく読んで自分の過ちに気付いておいた方がいい。

287:デフォルトの名無しさん
07/05/12 19:09:56
>>284
コンパイルはとおるんですが、改行のところで読み込みがおわってしまうんですが・・・・

288:デフォルトの名無しさん
07/05/12 19:10:09
>>284
第二引数Nはバッファサイズだろ
読み込まれる文字数最大値はN-1

289:デフォルトの名無しさん
07/05/12 19:10:27
>>286
ダウト。説明なしにそういうことを言うのはお前の知ったかに過ぎない

290:デフォルトの名無しさん
07/05/12 19:11:12
>>287
fgets()も、改行までしか読まない。
だから、マニュアルページを読むなり情報を検索できないなら無駄だから諦めろって。

291:デフォルトの名無しさん
07/05/12 19:11:56
>>288
gdgdいってねーで正解を書いたら?知ったかへぼプログラマーwwww
N-1そうだよ?何か?まさか、254 にしろとかボケないだろうね?

292:デフォルトの名無しさん
07/05/12 19:12:48
>>290
読み込むテキストに工夫がいりますかね?

293:デフォルトの名無しさん
07/05/12 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。

294:本日の知ったか馬鹿第一号
07/05/12 19:13:27
288 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:10:09
>>284
第二引数Nはバッファサイズだろ
読み込まれる文字数最大値はN-1

295:デフォルトの名無しさん
07/05/12 19:13:42
暇だからプログラム組もうかな
でも、モチベーションが・・・・・
なにか練習問題でものってるサイトないか?

296:デフォルトの名無しさん
07/05/12 19:14:33
>>292
テキストファイルを丸ごと読み込むには、
・fgetc()で一文字ずつ
・fgets()で一行単位で
・fread()でブロック単位(或いは一気に)
読む必要がある。

297:デフォルトの名無しさん
07/05/12 19:14:34
>>291
だから>>283の宣言なら、普通にfgets(bunsyo, 256, stdin);でいいだろ
なんでバッファのラスト1バイトを無駄にしてんだよ


>>292
ループ回して一行ずつ読み込む

298:デフォルトの名無しさん
07/05/12 19:14:44
>>287
宿題スレで、ファイル全部読み込むコード書いてくださいって言ったほうがいいんじゃね?


299:デフォルトの名無しさん
07/05/12 19:14:47
>>276とかこのスレにいらねーだろ。このスレが何なのかわかっていないのに
まだ勉強中の知らない奴を見つけて、自分が知っていることをひそかに自慢しながら
他人をたたく基地外だろ。ここでレスしているほかの奴にとっては迷惑千万、失せろクズプログラマー

300:デフォルトの名無しさん
07/05/12 19:15:52
>>293
>そこまで分かってて正解が判らないような屑が
自分が指摘したのに答えられない(勘違い)クズこそ来るなよw
お前はまったく指摘をしていない。ただたんに 自分が思った ことと違っていただけ。
それもお前が間違えているという勘違い(プ
不適切なら正しい使い方を明示しろ、たぶんお前じゃできない。あれは間違っていないからw

301:デフォルトの名無しさん
07/05/12 19:15:56
ファイルのサイズがわかってるなら、適当な大きさのバッファを用意して、
fread()でもいいけどな。

302:デフォルトの名無しさん
07/05/12 19:16:07
人間の屑よりはマシだな

303:デフォルトの名無しさん
07/05/12 19:16:58
>>296
うーん。めんどくさそうですね。テキストファイルの改行をなくしちゃいます

304:デフォルトの名無しさん
07/05/12 19:17:35
>>300
あのね、坊やみたいなお子ちゃまはこんなところに来ちゃダメよ。
既に正解レスがついているんだからもっと落ち着きましょうね。

305:デフォルトの名無しさん
07/05/12 19:18:10
お前ら邪魔

306:デフォルトの名無しさん
07/05/12 19:18:18
>>299
自分で考えよう、調べようって姿勢が見えたら、頭わるそうなヤツでもけっこう親切に教えてもらえるよ。
ただ「わからない、を即答せよ」ってだけじゃ教えてもらえない。

307:デフォルトの名無しさん
07/05/12 19:19:32
>>293
揚げ足取りにもならなかったな、所詮お前はわかっていない(っと自分が思った)奴をたたくだけか
二度とくるな、お前みたいなクズこそこのスレにはいらない。このスレのタイトル読めますか?
あっ、日本語も日本の社会もろくに知らない在日かw

308:デフォルトの名無しさん
07/05/12 19:20:15
まぁ、fgets()の慣用句はfgets(buf, sizeof(buf), stdin)だがな。
仮にもプログラムを組もうというときに、きちんと調べる手間を惜しんじゃ遺憾な。

309:デフォルトの名無しさん
07/05/12 19:20:18
以下、キモメンメガネデヴピッツァのきめ台詞が出るまでお待ちください


310:デフォルトの名無しさん
07/05/12 19:20:38
>>304
あのね、小学生未満の精神年齢のお子ちゃまはこんなところに来ちゃダメよ。
勘違いの指摘レスがついているんだからもっと落ち着きましょうね♪
んで、何が間違いか、指摘できた?正解がとかじゃなくてw

311:デフォルトの名無しさん
07/05/12 19:21:38
「屑」対「クズ」か。どっちが半島人かは火(病)を見るより明らかだな。

312:デフォルトの名無しさん
07/05/12 19:22:26
>>284は単なる入力ミスだろ。それだけでここまで お前はあほだ! みたいな
プレッシャーをかける基地外ってプログラマーに向いてねーよなwwwwww

313:デフォルトの名無しさん
07/05/12 19:22:47
>>309
半島人がでてきたぞ。

314:デフォルトの名無しさん
07/05/12 19:23:23
>>282
だったらその本は自分に向いていなかったと諦めて、
ちょっと立ち読みして、ほかに良さそうな本を探して買えばいい。

315:デフォルトの名無しさん
07/05/12 19:23:36
くずはくずかごに入っとけ。

それより早く>>295に答えてください。

316:デフォルトの名無しさん
07/05/12 19:24:33
>>311 地球上のカス以下の  お  前  が  言  う  な  wwwwwwww
っつーか、揚げ足取り必死だなw
そんなんじゃ本当にプログラマーに向いてねーよ、その程度のことでガミガミ
相手を罵倒するようじゃ、そんな奴こそこんなスレに来ないほうが良いだろ。
気分が悪くなるものを敢えてみてゲロを吐いているマゾかい?w
グロ動画でも貼ってやろうか?w

317:デフォルトの名無しさん
07/05/12 19:24:59
おお、新展開。今度の攻撃は「単なる入力ミス」ですw

>>315
宿題スレに未解決の宿題が幾つかあるんじゃない?
下手なサイト見るより勉強になりそうですよ。

318:デフォルトの名無しさん
07/05/12 19:29:25
freadでも使えば。

319:デフォルトの名無しさん
07/05/12 19:30:13
>>317
ほらな、そういうことで相手をチクチクつついて周りの気分も害しているだろ?
だからお前みたいなつまらねークズはプログラマーに向いてないから
頼むから大掛かりなプロジェクトには絶対に介入するなよ。
っつーか協調性がなくて無理だろうね、お前みたいなちっぽけなクズはw
ちなみに、あの程度の間違いならさらっと 256 って書けば済んだ話だろ。
お前わかってねー!間違えたへへーん馬鹿!とか罵倒する方が頭がイカレてんだろ。
そういう奴に限って、自分の間違いを指摘されると、認めないどころか
お前がおかしい!って言い始めるから困るぜ ヤレヤレ

以後、さっきからきんもぉ〜★な指摘するだけで答えを出さない基地外は放置よろ
たぶん引きこもりニートだろ

320:デフォルトの名無しさん
07/05/12 19:30:36
>>318
>296
>301

321:こいつさいこーに協調性のない引きこもりwww
07/05/12 19:32:14
317 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:24:59
おお、新展開。今度の攻撃は「単なる入力ミス」ですw

293 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。

297 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:14:34
>>291
だから>>283の宣言なら、普通にfgets(bunsyo, 256, stdin);でいいだろ
なんでバッファのラスト1バイトを無駄にしてんだよ
なんでバッファのラスト1バイトを無駄にしてんだよ
↑こういう嫌らしい言い方をするだろ?
だから日ごろ嫌われていることに気づかない仲間はずれなんだろうからこんな場所で
匿名性を利用して自分より知識の乏しい弱者相手に強気になれるんだろうねw


322:284
07/05/12 19:34:14
>>284はただの入力ミスです ♠
56としたつもりが同じキーを2回押して書き込みしちゃっただけでぇ〜〜〜す ♣
あぁ〜〜いとぅいまてぇ〜〜ん、文字配列のサイズを指定するように、ここでレスする以外の
自分が書くソースでは sizeof 使ってまぁ〜〜〜つ ♥

323:デフォルトの名無しさん
07/05/12 19:36:19
char s[256];
size_t size=sizeof(s)/sizeof(s[0];
sizeof(s,size,stdin);
こんな感じでぇ〜〜どぉ〜〜〜でちゅかぁ〜〜?♦

324:デフォルトの名無しさん
07/05/12 19:37:15
あちゃぁ〜〜、今度はsizeofの閉じ括弧忘れちゃいまちちゃぁ〜〜〜
あぁ〜〜〜いとぅいまちぇぇ〜〜〜〜ん ♪

325:デフォルトの名無しさん
07/05/12 19:39:29
fgetsの仕様って
buf[BUFFER_SIZE];
fgets(buf, BUFFR_SIZE, stdin);
とかするためにこんな仕様になってるんでしょうか?

326:デフォルトの名無しさん
07/05/12 19:43:07
こんな仕様が何を指すのかわからん。

327:デフォルトの名無しさん
07/05/12 19:44:52
>>325
そう

328:デフォルトの名無しさん
07/05/12 19:46:54
>>325
fgets()の他にも、strftime(), snprintf()も同じように格納バッファサイズを指定して、
それよりも少ない文字数しか格納しないような仕様になっている。


329:デフォルトの名無しさん
07/05/12 19:50:27
なるほど、文字列の最後が\0で終わるからその分余計に取らないと駄目だからか

330:デフォルトの名無しさん
07/05/12 20:11:00
普通にsizeof使えば、悩むことなんて何もないのに

331:デフォルトの名無しさん
07/05/12 20:20:56
>>330
getsもsizeof使って実装すれば何の問題もないのに、と思っていたりする?

332:デフォルトの名無しさん
07/05/12 20:22:21
まず、おまえさんが何が言いたいのか分からん。

333:デフォルトの名無しさん
07/05/12 20:22:29
333 gets!

334:デフォルトの名無しさん
07/05/12 20:37:37
つまり、まぁ、こういうこと

int main(void)
{
exit 0;
}

335:デフォルトの名無しさん
07/05/12 20:38:31
URLリンク(d.hatena.ne.jp)
お前らほんっとうにこれが好きなんだな

336:デフォルトの名無しさん
07/05/12 20:39:50
くだらなすぎ

337:デフォルトの名無しさん
07/05/12 20:54:40
標準入力から読み込みたいけどサイズとファイルポインタ指定が面倒ってことなら
自分でfgetsをそれらを決め打ちした状態で呼び出す関数作ればいいんでは

338:デフォルトの名無しさん
07/05/12 21:24:36
void WriteLog(const wchar_t szComment[])
{
FILE *fp;
errno_t err;
time_t ttime;
wchar_t buff[CTIME_SIZE];

if ( ( err = fopen_s( &fp, szPath, "at") ) != 0 )
return

time( &ttime );

if( ( err = _wctime_s( buff, CTIME_SIZE, &ttime) ) != 0 )
return;

fwprintf( fp, L"%s", szComment );
fwprintf( fp, L", %s", buff);

fclose( fp );
}
こういう関数を作って、使おうと思ったんですが、
例えばこのように使うと WriteLog( L"あああ (AAA)" );
↓のように書き込まれてしまいます
??? (AAA), Sat May 12 21:15:19 2007

なぜでしょうか?

339:デフォルトの名無しさん
07/05/12 21:43:29
>>338
ログファイルの先頭にBOMを入れるようにすれば読めるんじゃね?

340:デフォルトの名無しさん
07/05/12 22:06:58
今、配列の要素として1,2,3,4があるとき、これらの要素を連結して他の変数に代入(n = 1234)することはできますか?

341:デフォルトの名無しさん
07/05/12 22:07:24
できます。

342:デフォルトの名無しさん
07/05/12 22:15:24
>>341
教えて下さい

343:デフォルトの名無しさん
07/05/12 22:18:45
BOOL厨ワロタw

344:デフォルトの名無しさん
07/05/12 22:19:50
b = a[0] * 1000 + 1[a] * 100 + *(a+2) + 10 + a[3];

345:デフォルトの名無しさん
07/05/12 22:24:01
>>344
ありがとうございます

346:デフォルトの名無しさん
07/05/12 22:42:10
>>344
この妙な書き方噴いたwww

347:デフォルトの名無しさん
07/05/12 22:42:59
一箇所間違ってるし

348:デフォルトの名無しさん
07/05/12 22:50:12
>>347
可哀想だからスルーしてやれよw

349:デフォルトの名無しさん
07/05/12 22:50:45
足し算になってるのか

350:デフォルトの名無しさん
07/05/13 00:07:33
数学が分かってない人が多すぎる

351:デフォルトの名無しさん
07/05/13 00:18:02
小学生だっているだろうし 仕方ないさ


352:デフォルトの名無しさん
07/05/13 00:21:03
#include <stdio.h>
#include <math.h>

int main() {
int nums[] = {1,2,3,4,5};

int nums_len = sizeof(nums)/sizeof(nums[0]);
int num = 0;
for (int i = 0; i < nums_len; ++i) {
num += nums[i] * (int)pow(10, (nums_len-1) -i);
}

return 0;
}

よし、これでどうだ!!

353:デフォルトの名無しさん
07/05/13 00:29:06
もうsprintfでいいだろw


354:デフォルトの名無しさん
07/05/13 00:48:01
ちょっと聞きたいんだけど
(環境.WindowsXP BCC32)

#include <stdio.h>
int main()
{
FILE *fp=fopen("test.txt","w");
unsigned d=0x0d;
fwrite(&d,sizeof(d),1,fp);
fclose(fp);
return 0;
}

test.txt に バイナリ値で 0D 00 00 00 ではなく 00 00 00 4E として書き込まれる
これってどうしてでしょうか?

355:デフォルトの名無しさん
07/05/13 00:52:10
>>354
URLリンク(www.bohyoh.com)
URLリンク(www.bohyoh.com)


356:デフォルトの名無しさん
07/05/13 00:52:54
>354
bcc32(v5.82)でコンパイルしてみた。

ちゃんと
0D 00 00 00
になったけど?

357:デフォルトの名無しさん
07/05/13 00:53:19
>>354俺んとこじゃちゃんと0D 00 00 00になったぞい

358:デフォルトの名無しさん
07/05/13 00:54:14
亡羊のページなんか張るなよ

359:デフォルトの名無しさん
07/05/13 00:55:10
>>358
なんで?んじゃどこをはれば良いの?なんでいちいちちっぽけな低学歴馬鹿のお前の言うことを
聞かなきゃならねーの?さっきからうぜぇんだよ、くだらねぇことでチクチク煽ったり、あほじゃねこいつ?

360:354
07/05/13 00:55:21
失礼しました
ちょっと違いました

バイナリ値で 0D 00 00 00 ではなく 00 00 00 として書き込まれる
0D が書き込まれていない、でした
それと1Aも書き込まれないようです
制御コードだからですか?

361:デフォルトの名無しさん
07/05/13 00:56:20
>>360
意味が分からん。何がいいたい?

362:デフォルトの名無しさん
07/05/13 00:56:52
確認方法に問題があるんじゃないのか。
ちゃんとしたバイナリエディタ使ってるか?

363:自分が気に食わない発言を見つけると得意気に罵倒してくる基地外
07/05/13 00:57:12
286 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:09:04
>>284
ダウト。慣用句的にそれを使っているのなら、
一度マニュアルページをよく読んで自分の過ちに気付いておいた方がいい。

293 名前:デフォルトの名無しさん 投稿日:2007/05/12(土) 19:13:06
>>289=>>291か?
ファビョってんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
そこまで分かってて正解が判らないような屑がこの板なんかに書くんじゃないよ。
お前みたいな自分基準しか言わない馬鹿や間違っているのを見つけては叩くだけしかしない奴が
このスレどころかこの板にこない方が良いよ、プロになれなかったグラマー(ただのデブ)www

364:デフォルトの名無しさん
07/05/13 00:58:33
>>360
バイナリィエディタで開いてみたら、0D 00 00 00になったけど?

365:デフォルトの名無しさん
07/05/13 01:00:00
>>360
0x0d を書き込んでいて、
なんで 0x1Aを期待するのかわからんし。
そもそも書き込んでるのがバイナリなのにファイル名が.txtなのも謎だし。

というか君は何がしたいの?w
そこを言えば根本的なバグも教えて貰えるかも。

366:デフォルトの名無しさん
07/05/13 01:00:40
>>358
ねぇねぇ、どこを参照すりゃ良いの?お前、もしかして亡羊さんのことが嫌いな人?
亡羊さんに嫌がらせをしている人がいないか聞いたら、お前みたいなへぼプログラマーが
誰か特定できるかな?ちと亡羊さんに通報してこようかな?w

367:デフォルトの名無しさん
07/05/13 01:01:46
>>365
お前もいちいちうるさいなぁ、馬鹿じゃね?わけがわからないとかじゃなくてさぁ
できたって報告があるんだから、いちいち何言ってんだかわかんねーじゃなくて
どうやって0D 00 00 00以外が書き込まれたか、確認した手段を聞いた方がはえーよ馬鹿w

368:354
07/05/13 01:01:59
>>356-357
そうですよねぇ
普通なりますよねぇ
もうすこしチェックしてみます

369:デフォルトの名無しさん
07/05/13 01:03:44
>>360
URLリンク(www.vector.co.jp)
良いから開いてみれ。ちゃんと書き込まれているからw

370:デフォルトの名無しさん
07/05/13 01:07:54
C言語初心者です。
基本情報処理技術者をとって会社に就職して、
プログラマーからSEになったらどの位の給料になるんでしょうか?
もちろん個人と会社による話ですが、相場を教えて下さい。
SEになっても月に30万位なんでしょうか??

371:デフォルトの名無しさん
07/05/13 01:07:58
365の反応が普通だろw

372:デフォルトの名無しさん
07/05/13 01:08:52
>>370
マ板池

373:デフォルトの名無しさん
07/05/13 01:09:25
>>367
ば…ばかって言うヤツが馬鹿なんだからねっ!!!

374:デフォルトの名無しさん
07/05/13 01:09:51
>>371
普通じゃねーよ、相手にひたすらプレッシャーを与えてボロを出したところを
さらに叩く基地外くらいだろ、そういうのがデフォになっている視野も心も狭い低学歴はw
普通は何を使って書き込まれた値を確認したか聞くだろ。

375:デフォルトの名無しさん
07/05/13 01:10:52
>>372さん
マ坂とはなんでしょうか…?


376:デフォルトの名無しさん
07/05/13 01:11:40
良いかてめぇ〜ら、C言語をかじったくらいのクソガキが、これから始める初心者を
ネチネチいじめてんじゃねーよ、スレタイが読めていないのか、こういうスレに集まる
初心者より自分の方が知識も経験もあるということを知って安心したいのか知らないが
答える気がないならこのスレから出ていってくれ。二度と戻ってくるな。
所詮お前は、プロになれなかったただのデヴ(グラマー)だ

377:デフォルトの名無しさん
07/05/13 01:12:03
>>375
プログラマー板

378:354
07/05/13 01:15:10
すみません.自分の勘違いのようです
今作っているものがunsigned ID, unsigned short sizeを読み、次にsize分文字列として読ませているんですが
IDが0x0Dまたは0x1Aになるとバグったもので
もう一度見直してきます

どうもありがとうございました

379:デフォルトの名無しさん
07/05/13 01:16:06
>>378
おそらくfopenの際、モードをバイナリにしてないからだろ
バイナリ指定してない場合、改行文字絡みで自動変換が行われる

380:デフォルトの名無しさん
07/05/13 01:21:23
>>374
オマエのトラウマなんかどうでもいいよ

381:デフォルトの名無しさん
07/05/13 01:21:24
>>374
火病ってんじゃねーぞ

・ >365 が元質問者を叩いているという事実認識がまず脳内
・ 自分が >365 を叩いてる事実を放置
・ 自分の主観が「普通」と勝手に定義

どっちが基地外かは火を見るより明らか

382:デフォルトの名無しさん
07/05/13 01:21:55
マジでやめてくんないかな

383:デフォルトの名無しさん
07/05/13 01:22:45
嫌な荒れ具合だな
亡羊本人でも降臨してんの?

384:354
07/05/13 01:24:02
>>379
まったくもって情けないです
バイナリ指定したつもりがしてませんでした
ちゃんと動作しました
お騒がせしました

385:デフォルトの名無しさん
07/05/13 01:25:07
>>380 >>381
おまえらうるせーよ?お前が一番うっとうしい、士ねよ馬鹿
質問に答える気がないなら来るなよ。ほかにレスしている奴の邪魔なんだよクソガキ
何歳だお前?なぁ?士ねよ馬鹿w
ふぁびょってんのはお前だろ。他人にファビョってんじゃねーよとか言っておきながらwwwww

380 名前:デフォルトの名無しさん 投稿日:2007/05/13(日) 01:21:23
>>374
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
オマエのトラウマなんかどうでもいいよ
↑それお前だろ。お前の場合はウマシカだがw

381 名前:デフォルトの名無しさん 投稿日:2007/05/13(日) 01:21:24
>>374
火病ってんじゃねーぞ

・ >365 が元質問者を叩いているという事実認識がまず脳内
・ 自分が >365 を叩いてる事実を放置
・ 自分の主観が「普通」と勝手に定義

どっちが基地外かは火を見るより明らか

・ >365 が元質問者を叩いているという事実認識がまず脳内
自分のレス読み返せ基地外。

・ 自分が >365 を叩いてる事実を放置
はぁ?なんで?叩いた覚えありましぇ〜〜ん、ちゃんとできたと答えたけど?
いつ俺が叩いたか、参照レスきぼんぬ。ってか、俺を特定できないから無理だろうけど
俺は叩いていないし

386:デフォルトの名無しさん
07/05/13 01:25:53
>>383
そうやっていないのに特定の人物をどうこう言い始めるだろ?
お前もうそれで名誉毀損だよ。亡羊さんに通報しとくねw
覚悟しとけよ

387:デフォルトの名無しさん
07/05/13 01:27:09
釣れてますねw

388:デフォルトの名無しさん
07/05/13 01:27:18
>>386
亡羊ってだれだよ。

389:デフォルトの名無しさん
07/05/13 01:27:40
>>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 >>358 に問う
なんではっちゃだめなの?理由は?お前の気まぐれとか、気分とかだったらまずお前がただの馬鹿だと言う結論しか出ないから。
参考にできるページがあったら使う、別になんら問題ないし、そのページには間違った記述はされてないよ。
まぁ、たぶん亡羊を嫌っている誰かだろ。特定できそうだから、亡羊さんに聞いてくるわ。
どうせプロになれなかったボケグラマーだろw


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5217日前に更新/240 KB
担当:undef