[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 03/19 18:44 / Filesize : 33 KB / Number-of Response : 164
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C言語なら俺に聞け(入門編)Part 97



1 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 04:28:49.26 ]
C言語の*入門者*向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 96
toro.2ch.net/test/read.cgi/tech/1328292100/
★過去スレ
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
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 156代目
toro.2ch.net/test/read.cgi/tech/1328276597/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/

75 名前:デフォルトの名無しさん [2012/02/15(水) 18:39:03.00 ]
こういう構造体があったとする
struct A{int width; int height; char* header; char* data;};

実際にはこのようにインスタンス生成される(一例)
struct A a = {
.width = 20, .height = 20,
.header = "%name=smile a=#CCCCCC b=#FFCCCCC c=#FFFF00 d=#000000",
.header = "%name=brick a=#CCCCCC b=#FFCCCC";
.data =
"aaaaaaaaaaaaaaaaaaaa"
"bbbbbabbbbbbbbbbabbb"
"bbbbbabbbbbbbbbbabbb"
"bbbbbabbbbbbbbbbabbb"
"bbbbbabbbbbbbbbbabbb"
"aaaaaaacccccaaaaaaaa"
"abbbbbbccccccccbbbbb"
"abbbbcccccccccccbbbb"
"abbbccccdcccdcccbbbb"
"abbbccccccccccccbbbb"
"aaaaccccccccccccaaaa"
"bbbbbccccdddcccbabbb"
"bbbbbabccccccbbbabbb"
"bbbbbabbbbbbbbbbabbb"
"bbbbbabbbbbbbbbbabbb"
"aaaaaaaaaaaaaaaaaaaa"
"abbbbbbbbbabbbbbbbbb"
"abbbbbbbbbabbbbbbbbb"
"abbbbbbbbbabbbbbbbbb"
"abbbbbbbbbabbbbbbbbb"
};

76 名前:75 [2012/02/15(水) 18:42:00.94 ]
訂正
.header = "%name=brick a=#CCCCCC b=#FFCCCC"; この行は不要

77 名前:75 [2012/02/15(水) 18:54:06.14 ]
>>75を見れば、仕様はわかると思う。xpm系の亜流だと思う。(わからない人はいいです。さよなら)

BMP画像を変換して、この形式のCソースファイルとして出力するツールが欲しい。
pirntfでもFILE書き込みでも、なんでもいい。
とにかくこの形式に変換する簡単なツールでいい。

自分で書くの面倒なのでだれか書いてくれると助かる。
(ただし、標準C以外のライブラリーの使用はできないものとする。libbmp.aなどは使用できない制約)

簡単なものでいい。
制限が強くても構わない(たとえば256色パレットモードのBMP限定など)

78 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 18:55:52.31 ]
自分でやれ

79 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:00:05.20 ]
JavaとかC#とかならともかく、Cは所詮アセンブラの豪華なやつだし、
コンピュータの仕組み的な知識は必須だと思うな。
配列とか構造体とかも他の高級言語でいうような抽象的な構造じゃなくて、
メモリへのラベル付けみたいなもんでしかないし。

80 名前:75 [2012/02/15(水) 19:01:49.25 ]
詳細な仕様を調べて無いのでわからないのだけど、おそらくパレット数はアルファベットの印字可能文字数が限度な気がする。
ので、[a-zA-Z]の50パレット程度が限度と考えて変換すればいいと思う。
(複数文字で1パレットという表し方が可能かどうかは不明)

0-9の数文字はランレングスに使うとか言いかねないので、使わない方が無難な気がする。@#%あたりの記号文字も危ないので使わない方が無難だと思う。
(とにかく、まだ仕様が決まってない。よくわからない状態)

とりあえず、BMPを50パレット程度の上記フォーマットのCコードへ変換して出力するツールを誰か書いてくれるとラクなのでお願いしますスーパーハッカーのみなさん

81 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:09:29.33 ]
ちゃんと宿題スレで依頼しろよ

82 名前:デフォルトの名無しさん [2012/02/15(水) 19:22:09.42 ]
>>80
失せろゴミ

83 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:23:12.36 ]
>>79
コンピュータの仕組み的な知識っていうけど、構造的な理解必要なの?

メモリってものがあるっていう理解以上に深いものはないでしょ。


int a=30;
なら何番地に30

string s="str"なら
何番地から何番地にかけてs t r
っていうね。





84 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:29:21.99 ]
C言語でスレッドって出来るの?



85 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:30:42.13 ]
>>83
プログラムカウンタ、スタックポインタ、スタックフレーム、スタック、ヒープ、
みたいな、実行時のイメージみたいなのは持ってる必要があると思う。


86 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:34:31.41 ]
スタックポインタって何?

87 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:36:59.22 ]
A7の別名

88 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:39:52.22 ]
>>84
できるはず…?

実際は、C++コンパイラ(ライブラリ)をつかうとおもう。
たとえば、SmartWin
exitThread = fork(x, & KozuchiWidgets::ThreadWaitForObjectsCall);
これは、Cにみえるでしょ

C++Builder4のVCL(「TThread オブジェクトは,アプリケーションで複数の実行スレッドを作成できる抽象クラスです」)

89 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:48:29.86 ]
>>84
Windows APIでは、
CreateThread()
TerminateThread()
ExitThread()

90 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:52:33.35 ]
結局ライブラリ必要なんかwww
Cって機能少ないなぁ

91 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:56:20.27 ]
アセンブラを除いたら一番プリミティブな道具だもの

92 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:00:32.13 ]
>> 77
(わからない人はいいです。さよなら)

これにムカついたので作りません

93 名前:75 [2012/02/15(水) 20:00:51.81 ]
osがposix準拠ならpthread使える
#include <pthread.h>

#include <stdio.h>
void* f(void* a){int i=100; while(i-->0) putchar(*((char*)a));}

main(){
pthread_t a,b;
pthread_create(&a, NULL, f, "A");
pthread_create(&b, NULL, f, "B");

pthread_join(a, NULL);
pthread_join(b, NULL);
}




94 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:04:15.68 ]
C言語において抽象データ型って何でしょう?
また抽象データ型の反対って何ですか?

95 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:17:09.13 ]
Cには言語がサポートする抽象データ型っていうのはないんじゃないの?
自前で作ったものでシミュレートする事はできるだろうけど。
言葉的には抽象の反対は具象だわね。


96 名前:75 [2012/02/15(水) 20:17:19.43 ]
データを抽象化するためのテンプレートとなる抽象定義のメタ型となる型のことじゃね。
C++だと純粋仮想関数だけで定義したクラスを抽象クラスと呼ぶけど、それに近い概念のC版は知らない。

97 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:18:11.02 ]
>>96
なんでコテなの?
クソコテなの?

98 名前:75 [2012/02/15(水) 20:20:10.59 ]
>>92
べつにいいわ、もう書いたし。

99 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:21:34.79 ]
>>96
意味わかんねー...

100 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:34:26.98 ]
wikiって専門用語はかなり難しい記述でなされてるね。
慣れないと分からんわ。

101 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:45:49.10 ]
struct 構造体は抽象データ型じゃないの?

102 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 20:53:56.32 ]
Cの構造体はメモリ領域へのラベル付け。
もちろんオフセットを使うよりは抽象的だろうけど、
抽象データ型ってのはそういうのじゃないと思う。


103 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:33:28.72 ]
メモリ領域からキョリを感じさせるデータの扱いが抽象データ型?



104 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:40:47.66 ]
charは何で文字型と呼ばれてるのか。

105 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:43:37.92 ]
アスキー文字1文字入れるのに1バイト必要だからじゃね

106 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:45:47.05 ]
intはじゃぁ4倍文字型じゃないのか

107 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:49:12.49 ]
>>106
アホがいる……

108 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:56:01.01 ]
何でww
int型はcharの4倍大きい容量でしょw

109 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:07:23.94 ]
半端な知識/前提と普遍ゴッチャだと
配列 = 等間隔に一様なデータ並べた構造
と決め付けて掛かっちゃうからねー

110 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:14:17.67 ]
いや、配列はそうだろ。
何が言いたいのか知らんが

111 名前:デフォルトの名無しさん [2012/02/15(水) 22:27:53.09 ]
自分自身が何の話をしているのか隠したままハッタリかます奴は
いじめるとおもろいぞ

112 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:41:22.03 ]
sizeof(int) >= sizeof(char) は確実だけど
sizeof(int) == sizeof(char) * 4 は環境次第じゃないっけ

113 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:48:10.78 ]
ていうかなんで型のサイズって規定されてないんですかね?
C言語マスターさん教えてください



114 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:50:31.73 ]
>>112
うん。
あと、intが16bit以上であることも確実

115 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:52:04.25 ]
漢字とかのユニコードってint型で保持できるわけ?

116 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:53:01.09 ]
>>115
符号化方式によっては保持できるかと

117 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:54:00.81 ]
>>113
いったん決めたら後から変えたくなっても変えづらいから。
今はbit数で型指定できるからそれで問題ないでしょ

118 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:54:18.11 ]
C言語と相性の良いグラフィックライブラリって何ですか?
有償でインストールするのでお願いします。

119 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:00:52.56 ]
>>113
世の中にはいろんなアーキテクチャがあるからだよ。
>>115
専用の型を使え。
>>118
環境/用途による。

120 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:24:22.59 ]
>>119
漢字の型ってあるの?

kyara型とか?

121 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:27:05.84 ]
>>120
環境による。

122 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:39:56.96 ]
まぁユニコードってとか言ってるやつが心配するこっちゃねーわな。

123 名前:75 [2012/02/15(水) 23:41:50.67 ]
文字コードが妙に複雑なのは、アスキーコードと互換性を持たせようとしてるのと、
記録容量ケチろうとしてるのが原因。

1文字4バイト固定の文字コードをアングロサクソンが受け入れれば、以降に書かれるアプリで文字コードの問題は未来永劫起こらない。



124 名前:デフォルトの名無しさん [2012/02/15(水) 23:52:48.56 ]
ふーん

125 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:53:10.90 ]
>>123
お前はユニコードも知らんのか。

126 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:36:01.22 ]
16ビットでは不足していた。Unicodeは、拙速で失敗した


127 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:40:21.25 ]
いつの時代だよ。

128 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:41:15.29 ]
「65536個じゃ足らんかった」
UTF-16
UTF-8
UTF-32
toro.2ch.net/test/read.cgi/tech/1291075205/475-476

129 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 01:19:04.38 ]
Unicodeのコードポイント1つは
字面上の1文字に対応するとは限らないので
>>123みたいな発想は手遅れ

130 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 01:39:20.38 ]
>>118
グラフィックライブラリ?
GUIではなくて? マルチメディアライブラリ? ハードウェアで高速描画?
有償のライブラリ?

131 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 01:49:17.87 ]
もう、32バイトで一文字のビットマップ直接表現しようぜ。

132 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 01:49:46.43 ]
頭、大丈夫か?

133 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 01:51:45.81 ]
64bitの有能なパソコンだとC言語使ったら何か変わるの?



134 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 01:58:29.84 ]
メモリがたくさん使える。

135 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 02:01:54.54 ]
visual C++ダウンロードしたいのですが有償ですか?
古いのでいいのなら無償でインスコできますかね?

136 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 02:02:19.54 ]
express

137 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 02:10:57.34 ]
>>136
2010 expressを今ネトインスコしてます。
まじでドキドキします。
俺のPCで動くのだろうか。

138 名前:デフォルトの名無しさん [2012/02/16(木) 02:46:12.85 ]
ドキドキするね

139 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 02:52:44.52 ]
起動遅過ぎだなぁ

140 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 03:13:02.49 ]
マイクロソフトの人にdreamsparkのCD貰ったけど使ってないな

141 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 06:15:16.58 ]
>>139
ずっと起動しとけば問題ない

142 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:40:52.76 ]
二つのint型変数の値を返したい場合は、構造体を返すのがいいのでしょうか。
それとも、それぞれを分けて、一つずつ値を返す関数を書くのがいいのでしょうか。
あるいは、その二つのint型変数をグローバル変数として宣言し、呼ばれる側の関数で処理をするのがいいのでしょうか。
ないしは、呼ばれる側の変数にアドレスを渡して、ポインタを使って直接アクセスするのがいいのでしょうか。

私は、ポインタを使って直接アクセスするように書いたのですが、この方法では呼ぶ側の関数で必要のない変数(二つのint型変数)を宣言しなければならず、これが少し気持ち悪い気がするのです。
こんなときはどのようにするのが一番いいのでしょうか。

143 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:44:03.96 ]
配列で返せばいいんだよ



144 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:47:02.34 ]
>>142
二つのint型変数の値を返すんだから、返してもらう方(呼び出し側)が器用意してあげないでどうする?


145 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:49:34.14 ]
>>142
>呼ぶ側の関数で必要のない変数
それ値返す必要が無いんじゃね?

