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


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

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



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

231 名前:デフォルトの名無しさん [2010/04/18(日) 00:32:47 ]
>>230
べっべつにあんたの為なんかじゃないんだからねっ

232 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 00:42:23 ]
>>228
Cに限ったことじゃないが、Cは歴史が長いだけに最適化もすさまじい。

233 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 00:46:44 ]
>>232
一番すごいの?
それならちょっと嬉しい

234 名前:デフォルトの名無しさん [2010/04/18(日) 00:58:01 ]
最適化ならVerilogの方が遥かに凄い。全くレベルが違う。

235 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 01:30:00 ]
設計が古いんだから・・・

236 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 01:39:28 ]
>>233
一番ってこたあないかもしれないけど、
現実をみて考えると相当なものがあるだろう。

C言語では微妙に不便を強いられる分、
ちゃんと見返りもあるんだねぇ

237 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 07:56:41 ]
しかしqsortなどがinlineじゃないので
ソートなどはC++に敵わない罠

238 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 07:59:27 ]
自前でソートすればCの方が速い可能性アリ。

239 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 11:04:46 ]
C++すげぇじゃねぇか。
あの変態文法で涙出そうになったけど。

ただC言語でもコンパイラ拡張でinlineを受け付けるものも
あるらしいから、それなら何とか・・・。




240 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:20:01 ]
qsortと比較関数の両方がinlineならいいだろうけどねえ

241 名前:デフォルトの名無しさん [2010/04/18(日) 13:26:10 ]
C1Xでも標準ライブラリ改良する気ないみたいだしな。
qsortがインライン化されていないこともあるが、基本的なデータ構造を扱う関数群がないとか欠陥が多すぎ。
俺queueとか、my_listとかどんだけ無駄に再生産されてるんだよ。

Cのコミュニティーは本当に無能しかいない。

242 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:41:47 ]
静的型の言語は、テンプレートとかジェネリックみたいのが
ないとコレクション関係はつかえねーな。

243 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 13:56:20 ]
マクロでごり押しできなくはないけどな
まあ、普通は void* でなんとかするんだろうけど

244 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 15:40:04 ]
>>243
void * で書くのは間接呼び出しが発生して効率が落ちる。

245 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 18:08:46 ]
なら可変長構造体で

246 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 18:23:10 ]
qsortをinlineにする
笑ってしまった

247 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 19:50:18 ]
Cの仕様の範囲内でqsortの比較の最適化を期待するにはinlineしかないだろ

248 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 22:36:22 ]
>>247
> Cの仕様の範囲内でqsortの比較の最適化を期待するにはinlineしかないだろ
inlineはCの仕様じゃないって知らないのかお前はwwwwww


249 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 22:50:15 ]
C言語5年やっててinlineって言葉初めて見たんですが、
これはなんですか?釣りでもなく本当にわかりません・・・。



250 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:05:09 ]
>>249
「C99 inline」でググるんだ。

251 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:08:24 ]
>>249
inlineってC++からの輸入じゃね?

252 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:11:41 ]
>>249
インライン関数。

インライン関数とは、凄く簡単に説明すると

void func(void){
printf("test\n");
}

int main(int argc,char** argv){
func();
return 0;
}

↑のようなフザケタコードをコンパイラが
スマートに書き換える機能で、↑の糞コードのような場合

int main(int argc,char** argv){
printf("test\n");
return 0;
}

みたいな感じに書き直してくれる。

253 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:12:24 ]
てかinlineなんてregisterと同じでわざわざ書かないだろ。

254 名前:252 mailto:sage [2010/04/18(日) 23:16:26 ]
>>249
よくよく考えると>>252の例は酷すぎた。
忘れてくれ。


255 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:21:55 ]
>>253
gccは特にinlineを無視する確率高いよね

256 名前:デフォルトの名無しさん [2010/04/18(日) 23:26:24 ]
人間よりもコンパイラの方が大概うまくやってくれる

257 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:28:44 ]
>>256
しかしそのコンパイラを作っているのは人間である。

258 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:30:35 ]
コンパイラのかなりの部分は自動生成されるコードだけどな。

