C言語なら俺に聞け(入門篇) Part 17at TECH
C言語なら俺に聞け(入門篇) Part 17 - 暇つぶし2ch300:デフォルトの名無しさん
07/08/01 01:51:10
>>297
>{{001, 010, 100}, {002, 020, 200}, {003, 030, 300}}
これは0で始まってるから8進法で書かれてる
んでprintfでの出力は10進法になってる

301:デフォルトの名無しさん
07/08/01 01:51:16
#include <stdio.h>
main()
{
static char input[] = "B1LSWIELTECH1\1\11W\1EE1ELLST?";
int i, c;

for (i=0; (c=input[i]) != '\0'; i++) {
switch(c) {
case 'B' : putchar('A'); continue;
case '1' : break;
case 1 : while ((c=input[++i]) != '\1' && c != '\0');
case 9 : putchar('T');
case 'E' : case 'L' : continue;
default : putchar(c); continue;
}
putchar(' ');
}
putchar('\n');
}

実行結果 A SWITCH T ST?
A SWITCHから先の動きがわかりません。わかる方教えてください。

302:デフォルトの名無しさん
07/08/01 01:53:39
ってちょっと言い方がまずかったな
>{001, 010, 100}
たとえばこの部分の001と010が8進法で100は10進法ね

303:デフォルトの名無しさん
07/08/01 01:54:26
#include <stdio.h>
char input[] = "SSSWILTECH1\1\11W\1WALLMP1";

main()
{
int i, c;

for (i=2; (c=input[i]) != '\0'; i++) {
switch(c) {
case 'a' : putchar('i'); continue;
case '1' : break;
case 1 : while ((c=input[++i]) != '\1' && c != '\0');
case 9 : putchar('S');
case 'E' : case 'L' : continue;
default : putchar(c); continue;
}
putchar(' ');
}
putchar('\n');
}

実行結果 SWITCH SWAMP
同じ感じなんですが、SWITCHから先の動きがわかりません。お願いします。

304:297
07/08/01 02:00:39
ありがとうございます
解決しました

305:デフォルトの名無しさん
07/08/01 02:01:36
while ((c=input[++i]) != '\1' && c != '\0');
ここで条件が真の間、iが+1ずつされていく。
whileをぬけたらbreakが無いので次のputschar('T')が実行されて・・・
って感じだ。
デバッガあるならステップ実行してみればわかる。
なければwhileを弄れば多少わかる?
while ((c=input[++i]) != '\1' && c != '\0')puts("[while中]");

306:デフォルトの名無しさん
07/08/01 03:28:00
自分で考えるための方法を教える必要があるような状況だな。

307:デフォルトの名無しさん
07/08/01 11:32:27
リンカする前の実行ファイルを起動すると一瞬で消えるんだが何故でしょうか?

308:デフォルトの名無しさん
07/08/01 11:45:28
>>307
「リンカする」なんてことは通常できません。
リンクする前なら、それは実行ファイルになっていない筈です。
リンクされた実行ファイルについてなら、GUIを持たないプログラムを
GUIからダブルクリックで起動したら終了と同時に表示が消えるのは自明ですね。

309:デフォルトの名無しさん
07/08/01 11:50:37
Ctrl-F5で解決する例のあれか

310:デフォルトの名無しさん
07/08/01 12:29:44
昨日のお子様哀れすぎワロタ

311:初心者
07/08/01 15:14:36
構造体の数値データからcsv形式のファイルを作りたいのですが、どうすればいいでしょうか。教えていただけるとありがたいです。

312:デフォルトの名無しさん
07/08/01 15:24:33
構造体のメンバをcsv形式でファイルに書き込め

313:デフォルトの名無しさん
07/08/01 15:56:39
C++なら簡単に出来るからC++スレで質問するといいよ^^

314:デフォルトの名無しさん
07/08/01 15:58:15
まだ全然初歩のプログラムなのですが、わからないので教えてください。
プログラムファイル
入力データファイル
が用意されている。
問題
 文字データ中に含まれる文字の種類を調べるプログラムを作成しなさい。
[仕様]
・入力データ件数10件
  1件に最大100文字(半角とする)
  入力データは、文字型1次元配列(サイズ:101)に格納

