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


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

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



1 名前:デフォルトの名無しさん [2009/12/15(火) 23:42:55 ]
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 57
pc12.2ch.net/test/read.cgi/tech/1260020924/
★過去スレ
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++室 Ver.70【環境依存OK】
pc12.2ch.net/test/read.cgi/tech/1258873470/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 133代目
pc12.2ch.net/test/read.cgi/tech/1260532772/
★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

175 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 07:32:49 ]
>>165
そういうときは、union使うといい

struct hoge {
 int data_type;  // 0:int 1:char 2:double ...
  union {
       char  c;
       int    i;
       double d;
    ...
  } u;
};


176 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 07:39:33 ]
>>175
いやその解は有りえんから

177 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 11:26:16 ]
void function(void *v1,char a)
{
  int i;
  for(i=0;i<10;i++)
  {
    //型に応じた数値計算
    switch(a)
    {
    case 1:
      //((int*)v1)[i];
      break;
    case 2:
      //((double*)v1)[i];
      break;
    case 3:
      //((char*)v1)[i];
      break;
    }
  }
}

こうはできないものかと妄想したが

178 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 12:59:18 ]
目的がわからんのだよ。
そんなのが必要になる状況なんてありえないだろ。

179 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:20:43 ]
型を別の引数で指定するくらいなら関数を分けるのが最善手。
そうでなけりゃ C++ で template 使え。

180 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:05:17 ]
template利用する場合でも数値を扱うなら実数と整数では別けて特殊化するがね

181 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:48:26 ]
漢字やひらがなでソートしたいのですが可能なのでしょうか
もしできるのなら詳しくソースコードを教えてください

182 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:49:25 ]
文字コードそのままでソートしてるんじゃねえの

183 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 14:50:07 ]
辞書データと比較してだな



184 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:04:33 ]
並べたい順に並べるだけだな。


185 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:11:03 ]
kwsk

186 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:14:02 ]
住所録ソフトとか見たことないの?
漢字使ってる場合とかは読みを別に入力して、その読みの順でソートするんだよ?
読みはローマ字表記のものもあればかな表記のものあるけど
どちらにせよその後は普通のソートだよ


187 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:53:48 ]
漢字に順番なんてものは無いんだから、
比較して自分が並べたい順に並べるしかないだろ。
「太郎」と「次郎」はどっちが先だ?


188 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 15:57:48 ]
あいうえお順なら、次郎が先、逆順なら太郎
文字コード順なら太郎が咲き


189 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:02:37 ]
DQNネームが流行ってる今、あいうえお順なんてふりがながふってないとムリ

190 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:07:14 ]
太郎と書いて「ジャスティス」と読ませたり
次郎と書いて「つぐろう」と読ませたり
出生届けの読みが自由ってどうなんだろうな

191 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:14:43 ]
>>190
読み仮名を登録しないだけかんだから「読ませ方」も自由なら「読み方」も自由
自分の好きな読み方で処理すれば良い

192 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:15:29 ]
>>190
読みは登録しないだろ

193 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:16:26 ]
それでも客は無茶を言う



194 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:18:22 ]
OPをEDより先にしたいとか、前編より後編を先にしたい場合に
読み以外の何で整列させればいいんだろ


195 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:19:39 ]
× 前編より後編を先にしたい場合に
○ 前編を後編より先にしたい場合に

196 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:21:05 ]
>>194
正規表現
ハードコーディングで頑張れ

197 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:24:26 ]
>>196
正規表現はCで使えたっけ?

198 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:29:36 ]
>>193
「この顧客リストを強い順にソートしてくれ」

199 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 16:39:49 ]
「グー・チョキ・パーを強い順番にソートしてくれ」

200 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:12:33 ]
テキストファイルの中身を文字コードで出力する方法ないでしょうか?

201 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:14:30 ]
16進ダンプ?

202 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:17:05 ]
>>201
ん〜000000とかの付属情報なしに純粋に文字コードだけ抜き出したいです。

