- 1 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 15:48:19 ]
- C言語の*入門者*向け解説スレッドです。
★前スレ C言語なら俺に聞け(入門編)Part 59 pc12.2ch.net/test/read.cgi/tech/1263014439/ ★過去スレ 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++対応明記スレへどうぞ ★分からない事をなるべく詳しく書いて下さい。 ★ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ★開発環境や動作環境も晒すと答えが早いかもしれません。 ★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
- 129 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:26:39 ]
- NULLってのとナル文字(ヌル文字?)の区別を学ぼう。
char c = '\0'がそれ。 あと、char mojiC[100] = {'\0'};こういうことをしておけば、 「mojiC[100]の中身を初期化」の部分は不要。 ただ、普通は配列を初期化なんぞしないで、 文字列をコピーした最後に'\0'をくっつけるのフツー。
- 130 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:27:34 ]
-
こんなふうだ。 mojiwa(char *p, char *a ,char *b,){ int m=strlen(a); int n=strlen(b); char *p = (char *)malloc(m+n); memcpy(&p[0],a,m); memcpy(&p[m],b,n); p[m+n]=NULL;; }
- 131 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:27:49 ]
- かぶった。>>129は>>125宛て。
- 132 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:32:38 ]
- >>127
>memcpyつかった方が転送効率良いよ。 それ言うなら strcat 使え、って話に… まあ習作なんだろうから、自分でコピーしてみるのはアリかも知れん。
- 133 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:34:06 ]
- >>132
ですよねー
- 134 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:36:45 ]
- >130
やべぇ、何やってんのかさっぱりわからん
- 135 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:37:00 ]
- 勉強のためなんだろうから、あえて使ってないんだろう。
最初にj=0にしておけば、mojiCへの代入はすべて mojiC[j++]= とやれば途中のj++の部分は全部消せる。 最後にmojiC[j++]='\0';とかいれとけ
- 136 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:43:51 ]
- strlen memcpyという関数を自作すれば見通し良い。
- 137 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:14:08 ]
- 同一名称、あるいは酷似した名称を使うのは
車輪の再発明で悦に入る行為かもな 内容は同じなライブリ関数を自作して使用するの は悪いこととは限らないといった程度
- 138 名前:やってみた mailto:sage [2010/02/03(水) 18:16:48 ]
- void *
memcopy(void *d1, const void *s1, size_t sz) { char *d2 = d1; const char *s2 = s1; while (sz-- > 0) *d2++ = *s2++; return d1; }
- 139 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:02:08 ]
- int m=strlen(a); // 超違和感
- 140 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 19:03:45 ]
- 何故sprintf()を使わないのか?無意味な苦労はバグを生むだけ。
- 141 名前:デフォルトの名無しさん [2010/02/03(水) 19:18:46 ]
- 無意味な苦労でも、車輪の再発明でも、実装を知っていることは良いことだ。
日本のイット業界なんかアルゴリズム詳しく知らなくても仕事できちゃうもん。 あはは。
- 142 名前:推奨 mailto:sage [2010/02/03(水) 19:51:46 ]
- 実装など実務経験の間に自然に知って欲しかった
というのはあるかも知れないが いつの時代でもコンスタントにそれが 出来るとは限らない とりわけ露出狂時代にはね。
- 143 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:53:58 ]
- >>141
だって、技術者じゃなくドカタだもん
- 144 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:07:14 ]
- アルゴリズムってなに?
- 145 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 23:08:48 ]
- >>144
Wikipedia読んで、それでもわからなかったら、丸一日考えて、 それでもわからなかったら、何がわからないのか質問しなさい。
- 146 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 09:22:26 ]
- >>144
いーっぽすすんでまえならえ〜♪
- 147 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 10:37:05 ]
- コンパイル環境のエンディアンを調べるれるようなマクロとかってある?
それか明示的にエンディアン指定できるpragmaとかあればいいんだけど
- 148 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 11:23:22 ]
- こういうのか
ttp://www5d.biglobe.ne.jp/~noocyte/Programming/CMacros.html#DetermineEndian
- 149 名前:デフォルトの名無しさん [2010/02/04(木) 15:43:38 ]
- #include <stdio.h>
/* 整数の2進表現を下位から表示 */ int main(void) { int n, b; n = 0; do { b = n % 2; printf("%d\n", b); n /= 2; } while (n > 0); return 0; } このプログラムをn=0にしたときに同じ結果を得るにはどうしたらいいのですか?
- 150 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:46:26 ]
- if(n==0)で0の時だけ処理分ける
- 151 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:48:50 ]
- >>149
何と同じにするのか分からん
- 152 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 15:58:59 ]
- >>149
2進数はビット演算子を使うのが常套手段じゃないのかな? int n; n = 15; do { printf("%d\n", n & 1); } while ((n >>= 1) > 0);
- 153 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:03:20 ]
- >>152 n進数への応用がきかない。
- 154 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:14:42 ]
- #include <stdio.h>
int main() { int n = 7, i; for (i = 0; i < sizeof n * 8; i++) { printf("%d\n", !!(n & (1 << i))); } return 0; }
- 155 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:35:11 ]
- そもそも>>151の言うように、どういう出力を期待してるのか
質問者は書いてみてくれないか
|

|