・文字の種類は最大200種(文字型1次元配列使用)
 ただし、入力した文字中の改行(’¥n’)マークは処理対象外 とする

・文字コード順に並べ替えを行い出力する
・出力設計
 1行に最大25文字(文字区切りに1カラム空白)
 構成文字(並べ替え済み)を出力する

 X X X X X X X~~X X X X X X X

315:デフォルトの名無しさん
07/08/01 16:08:34
>>314
自分がどこまでできてて、どこがわからないのか明確に
丸投げなら宿題スレに

C/C++の宿題を片付けます 94代目
スレリンク(tech板)

316:デフォルトの名無しさん
07/08/01 17:11:26
プログラムは既に出来てるように思えた

317:デフォルトの名無しさん
07/08/01 18:41:55
>>314
です。入力データ、文字種を入力するところまではわかるのですが、どういう処理をすれば入力データに文字データが含まれているのか、また、そのデータを文字コード順に並べる処理がわからないです。アルゴリズムが浮かばなくて悩んでいます。お願いします。


318:デフォルトの名無しさん
07/08/01 18:47:33
文字の種類が200種なんだから、int の配列[200]を用意して
文字種ごとに足していけばよかろう。
まあ文字種そのものは256個あるから[256]作ったほうが楽ではあるが。

319:デフォルトの名無しさん
07/08/01 19:18:22
ちょっと今感動してる・・。
一ヶ月前の自分には解らなかった事が解るようになってる。
ニマニマしちゃうよ。

320:デフォルトの名無しさん
07/08/01 23:36:44
>>318
回答ありがとうございます。文字種類の配列を用意するのは理解できました。もし
int i,n
char moji[100],shu[200]で入力しおえて
文字種ごとに足していくにはどのように書けばよいのでしょうかか?


321:デフォルトの名無しさん
07/08/02 00:03:16
>>320
char shu[256]={0}
としたうえで

for(i=0;i<100;i++) {
shu[moji[i]]++;
}


322:デフォルトの名無しさん
07/08/02 00:25:13
>>321
素早い回答ありがとうございます。その文字種に含まれた文字はどのようにしたら文字コード順に並び替えられるのですか?

323:デフォルトの名無しさん
07/08/02 00:28:42
>>322
ちょっと根本的に分かってないみたいだけど
文字コードがインデックスになってるから

for(i < 256) {
for(j = 0 ; j < shu[i] ; j++){
putchar i
}
}

でおk

324:デフォルトの名無しさん
07/08/02 06:46:03
分布数えソートだな。

325:デフォルトの名無しさん
07/08/02 08:05:01
>>323
全然理解してなくて申し訳ないです。
回答ありがとうがざいました。これからプログラム書いてみようと思います。

326:デフォルトの名無しさん
07/08/02 09:39:43
プログラムファイルは用意されてたんじゃなかったのかよw
sageは半角でな

327:デフォルトの名無しさん
07/08/02 09:45:47
分布数えソート大好き

328:デフォルトの名無しさん
07/08/02 09:59:24
分布数えソートはもっと巧妙だけどな
アイディアは同じ

329:デフォルトの名無しさん
07/08/02 10:08:09
Linux環境で半角の円マーク(\)打つのってどうやればいい?

330:デフォルトの名無しさん
07/08/02 10:08:49
英字キーボードで、と言った方が良かったかも

331:デフォルトの名無しさん
07/08/02 10:17:11
バックスラッシュと円マークの文字コードは
ASCII コードの範囲内でなら同一。
あとはフォントの問題。

どうしても混在させたいなら、ユニコードで何とかするしかない。
00A5 が円マークだ。
もちろん、エスケープ記号としては使えんがな。

332:デフォルトの名無しさん
07/08/02 13:38:15
Linuxでの最長パス名なのですが、#defineされているものに
MAX_PATH とか MAXPATHLEN とかありますが
どれを#includeしてどの#defineを使うのが一般的なのでしょうか。
なんかいろいろあってわからなくなった。
教えて下さい。


333:デフォルトの名無しさん
07/08/02 17:08:43
Linuxは知らないが、標準Cには<stdio.h>にFILENAME_MAXという定数がある。

334:デフォルトの名無しさん
07/08/03 00:02:15
int a[3][4];
int b[4];

と宣言した際に