259 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:30:47 ]
>>257
ゲームの人工知能と同じ



260 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 23:48:54 ]
このまえVC++で、逆アセンブルしてコードみてみたら、
こんな関数までインライン展開すんのかってびっくりした。

261 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 01:36:21 ]
淫乱関数か。

262 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 01:37:10 ]
>>250-254
ありがとうございます!
もうちょっと自分で調べて勉強してきます。

263 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 02:15:31 ]
>>257
同じ人間と思うなよ
コンパイラ作ってるやつは底辺プログラマーよりずっと優秀なんだから

264 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 02:43:42 ]
>>263
あいつらは宇宙人だから。

おっと、宇宙人と言ってもルーピーは第9地区行きだからな。

265 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 19:17:54 ]
>>248

266 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 19:19:54 ]
>>253
inlineは同じ翻訳単位内に書かれないといけないので
inline書かずに同じ事しようと思うと
staticにしないといけなくなるぜ

267 名前:デフォルトの名無しさん [2010/04/19(月) 22:23:52 ]
for文内で作ったオブジェクトを全て選択するにはどうしたら良いですか

268 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:51:57 ]
ポインタstartが指してるところから、ポインタendが指してるとこの「間」の文字列を
dataに格納するにはどうしたらいいですか

目的としてはhtmlのタグ取って特定のタグで囲まれてる文字列を抜き出したいんです

269 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 22:56:08 ]
>>268
sprintf(data, "%.*s", end-start, start);



270 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 23:37:48 ]
>>269
それっぽいのができました、どうも

fprintfでやったらポインタじゃダメだって怒られたのに、
sprintfだとできるのね

271 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 23:42:42 ]
>>268
俺だったら正規表現が使える言語に逃げちゃいそうw

272 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 23:46:05 ]
正規表現は外部ライブラリで補完できるんじゃないの?

273 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:41:09 ]
>>270
> fprintfでやったらポインタじゃダメだって怒られたのに、
ここら辺が特に理解できない

274 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 00:48:12 ]
fprintf(filep, end-start, start);
な感じでやってみたら、
3番目のargumentはポインタじゃincompatibleだぜ
ってエラーが出た

275 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 01:47:17 ]
何でそういう変な訳にしたのかわからんが、それだと
2番目の引数ありえんワロス
ってエラーが出ないか?


276 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 02:42:10 ]
#include <stdio.h>
#include <string.h>

int main( void )
{
char source[256];
char value[256];
int i,j, k = 0;
strcpy( source, "<name>2ch C言語スレ</name>" );
/* ヌル文字まで走査を続ける */
for( i = 0; i < 256 || source[i] != '\0'; i++ ) {
/* 開始タグを検出 => 次の文字が「/」ではない */
if( source[i] == '<' && source[i+1] != '/' ) {
/* 「>」が検出されるまで1文字ずつ調べる */
for( j = ++i; source[j] != '>'; j++ );
i = j;
}
/* 終了タグ検出 => 「<」の次が「/」*/
else if( source[i] == '<' && source[i+1] == '/' ) {
/*それ以上操作する必要がないのでループを抜ける */
break;
} else {
/* 終了タグが検出されるまで、結果保存用配列へ1文字ずつ格納 */
value[k++] = source[i];
}
}
/* ヌル文字挿入(文字列として成立させる為) */
value[k] = '\0';
printf( "対象文字列:%s\n", source );
printf( "抽出文字列:%s\n", value );
       return 0;
}

277 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 02:43:05 ]
20分くらいで書いたが、sprintf()でやる方が頭を悩ませた。

278 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 11:17:59 ]
タグを消すだけならこれでもおk
#include<stdio.h>
#include<string.h>

int main(void)
{
char source[256];
char value[256]="";
char *p, *q;

strcpy(source, "<name>2ch C言語スレ</name>dummy string<br><br>");
strcpy(value, source);

for(p=value;(p=strchr(p, '<'));)
{
q=strchr(p+1, '>');
if(q==NULL) break;

memmove(p, q+1, strlen(q+1)+1);
}

printf( "対象文字列:%s\n", source );
printf( "抽出文字列:%s\n", value );

return 0;
}

