C言語なら俺に聞け(入門編)Part 73
■ このスレッドは過去ログ倉庫に格納されています
★前スレ
C言語なら俺に聞け(入門編)Part 72
http://hibari.2ch.net/test/read.cgi/tech/1287876803/
★過去スレ
http://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++の宿題片付けます 142代目
http://hibari.2ch.net/test/read.cgi/tech/1288531658/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0153デフォルトの名無しさん
2010/11/12(金) 21:56:15嫌がらせのつもりじゃないがなんで質問する前にやって見ないのかが理解できない。
0154デフォルトの名無しさん
2010/11/12(金) 21:59:19ttp://codepad.org/lQMNnmtQ
これでいいですか?最後が・・・
0155デフォルトの名無しさん
2010/11/12(金) 22:23:30もう少しシンプルになるんじゃないかね?
ttp://codepad.org/BOJN1X92
0156デフォルトの名無しさん
2010/11/12(金) 22:29:19#include<stdio.h>
int main(void)
{
int space[]={0,1,2,3,2,1};
int i;
for(i=0;i<16;i++)
{
printf("%*s*\n", space[i%6], "");
}
return 0;
}
0157デフォルトの名無しさん
2010/11/12(金) 22:33:43ありがとうございます
まだまだ未熟でした
0158デフォルトの名無しさん
2010/11/12(金) 22:36:020159デフォルトの名無しさん
2010/11/12(金) 22:40:440160デフォルトの名無しさん
2010/11/12(金) 22:45:260161デフォルトの名無しさん
2010/11/12(金) 22:49:30int main(void) {
int i=0;
while(i < 16)
printf("%*s*\n", i%6-((i%6-3)*(i%6>>2&1)<<1), ""), ++i;
return 0;
}
0162デフォルトの名無しさん
2010/11/12(金) 23:03:05これだからゆとりは困る。
0163デフォルトの名無しさん
2010/11/12(金) 23:13:10おおあじなグラフ
http://codepad.org/1fmYgvQf
0164デフォルトの名無しさん
2010/11/12(金) 23:21:10ファイル3つを三回にわけてここに書き込んだら迷惑ですかね
0165デフォルトの名無しさん
2010/11/12(金) 23:36:040166デフォルトの名無しさん
2010/11/12(金) 23:36:400167デフォルトの名無しさん
2010/11/12(金) 23:42:38じゃあ自分で試してみろよ
http://codepad.org/iJzpcY6n
これのどこが>>78のグラフになってんだよ
0168デフォルトの名無しさん
2010/11/13(土) 00:00:24int *b;
};
という構造体があって、bのメモリ領域をmain関数内で動的に確保するにはどうすればいいですか?
0169デフォルトの名無しさん
2010/11/13(土) 00:02:31struct a x;
x.b = (int *)malloc( );
じゃだめ?
0170デフォルトの名無しさん
2010/11/13(土) 00:06:04もしもbに確保した領域が構造体aのサイズより大きいサイズになっても問題とか起きないんですかね・・・
0171デフォルトの名無しさん
2010/11/13(土) 00:07:06ありましたらヒントをお願いします。
0172デフォルトの名無しさん
2010/11/13(土) 00:08:07bはポインタ
つまり、構造体の外のどこかに確保したメモリ領域を「指している」だけ。
struct aのサイズは関係ないよ
0173デフォルトの名無しさん
2010/11/13(土) 00:11:250174デフォルトの名無しさん
2010/11/13(土) 00:13:49http://codepad.org/cUSf1lJB
確保したからってbのサイズが変わるわけではないよ。
0175デフォルトの名無しさん
2010/11/13(土) 00:32:27ありがとうございます
そうなんですね・・・
もう少し勉強します
0176デフォルトの名無しさん
2010/11/13(土) 00:45:50ありがとうございます
新規作成からちゃんとテキストファイル作ったら大丈夫でした
0177デフォルトの名無しさん
2010/11/13(土) 12:22:230178デフォルトの名無しさん
2010/11/13(土) 12:52:210179デフォルトの名無しさん
2010/11/13(土) 13:50:32main()
{
FILE *fp;
char *p;
char s[500];
char n[100];
puts("ファイル名を入力してください");
gets(n);
fp=fopen(n,"r");
while(p!=NULL)
{
p=fgets(s,500,fp);
printf("%s",s);
}
fclose(fp);
}
画面からgetsでファイル名を入力しそれを表示させるプログラムなんですが
だぶって表示されてしまいます。(同じ内容が2回表示される)
このプログラムでのfgetの動きについて教えてください
0180デフォルトの名無しさん
2010/11/13(土) 13:54:10printf の前に
if(p==NULL) break;
をいれればおk
0181デフォルトの名無しさん
2010/11/13(土) 14:07:33while(p!=NULL)
{
p=fgets(s,500,fp);
printf("%s",s); なんでprintfが2回実行されるかわかりませ
}
0182デフォルトの名無しさん
2010/11/13(土) 14:10:522回じゃなくて、読み込むファイルの行数+1だろ。
0183デフォルトの名無しさん
2010/11/13(土) 14:14:29仕組みとか関係ねーよ
pの判定がprintfの後だからだ
つか初回ループに入るかどうかすら未定義だな
0184デフォルトの名無しさん
2010/11/13(土) 14:16:53ある程度できるようになったけど、完全にできるようになったわけではない…
他のC派生行こうとと思うのですが(C#を勉強しようと思ってます)、C言語を完全に理解できているわけではありません
コンパイラの仕組みとかソースファイル分割とかがよくわかっていません
このまま他の言語行っても大丈夫でしょうか?つまずきそうですごく怖いんです・・・
0185デフォルトの名無しさん
2010/11/13(土) 14:17:27while(fgets(s,500,fp)!=NULL){ printf("%s", s); }
0186デフォルトの名無しさん
2010/11/13(土) 14:18:41(はじめからNULLだった場合,while文以下は実行されない)
で,pはfgetsの結果を記録してNULLかどうかを判定させるわけだから
fgetsをやってからp!=NULLか判定をしなければならないのに>>179では順序が逆になっている
fgetsは成功したら第1引数のポインタを,失敗したらNULLを返すんだから
while( fgets(s, 500, fp) != NULL )
でも問題ない
0187デフォルトの名無しさん
2010/11/13(土) 14:18:520188デフォルトの名無しさん
2010/11/13(土) 14:20:21別に他の言語でも勉強しっかりやればC経由じゃなくても良いと思うが。
0189デフォルトの名無しさん
2010/11/13(土) 14:21:01C、C#だけじゃなくて、C++、Java、Ruby、Python、Ocaml、Scalaあたりも平行してやったほうがいいよ。
0190デフォルトの名無しさん
2010/11/13(土) 14:23:21どの言語も使えない駄目プログラマの完成ですね。
0191デフォルトの名無しさん
2010/11/13(土) 14:30:57まあ>>189は半分ジョークだけど、言語ひとつしか使えないって
プログラマはレベル低い場合が多いよね。
ひとつしか知らないからそれを深く知ってるかっていうとそんなことはない。
0192デフォルトの名無しさん
2010/11/13(土) 14:33:370193デフォルトの名無しさん
2010/11/13(土) 15:05:01学習意欲もないんだろうね
0194デフォルトの名無しさん
2010/11/13(土) 15:15:55他人の目的と手段なんて分からんだろうに
0195デフォルトの名無しさん
2010/11/13(土) 15:19:44用途に足るのを1つ覚えれば充分なんだよな。
ただし、それとは別にアセンブラは必須だけどな。
0196デフォルトの名無しさん
2010/11/13(土) 15:27:36そもそも何ができるの
0197デフォルトの名無しさん
2010/11/13(土) 15:29:010198デフォルトの名無しさん
2010/11/13(土) 15:29:40理想の彼女
0199デフォルトの名無しさん
2010/11/13(土) 15:33:41おまえらが生きてるこの世界がそれだよ。
0200184
2010/11/13(土) 15:36:02アセンブラが必須な理由を教えてもらえないでしょうか?
>>196
C言語だけじゃほとんど何もできないと思う
Win32APIとかDirectX使えないと駄目だってばっちゃがいってた
0201デフォルトの名無しさん
2010/11/13(土) 15:38:140202デフォルトの名無しさん
2010/11/13(土) 15:44:18文の終わりって意味?
0203デフォルトの名無しさん
2010/11/13(土) 16:47:52一行は一行だろ
改行までだよ
0204デフォルトの名無しさん
2010/11/13(土) 16:49:090205デフォルトの名無しさん
2010/11/13(土) 17:07:20ものすごく大雑把に言うとC言語はアセンブラのラッパ的立ち位置だから。
アセンブラ知っとくと初心者がまずつまづくポインタとかでつまづかない。
アセンブラ必須って言うかCPUやらなんやらの基礎知識をしっかり知っとくといい。
逆に言うとそれらの仕組み知らないやつの書いたCプログラムは信用できない。
今の時代新規だとJavaとかのLL言語のが案件多いから低レベル制御とか書かないやつらは
無理してC言語しなくてもいいんじゃないかと思う。
0206デフォルトの名無しさん
2010/11/13(土) 18:21:54それはそれで正論だけど、VBしか知らないとかCしかできないみたいな
連中は実際レベル低いしね。
初心者の「複数の言語をやって中途半端になりませんか」って質問には
そんなもん気にすんなとかしかいいようがない。
0207デフォルトの名無しさん
2010/11/13(土) 18:47:53これだからゆとりは
0208デフォルトの名無しさん
2010/11/13(土) 18:49:41CとC++どちらが良いだろうか
0209デフォルトの名無しさん
2010/11/13(土) 18:51:390210デフォルトの名無しさん
2010/11/13(土) 19:03:500211デフォルトの名無しさん
2010/11/13(土) 19:06:330212デフォルトの名無しさん
2010/11/13(土) 19:15:210213デフォルトの名無しさん
2010/11/13(土) 19:15:54Cだね
CとC++は似ているようで言語との付き合い方が違ってくる
せっかくJavaをやってきたのなら、わざわざJavaがアンチテーゼを示したような類似言語で
Java訛りなコード書いてもC++使いとしては三流の域を出られない
いっそまるで思想の違うCのほうが憶え甲斐があると思う
0214デフォルトの名無しさん
2010/11/13(土) 19:40:58それは言い過ぎ
0215デフォルトの名無しさん
2010/11/13(土) 20:07:34それは言い過ぎ
0216デフォルトの名無しさん
2010/11/13(土) 20:09:22ゆとりうるせー
0217デフォルトの名無しさん
2010/11/13(土) 20:09:57それは言い過ぎ
0218デフォルトの名無しさん
2010/11/13(土) 20:21:37あれは文法がCとかBASICみたいな普通の文法とはずいぶん違うので、新鮮でおもしろいかもね。
あとparlだっけ?perlだっけ?あれも新鮮でおもしろいかも。cしか知らない当方には暗号みたいに見えるw
0219デフォルトの名無しさん
2010/11/13(土) 20:38:240220デフォルトの名無しさん
2010/11/13(土) 20:50:150221デフォルトの名無しさん
2010/11/13(土) 21:51:26これだからゆとりは
0222デフォルトの名無しさん
2010/11/13(土) 21:54:35それは言いすぎ
0223デフォルトの名無しさん
2010/11/13(土) 21:56:520224デフォルトの名無しさん
2010/11/13(土) 22:05:16が設置してある(配列・カウンタとも5個くらいあった)
色々な関数でインクリメントやらデクリメントやらしてるプログラムに出会ったんだ
5万行くらいあったんだが、書いた奴出て来いよwww
メンテする身になってくれ…マジで綱渡りしてるみたいに仕様変更したぞ
0225デフォルトの名無しさん
2010/11/13(土) 22:11:58日本語扱えるようにするには文字列を
char型をwchar_t型に変更すればおkですか?
0226デフォルトの名無しさん
2010/11/13(土) 22:13:010227デフォルトの名無しさん
2010/11/13(土) 22:16:530228デフォルトの名無しさん
2010/11/13(土) 22:25:00これだからゆとりは
0229デフォルトの名無しさん
2010/11/13(土) 22:25:17漢字とかも問題ないってことですか?
0230デフォルトの名無しさん
2010/11/13(土) 22:26:56扱ってるエンコーディングが一文字8ビットのやつなら。
0231デフォルトの名無しさん
2010/11/13(土) 22:30:39これは正しい
0232デフォルトの名無しさん
2010/11/13(土) 22:32:10これは正しい
0233デフォルトの名無しさん
2010/11/13(土) 22:33:14マ板行け
0234デフォルトの名無しさん
2010/11/13(土) 22:34:400235デフォルトの名無しさん
2010/11/13(土) 22:34:45もし使う可能性があるなら……
ttp://wisdom.sakura.ne.jp/programming/c/c63.html
こんな風にして扱っていけばいいんでしょうか?
0236デフォルトの名無しさん
2010/11/13(土) 22:42:270237デフォルトの名無しさん
2010/11/13(土) 22:43:59でも学習段階なら、かなや漢字の扱いはひとまず後回しにしておいて、
ASCII のみで一通りやってからにしたほうがいいよ。
0238デフォルトの名無しさん
2010/11/13(土) 22:49:44文字列はwchar_tであつかって、文字列の操作もwcscpy()とかワイド文字系を
つかえばとりあえず動くよ。
まじめにやろうとすると、サロゲートペアとか結合文字とかあるんで、
けっこうめんどう。
0239デフォルトの名無しさん
2010/11/13(土) 22:54:50もう少し勉強してからやりたいと思います
ありがとうございました
0240デフォルトの名無しさん
2010/11/13(土) 23:04:330241デフォルトの名無しさん
2010/11/13(土) 23:10:56漢字は1文字2バイトだからchar2個で1文字分のデータを確保すればいいだけやん
0242デフォルトの名無しさん
2010/11/13(土) 23:16:260243デフォルトの名無しさん
2010/11/13(土) 23:24:35これは釣りだけどcharが1byte固定って言うのは幻想で厳密にはlimits.hのCHAR_BIT見なきゃいけないし
0244デフォルトの名無しさん
2010/11/13(土) 23:27:17charは1バイトってきまってる。
0245デフォルトの名無しさん
2010/11/13(土) 23:28:130246デフォルトの名無しさん
2010/11/13(土) 23:28:590247デフォルトの名無しさん
2010/11/13(土) 23:29:11『これは釣りだけど』
0248デフォルトの名無しさん
2010/11/13(土) 23:30:18「charは1byte固定っていうは幻想」
↓
「いや1バイトだろ」
0249デフォルトの名無しさん
2010/11/13(土) 23:31:14え?
0250デフォルトの名無しさん
2010/11/13(土) 23:46:391 byte の幅は 8 bits とは限らない。
0251デフォルトの名無しさん
2010/11/14(日) 00:13:390252デフォルトの名無しさん
2010/11/14(日) 00:32:03■ このスレッドは過去ログ倉庫に格納されています