203 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:19:31 ]
文字コードって言ってることがわからないんだけど



204 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:25:04 ]
テキストファイルの中身がunicodeで”あいうえお”と書かれていたら
”3042304430463048304a”と書き出されるイメージです。

205 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:31:57 ]


意外と難しいのがセンタリング
フィールドの大きさをまず測る

一文字だけなら、その中心部分、半分に割った位置にフォントの中心部分を置けばいいが
文字数が増えたときのオフセットの取り方が意外とパッと出てこないもの。

普通にやると
「堀 川 掘 ら れ た 町」
にならず、
「堀川掘      られた町」

みたいになってしまう

206 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:33:34 ]
16進ダンプを基本にして目的のものを書けばいいだけじゃ

207 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:34:50 ]
         ,. ‐''三ヾ´彡シ,=`丶、ヾ´彡シ,=`丶、シ,=`丶、,=`丶、丶、
      /'".:=≡ミ_≧_尨彡三:ヽ、≧_尨彡三:ヽ、彡三:ヽ、三:ヽ、:ヽ、
     //.:;:彡:f'"´‐------ ``'r=:l------ ``'r=:l-- ``'r=:l ``'r=:l 'r=:l
     /〃彡_彡′,.=、 ̄ ̄ ,.=、 |ミ:〉 ̄ ̄,.=、 |ミ:〉,.=、 |ミ:〉、 |ミ:〉|ミ:〉
    'y=、、:f´===tr==、.___,. ==、._ゞ{=、.___,. ==、._ゞ{,. ==、._ゞ{==、._ゞ{._ゞ{
    {´yヘl'′   |   /⌒l′  |`Y} /⌒l′  |`Y}′  |`Y}  |`Y}|`Y}   ああきあきらあきらめあきらめた
    ゙、ゝ)       `''''ツ_  _;`ー‐'゙:::::l{ノ_ _;`ー‐'゙:::::l{_;`ー‐'゙:::::l{‐'゙:::::l{゙:::::l{     そそこそこでそこで試そこで試合
.    ヽ.__     ,ィnmmm、   .:::|!mmm、   .::|!m、   .::|!   .::|! .::|!
   ,.ィ'´ト.´     ´`"`"`゙″ .::::;'`"`"`゙″ .:::;'`゙″ .:::;'″ .:::;' .:::;'
イ´::ノ|::::l \         "'   :::/   "'   :::/'    :::/   :::/ :::/
::::::::::::|:::::l   ヽ、      ..::  .:::/.、   ..:: .:::/.、 ..:: .:::/.、: .:::/.、::/.、
:::::: ::: |:::::ヽ    ヽ、.......::::/..:::/!\\:/..:::/!\\::/!\\ !\\ \
::::::::::: |::::::::ヽ    ``''‐--ァt''′ |!:::ヽ:::\t''′ |!:::ヽ:::\|!:::ヽ:::\:::ヽ:::\:\
:::::::::::::|::::::::::::ヽ、       /i|iト、  |l:::::::ヽ:::::\  |l:::::::ヽ:::::\::::ヽ:::::\:ヽ:::::\:\
:::::::::::::|::::::::::::::/:ヽ、   ∧|i|i|i|〉. ||::::::::::ヽ:::::::\||::::::::::ヽ:::::::\:::ヽ:::::::\ヽ::::::\:\

208 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:47:02 ]
改行はどうするんだろ。


209 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:47:23 ]
>>206
16進ダンプのことあまり理解してなかったみたいなので出直してきます

210 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 19:38:54 ]
それでいい

211 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 19:40:49 ]
>>199
      パ
     / | \
   チ  |  グ
  /    チ    \
グ     |     チ
| \    |    / |
|  チ  グ  グ  |
パ    \  /    グ
|  パ  パ  チ  |
| /    |    \ |
チ     |     パ
  \    チ    /
   パ  |  チ
     \ | /
      グ

212 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 19:56:20 ]
これはひどい

213 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 21:01:16 ]
>>211
天才現る!
と思ったら、ソートできてねぇ!w