a[0] = b;

がNGなんですか?

C言語の2次元配列は配列の配列と習ったんで
aのゼロ番目に大きさ4の配列を入れれると思ったんです。



335:デフォルトの名無しさん
07/08/03 00:07:29
配列の配列と2次元配列は別物だよ

336:デフォルトの名無しさん
07/08/03 00:17:43
というか、int a[3], b[3];だったとしても、
a = b; みたいな代入はできない。

337:デフォルトの名無しさん
07/08/03 00:21:15
>>336みたいなのが何で出来ないんですか?って質問されたら
言語仕様です。としかいえないよな。
それでもなんで?って聞いてきたら教えるのをあきらめる。


338:デフォルトの名無しさん
07/08/03 00:30:31
Cを作った人や、後にコンパイラを実装した人達が
できなくてよいという判断を下したから。

339:デフォルトの名無しさん
07/08/03 00:47:16
配列の代入はできません。

340:デフォルトの名無しさん
07/08/03 01:01:38
>>335
規格票では全く同一のものとなっていますが何か?

341:デフォルトの名無しさん
07/08/03 01:08:11
配列の配列
配列へのポインタ
ポインタの配列

などの細かなこと知らなくても問題ないよ


342:デフォルトの名無しさん
07/08/03 01:09:38
いや、それは問題ある。

343:デフォルトの名無しさん
07/08/03 01:17:23
構文上は配列の配列と思っておくと都合がいいけど、
Cでは配列の配列とは別に2次元配列が存在するわけでもないので、
少なくともCでは両者の言葉が区別されることなく使われている。

こう言えばいいか?

344:デフォルトの名無しさん
07/08/03 01:21:08
>>342
ないよ

そんな細かなこと知っててもなんの役にもたたん

345:デフォルトの名無しさん
07/08/03 01:24:34
int (*a)[10];

って大きさが10のintの配列へのポインタですよね

これの配列(大きさ20)はどう宣言すればいいのですか?

346:デフォルトの名無しさん
07/08/03 01:26:09
そんなの自分で考えろよ

int (*a)[10][20];


死ねよ


347:デフォルトの名無しさん
07/08/03 01:28:43
>>344
int n[10][10]; を int** に渡せないとか言う人の相手をしなきゃいけない身になってみろ。

348:デフォルトの名無しさん
07/08/03 01:33:51
>>346
君が死んだほうがいいような・・・

349:デフォルトの名無しさん
07/08/03 01:42:50
配列は 「変数名の直後に [サイズ] を書く」
ポインタは 「変数名の直前に * を書く」

括弧があろうがこれは変わらない。

それだけ覚えていれば何も迷うことは無い。

350:デフォルトの名無しさん
07/08/03 02:28:56
>>346
最初の一行、このスレのタイトルからしてお前が来なきゃ良いんじゃね?って
周りに思われていることに気づいた方が良いんじゃね?
自分が嫌うものをわざと見つけて、勝手にその対象物を叩いてイラついている
基地外にしか見えない・・・

351:デフォルトの名無しさん
07/08/03 02:40:09
配列へのポインタの配列が必要になる状況って考え付かないんだけど、どんなの?

352:デフォルトの名無しさん
07/08/03 02:44:52
double x y;
scanf("%f%f",&x,&y);

1.0 1.0
と取り込んだら
printf("x y = %f %f\n",x,y);

x y = 0.000000 0.000000
と出力された。
なんで???

353:デフォルトの名無しさん
07/08/03 02:46:04
%lf

354:352
07/08/03 02:48:12
わいわ…アホや…

355:デフォルトの名無しさん
07/08/03 03:04:33
>>351
必要になるならないは問題ではない
どう書けるかときいているのです。

356:デフォルトの名無しさん
07/08/03 03:08:06
そんなどうでもいいこと気にする前にもっと学ばなきゃいけないことがたくさんあると思うけど。

357:デフォルトの名無しさん
07/08/03 03:33:49
わからないならわからないっていえよ
しったかぶってんなよw

358:デフォルトの名無しさん
07/08/03 03:35:56
教えられないくせに学べだの説教するやつは痛過ぎ・・・

359:デフォルトの名無しさん
07/08/03 03:36:37
>>351
回転行列へのポインタの配列とか。

