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


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

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



1 名前:デフォルトの名無しさん [2009/10/29(木) 21:10:18 BE:227211146-DIA(352353)]
C言語の*入門者*向け解説スレッドです。
初心者、初級者の方は他の質問スレのほうが良いかもしれません。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 131代目
pc12.2ch.net/test/read.cgi/tech/1255709298/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 54
pc12.2ch.net/test/read.cgi/tech/1254829314/

過去スレ
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

357 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 00:55:41 ]
ここはそんな質問する場じゃない

358 名前:デフォルトの名無しさん [2009/11/07(土) 01:04:48 ]
DBに接続するためのパスワード文字列をソースに埋め込もうと
考えたんですが、stringsコマンドでバレてしまいますよね。
通常は暗号化したパスワードを文字列として持たせるのがベターなんでしょうか?


359 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 01:39:49 ]
>>357
すみません初心者用の本でライブラリを使いなさいと書いてあったんです...
本の通りにやり直してもできないんです

360 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 01:41:28 ]
ここはそんな質問する場じゃない!

361 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 02:39:25 ]
気合い入れてもう一回ググッてきます。がんばってきます

362 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 10:18:05 ]
フォルダの整理って何したんだよ?

363 名前:デフォルトの名無しさん [2009/11/07(土) 11:09:18 ]
makeしたら負けだと思う。

364 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 11:46:42 ]
>>363
自分で書いて面白いと思ってんの?

365 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 11:50:14 ]
おつにゃん



366 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:17:46 ]
printf("\
1行目\n\
2行目\n\
3行目\n\
・・・・
最終行\n\
");


367 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 13:20:21 ]
それインデンツできないから×

368 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 14:31:46 ]
printf(
"1行目\n"
"2行目\n"
"3行目\n"
・・・・
"最終行\n"
);

369 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 15:06:46 ]
char *s="
#include "hoge.txt"
";
printf(s);

370 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 17:34:37 ]
if(fgets(str, sizeof(str), stdin) == NULL)
が成り立つことってあるのでしょうか。

371 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 17:45:41 ]
ファイル終端。


372 名前:370 mailto:sage [2009/11/07(土) 17:50:17 ]
キーボードからの入力でファイル終端ってどういう場合なんでしょうか

373 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 17:54:11 ]
>>372
Ctrl-Z とか Ctrl-D とか ファイルリダイレクト とか

374 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 17:54:12 ]
>>372
Windows なら ctrl + z
*nix なら ctrl + d だっけか?

375 名前:370 mailto:sage [2009/11/07(土) 18:02:17 ]
ありがとうございます



376 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 18:47:31 ]
define BUF 1024
char buffA[BUF], buffB[BUF];
char** str;
int needss, i, j, x, y;
質問です。上記の変数を利用しプログラムを記述しました。
まったく問題なく実行でき、さらに処理を追加しようと新たに
char buffC[BUF]という配列を宣言すると、エラーを吐くようになりました。
どうも、char型の変数を増やすとbuffBに文字列が格納された瞬間にエラーがでます。
変数名を変えても改善しませんでした。
プログラム自体には問題なく、当然コンパイラーは警告すらでません。
何が問題なのかまったく分からず困惑しています。
変数名が悪いのか、配列の要素数が全体で見れば多すぎるのかと思いましたが、そんなことはないはずですよね・・。

環境はUbuntu9.04 コンパイラGCC エディタEmacsです。
エラーの考えられる原因はなんでしょうか。


377 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 18:50:07 ]
object-CってC使いに易しいかな?
iMacポチって待機中なんだけど…

378 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 18:53:18 ]
>>376
スタックオーバーフローか未初期化のポインタで何か操作しようとしてる可能性が高い

379 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:07:01 ]
>>378

ポインタはmallocでメモリを確保しています。
というか、変数を追加しなくても、実行できなくなりました・・。
mallocで確保したメモリがfreeで解放できずスタックオーバーフローになっているという落ちとかでしょうか。。

380 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:13:01 ]
malloc はスタック関係ねー

381 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:13:11 ]
>>379
bufBに文字列が格納された時にエラーが発生という
場合、格納しようとしている文字列に問題があると
考えられる。多分読み出してはならない領域を
指すポインタだとか....
正確なことはソース見なければわからないんで
うpローダ使ってアげてみたら?

382 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:15:04 ]
まあどうせ単なるショボバグだろうな。


383 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:18:20 ]
コンパイラのせいにしたいのがみえみえ

384 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:19:29 ]
>ポインタはmallocでメモリを確保しています。

というが、

>define BUF 1024
>char buffA[BUF], buffB[BUF];
>char** str;
>int needss, i, j, x, y;

の中にあるポインタはstrしかなく、
そこにmallocの戻り値を格納するとしたら、多分
(charの配列ではなく)char*の配列を確保しているわけで
何かもうそもそもソースがおもしろいことに?^^

385 名前:376 mailto:sage [2009/11/07(土) 19:22:31 ]
ネタコメント削除してソースうpしますです。。



386 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:24:04 ]
(* (char *) ABC_easy_as_a_123)(int);

これどういう意味ですか。
ポインタ型charにキャストするなら最初からそうやったらいかんのですか。

387 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:25:56 ]
>>386
関数のポインタだろうけど、なんぞこれw

388 名前:376 mailto:sage [2009/11/07(土) 19:33:16 ]
ttp://codepad.org/dcYqWa30

うpしました。ダメ出しお願いします。

389 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:34:35 ]
struct SomeStruct
{
// ・・・
};

と書けばいいのになんで

typedef struct
{
// ・・・
}
SomeStruct;

と書くのが巷で流行ってるの?


390 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:39:41 ]
structをtypedefしないんだったらそいつへのポインタを
使うのはダサイかも

391 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:40:35 ]
ヒント:構造体を使う時

392 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:42:56 ]
構造体は、struct タグ名 で宣言するが
これで宣言したのはタグ付きの構造体の中身であって、
型として認められていない。
ここでtypedef を用いると、「SomeStruct型の構造体である」ことを認めさせることになる。

typedefを使わないと、
 struct SomeStruct MyStruct;
と別に一行必要になり。これでようやくSomeStruct型の構造体と認められるわけだ


つまり、構造体の「型宣言」と同時に「構造体として使えるように名前もつけてしまおう」という横着した手法なだけだ。

構造体は、述べたように最初の段階では使用できる構造体として認められない。
必ず、「SomeStruct型の構造を持つ○○」という名前をつけてやらなければ使用できない。
だからtypedefで型と名前を同時に決めることもよくある話。

393 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:47:01 ]
C++だと、これを勝手にやってくれちゃってんで面倒なことにもなりかねない。
Cの頃からtypedef structでやっていればC++って何て便利なんだ!と思うかもしれないが
あれは余計なお世話といってよい。

394 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:47:04 ]
理屈っぽ

395 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:49:40 ]
>>388
/*ここで必要な箱の数が分かったのでmallocで領域を確保*/
/*forで必要な行数回、1行の文字数のchar型の領域を作成*/
str = ( char ** )malloc( sizeof( char * ) * ( needBr + 1 ) );
for (i = 0; i <= needBr; i++){
str[i] = ( char * )malloc(oneLineLen * sizeof (char) + 1);
}




396 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:52:04 ]
>>392
なんか勘違いしてるっぽいな。

397 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:53:53 ]
strに実体がないような?

398 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 19:57:45 ]
str = ( char ** )malloc( sizeof( char * ) * ( needBr + 1 ) );

思いっきり書き忘れていました・・。
しかも括弧付けわすれで評価が意図しない形になる(はず)になっていました。
charが1バイトなので+1で大丈夫だっただけですよね・・。

399 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:01:04 ]


400 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:03:02 ]


401 名前:376 mailto:sage [2009/11/07(土) 20:11:20 ]
9文字入力して4文字で改行で実行したりすると
*** glibc detected *** ./a.out: double free or corruption (out): 0x082b9018 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7dfc604]
/lib/tls/i686/cmov/libc.so.6(cfree+0x96)[0xb7dfe5b6]
./a.out[0x8048823]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb7da3775]
./a.out[0x8048521]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:08 69284 /home/mint/Desktop/Cprogram/pr4/a.out
08049000-0804a000 r--p 00000000 08:08 69284 /home/mint/Desktop/Cprogram/pr4/a.out
0804a000-0804b000 rw-p 00001000 08:08 69284 /home/mint/Desktop/Cprogram/pr4/a.out
082b9000-082da000 rw-p 082b9000 00:00 0 [heap]
b7c00000-b7c21000 rw-p b7c00000 00:00 0
b7c21000-b7d00000 ---p b7c21000 00:00 0
b7d8c000-b7d8d000 rw-p b7d8c000 00:00 0
b7d8d000-b7ee9000 r-xp 00000000 08:08 1864 /lib/tls/i686/cmov/libc-2.9.so
b7ee9000-b7eea000 ---p 0015c000 08:08 1864 /lib/tls/i686/cmov/libc-2.9.so
b7eea000-b7eec000 r--p 0015c000 08:08 1864 /lib/tls/i686/cmov/libc-2.9.so
b7eec000-b7eed000 rw-p 0015e000 08:08 1864 /lib/tls/i686/cmov/libc-2.9.so
b7eed000-b7ef0000 rw-p b7eed000 00:00 0
b7ef0000-b7efd000 r-xp 00000000 08:08 2779 /lib/libgcc_s.so.1
b7efd000-b7efe000 r--p 0000c000 08:08 2779 /lib/libgcc_s.so.1
b7efe000-b7eff000 rw-p 0000d000 08:08 2779 /lib/libgcc_s.so.1
b7eff000-b7f03000 rw-p b7eff000 00:00 0
b7f03000-b7f04000 r-xp b7f03000 00:00 0 [vdso]
b7f04000-b7f20000 r-xp 00000000 08:08 6255 /lib/ld-2.9.so
b7f20000-b7f21000 r--p 0001b000 08:08 6255 /lib/ld-2.9.so
b7f21000-b7f22000 rw-p 0001c000 08:08 6255 /lib/ld-2.9.so
bf80c000-bf821000 rw-p bffeb000 00:00 0 [stack]
Aborted
とかもうね・・・。

402 名前:376 mailto:sage [2009/11/07(土) 20:15:23 ]
謎のエラーはmallocが1行抜けてたからのようです。。
395さんはじめありがとうございました・・。

403 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:34:31 ]
この先、メモリが10GBとかになったらC言語じゃ対応できなくね?
CってポインターがINTで4294967295までしか設定できないよね
それ以上のアドレスは指定できないけどどうすんの?アドレスが5000000000とかの指定できなくね?おわた

404 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:41:56 ]
はいはいワロス

405 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:44:30 ]
ポインタがint値だなどと誰が決めたのだ。
ポインタはポインタであってポインタでしかない。
多くの実装でlong intに変換可能だというだけ。
なんだったら見たこともない宇宙文字列で実装してもいいのだ。



406 名前:デフォルトの名無しさん [2009/11/07(土) 20:54:08 ]
>>403
どれでもいいから 64bit 版のコンパイラで sizeof(void*) を表示してみそ

407 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:56:10 ]
long long long long long long long long long long long long long long long long long long long long int

408 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 20:57:50 ]
>403
メモリが10GB(仮想記憶含まず)ならCPUもそれを指定できないとダメ子さんになるから
(intは何ビットか計算するの面倒だからやらないまぁ、64bitで十分だろうけど)
CPUのbit数xが10G < pow(2, x)を満たす必要がある
intはpow(2, x)なるbit数であるのが一般的である

また、規格ではポインタがintに変換できるとは書かれていない
C99からintptr_tとか入った気もするけど、マジックリストにでも使うんですか
とか思って特に調べていない

409 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:02:02 ]
某ランドのコンパイラとかがC99に対応していない
long longが使えない

410 名前:デフォルトの名無しさん [2009/11/07(土) 21:04:17 ]
C99 はロールバックしたうえで、C201x を練り直して欲しい

411 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:07:07 ]
>>403

2038年までにはCは終わってる

412 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:09:47 ]
>>409
long long 使えるよ
C99には対応してないけど
ECC6.1.0(Embarcadero C++ Compiler)な

413 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:16:44 ]
time_t を使っているからコンパイラが対応してれば 2038年は超えられる

414 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:20:51 ]
そりゃ何とかするでしょ
もっと新しいいい言語が出ていればそっちに変わっているだろうが、
2038年にまだC言語が使われていれば何とかするしかない

415 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:22:27 ]
あと30年も生きていられるわけないじゃないか^^



416 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:25:08 ]
おまえ何歳だ?

417 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:28:06 ]
30年もすれば日本は消滅して日本人は貧困にあえぎプログラミングどころかパソコンに触る機会もないよ

418 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:28:45 ]
C言語で楽しくプログラミングする人の集まるスレだから、アンチは別のスレに行ってよ
time_tを変えて再コンパイル、リンクするか64bitCPUに移行すれば、2038年問題なんて大したことではない
30年後もx86さまさまの人は時代後れを認識した方がいいと予言しておく

419 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:29:49 ]
64bitCPUとtime_tは関係があるわけ?

420 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:31:16 ]
64bitCPUにすれば今までのtime_tは2038年以降も正常に動くんだよ

421 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:35:09 ]
先延ばししただけじゃねーの?

422 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:40:35 ]
先延ばしじゃない方法があるのか?

423 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:44:57 ]
永遠はあるよ

424 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:49:41 ]
time_tは有限?

425 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 21:50:37 ]
その都度仕様を変えれば無限とも言える



426 名前:デフォルトの名無しさん [2009/11/07(土) 22:01:29 ]
64bit でも 292277026596年問題が残るが、その頃のマシンがバグったらグレートウォールごと吹っ飛ぶとかあるのかな

427 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:04:34 ]
そこまでくると、さすがに超人ロックくらいしか生きてないだろうな

428 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:04:51 ]
>>426
その頃にはさすがに人類は死滅してるよ

429 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:07:17 ]
>>420
CPU関係ねーよカス

430 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:08:23 ]
嫌味で言ったつもりだったが、なに釣られてんのwww

431 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:08:38 ]
いやいや。
今仮に18歳のぴちぴち大学1年生でも
30年後は48歳だよ?

48歳の人はあんまりもうプログラムはしてないんじゃないかな。
経営側か、現場であっても少なくとも設計よりの仕事をしていて
もうやりたくてもプログラムなんてさせてもらえなくて
夜遅く家に帰ると妻はうるさく、娘には嫌われ、
トイレ横の物置を改造して作った名ばかりのパソコンルームに
30年前に自作したコンピュータがおいてあって、
それの電源をいれてほそぼそと趣味のコードを打ち込むのが日課だったり^^

432 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:11:43 ]
>>428
そう思うと勿体ないよな。
これだけの科学技術を創り出すのに、どれだけの時間がかかったことか。

再び文明が生まれたとしても、車輪の再発明をするだけだ。

433 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:13:29 ]
地球が始まった時間に比べれば一瞬の出来事

434 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:21:49 ]
>>432
人間が生まれて600万年
だが技術革命はここほんの100年余りの事だ

435 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:22:40 ]
もしかしたら今が本来の人間の姿からかけ離れて
どうかしてるかもしれないって話



436 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:23:45 ]
は?詳しく話してくれないか?それを

437 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:23:58 ]
他の惑星に移住してて、そこで新たにタイムテーブル作ってるから問題なしとか

438 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:24:55 ]
リフボードでトラパーの波に乗るんだろうな

439 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 22:53:51 ]
UFOに乗ってる宇宙人なんか肉体無いらしいよ
これ以上はオカルト板でしようぜ

440 名前:249 [2009/11/07(土) 23:38:09 ]
>>249です。
まず1列目に1〜9の数字を入れようとして
以下のようなプログラムを作りました。
www.dotup.org/uploda/www.dotup.org339690.c.html
しかし上のプログラムでは1列目に同じ数字が出てしまうので
1行目に出た数字は2,3行目には出ないようにしたいです。
それを改良したいのですが方法が分かりません。
教えてください。