279 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 11:32:01 ]
sprintf を使ってみた
#include<stdio.h>
#include<string.h>

int main(void)
{
char source[256];
char value[256]="";
char *start, *end, *dest=value;

strcpy(source, "hello<name>2ch C言語スレ</name>dummy string<br><br>");

for(start=source;(end=strchr(start, '<'));)
{
dest+=sprintf(dest, "%.*s", end-start, start);
start=strchr(end+1, '>');
if(start==NULL) break;
start+=1;
}
if(start) sprintf(dest, "%s", start);

printf( "対象文字列:%s\n", source );
printf( "抽出文字列:%s\n", value );
return 0;
}



280 名前:デフォルトの名無しさん [2010/04/20(火) 18:45:20 ]
ヘッダに計算書くっていうプログラムなんだがわかる人いる?
ポインタを応用してヘッダファイルとソースファイル2つ使うらしい

簡単な足し算みたいなんだけどわからん

281 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 19:07:02 ]
>>280
わかるよ

282 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 19:43:26 ]
ヘッダファイルに計算する関数を書いておくとか?

283 名前:デフォルトの名無しさん mailto:sage [2010/04/20(火) 20:24:07 ]
>>280
日本語でおk

284 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 00:31:15 ]
ux.getuploader.com/DeadSpace/download/19/DS%E4%B8%AD%E6%96%87%E5%8C%96Launcher32bit.rar
これの表示するフォントを変えたいと思うのですが僕にはレベルが高すぎでした ゲームの中文化ランチャーで少々いじると日本語化できるようになります。どこでフォントを指定しているのでしょうか。解析お願いします。

285 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 13:45:26 ]
板違い

286 名前:デフォルトの名無しさん [2010/04/21(水) 18:57:30 ]
Cの入門書を読んで
標準関数とWinsckを使いプログラミングできるようになしました。

この次の段階としてはどのような学習をすればいいでしょうか?
ゲームなどは作るつもりありません。
私がやりたいことは画像処理(OCR系の画像解析)や
ネットワーク通信(自分パソコンと友達のパソコンで通信するよなの)を
作りたいと思ってます。
ネットワーク通信はWinsockをもっと勉強すればいいかな?と思いますが、
画像処理などはどうなんでしょう?

287 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:03:55 ]
>>286
パソコン通信()

288 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:11:25 ]
>>286
とりあえずぐぐってみた?
ある程度それで概要をつかむほうがいいと思う

289 名前:デフォルトの名無しさん [2010/04/21(水) 19:11:43 ]
>>287
パソコン通信ですか・・・
それはWinsockとは違うのですか?



290 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:14:04 ]
>>286
>ネットワーク通信はWinsockをもっと勉強すればいいかな?
Winsockの基本さえわかれば、
(自分パソコンと友達のパソコンで通信)程度なら作れるはずだよ。
作ればいいだけ。

>画像処理などはどうなんでしょう?
特に何も必要でないよ。すぐに作ればいいんじゃない。
OCRなら大した知識などなくてもすぐに作れるよ。

少しぐらいは自分の頭で考えようよ。

291 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:16:00 ]
>>290
> OCRなら大した知識などなくてもすぐに作れるよ。
OCRがすぐ作れるって?
お前すごすぎだろ

> 少しぐらいは自分の頭で考えようよ。
それはまあごもっとも。


292 名前:デフォルトの名無しさん [2010/04/21(水) 19:21:00 ]
>>290
ありがとうございます。

OCRって簡単なんですか・・・
頑張って作ってみます。

293 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:28:46 ]
>>291
OCRって言ってもピンきりだろ。そりゃ製品レベルは無理に決まってる。

けど、例えば数字に限定したものとか、
ベクターでなくビットマップベースにするとか、
そういう限定があればすぐに作れるだろ。

最初はそれでいいんだし、そこから改良を加えていけば幾らでも認識率は高くできる。

294 名前:デフォルトの名無しさん [2010/04/21(水) 19:33:06 ]
>>293
jpgファイルとかで最初は英数字だけの解析をしたいのです・・・
なにを勉強すればいいですか?
ホントに入門書上がりで最近やっとWinsockでFTPやPOP、HTTP通信が
できるようになってきたひよっこです・・・