360:デフォルトの名無しさん
07/08/03 03:37:26
あげくのはてには、必要ないだってw



361:デフォルトの名無しさん
07/08/03 03:41:54
int (*(*(*p[1])[2])[3])();

を3秒以内に理解できるかい?

362:デフォルトの名無しさん
07/08/03 03:43:06
そこまですっきりしてると分かりやすい。

363:デフォルトの名無しさん
07/08/03 03:45:00
int (*(*p)(int (*)(int (*)[20])))[10];

364:デフォルトの名無しさん
07/08/03 03:49:20
それを有効に使ったコード書いてみてくれw

365:デフォルトの名無しさん
07/08/03 04:07:32
ごめん、無理。

366:デフォルトの名無しさん
07/08/03 05:42:26
・C言語の欠陥
関数アドレスを返す関数において、その関数と同じ型の関数アドレスを
返す型の循環構造を定義できない。

typedef func_t (*func_t)(); // エラー
func_t f();

367:デフォルトの名無しさん
07/08/03 05:58:18
こういう場合は構造体を定義するしかない。
struct _s_t;
typedef struct _s_t (*func_t)();
typedef struct _s_t {
func_t f;
} s_t;

s_t f() {
s_t s = {f};
printf("f()");
return s;
}

main () {
// f()()()()()(); 本来期待する呼び出し形式
f().f().f().f().f().f();
}

結果:
f()f()f()f()f()f()

368:デフォルトの名無しさん
07/08/03 06:35:56
それ聞いたことはあるけど、どういう場合に使うの?

369:デフォルトの名無しさん
07/08/03 07:34:06
にわかプログラマーは心の狭いやつが多いねぇ
おまけにちょっと噛み付かれたらギャーギャー喚き散らさないと気がすまないらしい

370:デフォルトの名無しさん
07/08/03 08:12:21
URLリンク(kmaebashi.com)

371:デフォルトの名無しさん
07/08/03 08:39:05
   / ̄ ̄\
 /   _ノ  \
 |   ( ●)(●)  < スレタイ読めないならどっか余所へ行けよ
. |     (__人__)____
  |     ` ⌒/ ─' 'ー\
.  |       /( ○)  (○)\
.  ヽ     /  ⌒(n_人__)⌒ \
   ヽ   |、    (  ヨ    | ← にわかプログラマー
   /    `ー─-  厂   /
   |   、 _   __,,/     \

372:デフォルトの名無しさん
07/08/03 11:57:59
>>370
他の解説読んでたけどif文にセミコロンいらないの知らなかった…
でもコード見たらちゃんと書けてた