214 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 21:21:28 ]
あらら

215 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 23:56:41 ]
>>211
まず配置のルールがわからない
発想はともかくもっと根本的な部分を調整しろよ

216 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 00:08:46 ]
>>211
ふっ

217 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 00:39:29 ]
ポインタって、バグがあるのに正常にうごくことがあるから厄介なのかね。

int *p;
{
int x;
p=&x;
}

p[1]=500;
こんなのでも正常にうごいてる(ようにみえる)かもしれないし。

218 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 00:46:00 ]
>176

>175の方法は普通によくやる。
ていうか>165を見てはじめに思いつくのはこれ。

>178
共用体は、引数に汎用性を持たせたいフレームワーク、メッセージインターフェイス
とかでよく利用する。

後はジャンプテーブルを使うために、関数のプロトタイプ宣言をそろえたいけど、
引数はいろいろあり得るような場合は、引数をvoid*にしたり共用体で渡したりする。

>179
関数のプロトタイプ宣言をそろえるのがミソなので、templateは使えない。


219 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 00:48:53 ]
>217

そうだね。不具合が発生するのが、全然別の場所、タイミングだったりするのが
やっかいだよね。

220 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:06:03 ]
>>219
たしかにやっかいだよね。

221 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 09:22:03 ]
>>218
これだけ勘違いカキコする奴もメヅラシイな
普段何やってんだろ??

222 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 09:25:04 ]
>>218 は別におかしくないぞ

223 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 09:31:21 ]
俺も>>218はフツーのことを言ってるだけに見える。
別におかしくは無い。



224 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:05:26 ]
>>218
おかしくないと思う

225 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:40:09 ]
>>222-224
最後の行は何か勘違いしているように思えてならないが、
まあスレ違いだしどうでもいいや。

226 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:50:42 ]
可変で関数ってのがあったはず、、、と思って調べてみたら見つかった
va_start
自分は使ったことないけど、これじゃダメなの?
ttp://wisdom.sakura.ne.jp/programming/c/c62.html
>printf()関数などは、フォーマット指定子によって引数リストの個数と型をチェックしていますね
と同じように型チェックしてから、、とか


227 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:42:01 ]
ようは、VBでいうVariant型を作りたいのか?

228 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:42:44 ]
かなりダメな気がしてきた、、、

229 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:44:38 ]
C++ならboost::anyが使えるんだけどな

230 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:49:19 ]
>>226
結局、何らかの形で型を示す引数を一緒に渡すわけで
>>165 から何も変わっていない。

231 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:53:27 ]
変わっていないな。

232 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 12:51:39 ]
なんだよこのグダグダ

233 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 12:54:29 ]
え?ディグダグ?



234 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 17:06:34 ]
判ってない奴が頑張りカキコ
判ってる奴は奴では一行レスのチャチャ入れるだけだからグダグダになるのは仕方がない

235 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 17:37:08 ]
それじゃできない。だけど、なにがしたいか分からんので、茶々入れるしかない。

236 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 19:25:04 ]
>>235
> なにがしたいか分からんので、茶々入れるしかない。
もう一度 冷静に自分の言っていることを検証したまえ。

237 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 19:43:03 ]
お、おれは分かってるよ。

キャッチコピーは「戦略的穴掘りゲーム」だろ?

238 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 19:50:19 ]
ほとんど全てのレスに対して間違い探しゲームが成立してしまうのがこのスレッドの凄いところ

239 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 20:02:52 ]
ライアーゲームは情報弱者には辛かろうな

240 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 22:49:36 ]
::

よくバイソンとかシーインクリメントとかで見るんだけど
なんこれ。

241 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 23:27:25 ]
>>237
戦略的穴掘りゲームおもしろそう

242 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 23:29:49 ]
アッー

243 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:05:15 ]
int main(void)
{
int num = 567;

num = num / 10;
num = num % 10;
printf( "%d\n", num );

return 0;
}


これを剰余演算を使わずに書きたいんですが、できますか?