295 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 19:46:54 ]
統計とかパターン認識とか
高級なことをしたいならウェーブレット変換とかで特徴抽出できる
簡単にやりたいならOpenCVでできる、まぁ原理が知りたければSIFTとかSURFとかの論文読めばいいよ
SIFTとか特許があるから気を付けてね

ネットワーク関係は専門じゃないので詳しくは知らない
トランスポート層しか扱ったこと無いので、詳しくは他の人頼む

296 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 20:29:38 ]
次は画像フォーマットを知ることじゃないの?
ビットマップは単純だからビットマップからはじめると良い。
ビットマップ画像を読みこんで白黒化して出力するツールをつくれ

297 名前:デフォルトの名無しさん [2010/04/21(水) 20:44:16 ]
>>295
ありがとうございます。
論文って苦手なんですけど、
やっぱり避けて通れないのですね・・・


>>296
わかりました。
ビットマップ画像から作成してみます。
ライブラリはDXでいいですよね?

298 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:08:04 ]
Cの標準ライブラリだけで十分。コンソールで良い。

299 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:15:20 ]
そもそも行列とかフーリエ変換とかしってるのかな?




300 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:17:00 ]
応用代数学勉強すればいいと思うよ
画像処理アルゴリズムとかそのものずばりの本もあるし。
学校行っていないのならデジタル画像処理とかの資格試験勉強すればいいんで内科医?


301 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:19:16 ]
国家資格は年2回試験があるから挑戦したら?
自信あるなら2級当たりから始めるといいかもシレン
3級は基礎知識だから名

302 名前:デフォルトの名無しさん [2010/04/21(水) 22:59:49 ]
国家資格ですか・・・
基本情報技術者なら午後の選択C言語で取りました。
19年度の春試験。

303 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:07:25 ]
>>300
でもずばり jpg を説明した書籍となるといいのがみつからないなあ。
www.amazon.co.jp/dp/4797330457
これの第一版はもっている、もっているだけやけど。

304 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 23:43:40 ]
>>303
俺はその本でJPEGのエンコード・デコードは実装できたなー。
DCTとか概念的なところは「これならわかる!応用数学教室」(だっけ?)が分かりやすかった。

305 名前:デフォルトの名無しさん [2010/04/22(木) 00:10:14 ]
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#include <wchar.h>
main(){
wchar_t kana[] = L"あいうえおかきくけこ";//---1
setlocale(LC_ALL, "");
printf("kana::%ls\n", kana);
printf("kana[2]::%lc\n", kana[2]);
wchar_t wbuf[81], *p1;//----------------------2
printf("enter wide_byte character::\n");
fgetws(wbuf, sizeof wbuf, stdin);
if((p1 = wcschr(wbuf, '\n')) != NULL)
*p1 = L'\0';
setlocale(LC_ALL, "");
printf("wbuf_no_naiyou::\n");
printf("%ls\n", wbuf);
printf("wbuf[2]::%lc\n", wbuf[2]);

return 0;
}

306 名前:305 [2010/04/22(木) 00:12:58 ]
windows上bccで、日本語文字列の入力を配列に受け取って、その要素にアクセスするのが目的です。

1既存のワイド文字列へのアクセス
ができたので、
2ワイド文字列の入力を受けてその要素へのアクセス
をしようとしたのですが、fgetwsに1byte文字を入力したときはうまくいくのに、
ワイド文字を入力するとfgetwsのエコーバックが見えるところで止まってしまいます。
どうしたらいいでしょう?みかか変換プログラムを書いてみようと思ったのです。


307 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 00:23:25 ]
画像処理の資格はこれでしょ
CG-ARTS協会|2010CG検定
www.cgarts.or.jp/kentei/about/img_engineer/index.html
これを3級から始めれば高校生程度の学力から初めても大丈夫


308 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 00:28:06 ]
>>306
cじゃなくてrubyでやったら?
Cじゃなきゃいけない理由って何?

309 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 00:28:36 ]
宗教上の理由からです