(´・ω・`)??
とりあえず気付けてよかった

373:デフォルトの名無しさん
07/08/03 12:51:25
>>345
ヒント:a[20]と書くとaと[がとても強くくっつくので、「aは20個の要素を持つ配列です」ということになります。

374:デフォルトの名無しさん
07/08/03 14:58:37
ポインタについて質問なのですが、軽くググった感じではポインタとは
ガーベッジコレクタを利用した変数という認識で良いのでしょうか

375:デフォルトの名無しさん
07/08/03 15:06:18
全然違います。
アドレスを保持する変数です。

376:デフォルトの名無しさん
07/08/03 15:06:38
>>374
びっくりするぐらいダメ


377:デフォルトの名無しさん
07/08/03 15:06:54
>>374
ぜーーーんぜん違いますw

ポインタ = 変数や関数のアドレスを格納した変数。値はつねにアドレスになる。


378:デフォルトの名無しさん
07/08/03 15:07:54
なにこの同時ダメだしw ワロタ

379:デフォルトの名無しさん
07/08/03 15:08:42
wwwwwwwwwwwwwwwwwwwwwwww

380:374
07/08/03 15:10:06
私も吹きました。修行不足のようですね。出直してきます

381:デフォルトの名無しさん
07/08/03 15:45:39
そもそもCにガベコレなんて無いし

382:デフォルトの名無しさん
07/08/03 16:50:41
軽くググってガベージクレクタにたどり着いた道程に興味があります。

383:デフォルトの名無しさん
07/08/03 17:10:33
童貞に興味があります

384:デフォルトの名無しさん
07/08/03 17:10:51
>>383
いりますか?

385:デフォルトの名無しさん
07/08/03 17:10:59
俺は無い

386:デフォルトの名無しさん
07/08/03 18:56:25
質問です。
①wininetを使ってhtmファイルを読み込みtemp.htmで出力。
②そのtemp.htmを読み込み、必要な部分をaaa.htmで出力。
ということをしたいのですが、1度ならできたのですが、
while文で2回以上ループさせると①のtemp.htmをwモードで
fopenするとエラーが出てうまくいきません。
一応大まかなソースを書いておきます。よろしくお願いします。

void create_htm(int times){
 FILE *wfp;
 FILE *rfp;
 if((wfp = fopen("temp.htm, "w")) == NULL){ ←2回目になるとここでエラーが発生し強制終了。しかしfprintfは実行されないまま。
  fprintf(stderr, "--- wfp error");
  exit(1);
 }
 get_htm(wfp, times); /*①の関数*/
 fclose(wfp);
 if((rfp = fopen("temp.htm", "r")) == NULL){
  fprintf(stderr, "--- rfp error times = %d", times);
  exit(2);
 }
 diet_htm(rfp, times); /*②の関数*/
 fclose(rfp);
}

main(){
 int times;
 get_config(); /*gettimesをファイルから取得。gettimesはグローバル変数*/
 for(times = 0; times < gettimes; times--){
  create_htm(times);
 }
}

387:386
07/08/03 18:59:51
すいません。while文ではなくfor文でループしてます。
mainのfor文はtimes--ではなくtimes++です。
よろしくおねがいします。

388:デフォルトの名無しさん
07/08/03 19:15:36
問題の無い部分を手書きで書いて見せたって何にもならんと思うのだが。
せめてエラーのときはerrnoくらい出してよ。

389:386
07/08/03 19:35:44
問題のある部分がcreate_htm関数のif((wfp = fopen("temp.htm, "w")) == NULL)
の部分でエラーが出るのですが。すみません。errnoはどのように出すのでしょうか。
ネットで調べてみて、問題のある部分のあとに書いたのですが、強制終了されるので
出力されないのですが。

390:デフォルトの名無しさん
07/08/03 19:53:26
そもそもこれはファイル名の後に"が抜けててコンパイルもできないだろ
問題のあったソースをコピペすることもできんのか
エラー処理もしないでそこで落ちるというのはどうやって判明したんだ?

391:デフォルトの名無しさん
07/08/03 19:55:41
強制終了って、アクセス違反?
どっかぜんぜん別のところでメモリ破壊を起こしてるのかもね。
get_htm や diet_htm の中身を見ないと解決できない気がする。
>>386に載ってる部分では特に問題なさげ。

392:386
07/08/03 20:05:19
>>390
あ、すみません。抜けてました。
そこで落ちるというのは、一行ごとにprintfでどこがエラーかをみてみたら、
その部分でprintfがされなかったので判明しました。


>>391
メモリ破壊ですか。メモリ破壊を調べる方法とかないですか?


393:デフォルトの名無しさん
07/08/03 21:04:33
gdb使えよ

394:386
07/08/03 21:48:16
windowsでもgdbは使えますか?
turbo debuggerというので動かしてみると、例外が出たと言われました。

395:デフォルトの名無しさん
07/08/03 21:56:31
いまどきCなんて使う機会ってあるの?
OSを書く
組み込み系

これくらいにしか使わないよね

396:386
07/08/03 21:56:57
何度も失礼します。
gdbをするには、gcc -g program.cをすればいいですよね?
でも、コンパイル時にwininet.hのInternetOpenなどでエラーが出るのですが
どうしたらいいですか?

397:デフォルトの名無しさん
07/08/03 22:03:15
>>395
LinuxアプリとかR&Dとか

398:デフォルトの名無しさん
07/08/04 00:55:07
>>396
そもそも何使って開発してるのよ。VCのデバッガ使えば?

399:386
07/08/04 01:06:28
windows XP、bccを使っています。
すみません、自己解決できそうです。
メモリ破壊というものをネットで調べながらソースとにらめっこしてたら、
どうやら、②の関数内でmallocでサイズを確保するときに、strlenではなく
sizeofを使ってしまっていたのが原因のようでした。お騒がせしました。
また、新たなエラーが発生した際にはお邪魔させていただきます。

400:デフォルトの名無しさん
07/08/04 01:12:41
もう来るな

401:デフォルトの名無しさん
07/08/04 01:13:26
>>400
お前みたいな奴に質問に答えてもらわんでも結構、お前が来るな

402:デフォルトの名無しさん
07/08/04 01:14:47
sizeofをどう使ってたんだ?

403:デフォルトの名無しさん
07/08/04 01:15:34
>>400-401
邪魔

404:デフォルトの名無しさん
07/08/04 01:18:15
>>402
ポインタに使ってばぐったんだろ。

405:デフォルトの名無しさん
07/08/04 01:19:16
だから他の関数も最初から晒(ry

406:デフォルトの名無しさん
07/08/04 01:20:40
>gdbをするには、gcc -g program.cをすればいいですよね?
>windows XP、bccを使っています。
質問される方の身になってください。

類似例
URLリンク(www.nicovideo.jp)

407:デフォルトの名無しさん
07/08/04 06:45:47
>>403 お前も邪魔。いちいちうるせー

408:デフォルトの名無しさん
07/08/04 13:11:15
>>407-408
邪魔

409:デフォルトの名無しさん
07/08/04 16:56:50
質問ですが、

int main() {
int w;
printf("0から6までの整数を入力してください!\n");
scanf("%d",&w);
switch (w) {
case 0: printf("日曜日です。\n"); break;
case 1: printf("月曜日です。\n"); break;
case 2: printf("火曜日です。\n"); break;
case 3: printf("水曜日です。\n"); break;
case 4: printf("木曜日です。\n"); break;
case 5: printf("金曜日です。\n"); break;
case 6: printf("土曜日です。\n"); break;
default:printf("???\n");
} return 0; }

の4行目のscanfで("%d\n",&w)と間違えて打ったら2度入力が求められ、
結果には、1回目の入力が反映されました。なぜでしょうか?
使っているコンパイラはborland c++ 5.5.1で、OSはビスタです。



410:デフォルトの名無しさん
07/08/04 17:06:32
>>409
scanf()は、エラーの場合、そのデータが取り除かれないで、入力ストリームに残ったままになるから。
エラー処理をしっかりしたかったら、scanf()は使わないほうがいいよ。

411:デフォルトの名無しさん
07/08/04 17:09:29
>>409
scanfは"%d\n"の書式に合う文字列を入力したあとに改行が押されるまで待ってる
つまり1回目の改行は書式の中で要求されてるからそっちで使われていて2回目の改行でscanfが終了できる

412:デフォルトの名無しさん
07/08/04 17:16:33
>>410, >>411
す、素早い!
ありがとうございます。勉強になった。

413:デフォルトの名無しさん
07/08/04 17:40:34
scanf("%d\n", &w) の場合、%d と \n の2個分の入力が要る。

414:デフォルトの名無しさん
07/08/04 19:58:53
マクロでこうゆうのは有りですか?(使われていたりしますか?)
※VFuncは動的引数持ちの関数

#define MACRO_HOGE(inA, inB)   inA = VFunc inB

-使用例-----------------------------------
void main(void){
int V;

MACRO_HOGE(V, (A, B, C));
}

例は適当に書きましたがようするにMACRO_HOGEの第2引数に"()"付きで複数の引数を書き並べることについてです。

415:デフォルトの名無しさん
07/08/04 20:08:35
なんでまたそんなことをしたいと?

416:デフォルトの名無しさん
07/08/04 20:09:58
>>414
(コーディング規約などで制限されていない限り)誰も止めはしないと思うよ。
デバッグ出力用途で時折見掛けるしね。

417:デフォルトの名無しさん
07/08/04 20:24:59
>>414

×こうゆう
○こういう

418:デフォルトの名無しさん
07/08/04 20:29:40
>>415
引数の数が不定の関数に対するマクロを作る必要がありました。
マクロの内容も実際には複数行にわたっており、その中でin_Aの値を使用するためこのような形になってしまっています。

>>416
製品に組み込まれるソースではなく、社内でデバック用に開発メンバーのみで使用するものです。
他のところでも使われているようでちょっと安心しました。

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

>>417
「・・・・・・・・・・・・・・・・・・。」

419:デフォルトの名無しさん
07/08/04 20:51:59
>>414
c99で可変長引数のマクロつかえば.


420:デフォルトの名無しさん
07/08/04 21:10:38
> >>417
> 「・・・・・・・・・・・・・・・・・・。」

ガキか


421:デフォルトの名無しさん
07/08/04 22:06:47
int *p;
は、「intへのポインタ」ってことらしいけど
「ポインタが指している変数の型がint」ってこと?

422:デフォルトの名無しさん
07/08/04 22:14:55
うん。
int *p; は *p が int になる。

423:デフォルトの名無しさん
07/08/04 22:23:24
サントス

噂に聞いていたがポインタは難しい…

424:デフォルトの名無しさん
07/08/04 22:44:18
難しいと思ってるから難しいんだよ。一度分かれば何が難しかったのか理解するのが難しくなる

425:デフォルトの名無しさん
07/08/04 23:02:18
ポインタは、変数の置いてある場所を入れておくもの。
置いてある場所が分かれば、そこにある値も操作できるはず。

426:デフォルトの名無しさん
07/08/04 23:06:34
とにかくいろいろ読んだり組んだりしなきゃダメだな
がんばるぜ

じゃーの


427:デフォルトの名無しさん
07/08/04 23:28:58
fopenでファイルがオープンされなかったらNULLが返ってくるけど
rはファイルがなかった場合などが挙げられる。
じゃーwだったらどういうときにそうなるの?

428:デフォルトの名無しさん
07/08/04 23:31:34
>>427
存在しないディレクトリだとか。

429:デフォルトの名無しさん
07/08/04 23:31:41
書き込みロックされてる場合とか

430:デフォルトの名無しさん
07/08/04 23:32:17
ディレクトリを fopen しようとした時とか

431:デフォルトの名無しさん
07/08/04 23:57:35
ファイルの作成をOSに拒否されたときとか

432:デフォルトの名無しさん
07/08/05 00:14:17
ファイルの開き過ぎとか

433:デフォルトの名無しさん
07/08/05 00:18:56
How many files(0-15)?

434:デフォルトの名無しさん
07/08/05 05:58:56
ファイルを書き込むのに十分な空き容量がないとか
書き込めない場所への書き込みをしようとしたとか

435:デフォルトの名無しさん
07/08/05 06:30:36
ディレクトリに書き込み権限がないとか。

って、切りがないよw

436:デフォルトの名無しさん
07/08/05 06:42:56
入れる穴がないからといって後ろの(ry

437:デフォルトの名無しさん
07/08/05 12:31:35
アッーー!

438:デフォルトの名無しさん
07/08/05 13:17:12
なるほど。勉強になった。
fopen・fcloseをちゃんとしてれば、その一連は何度もループできるの?
それとも上限回数とかあったりするの?

439:デフォルトの名無しさん
07/08/05 13:55:08
容量は有限なんだから、書き込みで新しいファイルを作っていけばいつかは上限に達する。

440:デフォルトの名無しさん
07/08/05 14:02:14
しかし、既にあるファイルを開いて閉じてなら、永遠に繰り返していい。

441:デフォルトの名無しさん
07/08/05 14:45:00
できました~。ありがとうございます。

442:デフォルトの名無しさん
07/08/05 18:21:27
無償リンクソフトは無いのでしょうか?
もし無いのであれば有名なリンクソフトを教えて頂けないでしょうか?

443:デフォルトの名無しさん
07/08/05 18:23:35
リンクソフトって何のことよ?
リンカーのことなら、GNU ld か?
目的を書いた方がいいと思うよ

444:デフォルトの名無しさん
07/08/05 18:24:14
コンパイラ入れたら大抵リンカも入ってるだろ

445:デフォルトの名無しさん
07/08/05 21:01:14
質問ですが
「C言語のプログラムをアセンブリ・コードに変換せよ」
という課題が出されたのですが、変換するツールのようなものはありますか?

446:デフォルトの名無しさん
07/08/05 21:03:45
あります。

447:デフォルトの名無しさん
07/08/05 21:04:46
コンパイラで出来たような気がする

448:デフォルトの名無しさん
07/08/05 21:05:32
コンパイラがやってくれる
gcc なら -S オプションつけてコンパイルしてみ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch