C言語なら俺に聞け! Part 99
■ このスレッドは過去ログ倉庫に格納されています
0001v(^o^i)d
NGNG質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
各種リンク、関連スレは>>2-13あたり
C言語なら俺に聞け! Part 98
http://pc5.2ch.net/test/read.cgi/tech/1104114259/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0446デフォルトの名無しさん
05/01/17 21:28:20その調子で、誰も理解してくれないからって、引き篭ってきたんとちゃうの?
0447デフォルトの名無しさん
05/01/17 21:32:14別に俺が言う必要ねえんだよ
ISO が言ってくれてるから
0448デフォルトの名無しさん
05/01/17 21:32:380449デフォルトの名無しさん
05/01/17 21:34:47って起せるものなのか?
0450デフォルトの名無しさん
05/01/17 21:36:47わりと簡単。
0451デフォルトの名無しさん
05/01/17 21:37:53君の頭、外科手術したげるね
0452デフォルトの名無しさん
05/01/17 21:40:030453デフォルトの名無しさん
05/01/17 21:42:41BSDライセンスでよければ、FreeBSDとかにでも入ってるでしょ
0454デフォルトの名無しさん
05/01/17 23:09:210455デフォルトの名無しさん
05/01/17 23:19:51>>454ガッ
}
0456デフォルトの名無しさん
05/01/17 23:23:21syntax error
ここはCスレですよ
0457デフォルトの名無しさん
05/01/17 23:31:40error: unexpected character { near finally
0458デフォルトの名無しさん
05/01/18 00:39:05一行がすごく長くてところどころに↑矢印みたいなやつが入ってるんですけど、
この矢印ごとに簡単に改行する方法はありますか?
それとも今はテキストでしか見てないのですが、
他のエディタであれば正常通り見られますかね?
0459デフォルトの名無しさん
05/01/18 00:40:47スレ違い
0460デフォルトの名無しさん
05/01/18 00:44:18具体的に開いたエディタを上げてみそ。
ちなみに俺の勘によれば、たぶん改行コードがLFだけになっているのでしょう。
であるので、見るだけならWebブラウザでも見れますし、
ちょっと気の利いたエディタならたいがいちゃんと編集もできるでしょう。
0461デフォルトの名無しさん
05/01/18 03:18:030462458
05/01/18 09:26:30スレ違い申し訳ないです。ありがとうございました。
0463デフォルトの名無しさん
05/01/18 10:47:19取得したいのですがいい方法はありませんでしょうか?
ソースは以下のようになっています。
// 200バイトを10列分確保 (buffer[10][200])
char** buffer;
buffer = (char**)malloc(sizeof(char*)*10);
for(int i=0;i<10;i++)
{
buffer[i] = (char*)malloc(200 * sizeof(char));
memset(buffer[i], 0, 200);
}
// freeや必要な処理はこのあとで
0464デフォルトの名無しさん
05/01/18 10:54:02ありません
0465デフォルトの名無しさん
05/01/18 11:01:35と書いてもカーソルが移動しないで"2A"と表示されてしまう
んですけどなんか間違ってます?
0466デフォルトの名無しさん
05/01/18 11:02:22小学生に掛け算教えてもらえ。
callocや#define talloc(n,type)
使えば簡単なのに
0467デフォルトの名無しさん
05/01/18 11:06:37質問するスレから間違ってます。
OSやコンパイラくらい書いてくれ。
0468デフォルトの名無しさん
05/01/18 11:14:57NT系か9x系か知らないが、コンソール端末で
C:\> adddrv ansi.sys
を実行した後、その端末でプログラムを実行してみろ。
0469465
05/01/18 11:17:07OS:WINDOWS 2000
コンパイラ:visual C++ 6.0
です。
これってC言語だけのエスケープシーケンスじゃないんですか?
0470デフォルトの名無しさん
05/01/18 11:19:52C言語とは関係ありません。
2000でソレをやりたかったら
CONFIG.NTにANSI.SYSを追加して16bitコードを吐くコンパイラを
使用しないとダメ。VC6.0ではprintfではできません。
0471465
05/01/18 11:21:05コマンドプロンプトでC:\>adddrv ansi.sysを実行するという意味でしょうか?
試してみましたが、その後プログラムを実行してもやはり同じでした・・。
0472デフォルトの名無しさん
05/01/18 11:23:410473465
05/01/18 11:26:34え・・そうなんですか。
なんで課題で出たんだろう・・・、学校もVC6.0なのに。
では現在の環境で、カーソルを移動させる手段が他にあるのでしょうか?
現在時刻を同じ場所で上書きして表示させるプログラムを書きたいのですが・・
0474デフォルトの名無しさん
05/01/18 11:28:49'\r'出力か、<conio.h>使えば〜?
0475465
05/01/18 11:43:41"表示するフォーマット\r"でできました、ありがとうございました。
0476デフォルトの名無しさん
05/01/18 11:48:54dosx使えば32bitの混合コードも受け付けるんじゃなかった?
0477どうしても判らないんです。助けてください・・・
05/01/18 11:51:31なりふり構ってられなくて、、><;
問題
与えられたグラフGに対しKruskalの算法をもちい最小木を求めるプログラムを作る。
条件1・採用した辺からできる部分グラフの連結成分を保持するデータ構造において、
linkを行う際にunion by rank だけ取り入れたものとunion by rank と path compression を
併用したものの両方を作成。
条件2・四則演算、比較、代入の総数を計測し、最小木とともにその総数を出力すること
0478デフォルトの名無しさん
05/01/18 11:53:08>>1を読んで下さい
0479デフォルトの名無しさん
05/01/18 12:02:40落ち着いてテキスト読め。グラフ理論の用語が分からないなら数学板に行け。グラフを表すデータ構造が分からないなら聞くがよい。
0480デフォルトの名無しさん
05/01/18 12:12:040481デフォルトの名無しさん
05/01/18 12:17:08「ダブルポインタ」とかいう一般的でない言葉を使うのはやめれ。
で、「200」とか「10」とかいう数字をキミのプログラムは知っている
ではないか。それをどこかに保存すればいいんですよ。
0482デフォルトの名無しさん
05/01/18 12:40:55ついでに言うと、それは正確には多重配列とは言わない。
0483デフォルトの名無しさん
05/01/18 13:55:030484デフォルトの名無しさん
05/01/18 14:08:27いやまて、最初のぬるぽは
次のぬるぽを指してはいないぞ。
0485デフォルトの名無しさん
05/01/18 14:15:21| |
| | ガガッ
( ・∀・) .人
と ) < >_∧∩
Y /ノ .人`Д´)/ ←>>483
/ ) < >_∧∩
_/し' //. V`Д´)/ ←>>484
(_フ彡 /
0486463
05/01/18 15:37:41配列全体のサイズではなく要素数を取得したかったです。
質問が間違っていました。
>>481
一般的いでない言葉は使わないようにしておきます。
200、10(要素数)を静的に保存するのはヘボくないですか?
スマートに任意のタイミングで計測できないかが知りたいです。
>>482
はい分かっています。
0487デフォルトの名無しさん
05/01/18 16:04:50×ダブルポインタ
○ポポインタ
0488デフォルトの名無しさん
05/01/18 16:09:03どういうわけか、malloc() した領域のサイズを取る手段って標準では
ないんですよね。ライブラリ内でサイズを保持してない訳ないのに。
なので、ヘボくても仕方ないので自分で記録するしかないです。
typedef struct {
int num;
char elem[];
} foo_t;
typedef struct {
int num;
foo_t *foo[];
} buffer_t;
buffer_t *buffer;
buffer = malloc(sizeof(buffer_t) + sizeof(foo_t *) * N1);
buffer->num = N1;
for (int i = 0; i < N1; i++) {
buffer->foo[i] = malloc(sizeof(foo_t) + sizeof(char) * N2);
buffer->foo[i]->num = N2;
memset(&buffer->foo[i]->elem, 0, sizeof(char) * N2);
}
みたいなー。
0489デフォルトの名無しさん
05/01/18 17:02:20吐きそう。ゲー。その上、こんな低次元の処理で構造体使うか? calloc,_msize…、やめた、どうせ人の忠告聞かないんだから。
0490デフォルトの名無しさん
05/01/18 17:08:59VCしか知らない奴は黙ってろ
0491デフォルトの名無しさん
05/01/18 17:12:09_msizeのポートもできないくせに生
0492デフォルトの名無しさん
05/01/18 17:14:11こいつはxmallocもVCも知らないぼけ
0493デフォルトの名無しさん
05/01/18 17:19:37なめんなよ
0494デフォルトの名無しさん
05/01/18 17:31:33おまいは簡単な変数の加算もできないのか
0495デフォルトの名無しさん
05/01/18 17:44:52それが標準Cクオリティ
http://pc5.2ch.net/test/read.cgi/tech/1105454700/l50
0496デフォルトの名無しさん
05/01/18 18:55:120497デフォルトの名無しさん
05/01/18 19:40:00ヒマ人に合わせてらんねーの
おぢさんたちわ
0498デフォルトの名無しさん
05/01/18 20:01:30やめとけ。
0499デフォルトの名無しさん
05/01/18 20:08:19する必要はない。
0500デフォルトの名無しさん
05/01/18 20:17:31mallocで領域確保する時の要素数は変数の値が多いから無問題
0501デフォルトの名無しさん
05/01/18 20:24:520502デフォルトの名無しさん
05/01/18 20:33:130503デフォルトの名無しさん
05/01/18 20:34:430504デフォルトの名無しさん
05/01/18 20:41:090505デフォルトの名無しさん
05/01/18 22:03:15row_t *buf1;
char (*buf2)[200];
buf1 = (row_t *)malloc(10*sizeof(row_t));
buf2 = (char(*)[200])malloc(10*200*sizeof(char));
0506デフォルトの名無しさん
05/01/18 22:08:01「これは左辺値ですか?」
「違います」
って感じのやりとりがあったと思うんです。あそこらのキャッシュ持ってないでしょうか?
持ってたらぜひにでも、あっぷお願いします。
0508デフォルトの名無しさん
05/01/18 22:58:10ご親切にありがとうございます!
無事ダウンロードさせて頂きました。
本当にありがとう!
0509デフォルトの名無しさん
05/01/19 03:06:17a[30]="\0"
とやっても改行が入らないのですがどうすればいいんでしょうか?
0510デフォルトの名無しさん
05/01/19 03:09:370511デフォルトの名無しさん
05/01/19 03:10:06a[30] = '\n'; a[31] = '\0';
つーか、それエラーだろ。
0512デフォルトの名無しさん
05/01/19 03:11:18\0 は NUL
0513デフォルトの名無しさん
05/01/19 04:21:430514デフォルトの名無しさん
05/01/19 04:41:370x00 NUL 0x10 DLE 0x20 SP
0x01 SOH 0x11 DC1
0x02 STX 0x12 DC2
0x03 ETX 0x13 DC3
0x04 EOT 0x14 DC4
0x05 ENQ 0x15 NAK
0x06 ACK 0x16 SYN
0x07 BEL 0x17 ETB
0x08 BS 0x18 CAN
0x09 HT 0x19 EM
0x0a LF 0x1a SUB
0x0b VT 0x1b ESC
0x0c FF 0x1c FS
0x0d CR 0x1d GS
0x0e SO 0x1e RS
0x0f SI 0x1f US 0x7f DEL
これぐらいは基本だ。おぼえとけ ぼけ
0515デフォルトの名無しさん
05/01/19 04:42:180516デフォルトの名無しさん
05/01/19 04:47:490517デフォルトの名無しさん
05/01/19 04:54:09自分のぼけをごまかせるとでも思っているようだ ;-)
0518デフォルトの名無しさん
05/01/19 04:59:560519デフォルトの名無しさん
05/01/19 05:13:480520デフォルトの名無しさん
05/01/19 06:50:590521デフォルトの名無しさん
05/01/19 09:17:58どんなの知ってます?
0522デフォルトの名無しさん
05/01/19 09:22:54何の?
0523デフォルトの名無しさん
05/01/19 09:23:33Cの場合はvoid*はあらゆるポインタ型にキャスト無しで代入できるのですが.
0524デフォルトの名無しさん
05/01/19 09:25:24誤爆。
>521
何の?
0525デフォルトの名無しさん
05/01/19 09:33:14例えば公開ヘッダーの関数宣言を意図的に削ったり、関数定義にstaticを付ければ非公開だろ
0526デフォルトの名無しさん
05/01/19 09:47:53宣言を削っても非公開にはできないわけだが。
0527デフォルトの名無しさん
05/01/19 11:08:55けどキャストはした方がいくない?
0528デフォルトの名無しさん
05/01/19 11:11:52_lock とか _unlock はマイクロソフトの非公開関数だよ ;-)
0529デフォルトの名無しさん
05/01/19 11:23:09入門書にて勉強中、やはりポインタで唸ってますが、
基本的な部分で疑問が生まれ、どこ読んでも書いてないもので…。
変数の宣言と代入なのですが、
int a=5;
int b=6;
または、
int a;
int b;
a=5;
b=5;
という記述はOKで、
int a;
a=5;
int b;
b=6;
という記述はなぜNGなんでしょうか?
諸先輩方、教えてくださいませ。お願いいたします。
0530デフォルトの名無しさん
05/01/19 11:26:05間違っているのは君の入門書だ。
0531デフォルトの名無しさん
05/01/19 11:26:42int a=1;
は初期化を伴う宣言だ。代入文ではない。なお、C++では可
0532デフォルトの名無しさん
05/01/19 11:28:00こいつの頭はC++
0533デフォルトの名無しさん
05/01/19 11:28:52Cでは
ローカル変数はスコープ(関数)の入り口の最初にしか
書けないことになっているから
C++だとどちらのやり方も書ける。
0534デフォルトの名無しさん
05/01/19 11:29:310535デフォルトの名無しさん
05/01/19 11:35:36NGのやり方で記述すると、コンパイルエラーが起きるのです。
●コード
1 #include<stdio.h>
2 int main(void)
3 {
4int a;
5a=3;
6int b;
7b=5;
8
9printf("%dと%d\n",a,b);
10
11return 0;
12 }
●コンパイルエラー
6:parse error before 'int'
7:'b' undeclared (first use in this function)
7:(each undeclared identifier is reported only once
7:for each function it appears in.)
こんな感じです…。
0536529
05/01/19 11:39:13初期化と代入を理解してませんでした。
ありがとうございます。
>>533
「最初に書け!」
というルールなのですね。
ありがとうございます。
今のところ「こういうルールだから」
というものには丸暗記で対応していこうと思っています。
みなさま、ありがとうございます。
0537デフォルトの名無しさん
05/01/19 11:41:00Cでは
ローカル変数はスコープ(関数(main))の入り口の最初にしか
書けないことになっているから
C++だとどちらのやり方も書ける。
0538デフォルトの名無しさん
05/01/19 11:44:10すまん
0539デフォルトの名無しさん
05/01/19 12:25:44は初期化を伴う宣言だ。代入文ではない。なお、C++では可
激しく嘘 Cでも可 ;-)
0540デフォルトの名無しさん
05/01/19 12:39:38>int a=1;
>は初期化を伴う宣言だ。代入文ではない。なお、C++では可
>激しく嘘 Cでも可 ;-)
どこに嘘が?
Cで不可とはどこにも書いてないと思うのだが。
0541デフォルトの名無しさん
05/01/19 12:43:10Cでは不可ととれる
0542デフォルトの名無しさん
05/01/19 12:55:260543デフォルトの名無しさん
05/01/19 12:59:21なにこの人
0544527
05/01/19 13:01:240545デフォルトの名無しさん
05/01/19 13:05:31本当ですよ。
malloc() の返り値とかキャストするのは大マヌケ。
■ このスレッドは過去ログ倉庫に格納されています