146 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:53:34.90 ]
/* 新規ファイルの作成*/
void makefile(const char *filename) {
FILE *fp;
char in[5], out[5];
if ((fp = fopen(filename, "r")) == NULL) {
fp = fopen(filename, "a");
fclose(fp);
} else fclose(fp);
output_data(in, out);
output_file(filename, in, out);
}
/* 出勤、退勤の打刻 */
void output_data(char *p, char *q) {
int i;
for (i = 0; i < 5; i++) {
p[i] = 0x00;
q[i] = 0x00;
}
puts("出勤時刻の打刻");
printf("出勤時刻:");
scanf("%4s", p);
puts("退勤時刻の打刻");
printf("退勤時刻:");
scanf("%4s", q);
}
/* ファイルに書き込む */
void output_file(const char *filename, char *in, char *out) {
FILE *fp;
fp = fopen(filename, "a");
fprintf(fp, "%s,%s\n", in, out);
fclose(fp);
}

147 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:57:18.05 ]
>>144
これがソースなのですが、inとoutの値を返すのにはその器が必要ですよね。


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

148 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:58:57.31 ]
>二つのint型変数
待て。話が違うぞw

149 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 16:02:37.39 ]
>>148
このソースでは数値を文字列として受け取り、あとからatoi関数で変換しようと思ったのですが、本当はint型のinとoutという変数を使いたかったのです。
すみませんorz

150 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 16:11:45.02 ]
guidに文字を割り当てれば
全ての文字を表せる、おれおれ文字コードのできあがり。

151 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 16:25:01.40 ]
>>142
もともと2つの整数をメンバーとする構造体(Win32のRectやPoint)が存在し、
それを返すことで見通しが良くなるなら、それを返してもよい。整数2つくらいなら問題ない。
その関数の返却値のために構造体を作ることは控えた方がいい。

>>148ならば配列で渡す場合が多いと思う。

152 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 17:43:49.25 ]
visual C++のコンパイラの名称って何て言うんですか?

153 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 17:50:09.38 ]
Microsoft (R) C/C++ Optimizing Compiler
って自称してる。



154 名前:デフォルトの名無しさん [2012/02/16(木) 18:02:46.01 ]
>>153
なるほど。


コマンドプロンプトでのコマンドはVisual C++独自のものってあるんですか?

155 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:12:36.23 ]
は?

156 名前:デフォルトの名無しさん [2012/02/16(木) 18:13:33.06 ]
>>155
コンパイルするときのオプションコマンドですよ。
独自のものあるんでしょうか?

157 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:18:34.71 ]
msdn.microsoft.com/ja-jp/library/9s7c9wdw(v=vs.100).aspx
自分で判断してください

158 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:18:44.78 ]
KARAの盤権はフジパシフィック音楽出版
つまり宣伝すればするほど儲かるフジテレビ
www.officiallyjd.com/wp-content/uploads/2011/02/20110211_kpop_22.jpg

Kポップの版権を大量に抱えるフジパシフィックの取締役の物まねをする石橋
petite-soeur.dyndns.org/cgi-bin/up2/src/ps217256.jpg
KARAと踊る木梨
petite-soeur.dyndns.org/cgi-bin/up2/src/ps217372.jpg
とんねるずの韓流始めました
petite-soeur.dyndns.org/cgi-bin/up2/src/ps217209.jpg


韓国ageだけならまだしもとうとう日本sageまで行った売国ウジテレビチョン
※すべて蛆テレビで放送されたドラマ内の映像
記事・f2.upup.be/f/r/Eg9oj2i3qj.jpg
リトルTシャツ・f2.upup.be/f/r/0mnCmqmRHt.jpg
ワラ人形・f2.upup.be/f/r/97LrjtAqCU.jpg
首相・f2.upup.be/f/r/wH05SJZsJP.jpg
JAP・f2.upup.be/f/r/gX5bBAhSal.jpg


159 名前:デフォルトの名無しさん [2012/02/16(木) 18:20:06.83 ]
コンパイルオプション何てよっぽど高度な事しない限り必要ないと
思いました

160 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:22:51.67 ]
>>156
ほれ
msdn.microsoft.com/ja-jp/library/610ecb4h.aspx

161 名前:デフォルトの名無しさん [2012/02/16(木) 18:31:49.54 ]
>>160
ありがとう兄さん

でも使う事なさそうだね

162 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 19:05:33.82 ]
>>161
使いまくるよ。
cl /? で一覧出てくるからどうぞ。

163 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 19:43:23.39 ]
コンパイラーオプションを指定しないことは極めて稀。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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