441 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:12:03 ]
>>440
何がどうなって欲しいの?

442 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:19:22 ]
10進数を10桁の2進数に変換したいんだけどどうやったらいいかわからない
8とか16進数なら表示できるのわかるんだけど、2進数って簡単に表示できないんだっけ?

443 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:21:06 ]
C言語は2進数はサポートしてないからね

444 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:22:00 ]
AND取ってループすれば出せるでしょ

445 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:22:53 ]
8進数とか16進数の表示を自前でやってみたら



446 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:24:30 ]
2で割っていけばいいんでは?

447 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:27:08 ]
>>442
limits.hをインクルードしてsizeof(int) * CHAR_BITで
intのビット数を求め、10進数をunsignedにキャストして←ここ重要
1UL << (sizeof(int) * CHAR_BIT - 1)のマスクとandを取った結果が
0か1かを書きだして行く
マスクは>>で右シフトしてループ



448 名前:デフォルトの名無しさん [2009/11/08(日) 00:27:48 ]
>>441

>>440のプログラムでは

100
100
300
など一列目に同じ数字が出ることがあるので

500
600
200
のように一列目の各行におなじ数字が出ないように改造したいです

449 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:32:10 ]
#include <stdio.h>

int main() {
int beam = 10; // チゲ
int i, n ; // counter
for ( n = 0; n != 1024; ++n ) {
printf( "%d : ", n );
for ( i = 0; i != beam; ++i ) {
printf( "%d", n >> ( beam - i - 1 ) & 1 );
}
printf( "\n" );
}
}

450 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:44:32 ]
>>448
1〜9 までの重複しない3つの数字が欲しいだけ?
もしそうならこれでおk

{
int i, x, n[9];
for(i=0;i<9;i++) n[i]=i+1;
for(i=0;i<9;i++)
{
x=rand()%(i+1);
t=n[i];
n[i]=n[x];
n[x]=t;
}
for(i=0;i<3;i++) cardForNumbers[i+1][1]=n[i];
}

451 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:52:23 ]
先生質問です。

char *ptrを引数として他の関数に渡す時は
other_Kansu (&ptr); ですよね?

char **ptrを引数として渡すときはどうなるんでしょうか?
other_Kansu (&*ptr)ですか?

452 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:58:19 ]

ちょっくら驚く豆知識

なんと!
なんとなんとなんと!
なんとなんとなんとなんとなんとなんと!

4bit CPUでも128bitデータなどを扱えるのである!!!!!!!!!!!!

何をバカな、と思ってるのは素人である。ド素人である。
4bit CPUでは、128bitデータを「1サイクルで」レジスタなどに格納できないだけであって
128 / 4サイクル使って上位4bitもしくは下位4bitから順番にメモリに128bitぶん格納していけばよいのだ。

バカか手前等。

453 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 00:58:22 ]
面白い質問ですね^^

void other_Kansu( char ** ) に char *ptr を渡したいときは other_Kansu( &ptr ) です。
void other_Kansu( char ** ) に char **ptr を渡したいときは other_Kansu( ptr ) です。
&*ptr でもいいですが、それは結局 ptr です。

多分。

454 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:01:19 ]
>>451
両方違うともいえるし、両方合っているともいえる

455 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:07:16 ]
>>453
非常にややこしいですね・・。

>void other_Kansu( char ** ) に char **ptr を渡したいときは other_Kansu( ptr ) です。
passing argument 1 of ‘ptr' makes integer from pointer without a cast
って言われるんですが無視でいいんでしょうか・・?

>>454
正解は存在しますか・・?




456 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:27:21 ]
&* はC言語の仕様上はダメなんじゃないの?

int a=10, *p=&a;
のとき
&*p って &10 でしょ

457 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 01:36:22 ]
ptr が char** だから *ptr は char* であるので
依然としてアドレス演算は可能でしょう^^

>passing argument 1 of ‘ptr' makes integer from pointer without a cast

その警告は今回の件とは直接には無関係です^^






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

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

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