244 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:10:37 ]
dividend = quotient * divisor + remainder
remainder = dividend - quotient * divisor


245 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:13:09 ]
num % 10

num - (num / 10) * 10
にする。

246 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:19:58 ]
>>243
int num = 6:

247 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:20:34 ]
以上です。

248 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:24:55 ]
>>247
itoaを使う方法考えてたのに〜

249 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:26:13 ]
That's all.

250 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 00:30:20 ]
>>248
すまんな…

251 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 07:11:41 ]
>240

シーインクリメントとは斬新な呼び方だね。
けどなぜCスレで聞く?

もしかしてスルーが正解だったか?戦略的穴掘りに落ちちゃった?


252 名前:デフォルトの名無しさん [2009/12/19(土) 08:42:08 ]
fread()とfwrite()の意味を教えてください!

253 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 09:00:32 ]
#include<stdio.h>

int main(void)
{
int data1 , data2, total, average;


printf("データ1? ");
  scanf("%d",&data1);
printf("データ2? ");
scanf("%d",&data2);

total = data1 + data2;
average = total / 2;


printf("合計 :  %d\n",total);
printf("平均  :  %d\n",average);


return 0 ;

}

何が間違っているか教えてくれないでしょうか?



254 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 09:11:20 ]
最初のscanfの前の全角スペース?

255 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 09:12:04 ]
>>253
何を聞きたいのか書いてないから
質問の仕方が間違ってるんじゃないの?

256 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 09:29:38 ]
ディグダグ?

257 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 09:54:57 ]
double average;
average=total/2.0;

もしかしてこれがしたいのでは無かろうか

258 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 10:00:03 ]
>>257
言っておくがそれも間違いだからな
average = (double)total / 2.0;
じゃなきゃおかしなことになる

259 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 10:03:06 ]
お前は何を言っているんだ

260 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 10:11:30 ]
>>258
つられクマー。

261 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 10:59:48 ]
また、scanfを連続させるときは

scanfが取ったバッファをクリアしてからでないとうまく取れない。

stdinから取ったら、stdinバッファをカラにしてから別のを取らないといけない

scanfは対象の変数のアドレスに値を入れるのではなく
stdinから取得バッファに入れてそこからアドレスに入れるのだ

262 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:10:03 ]
>>258
何のための2.0だよ

263 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:26:31 ]
malloc→freeと処理すると使っていたポインタはNULLポインタを指しますか?
それともmallocで確保したときのアドレスを保持したままですか?
まったく別でしょうか?



264 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:30:03 ]
mallocで確保したときのアドレスを保持したままです
NULLを指すようにしたければ自分でNULLを代入してください

265 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:31:34 ]
ありがとうございます

266 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:32:12 ]
いえいえ

267 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:37:44 ]
なんかいでもfreeしてやる

268 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:52:06 ]
ポインタをfreeとかで開放するのって
メモリが有限だから?
仮にメモリ領域が無限だったらfreeしなくていいの?

269 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:54:24 ]
駄目に決まってんだろカス

270 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 11:55:57 ]
メモリが有限だからです
無限だったらしなくていいかもね

271 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:06:10 ]
無限のメモリ領域なんて実現不可能なんだからその仮定は無意味

272 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:09:36 ]
アドレスが足りなくなるからアウトだろ雑魚が

273 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:10:25 ]
仮想メモリか。



274 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:50:23 ]
俺が気に入らないもの
シミカァロン(英語は発音大事)抜き

ThisIsAPointerForMalloc = Mr_malloc(FUCKINGTOSHINGBUFFERSIZETHATFUCKINGOSINGXING)

if(ThisIsAPointerForMalloc == NULL)
  Fucking


なんかムカつく

普通は

if( (ThisIsAPointerForMalloc = Mr_malloc(FUCKINGTOSHINGBUFFERSIZETHATFUCKINGOSINGXING)) == NULL)


だろ


275 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:52:19 ]
一生懸命長い綴り打ち込んでるのかと思うと目頭が熱くなる






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

前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