310 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 00:29:17 ]
>>297
ライブラリ使うんなら別にどの形式からでもいいよ
ファイルフォーマットを知る必要もたいしてなかろ

311 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 00:37:41 ]
へえ

312 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 01:06:51 ]
ウヒヒ

313 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 08:37:56 ]
>>306
Microsoftでやったら?
bccじゃなきゃいけない理由って何?

314 名前:デフォルトの名無しさん [2010/04/23(金) 14:25:37 ]
intの2次元配列を使いたいのですが、int hoge [作りたい数]「ここ」←ここはなにを表してるのですか?
charならバイト数だと思うのですが、intはバイト数が決まってたと思うのですが
作りたい数までの各番号に対応したintを取り出したいのです

315 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 15:03:35 ]
>>314
お前がいうところの2次元配列ってなんだ?

世間では要素が n 個の配列(1次元配列)は hoge[n] であり、
要素が n x m 個の配列(2次元配列)を hoge[n][m] で表す。

1次元で足りるなら1次元配列を使え。

316 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 15:03:44 ]
それなら1次元配列でよくね?

317 名前:デフォルトの名無しさん [2010/04/23(金) 15:05:53 ]
つまりint hoge[作りたい数]でいけるってことですか。
そういう使い方を全然知りませんでした。ありがとうございました

318 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 15:06:33 ]
>>314
int hoge[3]; はintが3個並んでる。
int hoge[3][4]; はintが4個並んだものが3個並んでる。
hoge[0][0], hoge[0][1], hoge[0][2], hoge[0][3], hoge[1][0], hoge[1][1], ... の順で。

intのバイト数は規格で固定されてはいない。
実際にコンパイルする時にその環境で何バイトになるのかはそりゃ決まってるけど。
今はPCの環境だとほとんど4バイト。

319 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 15:16:51 ]
charでバイト数を指定して2次元配列、か。
それはたぶん文字列の配列を作ろうとしていたんじゃないかな。



320 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:05:22 ]
C言語でシーザー暗号の解読プログラムを作っています。
手順としては、暗号化された文字列を入力して1つずつ文字列をずらして
26通りの文字列を出力するプログラムです。

#include<stdio.h>
int main(void)
{
char ang[8]; //今回は最大8文字の文字列
int i,j;

for(i=0;i<26;i++){
for(j=0;j<8;j++){
printf("%c",ang[j]+i);
}
}

初めはASCIIコードのZとaが繋がっているものと思いこう組んだら
Zの後には記号が入っていて詰まってしまいました。
A-Zまでの配列を作ってその中で回す、とかASCIIコードでもZの次をAにする
とか色々考えましたが、どうしていいのかが分からないです…。

ご指導お願いします。

321 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:10:44 ]
(ang[j] - 'A' + i) % 26 + 'A'

322 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:28:17 ]
>>320
isalpha()

323 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:37:27 ]
>>320
本題とは関係ないが、
>char ang[8]; //今回は最大8文字の文字列
ang[8]だと最大7文字の文字列な

324 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:41:29 ]
NUL終端文字列とは言ってないので、間違っていない
それにprintf("%c",ang[j]+i);だから、NULは必要としていないと読める

325 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:50:38 ]
ポインタ無隋って聞いたけど
C言語の入門書とかに書いてるような小さいサンプルコードだと
全然難しくなくて何が難しいのかわからなかった。

ポインタってなんかむずかしい部分あるの?

326 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:51:26 ]
NUL終端w

327 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 18:53:34 ]
分かる人には難しくない、分からない人には難しい。
慣れればどうってことはない。

328 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:00:50 ]
>>325
入門編が難しいはずない。

329 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:04:05 ]
初心者は、LinkedListを自前で実装してみ?って言われて初めて、
自分がポインタを理解していないことに気づくもの。



330 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:07:33 ]
>>325
人によるんじゃない?
俺は関数ポインタの理解が遅かったけど、いざ理解したらなにが難しかったのか分からなくなったな

331 名前:デフォルトの名無しさん mailto:sage [2010/04/23(金) 19:11:03 ]
何も有益な情報は残さずに読むものを不快にさせるだけのレスをするやつは死ねばいいのにな






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

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

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