C言語なら俺に聞け! Part 〈57〉
レス数が1000を超えています。これ以上書き込みはできません。
0001土曜の朝も名無しさん
NGNG質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だゴルァ!!
C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
0002デフォルトの名無しさん
NGNGgcc
http://gcc.gnu.org/
【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
【ライセンスや機能などに問題あり】
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0003デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1052542761/
00041日で何も見ずにここまで書けるようになったんだけど凄い?
NGNGmain()
{
int x;
printf("あなたは2チャンネラーですか?yesなら1を、Noなら2を、");
scanf("%d",&x);
switch(x){
case 1:
printf("あなたは2チャンネラーなんですね。");
break;
case 2:
printf("あなたは2ちゃんねらーではないのですね。");
}}
#include <stdio.h>
main()
{
int sn;
printf("弊社製品をお買い上げありがとうございます。CDケースの裏に記載されたシリアルナンバーをご入力ください。");
scanf("%d",&sn);
if(sn==93410507){
printf("登録完了!");
}
if(sn!=93410507){
printf("通報しました。")
}
}
0005デフォルトの名無しさん
NGNGおつかれ。
0006デフォルトの名無しさん
NGNG乙
0007デフォルトの名無しさん
NGNG>yesなら1を、Noなら2を
Yes,Noか
yes,noの組み合わせなら凄い(ってプログラミングに関係無いじゃんw)
return 0;が書かれていないのでだめ。
>}}
重ねるのはどうかな?
>printf("弊社製品をお買い上げありがとうございます。CDケースの裏に記載されたシリアルナンバーをご入力ください。");
途中に'\n'が入っていないので減点。
0008デフォルトの名無しさん
NGNG文末のセミコロン抜けてるじゃん
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGってちがうな。固有記号だもんな、変と言えヴァへんw
0011デフォルトの名無しさん
NGNGprintf("登録完了!\n");
} else {
printf("通報しました。\n");
}
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG001413
NGNG0015デフォルトの名無しさん
NGNG通報してねえじゃんw
0016デフォルトの名無しさん
NGNG躓いちゃったんです。
コンパイルしようとすると
KKUFUNCが組み込まれました。
準備ができていません。
って表示されるんですけど、これは何ですか?
入門書にはこういう場合のことは書いてなかったんでもうどうしたらいいか
0017デフォルトの名無しさん
NGNG無視してもかまわんぞ。あ、でも操作できないのかな? よくわかんないや。
そのメッセージが出るってことはDOSのコードを走らせたっぽいな。LSI-C86か?
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGdouble cosine(double x){
inti,n=10; /*nは項数*/
double ans=-1.0,term=1.0,mx=-x*x;
for(i=1;i<n;i++){
term*=mx2/(2*i*(2*i-1));
ans+=term;
}
return(ans);
}
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGそうですLSI−C86です。
http://erasea.hp.infoseek.co.jp/cgi-bin/img-box/img20030524170034.jpg
こう表示されるんですが、どうすればいいんでしょうか?
0022デフォルトの名無しさん
NGNGans = x, term = x
term *= mx / ((2 * i + 1) * 2 * i);
これでいいのかな
0023デフォルトの名無しさん
NGNGこういったフリーのコンパイラって使いやすいですか?
使ってる人、使ったことのあるひとの感想お待ちしてます。
0024デフォルトの名無しさん
NGNG使いやすい。
0025デフォルトの名無しさん
NGNGつうか C 言語ではない。
0026デフォルトの名無しさん
NGNGhttp://www.lsi-j.web.sh.cwidc.net/freesoft/index_2.html
Q.
“LSI C-86 Ver.3.30c試食版”をWindows 95のMS-DOSプロンプト上で動作させたいのですが、
lcc test.cを起動すると
準備ができていません. 読み取り中 ドライブ A:
中止 (A), 再試行 (R), 失敗 (F)?
と表示されます。
0027デフォルトの名無しさん
NGNG何がお勧めですか?
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGgcc + g++
0030デフォルトの名無しさん
NGNGそのページは見てませんでした。ありがとうございます。
でも、今度はそのページに書かれている設定の仕方がわかりません。。。
0031デフォルトの名無しさん
NGNGhttp://www.borland.co.jp/cppbuilder/freecompiler/
をインストールして
http://www.cmagazine.jp/setbcc.html
で設定
LSI-Cよりもこっちの方がいい。
0032デフォルトの名無しさん
NGNGそれが判らないならLSI-C86を使うのはやめておけ。
今時intが16ビットじゃ話にならん。
おまけに、ちょっと大きなプログラムやちょっと多めのメモリ空間を
扱おうとすると途端に32KBの壁にぶつかる。
0033デフォルトの名無しさん
NGNG細かいことだけど訂正。
LSI-C86の試食版はsmall modelしか作れないので、
コードとデータともに64kまで。
# 無論farポインタ使いまくればその制限を突破できるけど、
# ライブラリなんかを自分で作らねばならない。
0034デフォルトの名無しさん
NGNGEMSひっぱりだすか・・・
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGどうもありがとうございます。それをインストールしました。
でも、入門書はLSI-C86を使って解説してあるみたいなんですが、LSI-C86と同じようにして大丈夫なんでしょうか?
0037デフォルトの名無しさん
NGNGその入門書がMS-DOSに依存しまくった変な解説してなきゃ大丈夫。
つっても入門者がそれを見極めることは不可能なんだよな…
0038デフォルトの名無しさん
NGNG使う関数も、<dos.h>に依存した_dos_XXX()やint86()ばかりじゃ
C言語の勉強というよりもMS-DOSの勉強になるから注意だ。
0039デフォルトの名無しさん
NGNGgraphic.hというのは
入ってないからね。
0040デフォルトの名無しさん
NGNGCで書かれたソースもコンパイルできるんですか?
とりあえず入門書に書いてあったとおりにソースを書いてみたんで、それをコンパイルしたいんですが
LSI C-86とBorland C++ Compiler 5.5じゃコンパイルする時に打つ文も(Lccとか?)違うんですかね?
とりあえず、書いたソースをコンパイルさえできれば先に進むことができるんですが。。。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGコンパイルできました。お付き合いありがとうございました。
0044デフォルトの名無しさん
NGNGvoid func(char* p){
p++;
printf("%c",*p);
}
int main(void){
char* str = "hello world";
printf("%c",*str);
str++;
printf("%c",*str);
func(str);
printf("%c",*str);
return 0;
}
よろしくお願いします、funcに文字列の先頭アドレスを渡して
一文字表示すると、「l」と表示されます、ですがメインに帰ってきて
また表示してみると「e」に戻ってしまいます、向こうでインクリメント
しても、mainでは反映されないのでしょうか?funcでインクリメントが
反映されるようにするにはどうすればいいのでしょうか?
0045デフォルトの名無しさん
NGNGmain() の str と func() の str は別もんだよ。
func() 呼び出し時に、main() の str の値が func() の str へコピーされるだけ。
fcun() でどんな風に変えようと main() の str に関係ない。
反映させるには、main() の str のポインタ渡して、 func() 側でそのポインタの示す先 (= main() の str) を変更する。
もしくは、str をグローバルにする。(非推奨)
ちなみに、VB では呼び出され側で ByVal と ByRef キーワードを使ってコピー渡し (値渡し) とポインタ渡し (アドレス渡し) を決められる。
C には、そんなおしゃれな機能はないから、全部自分でやる。
0046デフォルトの名無しさん
NGNGstrの値を渡されたパラメータ(仮引き数)。
strの値をインクリメントしたいなら、
strの場所(strを指すポインタ)を渡し、その中身をインクリメントする必要がある。
0047デフォルトの名無しさん
NGNG誤: func の str
正: func の p
に訂正。
0048デフォルトの名無しさん
NGNGCってどんな言語なんですか?
メモ帳とか、アプリ作れるんですか?ただ、あの黒い
Dos画面に何か表示させるだけなんですか?
教えてください
0049デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGUnixやWindowsといったOSをつくれる。
そもそも Unix のために生まれた言語。
0052デフォルトの名無しさん
NGNGfgets使うと改行が入ってきちゃって、
fprintで表示しても美しくできません・・・・。
なぜですか???助けて
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGman fgets
0057デフォルトの名無しさん
NGNG遅レスすまそ。さんくす!!!!
0058デフォルトの名無しさん
NGNG>>45も>>46もそう言ってるが。<ポインタのポインタ
恥ずかしいからダブルポインタなんて言うのだけはやめてくれよな。
>>52
自力で改行コードを取り除きましょう。
char *removeLastNewLineChar(char *str)
{
if (str) {
size_t len = strlen(str);
if (len) {
if (str[len - 1] == '\n') {
str[len - 1] = '\0';
}
}
}
return str;
}
0059デフォルトの名無しさん
NGNG関数名長げーよー。
chomp でいーだろー。
0060デフォルトの名無しさん
NGNGchar *p = strchr(str, '\n');
if (p)
*p = '\0';
0061デフォルトの名無しさん
NGNGそれは動作が違うだろう。
"Hello\nWorld\n" を渡したら "Hello" になるぞ。
0062デフォルトの名無しさん
NGNG関数は元のままでいいと思うが...。
0063デフォルトの名無しさん
NGNGダブルポインタって言うよね・・・?
言わないの!?
0064デフォルトの名無しさん
NGNGfor (; *s && *s != '\n'; s++);
*s = '\0';
}
0065デフォルトの名無しさん
NGNG確かにもとの関数と同値ではないが、
fgetsの末尾の\nを取り除くのには60ので十分じゃないかな。
0066デフォルトの名無しさん
NGNGそういう仕様なのを忘れた(知らない)まま他のところで使ってしまって
痛い目をみないための工夫が必要だな。
関数名を remFirstRet にするとか。
0067タブー
NGNG0068タブー
NGNG0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGif (p) *p = '\0';
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGif (p && !p[1]) *p = '\0';
0073デフォルトの名無しさん
NGNGif (*p == '\n') *p = '\0';
0074デフォルトの名無しさん
NGNG元の>>58になる罠。
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGどういう風に書けばいいんですか?
0077デフォルトの名無しさん
NGNG0078615
NGNGmain()
{
int a,b,c;
a = 50,b = 30,c =20;
a =a + b;
printf("\d",a + c);
}
007945
NGNGはぁ ? 誰が「ポインタのポインタ」なんて言ってんだよ。
ダブルポインタ知ってますっていう知ったか厨房君か ?
>>77
>>58 を一行にまとめただけやん。
まあ、fget() なら、改行コードは高々1つだし、改行コードがあるときは文字列の最後なんだし、バッファは自分が確保してるなら NULL かのチェックもサボれるだろうから >>60 で十分だよ。
0080デフォルトの名無しさん
NGNGコンパイルエラー。俺にもわからん
0081デフォルトの名無しさん
NGNGあたりまえすぎることをえらそうに。
0082デフォルトの名無しさん
NGNG>>45を最初読んだとき、なんか違和感があった。
このスレの場合、「VBでは」じゃなく「C++では」という人の方が多いから。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG何が書け\d
0085デフォルトの名無しさん
NGNGint main()
{
int x;
for(x=2;x<11;x++)
{
printf("繰り返し9回\n");
}
}
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGmain()
{
int a,b,c,d;
a=20,b=30;
printf("a=%d\tb=%d\n",a,b);
c=a+b,d=a-b;
printf("和は%d\t差は%d\n",c,d);
}
0088デフォルトの名無しさん
NGNGi は 50 で初期化されないのですか?
というか、 static はそもそもそういうものなのですか?
int main(void)
{
test();
test();
return 0;
}
void test(void)
{
static int i = 50;
i += 10;
printf("i = %d\n", i);
}
0089デフォルトの名無しさん
NGNG当たり前って言うか >>65 で既出。
でも、>>71 とかアフォなこと言う奴いるから書いただけ。
偉そうな発言に見えた ?
なんかコンプレックスでもあるのか ?
>>82
C++ 知ってる奴なら、>>44 みたいな質問は普通しないだろ。
まあ、>>44 は VB 知ってるという保証はないけど、可能性としては一番高そうに思ったから。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGだってstaticつけたり関数外で定義したものは一度しか生成されないもん。
なら当然初期化は一度だけ。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGなんで本やウェブで調べようとしないのかがわからん。
0094デフォルトの名無しさん
NGNGmain()
[
int tensu;
tensu=96;
if(tensu>=80){
printf("%d点です。80点以上なので合格",tensu);
}
]
検索してここがでてきたのですが、このコードの悪いところって何ですか?
コンパイルしたらintが間違っていると表示が出ます。
お願いします。教えてください
0095デフォルトの名無しさん
NGNG[を{に、]を}に書き換える。 とマジレスしてみる。
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGできないとかありますか?
コンパイラはボーランドのフリーのやつです。
0099デフォルトの名無しさん
NGNGAPIとかで描画すれば、何の問題もありません。
0100デフォルトの名無しさん
NGNG基本は一緒なんですか?自分はCを勉強してるんですが、自分は
何を作りたいのか、何を作るためにCを学んでるのかが分からなくなりました。
お騒がせしてすみまそん
0101デフォルトの名無しさん
NGNGただし、C言語を半分理解したあたりでWindowアプリを作り始めるくらいが
ちょうどいいと思う。あんまりDOSに慣れると離れにくくなるし。
こことか参考に>http://www.kumei.ne.jp/c_lang/
010298
NGNG分かりました。やってみます。
本来「推薦図書・必読書スレ」に行くべきなのですが、ここで
質問させてください。
お勧めのAPI入門書は無いでしょうか?
プログラミングWindows第5版〈上〉Win32 APIを扱う開発者のための決定版! Microsoft Programming Series
と長いタイトルの本がありましたが、どうでしょうか?
0103デフォルトの名無しさん
NGNG了解です。とても分かりやすいサイトですね。
もっと勉強します。
ありがとうございました。
0104デフォルトの名無しさん
NGNGint main()
{
int x;
for(x=0;x=1;x++){
printf("繰り返し\n");
}
}
なんでこれは無限に繰り返されるのでしょうか?
x=1のとき 処理=printf("繰り返し\n"); をするんですよね?
変数の更新は処理が1度行われるごとに実行されるんですよね?
なら、
初期x=0のとき→x=1ではないのでなにもしない
なにもしない処理を行った(こんなのありですか?)ので、変数の更新が実行され、
xに1が足され、x=1になるのでprintfが実行される。
printfが実行されたので、変数の更新が実行され、
xに1が足され、x=2になるので、x=1の条件に当てはまらないので、
printfは実行されない。
よって「繰り返し」は1個だけ表示されるはずだと思いました。
というか処理条件が=のときだけ矛盾しまくります。
例えばfor(x=0;x=0;x++)でやってみると、何も起こりません。
0以外にすると、無限に繰り返されます。
>や>=のときは考えたとおりの結果になるんですが・・・
もしかして処理条件に=(のみ)を使ってはいけないんでしょうか?
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGx = 1 の実行結果が常に 1 (=真) だから。
int a;
int b = -1;
a = (b = 1);
で、a も b も 1 になるのは知ってるか ?
0108デフォルトの名無しさん
NGNGsageるなヴォケ
0109デフォルトの名無しさん
NGNG参考に
http://www.geocities.co.jp/SiliconValley-Bay/4543/
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNGボーランドのfreecommandlinetools2.exeをDLしたんですが、
後の作業が分かりません。せっかく本かってきたら、「read.meを
読んでください」だってさ。読んで分からないから本買ったのに。
どなたか教えてください。お願いします
0112デフォルトの名無しさん
NGNGせめて内容確認してから買えや
0113デフォルトの名無しさん
NGNGインストールすれば説明書もインストールされるからそれを読めばよい。
0114111
NGNGすみません。
0115113
NGNGその通りのことをするだけだよ。ファイルをふたつつくる。
0116111
NGNGここから・・・何を?
0117デフォルトの名無しさん
NGNG0118111
NGNG0119デフォルトの名無しさん
NGNG0120111
NGNG0121111
NGNG次だよ、次〜
012298
NGNGありがとうございます。参考にさせていただきます。
0123デフォルトの名無しさん
NGNG「次」は無い
0124111
NGNGわほーい
0125デフォルトの名無しさん
NGNG0126111(本物) ◆pTcVZxjbV2
NGNGマジです。本当にどれを起動させるか分からないんです。
お願いします。
0127デフォルトの名無しさん
NGNG例えば「プリント文の構成プログラム」というのを#include<stadio.h>の上の段に入れてコンパイルしたら
エラーになってしまうのですが。
このように実際プログラムを走らせた時には表示されないがソースを見た時一目で何のプログラムか
分かるように説明を付けたいのですが教えてください
初心者的質問ですみませんどなたかよろしくお願いします
0128デフォルトの名無しさん
NGNGttp://www.sra.co.jp/people/miyata/algorithm/inssort.txt
0129デフォルトの名無しさん
NGNG0130111(本物) ◆pTcVZxjbV2
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGOS依存・環境依存の部分が多くあるので、ここで扱うべきではないのですが・・・
0134デフォルトの名無しさん
NGNGメンバが5個くらい。
};
void func1(const struct unko baba)
{
func2(unko.メンバ);
}
main()
{
struct unko baba;
func1(baba);
}
というようなプログラムを書く人がいるのですが、
func1のconstは意味があるのでしょうか?
メンバが5個くらいあるので、&babaをfunc1に渡した方がいいような気がするのですが(func1の宣言も変える)。
汚いプログラムですみません。
0135デフォルトの名無しさん
NGNGfunc1の定義内では意味がある。
呼び出し側では意味が無い。
ポインタ渡しに返るならconstは重要(Cでもいけたっけ?)。
0136134
NGNGありがとうございます。
もうひとつ聞きたいのですが、
void func1(const struct unko *baba)
main(){
func1(&baba);
}
私はこのようにしたほうがすきなのですが、
これに比べ>>134の利点は何かありますでしょうか?
0137デフォルトの名無しさん
NGNGfunc1内でのbabaメンバへのアクセスが速くなる。
パラメータのコピーに比べてメンバアクセスの速度が支配的なときは有利になるかもしれん。
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNGchar* func(char* p){
p++;
printf("%c(from func)",*p);
return p;
}
int main(void){
char* str = "hello world";
str=func(str);
printf("%c(from main)",*str);
return 0;
}
funcの引数にする
0141デフォルトの名無しさん
NGNGありがとうございます。
勉強になりました。
0142デフォルトの名無しさん
NGNGドッペルポインタキボンヌ
0143デフォルトの名無しさん
NGNGあ、ついでに... これにmallocを組み合わせるとメモリリークの可能性があるので注意(笑)
最初に確保したポインタの他に走査用ポインタを用意したほうが良い。
そうしないとmallocで確保したメモリの位置がわからなくなる(んじゃなかったっけ?)
0144デフォルトの名無しさん
NGNGダブルポインタ**かい?そんなものつかったら、初心者にゃきつくないかい?
0145デフォルトの名無しさん
NGNGドッペルって言いたかっただけですので気にしないで下さい。
0146デフォルトの名無しさん
NGNGそんなことだから面接で「ダブルポインタなら任せてください。
トリプルポインタは苦手ですが。」なんて言う阿呆が出てくるじゃないか。
ポインタにダブルも減ったくれもあるかい。
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGアホを判別できていいじゃないすか。
ところでポインタのポインタのポインタってながいよね。
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGヴァリアブルのポインタに関するポインタ**かい?そんなものつかったら、初心者にゃきつくないかい?
0152デフォルトの名無しさん
NGNGポインタのポインタでいいじゃん
0153デフォルトの名無しさん
NGNGきつくてもいいので教えてください。お願いします。
0154デフォルトの名無しさん
NGNGへのポインタ
0155デフォルトの名無しさん
NGNGvoid func1(char** p){
(*p)++;
printf("(from func1) - %s\n", *p);
}
void func2(char* p){
p++;
printf("(from func2) - %s\n", p);
}
int main(void){
char* str = "hello world";
func2(str);
printf("(from main ) - %s\n",str);
func1(&str);
printf("(from main ) - %s\n",str);
return 0;
}
0156デフォルトの名無しさん
NGNGというか、普通(double *)じゃないの? (char **)とかじゃねえだろ。
0157デフォルトの名無しさん
NGNGありがとうございます。やっと理解できました。
#include<stdio.h>
void func(char** p){
(*p)++;
printf("%c",**p);
}
int main(void){
char* str = "hello world";
printf("%c",*str);
str++;
printf("%c",*str);
func(&str);
printf("%c",*str);
return 0;
}
ってことですよね。
func(char** p)とfunc(&str);まではいけたのですが、
printf("%c",**p)の **p に気が付かなかった。
0158デフォルトの名無しさん
NGNGpointer to int
pointer to double
pointer to pointer
こっちのほうがずっといいなぁ...
0159デフォルトの名無しさん
NGNG皆さんはどんなコンパイラ使ってますか?自分の使っているコンパイラが
どんなものなのかがよく分かりません。これから、徐々にスキルが上がっても
使用できるものなのか。
オススメがあったら紹介してください。
0160デフォルトの名無しさん
NGNG0161159
NGNG0162デフォルトの名無しさん
NGNGダメじゃあないけど、C machineとかいうのはC処理系と似ているようで、
全く違うよくわからんものというコンセンサスがこのスレにはある。
「挙動が変なんだけど」って質問がきたときに、
「それC machine使ってるだろ」って突っ込みに大抵yesだもんで。
まあこのスレ的にはスレ違いと言っといていいんじゃないかな。
とにかくそれはC処理系じゃない。
0163159
NGNGスレちがいみたいでしたね。
0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167 ◆2bmoujqRHk
NGNGCのコンパイルできるんですか?
一般に売ってるCの本で習得した技術だけで使えるモンなのですか?
0169デフォルトの名無しさん
NGNG0170 ◆2bmoujqRHk
NGNGレスありがとうございます。
ちょうどいま、高橋麻奈さんの本読んで勉強してるんですよ。
0171デフォルトの名無しさん
NGNGwhile(!strcmp(str,"enter")){ ... }
0172デフォルトの名無しさん
NGNG!はいらんのではないか?
0173デフォルトの名無しさん
NGNG普通にComputerのCでいいの?
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG,,v‐v-/l_ (⌒)
_「/ ̄ く /
lYノノ/_ノl_ヽ))
<イ( l l )l> / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
<|)'|l、"(フノ|l < えっちなのはいけないと思います!
,(ヨリ<>o<>リ'] \______________
|ト‐!]-ム- i']l
ヽ_ノv__l/ /
. ノ[//‐─‐/_/、
( /E|, (フlヨ \
,-| El___lヨ /
└-\`^^^^^^´/
 ̄ ̄ ̄
0176デフォルトの名無しさん
NGNG'H'ではなく、'C'だっつーとんじゃい
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG_「/ ̄ く /
lYノノ/_ノl_ヽ)) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
<イ( l l )l> < Cはいけてないと思います!
<|)'|l、"(フノ|l \____________
,(ヨリ<>o<>リ、
|ト‐!、。 ) 。).|
ヽ_ノv l |
. ノ[// , ./_/
( /~'、--‐ソ_)
,-i ヽ/'´ヽ
└-\. \ )
ヽ、__,ノ`
0179デフォルトの名無しさん
NGNGわかったから服着れ
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGディスプレイと本体の電源入れれ
0182デフォルトの名無しさん
NGNGだから 0 と比較しないと分かりにくくなるだろうと...。
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGint main(void){
int a;
for(;;){
scanf("%d", &a);
if (a == 0)
return 0;
}
return 0;
}
これを実行した時に数字じゃなくて文字を入力すると暴走するのは何で?
mainの引数がvoidだとかいう突っ込みは無しで…
0187デフォルトの名無しさん
NGNG>scanf("%d", &a);
int の領域に文字列を入力するんだから当然だろ。
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGわかってないなら黙ってろ。
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGstruct chinko;
struct manko;
unsigned char hoge; //hogeは可変長
}tbl;
static tbl piyo;
static tbl mona;
こういった状況でpiyoのhogeを
monaのhogeにコピーしたいのですが
どのようにするのが確実で安全なのでしょうか?
構造体同士は
mona.chinko = piyo.chinko;
で、できるのですが
unsigned char同士だとどうもできません。
ご教授お願い致します。
0193デフォルトの名無しさん
NGNGscanf()はバッファをフラッシュしないから。
「fflush( stdin );」をループの終わりに入れれ。
0194デフォルトの名無しさん
NGNGmona.hoge = piyo.hoge;
でできると思うが。できないと言うのはどう言うことか具体的にどうぞ。
0195デフォルトの名無しさん
NGNG数字が来るまでバッファをフラッシュしつづけるのか?
おめでたいな。
0196デフォルトの名無しさん
NGNGここがキモなのかな。これで可変長というのは信じられないから、
実際は unsigned char hoge[0];というところなんではないか?
0197デフォルトの名無しさん
NGNG>>193だと、数字が来てもだろ?
とりあえず、scanf()の戻り値を判定して、
エラーの時にフラッシュする、ってところか。
0198デフォルトの名無しさん
NGNGさらに、可変長なのに有効データ長もないしな。
0199デフォルトの名無しさん
NGNGNUL-terminatedなら必要ない。
まぁ、あきらかにコンパイルも通らないコードを示されても話にならんってこった。
0200デフォルトの名無しさん
NGNG散々既出だが、それは未定義動作。
0201192
NGNGmona.hoge = piyo.hoge;
これでできるのですか・・・
すみません知りませんでした。。。
ウツだ(ry
有効データ長さは4Kくらいっす。。。
ついでに質問なんですが
typedef struct{
struct chinko;
struct manko;
unsigned char hoge; //hogeは可変長
}tbl;
static tbl piyo;
static tbl mona;
typedefっつーのは上記のような使用方法で
いいんですよね?
型が同じ構造体を2つ記述する必要ないから
便利!みたいな?
0202デフォルトの名無しさん
NGNG> 型が同じ構造体を2つ記述する必要ないから
便利というより、それはしちゃいけない。
Cでは実際の構造が一緒でも、別個に定義されていれば別々の構造体になる。
COBOLなどのように構造が一緒なら同じものと見なされるということはない。
0203デフォルトの名無しさん
NGNG>>186
#include <stdio.h>
int main(void){
int a;
char s[1024]; /* これは適当 */
for(;;){
if (scanf("%d", &a)) {
if (a == 0)
return 0;
} else if (scanf("%s", s)) { // バッファをクリアな意味合い※1
continue;
}
}
return 0;
}
// こういうコーディングが良いとか悪いとかは無しで…
> これを実行した時に数字じゃなくて文字を入力すると暴走するのは何で?
※1
0204デフォルトの名無しさん
NGNG> mona.hoge = piyo.hoge;
> これでできるのですか・・・
可変長ならできないって...。
void tbl_copy_hoge(tbl* dst, const tbl* src);
という関数を自分で作って、それを使ってコピーすれ。
コピーの方法は、俺らには hoge をどういう仕様にしてるのか分からんので、
自分でやってちょ。
0205デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGもしかして、数字が入力されたらscanf("%d", &a)して
文字が入力されたらscanf("%s", s)されるコードを書いたつもり?
0208デフォルトの名無しさん
NGNGあと、typedef の使い方はあってるけど、仕様目的が違う。
typedef 書かないと
static struct tbl piyo;
とかなるのを
static tbl piyo;
と書けるというのと、
tbl が構造体だということを知らなくて良いという効能がある。
もっとも、後者については tbl.chinko とか直接使う場合には
関係ないんだけどね。
あと、構造体というものがまだよく分かってないように見える。
tbl a; と int b; とを見比べて、
tbl とは何か、a とは何かを小一時間考えるべし。
0209デフォルトの名無しさん
NGNG拡張子.cで保存し、コマンドプロンプトで開くと
「内部コマンドまたは外部コマンド、操作可能なプログラムまたは
バッチファイルとして認識されていません」と表示されます。
なぜですか?
0211186
NGNG実際のところこれが一番OK?
0212デフォルトの名無しさん
NGNG>>191参照で。
0213デフォルトの名無しさん
NGNG> >>191
実際にどうかくべきかじゃなくて、
なんで暴走するか?ってのが、テーマだよね・・・?>>186さん
0214186
NGNG問題はscanfで取得しなかった文字入力をどうやってフラッシュするか…?
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGそれなら>>188で。
0217デフォルトの名無しさん
NGNGそそ、
取得しなかった文字を捨てる(Flush)のではなくて、
ちゃんと取得した上で取捨選択するべきだね。
0218デフォルトの名無しさん
NGNG> > これを実行した時に数字じゃなくて文字を入力すると暴走するのは何で?
> scanf()は数字以外の入力を無視するから。
質問と回答がまったくもってかみ合っていません。
>>214
フラッシュの方法は、scanf("%s", s)しか思いつきません。
他になにかあったら教えて。
0219186
NGNGラジャァ。
こんな感じで?
#include <stdio.h>
char buf[256];
int main(void){
int a;
for(;;){
fgets(buf, 256, stdin);/*エラー処理は省略*/
sscanf(buf, "%d", &a);
if (a == 0)
return 0;
}
return 0;
}
0220デフォルトの名無しさん
NGNGint main()
{
int a;
char buf[256];
while (fgets(buf, sizeof buf, stdin) &&
(sscanf(buf, "%d", &a) != 1 || a != 0));
return 0;
}
0221186
NGNGvery thanks!
0222デフォルトの名無しさん
NGNGshort val;
とありまして
wk に valを代入したいのですが
wk = val;では代入できないものなのでしょうか?
厨房ですみませんがよろしくお願いします。
0223デフォルトの名無しさん
NGNGできないのわかってて聞いてるんでしょ。
0224デフォルトの名無しさん
NGNG何ページか先に書いてある。
0225デフォルトの名無しさん
NGNG処理系によっては警告が出たり、charの範囲を越える値は元に戻せなかったり
するが、代入自体はできるだろ。
0226デフォルトの名無しさん
NGNG警告は出るかもしれないけど。
0227222
NGNG別に釣りしてるわけじゃないんす。。。
こういう場合はmemcpy()でやるもんなんでしょうか?
0228186
NGNG#include <stdio.h>
int main(void){
int a;
char buf[256];
while( fgets(buf, sizeof(buf), stdin) != EOF && sscanf(buf, "%d", &a) != EOF ){
if (a == 0)
return 0;
}
return 0;
}
0229デフォルトの名無しさん
NGNG佐川とロジテムどっちがひどい?
田中真紀子と親密な日本ロジテム(日清系 上場企業 みずほの融資先)の
子会社せいも素(みずほの融資先)で
サービス残業させすぎの過労死者を出した上、大量の不当解雇を行った社長の辻
にまた労働基準監督署の立ち入り調査があり,またも多くの勧告が出された。
http://www.samos.co.jp
http://tmp.2ch.net/test/read.cgi/company/1046775680/l50
. / ̄\ +. ∧_∧アハハハ テンゴクヘイッチャウヨー +
イクナヨー( ´∀`) (´∀` )
(つ つ (つ つ■
. + ( ヽノ ( ヽノ
0230デフォルトの名無しさん
NGNGネタか?
0231デフォルトの名無しさん
NGNG>>225-226
0232デフォルトの名無しさん
NGNGfgetsはEOFは返さないぞ。
0233デフォルトの名無しさん
NGNGfgets()はNULLと比較するべき。
sscanf()は変換できた個数を返すので、0と比較するか1と比較するか。
0235デフォルトの名無しさん
NGNGつーか、何をやりたいのか書かないと誰も妥当な解答ができないってば。
memcpy()が駄目なんて誰も言ってないし(やめた方がいいけど)、
>>225は一般論。
0236デフォルトの名無しさん
NGNGcharな値ではなく、文字列がほしいという罠
0237227
NGNGスイマセンデスタ
デスティネーション側のunsigned char hoge;の
先頭2バイトにshort piyo;の内容を
写したいのです。
charとshortじゃ型が違うので
キレイに収まるのかが心配です。
それで皆様にお伺いをたてている次第であります。
0238デフォルトの名無しさん
NGNGwk = (char)val;
だが、このようなコードを書かないようにするのが正道。
0239デフォルトの名無しさん
NGNG先頭2バイト?配列か?
0240デフォルトの名無しさん
NGNGそのような話題はこのスレの範疇ではないのだが…
規格外の話なんでな。先頭2バイトってことなら、
memcpy(&hoge, &piyo, 2);
なんだが、なぜそのようなことをやりたいのか…
CPUや処理系によってはやりたいこととかけ離れたコードである
可能性があることは考えておかんと。
0241240
NGNGそこに2バイトもコピーしたら領域を破壊するぞ。
0242186
NGNG寝ぼけてました。逝ってきます。
0243227
NGNGこのunsigned char hogeは
ほかの関数から貰う
可変長のデータの先頭アドレスでして。。。
それの先頭2バイトにshort piyoをコピーしたいのです。
0244227
NGNGってことは・・・
>>243に書いたように
渡されるデータ長さは
最大4Kを超えるんですが
unsigned charで受けるのは
間違いっすか!?????
0245デフォルトの名無しさん
NGNGそんなイリーガルなプログラムを
捨 て て し ま え。
0246227
NGNG0247デフォルトの名無しさん
NGNGなら、
unsigned char* hoge だろ
それなら、
memcpy(hoge, &piyo, sizeof piyo);
0248227
NGNG(´Д` )ウワァァンアリガ�d!!!!
ヤッテミマスー!
0249デフォルトの名無しさん
NGNGポインタをメンバに作って malloc するんではなく、
可変長構造体にする理由っていうと、
その構造体をそのままファイルに読み書きしたいとか、
そういう特殊な事情がある場合だけっしょ?
本当にその手の事情はあるの?
0250デフォルトの名無しさん
NGNGファイルに読み書きする場合でも、必ずしも必要ない。
つーか、可変長構造体なんて危なっかしい実装するよりも
手堅く書いた方がメンテナンス性は上がる。
ということで、227にはデータ構造を見直すことを強く勧める。
或いは、そう言うデータが必要かどうか、プログラムの設計を見なおしてもいいね。
0251247
NGNGファイルに書きこむとか言う事情はないです。。。
>ポインタをメンバに作って malloc するんではなく
・・・なんかより良い方法があるのでしょうか??
0252動画直リン
NGNG0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGポインタと malloc 知らずに
どうやって可変長構造体を確保してるの?
と思ったが、そういや
static tbl piyo;
とか書いてたな。
これじゃダメ。
ポインタ、malloc、可変長構造体の何たるかをよーく勉強しよう。
0255デフォルトの名無しさん
NGNGIPアドレスのようなドット区切りの数字を配列に入れる方法がわかりません。
カンマや/でなら入れられるんですが・・・
0256デフォルトの名無しさん
NGNGどんなコードか晒しなさい。
0258デフォルトの名無しさん
NGNGカンマやスラッシュ、ドットかの違いだけで何故できない?
ソース上の区切り文字を ',' や '/' から '.' に変えるだけだろう。
strtok()使えば簡単だ。
※参照
<string.h>
char* strtok( char*, const char* );
0259デフォルトの名無しさん
NGNGhttp://members.goo.ne.jp/home/madcap0
0260255
NGNG#include <stdio.h>
int main(int argc,char **argv)
{
int i,j;
int x;
unsigned ad[10];
unsigned ip1=0,mask1=0xffffffff;
unsigned ip2=0,mask2=0xffffffff;
unsigned char *a1=(char*)&ip1;
unsigned char *m1=(char*)&mask1;
unsigned char *a2=(char*)&ip2;
unsigned char *m2=(char*)&mask2;
scanf("%d,%d,%d,%d/%d",&a1[0],&a1[1],&a1[2],&a1[3],&a1[4]); printf("%d.%d.%d.%d/%d\n",a1[0],a1[1],a1[2],a1[3],a1[4]);
for(i=0;i<=3;i++) ip1=(ip1<<8)+a1[i];
printf("%d.%d.%d.%d\t\t",a1[0],a1[1],a1[2],a1[3];
mask1<<=(32-a1[4]);
ip1 &=mask1;
}
構成中なのですが、IPアドレスを引数とし入力してネットワークアドレスを算出したいのですが
ドット区切りでの配列への代入がわかりません。
なのでscanfで読み込んでしまっています。
0261デフォルトの名無しさん
NGNGいまはDOSで何か表示させたりってのができるようになりたいんですが、
Winアプリ作るのとどこの部分が違うんですか?
ソースコードが丸ごと違うのでしょうか?それとも、コンパイラの違い?
WinアプリをCで作るとき、ボタンのサイズとかを全部手動で指定できるのですか?
それはフリーコンパイラでも可能でしょうか?
質問攻めですみません。一応、検索しました
0262258
NGNG確認事項
1.入力は32ビット整数値ですか??それとも10進文字列ですか?
2.出力は3文字表記できる4つの配列でいいんでか?
(例) 192.168.0.1 の場合、配列をstr[4][4]として
str[0]・・・"192"
str[1]・・・"168"
str[2]・・・"0"
str[3]・・・"1"
と格納されればよいのか?
0263255
NGNG1.32ビット整数値です。
2.配列を数字として格納できたらいいです。
0264デフォルトの名無しさん
NGNGsprintf でいいのかな。
0265デフォルトの名無しさん
NGNGこのレスはカキコしたとしても1スレに1回ですのでご許しください。
現在、
Linny開発プロジェクト
ttp://pc.2ch.net/test/read.cgi/linux/1053087824/
にて、第四世代(Winnyの次)となるファイル共有ソフトを開発しています。
Winnyとの最大の違いは一人の開発者が作るのではなく、
オープンソースプロジェクトとして複数の開発者が作るところです。
プロジェクトの発端となる最初の発言者(535氏)が全く使い物にならないため
神の出現を待っております。コーディングができなくても提案などして頂くだけでも結構です。
sourceforge.jpにより開発環境は揃ってますのでだれでも参加可能です。
ちなみに自分はDQNなので全くコードは書けません。
神の出現待っています。お邪魔しました。
ttp://sourceforge.jp/projects/linny/
0266255
NGNG間違えました…10進文字列です…
テンキーで実行時に./a.out 192.168.0.1
として実行してます。
出力は例の通りでできるといいです。
0267デフォルトの名無しさん
NGNGtypedef struct ___tag_ipaddr_t { /* IP アドレス */
unsigned char addr[IPADDR_SIZE];
unsigned char mask;
} ipaddr_t;
typedef enum ___tag_BOOL { /* 論理型 */
FALSE, TRUE
} BOOL;
/* buf は破壊されます */
BOOL str_to_ipaddr(char *buf, ipaddr_t *ip) {
const char mask_sep[] = "/"; /* マスクとアドレスのセパレータ */
const char ip_sep[] = "."; /* IP アドレスの桁のセパレータ */
char *ipstr;
const char *maskstr;
const char *token;
int i;
/* xxx.xxx.xxx.xxx/yyy の分離 */
if(ipstr = strtok(buf, mask_sep), ipstr == NULL)
return false;
if(maskstr = strtok(NULL, ""), maskstr == NULL)
return false;
ip->mask = atoi(maskstr);
/* aaa.bbb.ccc.ddd の分離 */
for(i = 0, token = strtok(ipstr, ip_sep);
i < IPADDR_SIZE;
++i, token = strtok(NULL, ip_sep)) {
if(token == NULL)
return FALSE;
ip->addr[i] = atoi(token);
}
return TRUE;
}
0268261
NGNGCmachineのほうが使いやすいんですが、なんかCの処理には向いてないとか・・・。
どっちがいいんですか?
0269258
NGNG// サンプルプログラム
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
const char sep[] = ".";
char addr[4][4];
// コマンドライン文字列からピリオドを区切り文字として切り出して
// addrへ格納する。
//
// サンプルプログラムなのでエラーチェック省略です。
// コマンドライン引数必須かつ文字数制限厳守!
strcpy( addr[0], strtok( argv[1], sep ) );
strcpy( addr[1], strtok( NULL, sep ) );
strcpy( addr[2], strtok( NULL, sep ) );
strcpy( addr[3], strtok( NULL, sep ) );
///////// 検証のためのデバッグプリント
int i;
for ( i = 0; i < 4; i++ )
printf( "addr[%d] = \"%s\"\n", i, addr[i] );
}
とりあえず机上だけで作成しました。ノーテストでスマソ。
0271bloom
NGNG0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGmain()
{
int a;
printf("テスト何点でしたか?\n");
scanf("%d",a);
if(a==100){
printf("お疲れ様。");
}
else{
printf("しっかりしろ!まだ頑張れる。");
}
}
何がおかしいのか分からない罠。
正しく動作しないんだよな。これが
0274デフォルトの名無しさん
NGNGでも、けっこうオカズに困るんですよね。そんな時見つけたのがYUIS!!
安いし、安心して買えるしなかなかいいですよ!いつもバイブ物買ってます!
http://www.dvd-yuis.com/
0275デフォルトの名無しさん
NGNGscanf("%d",&a);
0276デフォルトの名無しさん
NGNGhttp://members.goo.ne.jp/home/madcap0
0278デフォルトの名無しさん
NGNGスレ違いだと思うが、↓で「inet_addr」、「inet_ntoa」とかで検索シル!
ttp://www.linux.or.jp/JM/
0279デフォルトの名無しさん
NGNGmainの引数がvoidなのは別に突っ込まれるようなことじゃないぞ
戻り値がvoidならともかく
0280デフォルトの名無しさん
NGNGCではWinアプリを作ることができるといいますが、DOSで入力
するのと作成法においてどんな違いがあるのでしょうか?DOS
で扱うにはボタンなどは必要ありませんが、Winアプリにはも
ちろんフォーム、ボタンなどいろいろなものが必要になります
よね?それをCでいちいちサイズなどを指定しないとWinアプリ
は作れないんですか?VB.NETみたいにボタンをマウスを使って
設置できるといいますが、それはCなのですか?C++との作成面での違いは?
文がぐちゃぐちゃですみません。意味不明な文ですが答えれるところがあれば、答えていただきたいです。お願いします
0281デフォルトの名無しさん
NGNGまずはCUIから勉強すれ!
0282デフォルトの名無しさん
NGNGむしろ、OSからだろ?
0283デフォルトの名無しさん
NGNG>>261 と同一人物?
0284デフォルトの名無しさん
NGNGhttp://www.asahi-net.or.jp/~yf8k-kbys/ckadai5.html
の1. ユーザに入力してもらった数だけ、あなたが好きな言葉を繰り返すプログラムを書いてください。
/* kurikaeshi.c */
#include <stdio.h>
int main()
{
int x;
int a;
printf("好きな整数入力して。");
scanf("%d",&a);
for(x=0;x<a;x++){
printf("あいうえお\n");
}
}
で合ってますか?
0285デフォルトの名無しさん
NGNG未完成のサイトで勉強するのはやめましょう
0286デフォルトの名無しさん
NGNG>「C++でのオブジェクト指向型プログラムとは、クラス、継承、仮想関数を(有効に)使ったプログラムである。」
はぁ?
って、これじゃスレ違いなんでこっちも。
http://www.asahi-net.or.jp/~yf8k-kbys/c3.html
>また、「%d」の間に空白をいれたので、「空白で区切った整数」の入力を待つことになるわけです。
ぽかーん
0287デフォルトの名無しさん
NGNGDOS(コンソール)アプリとWinアプリではウインドウを作るだけでも大変さが全然違う。
コンソールは
#include <stdio.h>
int main(void){return 0;getchar();}
で出来るが、Winアプリは30行ぐらい必要になる。それを知りたいなら
http://www.kumei.ne.jp/c_lang/ のWindowsSDK編第一部の1~5章ぐらいを
見ると勉強できます。もし30行書くのが面倒なら、MFCという方法でも作れる。
僕はその方法はあまり知らないが、VBとSDKの間と考えると良い。
ボタンを作ると成ると、もっと大変。VBではなくCで作る利点は、基本的に作りやすい
(個人の意見)、必要なものだけ使うから速い、一度作ってしまうと(関数、クラス)
使い勝手が良い等。作るスピードでも最初はVBの方がかなり速いが、プログラム
サイズが大きくなるとVBを追い抜く。Cができるなら、VBではなくCでWinアプリを
作るのを進める。がんばれ!
0288デフォルトの名無しさん
NGNGまたそんなことをいって・・・
0289デフォルトの名無しさん
NGNG途中からCとC++とが区別できなくなったようだ。
0290デフォルトの名無しさん
NGNG漏れは3.1以来やってないが…
0291デフォルトの名無しさん
NGNG普通わざわざCじゃやらねぇべさ。
尤も、C++と言ってもC++らしい使い方できない香具師が多いのだが。
0292デフォルトの名無しさん
NGNG間違えていたことを教えたならスマソ。
>>289
いや、書き忘れです。でも、本当に区別できてないかも。
>>290
僕がその香具師です。ボタンとかもリソース系を一切使わずに、コードのみ
で。昔、将棋もそれで作りました。
>>291
多分僕がそう。違うだろうけどCはコンソールC++はウインアプリとその違い
だけで区別しています。
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNGあちらこちらで同じような質問がおっぱおあったので。
0295デフォルトの名無しさん
NGNGオブジェクト思考ができずに使うC++はC+お仕着せのクラスだけの代物。
C++を使うと言うからには、(クラスを設計するだけが全てではないが)
データのカプセル化、処理の抽象化ができなければ意味がない。
具体例を挙げるわけにはいかないので曖昧な表現で申し訳ないが、
例えば>>286に挙げられているC++の講座などは勘違いの代表例かと。
確かにGUIはクラス化すると継承させて綺麗に実装できるように見えるのは事実。
しかし、C++の本領は寧ろ、GUIとは切り離された、アルゴリズムの実現で
発揮されるものだと思う。
なので、C++(≠VC++)を使いこなそうと思うなら、例えば日付でもいい、
例えば座標空間でもいい、そうしたものを巧く抽象化したクラスを実装してみてはどうだろう。
と、これだけだとC++スレに行けと言われそうなのでCのフォローも。
C++を完全に使いこなすことは難しい(と言うか多分無理)だが、
Cならライブラリも含めて多いに使いこなせると思う。
そのためにも、既存の入門書の嘘に振り回されずに
自分でマニュアルを見、テストコードを書き、
ansiなどの仕様を確認する能力を養うべきだろう。
その技術はC++でも立派に役に立つ。
#結局C++かい>自分
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG長年構造化に拘ってきた結果として、クラスという
データのカプセル化(など)に着目しているだけだ。
まぁ、構造化プログラミングができない奴から見れば
オブジェクト思考との区別がつかないのも仕方ないとは思うが。
0300デフォルトの名無しさん
NGNGこれだからOO厨は
0301デフォルトの名無しさん
NGNGで、あなたたちはC++をどう捉えているの?
0302デフォルトの名無しさん
NGNGint main( void )
{
while( 1 )
{
printf( "ぬるぽ" );
}
return 0;
}
0303デフォルトの名無しさん
NGNGint main()
{
for(; ;)
{
printf("ガッ >>302");
}
return 0;
}
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG禿しく同意
0306デフォルトの名無しさん
NGNGpascalだと
type line = packed array[1..10] of char;
var x = line;
な感じです。
0307デフォルトの名無しさん
NGNGそれともpascalも知らない厨房には聞いていないということか?
0308デフォルトの名無しさん
NGNGtypedef char line[10];
line x;
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGchar name[10];
char address[20];
char age[3];
}p;
構造体のメンバを参照するとき,p.nameのようなメンバ名ではなく
「上からi番目のメンバ」のように指定することはできないでしょうか?
どなたか教えてください。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGできません。配列を使いましょう。
0313デフォルトの名無しさん
NGNGenum person_index_t
{
PERSON_NAME, PERSON_ADDRESS, PERSON_AGE
};
char* person_entry(struct person* p, enum person_index_t i)
{
switch(i)
{
case PERSON_NAME: return p->name;
case PERSON_ADDRESS: return p->address;
case PERSON_AGE: return p->age;
default: assert(0);
}
}
生の値で指定するのは超絶危険行為。
列挙子を使う事。
0314デフォルトの名無しさん
NGNG> 生の値で指定するのは超絶危険行為。
どういうこと?
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGunion使ったら?
0317310
NGNG何とかループで上のメンバから順番に処理したいのですが・・・
やはり312さんの言うとおり配列に1つ1つ入れるしかないのでしょうか
0318デフォルトの名無しさん
NGNG俺ならひとつずつ処理するが。
0319306
NGNG型をそう定義するというだけで特に何をしたいというわけではありません。
「型定義」といって同じようにCで通じるのかと思い書いてみました。
pascalしか知らない日本語の不自由な厨房でごめんなさい。
>>308
サンクスコ、やってみます。
>>309
了解
>>311
配列の各要素のメモリ領域を小さめに確保するみたいです。
実行結果に変わりは無いはずです。
0320デフォルトの名無しさん
NGNG型定義はわかるが、packedなんて知らないし。
調べてみたが、pascalって配列にも詰め物がつく場合があるのか・・・・
0321デフォルトの名無しさん
NGNGC>日本語>英語>その他>>>>>pascal
0322デフォルトの名無しさん
NGNGCでもつくときはつきますが何か。
0323デフォルトの名無しさん
NGNG実際には多くメモリを確保しても、sizeofの結果にその部分が反映されることはないだろ?
0324デフォルトの名無しさん
NGNGあるだろね。というかpaddingは言語に関係なく必要だったりする。
それをプログラマに意識させるかどうかは別として。
奇数番地から始まるint(16bitとか32bit整数)を参照したら、
bus errorとかの例外が発生するプロセッサがあるしね(68kなど)。
x86でもそういう参照の仕方をしたら例外が発生しないまでも、
性能が大幅に落ちるし。
0325デフォルトの名無しさん
NGNGperson(&p, 0); とか、生の値でやるのが危険だということ。
仕様変更に弱いし、読みにくいし。
>>317
enum person_index_t
{
PERSON_NAME, PERSON_ADDRESS, PERSON_AGE,
PERSON_NUM /* ← これを追加 */
};
にして、
int i;
struct person p;
for(i = 0; i < PERSON_NUM; ++i)
{
char* entry = person_entry(&p, (person_index_t)i);
/* entry を使ってほにゃらら */
}
とすれば可能。
一応ね。
ただ、保守はしにくくなると思われ。
0326デフォルトの名無しさん
NGNGあ、やっぱりマジックナンバーのことか。
Perlだとやっちゃう人多いかも(モードの指定とか)
0327デフォルトの名無しさん
NGNGつーか、何がやりたいのさ。
>>323
sizeofに反映されなかったらmalloc()できませんが。
0328デフォルトの名無しさん
NGNGえ!? じゃあchar a[23];と定義した場合、sizeof s==23になるとは限らないの!?
もしそうならsizeof s/sizeof s[0]で要素数を得るというポピュラーな方法が使えなくなるけど。
0329328
NGNG0330デフォルトの名無しさん
NGNGsizeof に反映されるからこそ、その方法が使えるのでは?
単体の sizeof でも padding を含めたサイズを返す、
ということを「反映される」と表現してるんじゃない?
0331デフォルトの名無しさん
NGNGビットマップのハンドルを取得するのはこれではいけないんでしょうか?
どうしてもビットマップの表示がうまくいかず、ここに原因があることは分かったんですが……
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNG>>1くらい読め。
0334デフォルトの名無しさん
NGNG環境依存ならその環境のスレに行ってください。
0335デフォルトの名無しさん
NGNG来ると思ったぜ、おまえ絶対1読んでないだろ。
教えてもいいが示しが付かんのでとりあえずWin32APIスレに行け。
0336デフォルトの名無しさん
NGNGじゃ、このスレ的な解答。
・コンパイラからは警告が出なかったか。
・関数の仕様(マニュアル)はよく読んだか。
・変数の型は合っているか、引き数の型は合っているか。
以上チェックするように。
0337デフォルトの名無しさん
NGNG0338331
NGNG大変失礼いたしましたm(_ _)m
0339331
NGNGどうもありがとうございます。
それで解決しないようでしたらAPI質問スレの方に行かせていただきます。
0340bloom
NGNG0341デフォルトの名無しさん
NGNG1つずつ入れて行けばいいのですよ。
何を困っているのか解りませんが・・・。
>>318
配列から配列へ、互いに添え字やポインタのインクリメントが
使える代入の繰り返し処理でしかループは使わないよな。
0342デフォルトの名無しさん
NGNGfor(i=0;i<=n;i++){
printf("%d,%f\n",i,A[i]);
}
画面に表示される数字の羅列をテキストファイルに出力して
後からエクセルなんかにテキストファイルから値を
インポートしてグラフを書きたいのです。
助けて下さい。
0343342
NGNG環境はリナックスです。おながいします。
0344デフォルトの名無しさん
NGNG面倒ならリダイレクトしとけばいいんじゃね?
0346デフォルトの名無しさん
NGNGプログラム無改造で、 ./a.out > hoge.txt
0347動画直リン
NGNG0348デフォルトの名無しさん
NGNG10分ほど本を読んだら理解したつもりになりました。確認させてください。
ポインタとは、
変数のアドレスを格納するアドレス。変数の先頭アドレスそのものではなく、
先頭アドレスという値を格納した別の場所であることに注意。ポインタ自身は
何のポインタであろうが32ビットのlong型変数。
なぜポインタを利用するかは、
第1の利点は、関数が実行されるとき、実際にはPC内で引数の変数を新たに
コピーして作成している。なので変数によっては(文字列や構造体や浮動小数点)
メモリを大きく消費する。ポインタにしておけばどんな変数でも32ビットですむ。
そう考えれば逆に、intなどの大してメモリを消費しない変数ではポインタを
使用しない場合が多い。
第2の利点は、外部からポインタの実体を変更したらそれが反映する。
関数だと戻り値は1つしか作れないが、ポインタならばいくつでも外部から
変更が可能。
以上です。間違ってたら指摘してください。
あと、ポインタのポインタとは具体的にどのようなケースで使用するのか教えてください。
0349デフォルトの名無しさん
NGNGchar *aho="aho";
char *baka="baka";
char *manuke="manuke";
char *text[] = {aho,baka,manuke,aho};
void hoge(int n)
{
printf("%s\n", *(text+n)); // text(=&text[0])がポインタのポインタ
}
0350デフォルトの名無しさん
NGNG第1の利点は今時利点じゃないね。
第2の利点は説明が変だけどそう言うこと。
ポインタのポインタは、ポインタの値を関数で変更したいときに使える。
即ち、整数を関数で変更するときに整数のポインタを渡すが如く
ポインタを関数で変更するときにポインタのポインタを渡すわけだ。
0351デフォルトの名無しさん
NGNG> 変数のアドレスを
NG: 変数とは限らない。(関数へのポインタ、文字列定数へのポインタなどもある。)
> 格納するアドレス。変数の先頭アドレスそのものではなく、
> 先頭アドレスという値を格納した別の場所であることに注意。
意味不明。
> ポインタ自身は何のポインタであろうが32ビットのlong型変数。
NG: そもそも long 型が 32bit とは限らんし。
> 第1の利点は、...
NG: 今時メモリーなんか気にするな。
気にするのは、配列や配列を含んだ構造体軟化の時だけだ。
そう言う風にポインタ使うと遅いし、コードがでかくなることが多い。
> 第2の利点は、...
OK: 日本語がが変だけど、関数内で複数の値を戻せると言うなら OK と見なす。
> あと、ポインタのポインタとは具体的にどのようなケースで使用するのか教えてください。
10年早いと思う。
0352デフォルトの名無しさん
NGNGポインタのポインタの使い道がわからないっていうやつ結構多いけど、
intのポインタを使うのと同じ理由でポインタのポインタが使えるだろ。
関数に渡してポインタの指す先を変更してもらいたいなんてのも一つの例だし。
複数の場所で一つのポインタを共有したいときなんかも。
0353352
NGNG逝ってくる・・・。
0355y(^v^)y
NGNG0356デフォルトの名無しさん
NGNGあんまり例がよくないような。textそのものはポインタの配列だし。
確かに、*(text+n)を評価するときにtextはポインタに縮退するけど。
0357デフォルトの名無しさん
NGNG具体的にはchar型でn*mの2次元配列をmallocしたいのです。
char *b;
char **p;
b=(char *)malloc(n*m*sizeof(char));
p=(char)malloc(m*sizeof(char));
p=b;
でだめでした・・・。
0358デフォルトの名無しさん
NGNGp=(char)malloc(m*sizeof(char));
訂正
p=(char *)malloc(m*sizeof(char));
0359デフォルトの名無しさん
NGNGちょっとぐらいググれよ。
"malloc 2次元配列" でググレばたくさん出てくるぞ。
とりあえず http://www.borland.co.jp/qanda/lang/l0001842.html とか。
0360デフォルトの名無しさん
NGNG2次元配列分の一次元配列を確保し、利用方法で逃げるのが常道。
char *pArray = (char *) malloc(n * m * sizeof(char));
for (im = 0; im < m; im++) {
for (in = 0; in < n; in++) {
pArray[in + im * n] = 0;
}
}
0361デフォルトの名無しさん
NGNGCではどのような順序で変換が行われるのでしょうか?
0362デフォルトの名無しさん
NGNG質問が曖昧過ぎる。
0363361
NGNGchar char_dt;
float float_dt1,float_dt2;
long long_dt;
double double_dt;
float_dt2 = char_dt * long_dt +float_dt1 / double_dt;
のような式の場合、
char_dtとlomg_dtの計算のときは、いっきにlongに変換されるのでしょうか?
0364デフォルトの名無しさん
NGNG途中があるのか?
0365デフォルトの名無しさん
NGNGアセンブラリストを出して追え。
0366361
NGNGc++では、charがintになったあとlongになってるらしいんで
0367デフォルトの名無しさん
NGNG日々ネトゲと2chしかやらないのもどうかと、何かしらの勉強でもしてみようかと思い立ちました。
それなりに難しくても実用的なものは無いかなーと思ってたんですが・・・
その中で見つけた候補の一つがC言語です。
C言語は知っていると何が出来ますか?
C++等似通ったものも幾つかあるようですが、その違いは?
何というか本当に何も知らない状態なんで的をいてなくて曖昧で阿呆な質問、
その上微妙にすれ違いだと思うんですが他に該当スレが見当たらないもので。
暇な人、居たら教えてくれると幸いです。良さそうなら明日あたり書店にでも出向いてみようと思います
0368342
NGNGまずlinux導入してみたらどうよ?
C言語は元々unixから生まれたもんだよ。
「Windowsなんて糞。」
なんて事を回りに言えるようになりますよ。
それ言うだけでコイツlinux使えるのかよって一般人はビビルよ。
で
>>346これがリダイレクトするっつう事ですかね。
0369デフォルトの名無しさん
NGNG誰も突っ込まないので突っ込んでおく。
>ポインタとは、変数のアドレスを格納するアドレス。
「アドレスを格納するアドレス」って言うのはどういう事よ?(w
ポインタの前に「メモリ」と「アドレス」の勉強しる!
0370デフォルトの名無しさん
NGNG>>351 ですでに突っ込まれてるよ。
0371デフォルトの名無しさん
NGNGsizeof(char)なんてやめろYO!
0372デフォルトの名無しさん
NGNGループで回さないでcalloc()使えyo!
0374デフォルトの名無しさん
NGNG>「Windowsなんて糞。」
漏れはLinuxは好きだけど、こういう低レベルなこと言うヤシを増やしてほしくないぞw
0375デフォルトの名無しさん
NGNG最後の行がオチだったんじゃないかな。
0376デフォルトの名無しさん
NGNG出力ファイル名をコマンドラインの第一引数で受け取るというプログラムを
作ってもらえませんか?
出力ファイル名は12文字以内のフリーフォーマットです。
0377デフォルトの名無しさん
NGNGC言語でお願いします。
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNGはい、宿題です。
どうしてもわからないもので・・^^;
0380デフォルトの名無しさん
NGNG>>1読め。宿題スレは別にあるぞ。
0381デフォルトの名無しさん
NGNGすみません。
0382デフォルトの名無しさん
NGNG関数内で暴走してしまいます。
main()
{
char str[20][20];
int i;
ReadSttring(str);
for(i=0 ; i<20 ;i++){
printf("%s", str[i]);
}
}
void ReadString(char str[20][20])
{
FILE *fp;
中略
for(i=0 ; i<20 ; i++){
fets(str[i], 20, fp):
}
}
0383カーニハン三世
NGNGfets()関数はfgets()関数の間違いだと思いますが、
まずそのfgets()関数の戻り値のNULLチェックをしましょう。
0384デフォルトの名無しさん
NGNG------------------------------------------------------
int dat0[5][3];
……
{
int data;
int *pDat;
pDat = (int*)dat0;
data = checkMatrix( pDat, 3, 2 ); // [3][2]の値を得る
}
// ノード [a][b] に アクセス する
int checkMatrix( int *pMtx, int a, int b ) {
return pMtx[a*3 + b];
}
------------------------------------------------------
しかし、次元は固定なのでもっとスマートにtypedef を 用いて作りたいのですが、
typedef int MDAT[5][3];
MDAT dat0;
……
この時のMDAT型データへのポインタ pDatは
MDAT *pDat;
pDat = &dat0;
でいいのでしょうか?また、ノードへのアクセス関数は
// ノード [a][b] に アクセス する
int checkMatrix( MDAT *pMtx, int a, int b ) {
return pMtx[a][b]; // それとも return (*pMtx)[a][b]; か ?
}
でいいのでしょうか?どうか、ご教授お願いします。
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG実際使ってみると遅くなってるんですが
何故でしょうか?
僕の環境のせいでしょうか?
0387386
NGNG#include <time.h>
int main(void)
{
register unsigned int i_r, j_r;
unsigned int i_a, j_a;
unsigned long sum = 0;
time_t time1,time2;
/*レジスタ変数の場合*/
time(&time1);
for(i_r = 0; i_r < 30000; i_r++){
for(j_r = 0; j_r < i_r; j_r++){
sum++;
}
}
time(&time2);
printf("sum = %lu , time = %f\n",sum,difftime(time2,time1));
0388386
NGNGsum = 0;
/*レジスタ変数を使わないとき*/
time(&time1);
for(i_a = 0; i_a < 30000; i_a++){
for(j_a = 0; j_a < i_a; j_a++){
sum++;
}
}
time(&time2);
printf("sum = %lu , time = %f\n",sum, difftime(time2,time1));
return 0;
}
こんな感じで実行したら
sum = 449985000 , time = 3.000000
sum = 449985000 , time = 2.000000
こうなりました。
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG0393386
NGNGsum = 449985000 , time = 3.000000
sum = 449985000 , time = 7.000000
こうなりました。
コンパイラで最適化されてたと言う事でしょうか?
余計な修飾子つけるよりコンパイラに任せた方がイイというわけですか・・・
ちなみにBorland C++ Compiler 5.5使いました。
レジスタより早くなるってのはどういう原理で早くなってるのだろう・・・
>>392
もっと精度を高くするには自分で関数つくらないとダメなんでしょうか?
0394デフォルトの名無しさん
NGNGclockを使う。
time1 = clock();
for(i_r = 0; i_r < 30000; i_r++){
for(j_r = 0; j_r < i_r; j_r++){
sum++;
}
}
time2 = clock();
printf("sum = %lu , time = %f\n",sum, (double)(time2 - time1) / CLOCKS_PER_SEC);
で↓にgcc -Sで吐かせたもののclock〜clockまでを貼り付けておく。
ほとんど変わらなかった。
0395394
NGNGcall _clock
movl %eax,%esi
xorl %edx,%edx
.align 4
L14:
xorl %eax,%eax
leal 1(%edx),%ecx
cmpl %edx,%eax
jae L13
.align 4
L18:
incl %ebx
incl %eax
cmpl %edx,%eax
jb L18
L13:
movl %ecx,%edx
cmpl $29999,%edx
jbe L14
call _clock
0396デフォルトの名無しさん
NGNGcall _clock
movl %eax,%esi
xorl %edx,%edx
addl $16,%esp
.align 4
L24:
xorl %eax,%eax
leal 1(%edx),%ecx
cmpl %edx,%eax
jae L23
.align 4
L28:
incl %ebx
incl %eax
cmpl %edx,%eax
jb L28
L23:
movl %ecx,%edx
cmpl $29999,%edx
jbe L24
call _clock
0398386
NGNGいちいちコンパイルしなくても実行結果がわかるって事です?
もしそれなら便利な機能だけど・・・どこをどうみたらいいのやら
コンパイラのマニュアル見てみるか・・
0399デフォルトの名無しさん
NGNG> いちいちコンパイルしなくても
いやコンパイルした結果だ。機械語を見てもいいけど、それじゃなおさら分かりにくいだろ。
0400386
NGNGとりあえずgccってのでやってみよう。
分かる人には>>395、396を見ただけで結果が理解できるのでしょうか?
0401394
NGNGeax、edx、ebxとかがレジスタ。
レジスタ変数にすると、このレジスタに優先的に割り付けられる。
しかし両者を比較しても、ラベル名が違うのとaddl $16,%espが
追加されているくらいで、レジスタへの割り付けられ方は同じ。
registerの指定が効いていないってこと。
ちなみにi_r、i_aがedxにj_r、j_aがeaxにsumがebxに割り付けられている。
bccでも似たようなものを吐かせることができるはずなので
試してみてください。(オプションは違いますが)
コンパイラによって多少差がありますので。
0402386
NGNG奥が深い。
理解できるようにがんばるっす!
0403384
NGNGすいません。まだよく判らないので教えてください。
typedef int MDAT[5][3];
MDAT dat0;
……
int (*pDat)[3];
pDat = &dat0;
ということなんでしょうか?
また、その時のCheckMatrix関数の引数はどのように記述すればいいのでしょうか?
int (*pDat)[3];
こういう記述は初めてなので、私はげしく勘違いしてるかもしれませんが
よろしくお願いします。
0404デフォルトの名無しさん
NGNG要素数3のint配列を指すポインタ 括弧をつけないとint *の配列になってしまうからつけた。
int dat0[5][3];
int (*pDAT)[3]=dat0;
0405山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG推薦図書/必読書のためのスレッド PART 10
http://pc2.2ch.net/test/read.cgi/tech/1051496506/
0409デフォルトの名無しさん
NGNGなぜこのスレで質問した?
0410デフォルトの名無しさん
NGNG書籍、で検索して出てこなかったのでここで質問してみました。
関連スレのリンクも張ってあると良いかなーとか思ったりして
0411名無しさん
NGNGこれを関連といってしまうと、他の言語も関連だと思うし
0412デフォルトの名無しさん
NGNGどうしたらいいのでしょうか?
たとえば起動しているaaa.exeのメモリ0x41000の値を10進数で表示したいという感じです
04131
NGNG0414デフォルトの名無しさん
NGNGスレ違い
0415デフォルトの名無しさん
NGNGReadProcessMemoryだが、スレ違い。
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNGだから、みんな教えてるんじゃないか
0418デフォルトの名無しさん
NGNG>>415
取っ掛かりが分かった気がします
ありがとうございました。
まだ不明な点はのこっていますが移動先で聞いてみます
0419デフォルトの名無しさん
NGNGどうすれば良いですか?
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG選んで入力してください
1.・・・
2.・・・
3.・・・
=>[3]
というものを作っているのですが、たとえば「3」を入力するとプログラムを終了させるようにするには
どのようにすればいいのでしょうか?
0422名無しさん
NGNGを実行する
一応検索して調べといてくれ
exitについて
0423名無しさん
NGNG#include <stdlib.h>
をインクルードしておいてくれ
ん?
この文だと二重インクルードになって舞うか?
この関数は、プログラムを終了させてくれる関数です
引数に1を渡すと、異常終了だったっな・・・
0424421
NGNGほんとにありがとうございました
0425デフォルトの名無しさん
NGNGabort();
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGexit をしなくても、プログラムが終わるようにプログラムすればそれで良い。
int main() {
printf("Hello, world!¥n");
return 0;
}
には exit はないが、プログラムは終わる。
main にまで戻って return すればプログラムは終わるのだ。
>>423
二重インクルード防止コードは全ての標準ヘッダファイルに書かれている。
そのような心配はする必要ない。
>>419
「進数」という概念は値自身の持ってる属性ではない。
値を表示しようとした場合に生じてくる属性である。
例えば、
a = 0x20;
と
a = 32;
は人間が読む分には違いがあるが、値は全く同じである。
また、a の内容を全く変える事なく
printf("0x%02X¥n", a);
は 0x20 を表示するし、
printf("%d¥n", a);
は 32 を表示する。
0428デフォルトの名無しさん
NGNGうーん?
0429デフォルトの名無しさん
NGNG> #include <stdlib.h>
> をインクルード
という文章が2重インクルードになってるという意味だと思われ。
>>428
main内でもexitはいやんだろ。本当は関数途中でのreturnもうれしくない。
もしかしたら関数の最後にクリーンアップ処理が書いてあるかもしれない。
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG例えば変数に1234という値が入っていて、10の位を取り出す場合
3という値を得たいのです。よろしくお願いします。
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNGint a = 123;
printf("%d\n", a / 10 % 10);
0434デフォルトの名無しさん
NGNGあります。
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNGcase 1:
while( ( c = getchar() ) !=EOF)
putchar( test1(c) );
break;
case 2:
while( ( c = getchar() ) !=EOF)
putchar( test2(c) );
break;
・
・
・
}
という風に作ったのですが、入力→出力→入力→出力→・・・
となってしまいmainに戻れません。
break;の使い方が違うのでしょうか。
どうすればいいんでしょうか。どなたかお願いいたします。
0437384
NGNG>>404
ありがとうございました。
ステップアップ目指してぜひ習得したいと思いますが、
すいません、もう2点質問いいでしょうか?
int dat0[5][3];
int (*pDAT)[3]=dat0;
1)
このポインタを用いての要素へのアクセスは
pDat[a][b] でいいんでしょうか?
2)
pDAT = (キャスト?)0x80000;
の場合のキャスト書式はどのようになるのでしょうか?
よろしくお願いします。
0438436
NGNG0439436
NGNG0440デフォルトの名無しさん
NGNG興味持ったから少し検索して初心者向けのページとか見たりしてみたんだけど、
何処も「機械に命令を出す事が出来る」程度にしか書いてないんだよね。
それを使って何が出来るのかが知りたいのだけれど・・・
例えばランチャー等のアプリとかもC言語で作れるんですか?
ゲームなんかもC言語で作られてるものが多いと聞いた記憶があるんですが、
要するに何でも作れるって事なんでしょうか。
0441デフォルトの名無しさん
NGNG例)1234と言う数字から10の位の3と言う数字を抽出する
0442デフォルトの名無しさん
NGNG死ね
0443デフォルトの名無しさん
NGNGどっかの学校の宿題なのか?
0444デフォルトの名無しさん
NGNG心配するな、お前には何も作れないから。
>>441
int extract(int n, int k)
{
switch(k){
case 4:
return n / 1000 % 10;
case 3:
return n / 100 % 10;
case 2:
return n / 10 % 10;
case 1:
return n / 1 % 10;
default:
fprintf(stderr, "対応してね−よ。\n");
return 0;
}
}
0445デフォルトの名無しさん
NGNG上の433に書いてる>>431って432の書き間違いですよね^^;
>>443
441のソースてか命令文って学校の宿題にでるぐらい簡単なことなのですか?
0446デフォルトの名無しさん
NGNG読み込んで小さい順にソートし、結果を出力するプログラムを作る。
作ってはみたんですが、例えば50個のデータをソートすることが出来ませ
ん。どうすればいいんですか?ちなみに最初に要素の個数を指定することはできません。
0447デフォルトの名無しさん
NGNG最後の行をもっと詳しく
0449デフォルトの名無しさん
NGNG10の位はその数字を10で割ったものを10で割ったあまりだということくらい理解できませんか?
0450デフォルトの名無しさん
NGNGこっちのスレにいってくれ。
C/C++の宿題やらせてください。7代目。
http://pc2.2ch.net/test/read.cgi/tech/1053963794/150
0451デフォルトの名無しさん
NGNG算数の問題だと思うんだけど…
0453デフォルトの名無しさん
NGNG要素の個数を指定できるように作り直せ
0454デフォルトの名無しさん
NGNGわかってるよ。
あんたは直後のレスで理解したんだろ?
問題はそれで理解できずにさらに聞くやつら。
ってゆーかもしかして同じ学校?
0456デフォルトの名無しさん
NGNGあれだけの情報でまともな答が返ってくると思ってんの?
つーか、宿題スレにカエレ
0457bloom
NGNG0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG#include<stdio.h>
#define N 100
main(){
int i,j,min,x[N];
for(i=0;i<N;i++)
scanf("%d",&x[i]);
for(i=0;i<N-1;i++){
for(j=i+1;j<N;j++){
if(x[i]>x[j]){
min=x[i];
x[i]=x[j];
x[j]=min;
}
}
}
for(i=0;i<N;i++)
printf(" %d ",x[i]);
printf("\n");
}
これを改良してデータ数が100未満でも動くようにして下さい。
0461デフォルトの名無しさん
NGNGしかもまだ情報不足
0462デフォルトの名無しさん
NGNGunsigned longに4294967295(0xffffffff)を入れて
printf()しようとしたところ"%d"では上手く表示できませんでした。
(2147483647:0x7fffffff)までは上手く表示できることを確認。
で、ネットで4294967295をprintf()で表示させる方法を探したところ
"%lu"、"%u"を発見。やってみたところ上手くいったんですが、
この"%lu"、"%u"って一般的に使用しますか?
既出だったらすみませんがよろしくおねがいしますm(__)m
0463440
NGNGそんなみ身も蓋も無い事言わないで教えて下さいよ つД`)
それともその返答の中にはお前以外なら作れる、つまりC言語でアプリとか作れる・・・という意味が込められてるんでしょか
0464デフォルトの名無しさん
NGNG符号あり・なしって知っている?
0465デフォルトの名無しさん
NGNG一般的に、printfのフォーマットは引数の型に合わせて使います。
%luでも%uでもうまくいったのは、longとintのサイズがたまたま同じだったからでしょう。
0466デフォルトの名無しさん
NGNGreturn 0;
printf("hello, world\n");
}
こういう書き方するとhello,worldが出力されませんよね。
関数内でreturnのあとの文を実行させる方法ってありますか?
0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNGa = (int *)malloc(sizseof(int)*5);
これで要素5つの領域がaに確保されることを教わったのですが、
mallocの前の(int *)は何を意味していて何故必要なのでしょうか?
0469カーニハン三世
NGNGmalloc() が void* 型だからです。 a に代入するため
int* 型でキャストします。
以上
0470デフォルトの名無しさん
NGNGatexit();
0471デフォルトの名無しさん
NGNGmallocの戻り値をint *へキャスト。
stdlib.hさえインクルードしていれば必要ないよ。もっとも、C++としてコンパイルするのなら必要だけど。
>>469
そういう理由じゃないと思う。
0472デフォルトの名無しさん
NGNGおいおい・・・
0473デフォルトの名無しさん
NGNG何のために?
return は関数を終わらせるために書くものなのに、
何でその後を実行する必要があるんだ?
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG0479山崎­渉
NGNG0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNGchar buf[256];
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &foo);
とあった場合、 buf を "%d" でパースして int 型に変換して、それを foo に入れる、
という理解で会ってますか?
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG誤爆?
複雑な場合は括弧が連続しないように書けばいい。
0485デフォルトの名無しさん
NGNG!open(...) || exit(-1);
とかやったら コンパイルエラー
0486デフォルトの名無しさん
NGNG当たり前だ。exitは戻り値なし(void)だからだ。
0487デフォルトの名無しさん
NGNGopenできたら終了しちゃうのか?
open(...) ? (void)0 : exit(-1)
0488デフォルトの名無しさん
NGNG0489たまちゃん
NGNG理解が出来なく困っています。そこで、本当に初心者でも理解ができ、
社会で使えるくらいの知識がつけられる参考書を教えてほしいのですが?
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGない。
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNGまずは>>1を見る事からだな
0495デフォルトの名無しさん
NGNG結構難しいと思います。挑戦待ってます。C言語の問題です。
氏名と5科目の点数を標準入力から読み込み、ファイル「gakusei.dat」に保存するプログラムkakikomiを作成せよ。但し、氏名は最大20文字とし、「Q」を入力した時点で終了するものとする。また、学生のデータは構造体を用いて管理せよ。
0497デフォルトの名無しさん
NGNGすいません。
スレ違いでした!
0498デフォルトの名無しさん
NGNG“ヘ( ̄- ̄ )カモォーン♪
http://homepage3.nifty.com/coco-nut/
0499デフォルトの名無しさん
NGNG必要な情報を提示して質問できない奴はプログラマになれない。
ただそれだけ。
0500440
NGNG必要な情報って?
自分の質問読み返しても別にそんな情報が要るような質問じゃないと思うのだけれど・・・
0501デフォルトの名無しさん
NGNGあー、たぶんあれだ。
内部処理の終了を待たずにリターンしたいんだろね。
スレッドという言葉を466に教えるといいことありそうだ。
0502デフォルトの名無しさん
NGNG> 要するに何でも作れるって事なんでしょうか。
ほとんどなんでも出来ることは確かだが、それを楽に実現できるかどうかは別問題。
Cに限らずなんでもやってみないことには始まらない。
0503デフォルトの名無しさん
NGNGしたのソースはコンパイルは問題なく出来たのですが下半分が機能してくれません
原因を教えてください
/*入力した任意の数値の桁数を調べるソース*/
#include<stdio.h>
#include<math.h>
main()
{
int a,b,c,i;
scanf("%d",&a);
i=0;
while(i>=0)
{
c=pow(10,i);
b=a%c;
if(a==b)
break;
i++;
}
printf("%d",i);
/*これ以降は任意の数字のそれぞれの桁の数字を抽出するソースであり上のところで調べた桁数だけループする*/
int d,e;
int j;
j=0;
while(j==i)
{
e=pow(10,j);
d=a/e%10;
j++;
printf("%d桁目の数値は%dです",j,d);
}
}
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNGブロックの先頭以外で
int d,e;
int j;
は宣言できるか?
それと、この場合whileよりforの方が適当だとは思わないか
0507503
NGNGブロックの先頭以外でも宣言はできました。
あとお聞きしたいのですが自分はまだC勉強し始めたばかりなのですが
forとwhileの使い分けについてまったく分かりません自分にはまったく同じ物にしか思えなくて^^;
使い分けについて簡単に教えていただけないでしょうか
0508デフォルトの名無しさん
NGNGcontinueしたときは動作が違う。
0509デフォルトの名無しさん
NGNG> ブロックの先頭以外でも宣言はできました。
多分 C++ を C のように使っている状態だと思います。
> forとwhileの使い分け
基本的に for 文はループが進むごとに何かを次に進める時に使います。
0510デフォルトの名無しさん
NGNGhttp://endou.kir.jp/betu/linkvp/linkvp.html
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG参考書によっては書いてあるかもしれないが、
for と while は基本的に同じものだ。
for(A;B;C)D; <=> A;while(B){D;C;}
0515デフォルトの名無しさん
NGNGの
float x,y[] = { 1.1,2.8,6.5 }; /* yをfloat型3個の配列で宣言後、初期化 */
の注釈間違ってますよね? ↑ここは「xとy」ですよね?
0516デフォルトの名無しさん
NGNG>>508
0517デフォルトの名無しさん
NGNG注釈は合っているが、
そういう宣言の仕方は(可読性が)良ろしくない。
x と、y の要素の型を確実に同じにできるので、
その事に意味があれば多少保守性は上がるけどね。
0518デフォルトの名無しさん
NGNGではfloat x,yのxはどういう意味なんでしょうか?
0519ずれてました
NGNGの注釈間違ってますよね? ↑ここはyだけになってますが、「xとy」ですよね?
0520デフォルトの名無しさん
NGNGfloat x,y[] = { 1.1, 2.8, 6.5 };
は
float x;
float y[] = { 1.1, 2.8, 6.5 };
と同じ。
x は float 型の変数。
0521デフォルトの名無しさん
NGNGそうですか!
勘違いしてたみたいです。
0522デフォルトの名無しさん
NGNG要は、お前は「車ってどこへ行けるの ?」って聞いてるのと同じだよ。
あるいは、「車でディズニーランド行ける ?」って聞いてるのと同じ。
ディズニーランドが1つじゃないように、ランチャーだっていろいろある。
そもそも環境もわからんし、環境を書いて聞くスレじゃないし。
0523デフォルトの名無しさん
NGNGその質問は FAQ なので、みんな嫌気が差してる。
回答は「その気になりゃ大抵の事はできる」だ。
あとはやる気の問題。
0524初心者プログラマー
NGNG自信がありません・・・。
そこで、プログラムソースを添削していただきたいのですが・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1054220849_1/report2-3.c
ここにソースを置いています。覗いてみてください、お願いします。
0525デフォルトの名無しさん
NGNGマルチポストうざい
0526デフォルトの名無しさん
NGNGそれに直リン?が嫌。直リンとは、直接ファイルの所に行く事か
ttp://として、サーバーの負担をなんたらの事かどちらか分からんが。
これに乗じて質問します。貼るなら以下のように貼るのが良い。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=69
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGついでに言うと、float *x,y;としたとき、ポインタになるのはxだけ。
0529デフォルトの名無しさん
NGNGPocketCがAnsiCとどれだけ違うか把握してからなら兎も角、
AnsiCに慣れていないのなら激しくお勧めしません。
0530デフォルトの名無しさん
NGNGちょっと調べてみた。
http://www.din.or.jp/~matusima/ce/pocketc/diff.html
学習用には +激しくお勧めできない+
これはCをわかってる人、もしくはプログラムさえできりゃなんでもいいと思ってる人が使うものだ。
0531デフォルトの名無しさん
NGNG{
intCNT;
CNT = 1;
CNT ++;
cnt = (char *)&CNT;
}
こんな関数があったとして
main側でcntを受け取ったときに
cnt = 2;と認識できますか?
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG0534531
NGNGどうやったらできるんでしょうか。。。
0535デフォルトの名無しさん
NGNGそれがだめな理由わかる?
0536デフォルトの名無しさん
NGNGcnt = (char*)2;
0537直リン
NGNG0538デフォルトの名無しさん
NGNGまず何がしたいのかが理解できない。
0539デフォルトの名無しさん
NGNG{
int CNT;
CNT = 1;
CNT ++;
*cnt = (char)CNT;
}
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG警告:不適切なエスケープ:\<0x91>
と出ます。
実行すると文字化けしてしまいます。
UNIXなんですが、どなたか対策しりませんか?
0544デフォルトの名無しさん
NGNG名前: 頭脳土方
E-mail: [email protected]
内容:
現調にいってくれるひと募集。
5月31〜6月1日 宿泊費、交通費、でます。
もちろん、現調なのでお金払います。(値段は相談)
C++が分かる人。開発室と電話連絡しながら、
コンパイルしたりテストしたり、してください。
メール [email protected]
もまいら、よろしくおねがいします。
0545デフォルトの名無しさん
NGNGどんな文字入れたの?
0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGShift-JISで一部の文字が\とかぶるものがあったとおもうけど、それか?
0548カーニハン三世
NGNGCNTはCount()関数内だけの一時変数です。つまりCount()関数が
実行中の時だけスタックに存在する変数です。
ですからCNTのアドレスを上位関数へ渡しても、Count()関数を
抜けたらお仕舞い。
上で*cntを参照すれば、Unix/Linuxなら Segmentetion Fault、
Win32なら アプリケーションエラー だぞ。(偶然落ちないこともあるが)
アドレス(ポインタ値)を返せるのはstatic変数だけ。(例:strtok()関数など)
0549デフォルトの名無しさん
NGNGそれ以前に返してないってば。代入しているのは仮引き数のみ。
0550デフォルトの名無しさん
NGNGソースをこういうのに通せ
#include <stdio.h>
#define iskanji(c) ((0x81 <= (c) && (c) <= 0x9f) || (0xe0 <= (c) && (c) <= 0xfc))
#define ESC '\\'
int main(void)
{
int in_string = 0, kanji1 = 0;
int before = 0, c;
while ((c = getchar()) != EOF) {
if (in_string) {
if (kanji1) {
if (c == ESC)
putchar(ESC);
kanji1 = 0;
}
else if (!kanji1 && iskanji(c))
kanji1 = 1;
else if (before != ESC && c == '\"')
in_string = 0;
}
else if (before != ESC && c == '\"')
in_string = 1;
before = c;
putchar(c);
}
return 0;
}
0551デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNGかわずとも・・・cygwinとかWideStudioとかLinuxとかBSDにあんだろ。
0555デフォルトの名無しさん
NGNGBCCなら只だから
その分、書籍に金をまわせるが
0556デフォルトの名無しさん
NGNGBorland C++の方が簡単にアプリが組めるという点ではよい。
ただ、それで勉強しなくなるなら結果的によかったのかわからないけどね。
0557556
NGNG逝って来よう・・・・
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG実際にVisual C++買って難しくて挫折する人は多いと思うよ。
それならC++Builderで何かしら作れたほうがいいとも言える。
誰にでも組めるっていうのもいいものだよ。
とりあえずちょっとしたもの1つ組めれば次に進む気になるからね。
0560デフォルトの名無しさん
NGNGダウンロードしてCD-Rに焼いてインスコすれば、安上がりだし
WindowsでもフリーなBorland BC++5.5がある。
C言語でWinアプリを組めばメッセージ駆動の勉強にもなっちゃうよ。
独力で .rcの記述をしながら、WinMain()、WinProc() のデザインから
始めるのも良いかも。
0561デフォルトの名無しさん
NGNGフリーのCコンパイラで勉強して、それではWinのアプリが簡単には組めないことがわかって結果的にCはやめてVBにいったりする。
C++Builder1万円って社会人にはそんなに高くないんじゃないの。
これで何か作れる喜びを味わえるなら安いくらいかも。
0562デフォルトの名無しさん
NGNGvoid main(void){
int n[3],i;
for(i=0;i<3;i++){
printf("n[%d]=",i+1);
scanf("%d",&n[i]);}
for(i=0;i<2;i++){
if(n[3]>n[i]){
printf("rejected\n");}}
for(i=0;i<2;i++){
if(n[3]<=n[i]){
printf("approved\n");}}}
これを「n[1],n[2]のどちらかがn[3]より小さいならrejectedを出力し、
n[1],n[2]の両方ががn[3]以上ならapprovedを出力する」ソースにしたいです
そのままではapprovedが2回出るだけなので、
どうしてそうなるのか非常に悩んでいます
0563562
NGNG2回出ることを追加しておきます
0564デフォルトの名無しさん
NGNGint n[3]と宣言して n[3]と比較するのは
これいかに。いやどうかと。
n[3]と宣言した場合使えるのはn[0]〜n[2]まで。
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGCDライターが高い
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGこちらへどうぞ。
http://pc2.2ch.net/test/read.cgi/tech/1051184396/
http://pc2.2ch.net/test/read.cgi/tech/1015170837/
0569デフォルトの名無しさん
NGNG#define MAX 5
main()
{
int i, point[MAX], total=0, avr;
for(i=0; i<MAX; i++){
printf("%d人目の点数は? ", i+1);
scanf("%d", &point[i]);
}
for(i=0; i<MAX; i++){
printf("%d人目 = %d\n", i+1, point[i]);
total += point[i];
}
avr = total / MAX;
printf("平均点 = %d\n", avr);
}
のtotal += point[i];ってところがわかりません。
どういう意味なのでしょうか?
0570デフォルトの名無しさん
NGNGa+=bはa=a+(b)
0571デフォルトの名無しさん
NGNGありがとうございます。あいにく貸しているんで・・
0572デフォルトの名無しさん
NGNG(b)はbでいいだろ。
(b)でも問題ないが
0573デフォルトの名無しさん
NGNGbが先に評価されるという意味で括弧でくくった。
0574デフォルトの名無しさん
NGNG+ より優先順位の低い二項の演算子なんていくらでもあるぞ。
0575デフォルトの名無しさん
NGNGカッコは評価順序とは関係ない。優先順位を変えるだけ。
0576デフォルトの名無しさん
NGNGよく読めよ
0577デフォルトの名無しさん
NGNGどのソフトを買えばいいでしょうか?
やっぱり Visual C++.NETかな
0578デフォルトの名無しさん
NGNGWindows上で動かしたいなら、VC
安く済ませたいなら、BCC
きわどく行きたいなら、cygwinのgcc(素人にはお勧めできない)
例えば、学校でlinux+gccとかsun+gccとかだったら、
cygwinのgccでもまあ、がまんできる。無料だし。
いじゃう。っていうか同じような質問多すぎ。逝ってくれ。
0579デフォルトの名無しさん
NGNG0580デフォルトの名無しさん
NGNG0581デフォルトの名無しさん
NGNG基本的に何でも。
OS書いているソフトだからな。
ただし生産性は高いとはいえない。
0582デフォルトの名無しさん
NGNGはっきり言ってCは
1.ソースが混乱する。
2.膨大になる。
が問題。
0583デフォルトの名無しさん
NGNGfgets(str, sizeof(str), stdin);
というように標準入力から文字列(アルファベット)を受け取る際に、100文字
を超えたら改行まで読み続けないで、1回で処理を打ち切るようにしたいのですが、
どのようにしたら良いのでしょうか?フラグなどを立てておく以外でお願いします。
0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGほほぉ。
それではソースが混乱しないで膨大にならない言語は何ですか?
#スレ違いって誤魔化して答えないと思うけど一応聞いてやる。
>>583
残りの入力を放置していいなら>>584の言うとおり。
入力を破棄してしまいたいならもう一度(必要なら複数回)呼んで
改行まで読み捨てる必要がある。
0586デフォルトの名無しさん
NGNGありがとうございます。
ループ内でfgetsをやっていたので、文字のあふれた分が続けて読み込まれていました。
もう一つ質問ですが、標準入力から文字列を読み込んだときに、格納する配列から
あふれたかどうかを判断する術はありますか?
0587デフォルトの名無しさん
NGNG例えば、
char buf[100];
としたなら
fgets(buf, sizeof(buf), fp);
とすれば溢れることは有り得ない。
尚、行の最後まで呼んだかそれとも行の途中かを知りたければ、
if (buf[0] != '\0' && strrchr(buf, '\n') != buf[strlen(buf) - 1]) {
/* 行の途中 */
}
とでもすればよい。
0588デフォルトの名無しさん
NGNGfgets(buf, sizeof(buf), fp) && strchr(buf, '\n')
だろフツー。
0589582
NGNGそんな都合のいいものはないが
相対的に見れば
CよりC++という考え方になる。
表現方法が悪かったのはスマン。
0590デフォルトの名無しさん
NGNGmain()
{
int a[4];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
a[4] = 5;
printf("%d\n%d\n%d\n%d\n%d\n",a[0],a[1],a[2],a[3],a[4],a[5]);
}
コードが汚いし、誤作動するし。どうなってんだーーーーーーー
0591デフォルトの名無しさん
NGNG荒らすな
0592
NGNG0593デフォルトの名無しさん
NGNGひさしぶりにワラタ
0594デフォルトの名無しさん
NGNGその先頭の場所に「a」という名前付ける、って意味。
配列は0から数えるので、0,1,2,3までしか使えない。
ついでに、for文覚えてとけ。役に立つぞ。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG>>590はint型になっているけど。
ただしreturn 0;を書いていないのは(ry
0598デフォルトの名無しさん
NGNGint i = 2;
int n = 3;
printf("%d\n", i +++ n );
printf("%d,%d\n", i, n );
出力結果を妄想しなさぁい
0599デフォルトの名無しさん
NGNG$ ./a.out >/dev/null
$
0600デフォルトの名無しさん
NGNGどこかまずいでしょうか
double v;
sscanf("7.295760E+0", "%e", &v);
printf("%f\n", v);
0601デフォルトの名無しさん
NGNGマニュアルを見ないところが拙い。
scanf()系のフォーマットがprintf()系と互換性があると思っている時点でダメダメ。
0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGsscanfが変。
第一引数はメモリ上に配置された
char型へのポインタだぞ。
他、指数の表示も%fじゃなく、%eだ。
0604デフォルトの名無しさん
NGNG3行目以降はNG
0605デフォルトの名無しさん
NGNG%e → %le
0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG文字列定数が返すのはchar *じゃないのか?
0608600
NGNG変数のフォーマット指定をおろそかにするといけないのですね
0609デフォルトの名無しさん
NGNGfloatはdoubleに変換されるからprintfの時はどちらもlをつけないが、
scanfの場合はポインタを渡すから、、、ええと、うまく説明できないな(汗
同様に%dに対してchar*やshort*などを渡すのもまずい。
0610デフォルトの名無しさん
NGNG"%e" に対応するのは、float 型。
一部の処理系で、"%le" で double に対応しているものがある。
使ってる処理系のヘルプを見るべし。
0611デフォルトの名無しさん
NGNG0613609
NGNG0614デフォルトの名無しさん
NGNG嘘を書いているのは610。
自信がないならちゃんと調べよう。
0615デフォルトの名無しさん
NGNGどこがウソなん ?
0616デフォルトの名無しさん
NGNGこのあたりでは?
つまり、一部処理系独自の拡張みたいに云うな、と。
0617デフォルトの名無しさん
NGNG0618Kusokabe Youichi
NGNG>なんかこのスレ、fjみたいになってきたな。
と思いたいのですね? :p
0619デフォルトの名無しさん
NGNG構造体のメンバにconstを付けた場合
どうやって初期化すればいいんでしょうか
0620デフォルトの名無しさん
NGNG通常のconst変数同様に初期化すればいい。
const int cOneConst = 3;
struct SomeStruct {
const int anyMember;
double otherMember;
} myStruct = {3, 3.14};
0621デフォルトの名無しさん
NGNGわざわざ、定数を構造体に入れるとは
どういうソースだ?
利用法がわからん。
0622デフォルトの名無しさん
NGNG利用法は考えてなかったけど出来るのかなーって思って
0623デフォルトの名無しさん
NGNGテーブルを作るときに使います。
配列になるけど。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNGポインタ本やらK&R本やら基礎は頭の中に入ったと思うんです。
が、ここからどうしていいかわからない。
今まで学習した内容では何も出来やしないような気がして。
API叩きまくればできる、とかそういうんじゃなくて・・・。
とにかく、暗礁に乗り上げています。
どうか我が行く道を照らしてください・・・センセー。
0627デフォルトの名無しさん
NGNG何か作ればいいじゃん。
何作ればいいかとかは自分で考えてね(w
0628デフォルトの名無しさん
NGNGん ? "%le" って ANSI で規定されてるのか ?
C99 では規定されてるみたいだけど。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGこれからが本番なんだyo
言語を一通り理解するのは土俵に立つ程度のことっス
0631デフォルトの名無しさん
NGNG既存のソフトを改造してみるとか
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNGてーか、程度の低いウィルスなら、
簡単。
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNGK&R には、"%le" なんかありませんでしたが、何か ?
0637デフォルトの名無しさん
NGNG> 程度が低くなくても簡単。
こう言う奴は、大体何もできない奴。
0638デフォルトの名無しさん
NGNG2chはどこまで
ウィルスの話OKなの?
てか、一応禁止だし。
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGlとeを分けて考えれば分かりそうなものだけど。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/sscanf.3.html
http://www.bohyoh.com/CandCPP/C/Library/fscanf.html
0641デフォルトの名無しさん
NGNGint fd1;
char buffer[1000];
fd1 = open("data.c", O_RDONLY);
read(fd1, buffer, 1000);
puts(buffer);
close(fd1);
}
関数opを実行するとdata.cのなかの一部分しか表示されません。
全部表示するにはどうしたらよいでしょうか?
0642デフォルトの名無しさん
NGNGバッファをもっと多くとる。data.cに'\0'を含まないようにする。
ところで、(UNIXの)readは末尾に'\0'を付加したりしないよ。
0643デフォルトの名無しさん
NGNGてーか、
readで読み込むのに賛成しない。
while(fguts(buffer,1000,fd1)!=NULL)
fputs(buffer,fd1);
なら大丈夫。
0644デフォルトの名無しさん
NGNGgetとputが混ざっているぞ
0645644
NGNG0646デフォルトの名無しさん
NGNGfputs(buffer,stdout);
0647641
NGNG課題があってreadを使わないといけないんです。
>>642
文字数は少ないので、バッファはこれで十分だと思います。
data.cに\0を含まないようにするには
どうしたらいいのですか?
使ってはいけない関数とかありますか?
0648デフォルトの名無しさん
NGNGif ((n = read(fd1, buffer, 1000)) > 0) {
write(1, buffer, n);
}
0649デフォルトの名無しさん
NGNGbuf と書いてあるのを C のソースでよく見かけるのですが、なにか歴史的な理由でもあるのですか?
自分は buff とか buffer と書いてきたので。
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNGの所でWarning: 'b' used before setと出ます。
どうしたら正常にコンパイルできますか?
#include <stdio.h>
static int a;
static int sum;
int plus(void);
int minus(void);
int kakeru(void);
int waru(void);
main(){
char b;
puts("数字を入力");
scanf("%d",&a);
puts("演算子を入力");
scanf("%c",b);
以下略
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNGなんでbに&がついてないの
0654デフォルトの名無しさん
NGNG> K&Rでそう書いてあったから。
そうなのか。
creat 見たいなもんかな(微妙に違うか、、、
0655デフォルトの名無しさん
NGNGどうでもいいけど関数のネーミングセンスどうにかせーよ。
あと、aとかsumは本当にグローバルじゃないとだめなのか。
0656651
NGNGありがとうございました。
以下のプログラム(>>651の続きです)のコンパイルはできたのですが、
実行したとき演算子入力の所で、
入力できずに終わってしまいます。
どうすれば自分が意図したとおりになりますか?
main(){
char b;
puts("数字を入力");
scanf("%d",&a);
puts("演算子を入力");
scanf("%c",&b);
if(b == '+')
{plus();}
else if(b == '-')
{minus();}
else if(b == '*')
{kakeru();}
else if(b == '/')
{waru();}
else if(b == '=')
{printf("%d", &sum);}
}
0657動画直リン
NGNG0658651
NGNG英語苦手なので、単語が思いつきません。
一応、aもsumもグローバルでないとだめなようなプログラム
を作ったつもりです。
0659デフォルトの名無しさん
NGNG0660くりえいとりす
NGNGみたいなやつで、低水準のフォルダ作成関数をキボヌン。
0661デフォルトの名無しさん
NGNG> 英語苦手なので、単語が思いつきません。
mult(), divide()
> 一応、aもsumもグローバルでないとだめなようなプログラム
> を作ったつもりです。
んなわきゃーない。
0662デフォルトの名無しさん
NGNGmkdir()
0663くりえいとりす
NGNG0664デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNG> でも、グローバルでも作れますよね?
できるからやりゃあいいってもんじゃない。
まともなプログラム作りたかったら、グローバル変数を濫用するな。
0667
NGNGfloat f;
こんなコードがあったとして、文字列ssを変数に変換して
fに代入することは出来ますか?
関数でスマートにやる方法があったらぜひ教えて下さい。
0668デフォルトの名無しさん
NGNGf = atof("123.45");
スレ違い。
0669647
NGNGファイルを正常に開けたならば
バッファを標準出力に書き込むって意味ですか?
それをすることとによって何がどうなるのですか?
0670デフォルトの名無しさん
NGNGread()のマニュアルなりヘルプなり読め。
0671デフォルトの名無しさん
NGNG何の話 ? 特定環境のヘルプ示されても困るんだが。
>>641
そもそも read() で読んで、puts() するのが不自然。
read() は、基本的にはバイナリを相手にしてるから、それをそのまま出力したいなら、write() にすべし。
と言うことを >>648 は言いたいんだと思う。
ただ、>>669 の
> バッファを標準出力に書き込むって意味ですか?
の発言が、非常に不安。アンタ puts() の仕様わかってんの ?
0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNG自分の知らないものは環境依存と決め付けるとは救いがたいアホだ
0674デフォルトの名無しさん
NGNG「変換指定子e,f及びgに対応する実引数が、float型へのポインタではなくdouble型へのポインタであるときにはlを」
K&Rの中で明確にそんなものはないと書かれているならまだしも、あれはあくまでも教本なんだから規格を何から何まで網羅しているとは思えないよ。
0675デフォルトの名無しさん
NGNG> こう言う奴は、大体何もできない奴。
こう言う奴は、大体何もできない奴。
0676デフォルトの名無しさん
NGNG0677名無しさん@Emacs
NGNGint foo _((int arg));
のように _()で囲むのはどういう意味ですか?
0678デフォルトの名無しさん
NGNG_ が何かのマクロになってんじゃないの?
標準ヘッダの中では使われてる事はあっても、
そんなもん自分のプログラム内で使っちゃダメよ。
0679デフォルトの名無しさん
NGNGK&R対策だったかな?
0680デフォルトの名無しさん
NGNG#include <stdio.h>
main(){
int a,rnd=6;
while(){
printf("数を当てたまえ。");
scanf("%d,&a");
if(a<rnd){printf("もっと大きい\n");continue;}
if(a>rnd){printf("もっと小さい\n");continue;}
if(a==rnd){break;}
}
printf("正解!");
}
0681デフォルトの名無しさん
NGNG0682名無しさん@Emacs
NGNG/usr/include 以下をgrepしてみて見付けられませんでした。
find /usr/include -type f | xargs grep ' _('
どのヘッダで定義されてるのですか?
0683デフォルトの名無しさん
NGNG0684681
NGNG0685デフォルトの名無しさん
NGNG突っ込み所満載だな
0686デフォルトの名無しさん
NGNGんなもん知らん。
こっちの GCC ではそんなマクロ使われてないし。
0687682
NGNG# define _(Args) Args
#else
# define _(Args) ()
#endif
>>686
すいません。標準ヘッダではなく普通に定義されてました。
>>677
そうみたいですね。
0688デフォルトの名無しさん
NGNGstruct Num{int iti[10];}zyuu[10];
int main(void)
{
int i,n;
for(i=0;i<=9;i++)for(n=0;n<=9;n++)zyuu[i].iti[n]=i*10+n;
for(i=0;i<=9;i++)for(n=0;n<=9;n++)printf("%4d",zyuu[i].iti[n]);
getchar();return 0;
}
上プログラムの構造体を
struct Num2{int zero,int one,int two int three int four
int five,int six,int seven,int eight,int nine}zyuu[10];
とした時、同じ値をスムーズに与えるにはどうすればよいのでしょう。
下の構造体にしたい理由は、配列番号だと、メンバのどこにどれが入っているか
分からなくなる時があるからです。enumとかありますが、じかに出来ればいいなと。
0689デフォルトの名無しさん
NGNGあんまりきれいな方法はないかなあ。
struct Num tmp = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (i = 0; i < 10; i++) {
zyuu[i] = tmp;
}
てなかんじかね。
0690デフォルトの名無しさん
NGNGlinuxを勉強するのが先でしょうか?それともパイソン?C?
最短でハカーになりたいので、迅速な回答お願いします。
(ネットワークは無駄だと最近気づいたので)
0691デフォルトの名無しさん
NGNGマジレスしてみると、最短なんてものはない。
ハカーに王道なし。ただソースと戯れ、たくさんプログラムを書き、
他人の技術を盗み、精進するのみ。
とか書くといかにも求道者風で苦痛の道のりみたいに見えるけど、
ハカーと呼ばれる人たちはそれが楽しいからやってるだけだ。
「最短コース? なんでいろいろ寄り道して楽しまないんだ? もったいないしつまらんじゃないか」
何をやればいいか? などと楽する道を人に聞いてるようじゃハカーには向いてないよ。
ハカーになるべくしてなるやつはそんなこと考えずにどんどん技術を身につけていくものだ。
0692デフォルトの名無しさん
NGNG>最短コース?
高校生のハカーとかかっこいいじゃないですか。。。
日本の餓鬼なんかに負けるかゴルァ!!って気持ちがどうも働くんですよね。
いや、もちろん私も日本人なんですが。
>何をやればいいか? などと楽する道を人に聞いてるようじゃハカーには向いてないよ。
そうですよね・・・ベクトルがhack=カッコイイ→若いともっとカッコイイからきてるのです。
ハカーになる目標を5年後から7年後に移動します。
7分で書いた>>691さんに感謝です。
0693デフォルトの名無しさん
NGNGありがとうございました。
0694デフォルトの名無しさん
NGNGおいおい、青少年っつーか少年じゃないか。
だったら若さを活かして他人のプログラムを読み捲くれ。
その中から自分に合ったものを見つけて、自分流に何度も書いてみろ。
それからいろんな知識を身につけろ。数学は勿論、どんな知識でもいい。
プログラミング技術と知識を味方につければハッカーも夢じゃないぞ。
#そしてそれらはハッカーにならなくても役に立つしな。
0695デフォルトの名無しさん
NGNGついでに一般常識も勉強するように。
ハカーじゃなくてクラカーになっちゃ駄目よ。
0696デフォルトの名無しさん
NGNGこれも読んどけ。(いろいろ文句があるけどそれほど外れちゃいない)
http://cruel.org/freeware/hacker.html
0697デフォルトの名無しさん
NGNGQ: Windows ソフトのことで困っています。助けてもらえますか?
はい。DOS プロンプトにいって、「format c:」とタイプしましょう。ものの数分で、困っておいでの各種問題は消滅することでしょう。
こういうのってどうなんだろ(´∀`;)
もしも知らない人がこれで助かると思って実行したら
0698デフォルトの名無しさん
NGNGこの時点でネタ決定 「十分な」がなければいいんだが。
0699デフォルトの名無しさん
NGNG同意。マークアップ言語はプログラミング言語ではないからね。
0700デフォルトの名無しさん
NGNGlong min = LONG_MIN;
long max = LONG_MAX;
long tmp = min - max;
としたときのtmpの値は?
1.シラネーヨ(不定)
2.そもそもそんな計算すんじゃねぇゴルァ!
0701デフォルトの名無しさん
NGNG英語も勉強シル!
何か Unix/Linux 系の手頃なソフトを決めて、ソースを完全解読。
dev 向けのメーリングリストに入る。
パッチを投げる。
スーパーハカーへの第一歩。
0702デフォルトの名無しさん
NGNG実はエンジニアの底辺を支えてる人だったりするのだ。
勉強する順序みたいのが知りたかったのです。
Python→linux→Perl→C→他の言語 の順番で覚えようかと思います。
>>696
ありがとうです。そことwww.hackerslab.orgはお気に入りに入ってたりします。
スレ違いスイマセンでした(^^
0703デフォルトの名無しさん
NGNGその通り!英語大事あるよ。
英語やっときゃよかったと後悔することしかり。RFC くらい辞書なしで読んでみたい(恥。
0704デフォルトの名無しさん
NGNG言語が全くできないんですよ。
わけもわからずMLに入ってきますw
0705デフォルトの名無しさん
NGNGぐちゃぐちゃ言ってるけど、ANSI で定義されてんの ?
定義されてるなら、ソース出してくれ。
それとも、C99 って話か ?
>>637=>>675 か ? つまんね。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG引用したところで疑うだけだろうし。
0708デフォルトの名無しさん
NGNGsizeofで測ったら4バイトだったけど
0709デフォルトの名無しさん
NGNG何バイトかは処理系依存 ただしintより小さくなることはない
で、32bit以上はかならずある。
0710デフォルトの名無しさん
NGNGANSIで決まってたか?
0711デフォルトの名無しさん
NGNG決まっています(怒)
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNGANSI規格で決まった。
それ以前の処理系については保証はない。
0714デフォルトの名無しさん
NGNG1バイトが16ビットの環境だったら4バイトで64ビットじゃん。
とか言ってみる。
0715デフォルトの名無しさん
NGNGアフォですか ?
>>707
結局ソースはだせないのか ?
章 - 節 ぐらい書けるだろ。
0716デフォルトの名無しさん
NGNGおい、アフォ。
JISのCもISOのCもANSIそのまんまだぞ。
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGスレ違い
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNG何か「C言語でもmainから始まらない場合もある」とかいう話でも
聞いたのか?
0721お祭りですよ
NGNG特定のベンチマークを行った場合、不当に好成績が出せるよう
意図的な描画品質の操作が行われていたことが明らかになりました。
本スレ
【インチキ】東芝S7マジ死亡!【偽装】
http://pc3.2ch.net/test/read.cgi/mobile/1054292029/
◇dynabook SS S7 問題のスレッド◇
http://pc.2ch.net/test/read.cgi/pcnews/1054387292/
関連記事
「3DMark2001で測定したら、GeForce4 Ti4200並みのパフォーマンスを出している」
http://www.zdnet.co.jp/news/0305/02/nj00_ss7xp4.html
http://www.zdnet.co.jp/news/0303/12/nj00_centri_toshiba.html
3DMark2001のファイル名をリネームするとスコアが下がるXP4
http://pc.watch.impress.co.jp/docs/2003/0530/ubiq7.htm
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG#pragmanko function(memset)
と書くと上記の場合でも速くなる。
って事にさっき気付いた。
気にする程の事ではないが・・・
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNGおれは「データが4バイトアラインメントされてないと」の中の「データ」とは
何をさしているのかが知りたい。
0727デフォルトの名無しさん
NGNG第一引数のアドレスが4の倍数とか?
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNG0730724
NGNG第一引数のアドレス値です。スマソ
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNGマクロ定義によって、実際の値を変更したくて下記のように書いたのですが
思ったとおりにいきません
#define HOGE(a) tenkaigo_##a
#define AHYA ahyahya
#define HOGEHOGE HOGE(AHYA)
定義されてほしいのは tenkaigo_ahyahya
実際には引数は展開されず tenkaigo_AHYA が定義されます
下記は確認のソース
#include <stdio.h>
int main()
{
int HOGEHOGE;
// printf("%d", tenkaigo_ahyahya); //
printf("%d", tenkaigo_AHYA); //
}
実際には値じゃなくて予約語をマクロ展開で置き換えたいので、#if などで使えるマクロじゃなきゃだめなのです
(代行手段は他にありません)
何かうまい方法はありますか?
0735デフォルトの名無しさん
NGNG0736734
NGNGはい、内容が C 部分だけなのでこちらで質問させていただきましたが、
実際には C++ で
#if -ライブラリのヘッダを読み込み中なら TRUE -
#define INTERNAL private
#else
#define INTERNAL public
#endif
としたいのです。で、ヘッダもソースも書き換えずに
ライブラリのヘッダをインクルードしているのか、
今コンパイル中のソースに関連深いヘッダをインクルードしているのかを
マクロでうまいこと定義したいんです。
0737デフォルトの名無しさん
NGNGそんなもの置き換えるなばか。
0738デフォルトの名無しさん
NGNGそれは設計を見直したほうがいいんじゃないのか?
0739デフォルトの名無しさん
NGNGたまに結果が-1.#INDOO
となってしまいます。これはどういう意味なんですか?
是非教えてください。よろしくお願いします
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGint value;
struct hoge* next;
};
ってのは出来るけど
typedef struct {
int value;
hoge* next;
} hoge;
っていうのはできません。
リスト要素の構造体を typedef で作るにはどうしたらよいのですか?
0742デフォルトの名無しさん
NGNGボックスミュラーで乱数を正規乱数にして
いろいろ演算しました。した演算は正規乱数をa,bとして
log(exp(a)/exp(b))をとってその平均分散を計算しただ
けなんですけど・・・
何がまずいんですかねえ・・・
いつも-1.#INDOO ってでるわけじゃないんですけど。
0743taku
NGNG#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <io.h>
#include <string.h>
#include <stdlib.h>
int main(){
int pid;
int rtc;
int i;
int h = 1;
int status;
while(h){
printf("何をしますか?\n");
printf("1:アドレスブック、2:四則演算、3:終了");
scanf("%d",&i);
if(i == 0){
h = 0;
continue;
}
0744taku
NGNGswitch(pid){
case 0:
if(i == 1){
rtc = execl("assressbook",NULL);
exit(0x00ff);
break;
}
else if(i == 2){
rtc = execl("calc",NULL);
exit(0x00f);
break;
}
case -1:
printf("fork error");
break;
default:
wait(&status);
printf("status : %d\n", status);
break;
}
}
return 0;
}
0745taku
NGNG以下の部分は子プロセスといわれると思うのですが、
どういう意味で「子」なのですか?
case 0:
if(i == 1){
rtc = execl("assressbook",NULL);
exit(0x00ff);
break;
}
else if(i == 2){
rtc = execl("calc",NULL);
exit(0x00f);
break;
}
0746taku
NGNGどういう意味で「親」なのですか?
case -1:
printf("fork error");
break;
0747taku
NGNGなぜforkを使う必要があるのかがわかりません。
forkを使うことによってどういった利点があるのでしょうか?
0748taku
NGNG-1、子プロセスのプロセスIDが返されるのですか?
いろいろ質問して申し訳ありませんが、
ぜひ教えていただきたいと思います。
よろしくお願いいたします。
0749デフォルトの名無しさん
NGNG・fork()→鼻を押す
・自分の鼻が丸ければ0が返る。
・本物にはコピーロボットのIDが返る
・コピーロボットがニセモノだったらfork失敗で-1が返る
で、親は本物のミツ夫。
0750デフォルトの名無しさん
NGNGしばらくタグ名付きの定義使ってないので怪しいけどこんな感じで…
typedef struct _tag_hoge{
int value;
_tag_hoge* next;
} hoge;
0751デフォルトの名無しさん
NGNG親は default のブロックだよん。
>>747
親は子の終了を待ってるから system() でも良いような…
fork() の例題作りたかったんじゃない?
0752デフォルトの名無しさん
NGNGよくわからんが、-1.#INDOO になったときの a, b の値を見てみ。
0754デフォルトの名無しさん
NGNGこれだと next の型が hoge* ではなく struct _tag_hoge*になってしまうです。
0755ヽ(´ー`)ノ
NGNGtypedef struct _hoge hoge;
struct _hoge {
int value;
hoge* next;
};
0756デフォルトの名無しさん
NGNGタグに違う名前を付ける必要は無いですよね?
0757ヽ(´ー`)ノ
NGNG0758デフォルトの名無しさん
NGNGコンパイルとおるのは知ってます。
タグ名を区別する理由を知らないので、聞いてみたのです。
0759デフォルトの名無しさん
NGNGint value;
struct hoge *next;
} hoge;
これでできなかったっけ?
0760デフォルトの名無しさん
NGNGstruct _tag_hoge*になったら何か問題があるのかと小一時間問いつめたい。
0761デフォルトの名無しさん
NGNG>>755とどっちが見やすいかなぁ?
typedef struct _hoge {
int value;
struct _hoge* next;
} hoge;
0762デフォルトの名無しさん
NGNG二文字目が大文字でなければいいんだっけ?
0763デフォルトの名無しさん
NGNGボーランドのコンパイラ使ってるけど
警告された事も無いと思う
2文字目大文字にしても同じだった
てっかウィンドウズ関係のヘッダ見てたら
typedef struct _AAA {
int bbb;
} AAA, *AAA;
見たいな書き方たくさんあったよ
0764デフォルトの名無しさん
NGNG0765ヽ(´ー`)ノ
NGNG0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG処理系依存の予約語(マクロなども含めて)だからいいの。
0768767
NGNG0769767
NGNG0770デフォルトの名無しさん
NGNGC99 ってわざわざ書いてくれてるんだから、仕様書読めよ。
0771デフォルトの名無しさん
NGNGC++を睨んで変えてるんじゃないの?
0772デフォルトの名無しさん
NGNGvoid * にしちゃダメなのか?
/* 注:全角空白あるからそのままコピペするなよ! */
typedef struct
{
int value;
void *next;
} hoge;
0773デフォルトの名無しさん
NGNGC++だって問題なし。
typedef struct hoge hoge;
があればtypedefされたhogeが優先されるけど、
なければstructを省略したhogeが使われる。
0774デフォルトの名無しさん
NGNGデスマの香り…。
0775デフォルトの名無しさん
NGNGそりゃだめだろ…
nextを参照するときにいちいちキャストすんのか?
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG激しく既出。
0778デフォルトの名無しさん
NGNG俺の777を返せ
0779デフォルトの名無しさん
NGNG1回の走査であるメンバが最も小さい(大きい)構造体を見つけてmallocして…
というバブルソート的なものしか思いつかないのですが。
0780デフォルトの名無しさん
NGNGマージソート
0781デフォルトの名無しさん
NGNGダウンロードしたのですが、それからどうすればいいのか
わかりません。誰か教えてください。
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGパッケージに含まれるドキュメントを読め。
それからぐーぐるにきけ。
話はそれからだ。
0784デフォルトの名無しさん
NGNG330?
CPadも一緒にDLして、CPadから起動すると結構自動的にやってくれる感じで楽ではあるよ
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG>ダウンロードしたのですが、それからどうすればいいのか
>わかりません。誰か教えてください。
素人なら、まずLinuxをこんぴうたにインストールしろ。
そうするとgccが使えるようになる。
... まあ、Windowsが使えなくなることもたまにあるが、
CD boot linuxでgo.
0787デフォルトの名無しさん
NGNGお呼びでしょうか?
0788デフォルトの名無しさん
NGNG漏れとしては、perlで作った方が作業効率は早そうに100XML。
正規表現とかに強いし、何なら連想配列もある。
まあ、phpで組めばもっとえげつないものもできるけどな。
0789デフォルトの名無しさん
NGNG0790781
NGNGどうもありがとうございました。
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNGPHPって直接タグ抜く関数もあったね。
0793デフォルトの名無しさん
NGNG使い方の問題。
タブーではない。
gotoの扱いは注意すべきです。
gotoを初心者(無知な人間)が使うと大変です。
gotoは初心者は使っては逝けません。
gotoは使っては逝けません。
となっているだけ。
0794デフォルトの名無しさん
NGNG残念でしたね
0795デフォルトの名無しさん
NGNG漏れがことごとく就職に失敗したのはそのせいだったのか…
0796デフォルトの名無しさん
NGNG可哀相に
0797デフォルトの名無しさん
NGNG入力が正しくない場合は再度入力を求める処理は以下で間違っているでしょうか?
何も入力しなくても文字数の限度を超えてもスルーされてしまうのですが…
printf("項目「ID」の値を入力してください。\n");
while(fgets(p->ID, 5, stdin) == NULL)
printf("入力が不正です。もう一度入力してください。\n");
0798デフォルトの名無しさん
NGNG間違っている。
何も文字を入力しない場合でも改行を入力するので、
p->ID に "\n" が入れられて fgets 成功。
文字数の限度を超えても fgets は失敗しない
(残りは次の fgets の時に得られる)ので、fgets 成功。
よってどちらの場合においても NULL は返ってこない。
入力された文字をチェック汁。
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG今、 データがいくつかあるかわからないので
リスト構造体
typedef struct node{
xmlChar *agent_name;
struct node *next;
};NODE
って作りました。
0802デフォルトの名無しさん
NGNG{
NODE *head;
NODE *p;
*head = NULL;
子ノードへ移る作業を行い
while(cur != NULL){
cur = cur -> xmlChildrenNode;
if(!xmlStrcmp(cur->name,(const xmlChar *) "name" )){
p=malloc(sizeof(NODE));
if(!p){
エラー処理
p ->agent_name=xmlNodeListGetString(doc, cur->xmlChildrenNode,1)
p -> next = head;
next = p;
}
cur = cur -> next;
}
}
return 0;
}
と作ったのですが、 おかしいとこありますか?
0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG> *head = NULL;
間接参照していいのか?
0805デフォルトの名無しさん
NGNG> };NODE
セミコロンの場所が
>>802
> , node NODE)
おいおい
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGC言語ってのは、コンパイラによっては、ソースコードにC++の構文を
用いてもエラーにならない。
「C++で書いてます」というコードも、実は殆どC言語特有のむかーしの
伝統的なgets()やputs()関数ばかりで
printf()や<<をあまり使わないコードでもコンパイルが通る。
0809デフォルトの名無しさん
NGNG引数がわからん・・
0810デフォルトの名無しさん
NGNG型名と変数名の区別はついている?
0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNG何百文字入力されようとfgetsが成功してしまうのなら
入力された値が4文字以内かどうかをチェックするには
どうすればいいんでしょうか??
0813デフォルトの名無しさん
NGNGまた最初からはじめるプログラムを書きたいのですが
goto文以外のやり方がわかりません
教えてください
0814デフォルトの名無しさん
NGNGそれでいいんじゃないの?}
0815デフォルトの名無しさん
NGNGfgetsは
・指定されたサイズに達した
・\nが現れた
・EOFに達した
のどれかまで読んでreturnする。
だから、規定の文字より一文字多く読んで
・EOFに達した(fgetsの値がNULLだった)場合
・文字列の末尾が\nだったら、規定の文字数である
・そうでない場合、strlenで規定の文字数以下であるか判定する
・EOFでなかった場合、文字列の末尾が\nだったら規定の文字数である
というふうに判定するかな。文字列の末尾が\nだったら、は文字列に\nが含まれていたら、でもいい。
0816デフォルトの名無しさん
NGNG行おうと思うのですが、配列を用意してもフラグにしか使わないので
1ビットずつ使いたいんです。そこで調べてみたら、ビットフィールドとか
なんたらをマスクして、とかあったんですけど、いまいちよく分かりませ
ん。要するに、中身がそれぞれ1ビットずつの配列を作るにはどうすれ
ばいいのか教えてください。できれば、ソース付で・・・・
0817デフォルトの名無しさん
NGNGビット演算するなら、そのまま ビット演算し使った方が早いよ。
0818デフォルトの名無しさん
NGNG素通りしてしまうことがあるのはなぜなんでしょうか?
fgets();
fgets();
・・・
と5つくらい入力を続けるのですが、一番上のfgetsだけ素通り、
2つ目からは正常に入力受付のカーソルが出ます。
こんなことってありますか?
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNGいえ、全て定数で1以上なのです。
0821デフォルトの名無しさん
NGNG0822818
NGNGどれも最低でも5以上です。いろんな箇所でfgetsを並べて使ってますが、
どれも一番上や単独使用の場合は素通りされて、2つ目以降は入力を求められます。
0823818
NGNGif(・・・)
・・・
else
・・・
でifの処理が実行された後にelseが実行されたりするし…どーなってんだ
もう何がなんだか・・・
0824デフォルトの名無しさん
NGNG0825818
NGNGerror2が出た(文字数制限を越えた)場合、ループの最初に戻って
またfgetsに来るんですが、ここで勝手に値が入力されて先に進んでるようなのです。
溢れた分が勝手に入力されてるんでしょうか?これを防ぐ手段はないでしょうか?
printf("値を入力してください。(最大3桁)\n");
while(1){
if(fgets(buf, 7, stdin) == NULL)
printf("error!もう一度入力してください。(1)\n");
else{
if((np = strchr(buf, '\n')) == NULL){
printf("error!もう一度入力してください。(2)\n");
}
else{
*np = '\0'; /* '\n'を'\0'に置き換える */
break;
}
}
}
0826デフォルトの名無しさん
NGNGmain()
{
int x;
printf("Are you 2chner? Yes:1 No:2\n");
scanf("%d",&x);
switch(x){
case 1:
printf("You are 2chner!\n");
break;
case 2:
printf("You are'nt 2chner\n");
break;
return(0);
}
}
0827デフォルトの名無しさん
NGNG戦略ミス。
fgets()で読めなかった文はバッファに残るので、読み捨てる必要がある。
なので、いっそ丸々読みこんでから判断する方がいい。
0828818
NGNGどうもです。バッファに残った分は次にユーザ入力を求める場合に
勝手にそれを入力としてしまうということですか。
しかしプログラムで最初にfgets()が呼ばれた時にスルーされてしまうのは
何故なんでしょう・・・その前にはscanf()による整数の入力しか行ってないんですが。
丸々読むにしても、読み込む配列に制限があるので
出来ればバッファを読み捨てる方法を教えていただけないでしょうか。
0830デフォルトの名無しさん
NGNGだからscanf()は使うなとあれほど・・・
0831デフォルトの名無しさん
NGNGlongjmp
とか?
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNGsscanf()
atoi()
など
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG検索してくり。
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNG#include <limits.h>
void set_bit(unsigned char *buf, int index, int value) {
unsigned char *p = &buf[index / CHAR_BIT];
if (value)
*p |= (1 << index % CHAR_BIT);
else
*p &= ~(1 << index % CHAR_BIT);
}
int get_bit(unsigned char *buf, int index) {
return buf[index / CHAR_BIT] & (1 << index % CHAR_BIT);
}
こんな感じかな。テストしてないよ。
0840デフォルトの名無しさん
NGNG補足。配列のサイズ(保持するbitの数)をNとすると、
確保すべきunsigned charの配列aのサイズは、
unsigned char a[N / CHAR_BIT + 1];
ね。
0841デフォルトの名無しさん
NGNG即レスまじ感謝です。そこで、申し訳ないんですが使い方を教えていた
だけるとうれしい次第であります。なにぶんCは初めてでして
0842デフォルトの名無しさん
NGNGそんなに難しくはないと思うんだが、使い方がないとやっぱりよくわからんかw
まず、情報を保持するバッファを用意する。これはunsigned charの配列でとる。
大きさは>>840参照。
んで、インデックスiのビットを1にしたいときはset_bit(a, i, 1);ってやる。aはバッファね。
同様にビットを0にしたいときはset_bit(a, i, 0);ってやる。
インデックスiのビットがセットされてるかどうかをチェックしたいときは、
get_bit(a, i);ってやる。0が反ってきたらセットされてない、それ以外のときはセットされてる(1でないことに注意)。
使用例
#define N 100 /* 保持するbitの数 */
void print_bit(unsigned char *buf, int index) {
printf("index %d: ", index);
if (get_bit(buf, index))
printf("on\n");
else
printf("off\n");
}
int main(void) {
static unsigned char a[N / CHAR_BIT + 1];
set_bit(a, 5, 1); /* 5番目のbitをon */
print_bit(a, 5); /* どうなってるか出力 */
set_bit(a, 5, 1); /* 5番目のbitをoff */
print_bit(a, 5); /* どうなってるか出力 */
return 0;
}
0843818
NGNGscanf()でintに小さな整数を入力するだけならオーバーフローは
起こらないはずですよね?なのに何故かその後特定の箇所で
入力受付(fgets、scanf)がスルーされます。
(正常に入力を受け付ける箇所もある)
しつこくて済みませんがこの原因をどなたか教えてください。
C言語始めたばかりの頃演習やらでscanf使いまくりだったけど
こんなことに一度も出くわしたことないんですが・・
0844デフォルトの名無しさん
NGNGttp://www.catnet.ne.jp/kouno/c_faq/c12.html#18
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGだから scanf() は使うなよ。
代わりに fgets() と sscanf() 使え。
どうせ、"\n" がバッファに残ってるってことだと思う。
0848デフォルトの名無しさん
NGNG本当は1を足したり引いたりするためのものじゃないと聞いたのだが
0849デフォルトの名無しさん
NGNG聞いた本人に聞けば?
0850デフォルトの名無しさん
NGNG1足したり引いたりするためのものです。
0851850
NGNG0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNGそれを活用すると、最悪、最適化を阻害することもある。
まぁ、C++ を使う事があるなら、
演算子のオーバーロードする時は
++a の方が実装しやすいということだけは言っておく。
0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNGこれってどういう意味かわかりますか?
0856デフォルトの名無しさん
NGNGわかるけどそれがどうしたの
0857デフォルトの名無しさん
NGNGポインタのことを言ってるような気がするが、それならば気にする必要はない。
0858デフォルトの名無しさん
NGNG必要なメンバだけを持った似たような構造体を複数作るのどっちがいいと思う?
要はC++で言う継承をスマートな形でCで実現したいのだが。。。
0859デフォルトの名無しさん
NGNG・
・
fgets(line, sizeof(line), stdin);
・
・
for(p = line; *p; p++);
printf("Line size = %d\n", p-line);
・
・
というソースで、 for(p = line; *p; p++) のところがよくわかりません。*pというのが範囲なんでしょうか?
どなたかお教えください。
0860デフォルトの名無しさん
NGNG>オブジェクトによって使わないメンバもいくつか持つ構造体を1つ作るのと
>必要なメンバだけを持った似たような構造体を複数作るのどっちがいい
継承自体わかってないんじゃないかという気がする。
0861デフォルトの名無しさん
NGNG文字列の終わりまで処理したいんだろ
0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNG配列lineの内容が文字列だとしたら、最後に'¥0'(=0)があるわな。
for文の第2式が偽(=0)になればループが止まるから、そいつを利用
してるんだよ。日本語下手ですまん。
0865デフォルトの名無しさん
NGNGシェルスクリプトと同等のCのプログラムを作るにはどうしたらいいですか?
mkdirとかcdとかわかりません
0866デフォルトの名無しさん
NGNG何言ってるかわからん。
0867デフォルトの名無しさん
NGNGさぱーりわからん
0868デフォルトの名無しさん
NGNG標準Cでは無理
0869865
NGNGてことです
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNG#include <stdlib.h>
int main()
{
return EXIT_FAILURE;
}
0872デフォルトの名無しさん
NGNG0874865
NGNG意味不明ですみません
0875デフォルトの名無しさん
NGNGsystem
0876直リン
NGNG0877858
NGNG継承自体わかってない>それはない
お前の読解力か俺の文章化能力が足りないだけ
具体的に言うと3Dゲームで3Dモデルとビルボードが混在している
こんなとき両方とも描画オブジェクトの
派生クラスとしていっしょに管理したいだろ?
これをCでやるとき構造体を1つにまとめるのか?個別にしてをキャストで使い分けるのか?
お前等ならどうする?
0878デフォルトの名無しさん
NGNG素直にC++使う。
つうかCでやるなら基底クラスに相当する構造体を
派生クラスの構造体のメンバーに持たせちゃうかなあ。
typedef struct {
int boke;
char *vaka;
} base_class;
typedef struct {
base_class base;
long mona;
} delivered_class;
Cでは継承なんてあんまり考えんでプログラム組むからのう…
0879デフォルトの名無しさん
NGNG質問者の態度じゃないな(笑)
0880デフォルトの名無しさん
NGNGうに記述したらいいですか?
コンパイラはBorlandのフリーのbcc5.5です。
0881デフォルトの名無しさん
NGNGスレ違いです。
0882デフォルトの名無しさん
NGNG>unixコマンドのソースを教えてください
マジで ?
0883デフォルトの名無しさん
NGNGBSDやらLinux系ディストリは全部ソースがありますが?
それを全部ここに出力せいと?
0884デフォルトの名無しさん
NGNGと
scanf()
は何が違うのでしょうか?
0885デフォルトの名無しさん
NGNGよし、俺がやってやろう。
次スレの用意も頼む。
0886デフォルトの名無しさん
NGNG標準入力から読み込むこと以外、共通点はないよ・・・・
0887動画直リン
NGNG0888デフォルトの名無しさん
NGNG1〜10まで順番に足していくプログラムが解りません!
ソースお願いしますm(__)m
0889デフォルトの名無しさん
NGNGsum = n * (n + 1) / 2;
0890デフォルトの名無しさん
NGNGすいません!
コンパイラはcygwinです!
m(__)m
0891デフォルトの名無しさん
NGNG仕様を満たしていないから駄目。
1〜10までを足した値を得るのではなく、1〜10までを順番に足すプログラムでなければならない。
0892デフォルトの名無しさん
NGNGCygwinはコンパイラじゃねぇ!
0893デフォルトの名無しさん
NGNG{
1+2+3+4+5+6+7+8+9+10;
}
0894デフォルトの名無しさん
NGNG0895894
NGNG0896デフォルトの名無しさん
NGNG#include <string.h>
#include <stdlib.h>
#include <ctype.h>
void main(void)
{
char moji; /* 文字列の一時的な格納領域 */
int len;
int number; /* 変換後の数値 */
while(1)
{
printf("数値を6桁以内に入力して=>");
rewind(stdin);
scanf("%s",&moji);
len=strlen(moji);
if (len>=7)
{
printf("7桁以上です。\n");
}
if (!isdigit(moji))
{
printf("数値じゃありません。\n");
}
0897デフォルトの名無しさん
NGNGnumber=atoi(moji);
if(number>0)
{
printf("プラスです。\n");
}
else if(number==0)
{
printf("ゼロです。\n");
}
else
{
printf("マイナスです。\n");
}
}
}
エラーが
error C2664: 'strlen' : 1 番目の引数を 'char' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
error C2664: 'atoi' : 1 番目の引数を 'char' から 'const char *' に変換できません。 (新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
cl.exe の実行エラー
と出るんですけど分かりません
0898デフォルトの名無しさん
NGNG間違った!
GNU Cコンパイラだ!
1+2+3+4…
ちがーう!(゚А゚)
0899デフォルトの名無しさん
NGNG文字と文字列の区別がついてない
0900デフォルトの名無しさん
NGNG的確な指摘。
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905????
NGNGfor ( val=1; val<11; val++) {
ans += val;
}
0906デフォルトの名無しさん
NGNGmain()
{
int n,mushi;
printf("1から10までの整数を加算するプログラム\n");
for(n=1;n<=10;n++){
do{
printf("%d",n);
printf("を入力してください。数字以外の入力は動作を保証しません。\n");
scanf("%d",&mushi);
}while(n!=mushi);
};
printf("答は55です。");
}
0907デフォルトの名無しさん
NGNG少なくともコンパイル通る様にしろよ。
一目で分るぞ。
for(;;){};←なんだ?
0908デフォルトの名無しさん
NGNGハァ?
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG寝言はコンパイルしてから言え。
0911デフォルトの名無しさん
NGNG頼むからこうしてくれ。
#include <stdio.h>
main()
{
int n,mushi;
printf("1から10までの整数を加算するプログラム\n");
for(n=1;n<=10;n++){
do{
printf("%d",n);
printf("を入力してください。数字以外の入力は動作を保証しません。\n");
scanf("%d",&mushi);
}while(n!=mushi);
}
;
printf("答は55です。");
}
0912896-897
NGNGスマソ。
0913デフォルトの名無しさん
NGNGなんで?
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNGchar moji; → char moji[774];
scanf("%s",&moji); → scanf("%s",moji);
0916デフォルトの名無しさん
NGNG理由になってない
0917デフォルトの名無しさん
NGNGコンパイルは無事にとおるだろうし意図したとおりに動作はするだろう。
しかし通常そのような余計な;はつけないな。
0918デフォルトの名無しさん
NGNG不動小数点数の場合はオーバーフローしないのですか?
寝る前に作ったfloat型の変数をインクリメントし続けて、
インクリメント前の値と比較するテストプログラムが
いまだにCPUフル稼働で動きつづけてます。
ログを見ると274877906945.000000まで逝ってます。
0919デフォルトの名無しさん
NGNGそんなことは>>911の理由にはならないな。
0920デフォルトの名無しさん
NGNG{
while (*s1++ = *s2++)
;
}
これってs2がヌルぽになったら偽になるらしいですが何故???
0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNGint main()
{
int d,k,l,num[100][100],dan[100],sum,sumt,m,n,po;
/*d:段数 k:きざみ若しくは現在の段 num:データ配列 dan:各段の現在のポインタ*/
/*sum:合計 sumt:最大合計 m,n:予備 po:ポインタ位置修正用変数*/
-------------------------------中略---------------------------
/*以下、計算処理*/
for(k = 1;k <= d;k++){dan[k] = 1;}
for(l = 1;l <= 100;l++){
sum = num[1][1];
for(k = 1;k <= d;k++){sum = sum + num[k][dan[k]];}
for(k = 1;k <= d;k++){printf("%d",num[k][dan[k]]);}
printf("=%d",sum);
if(sum > sumt){sumt = sum;}/*ここまで正常*/
for(po = d;po >= 2;po--){
if(dan[po] = dan[po-1]){ /*異常*/
for(m = po;m <= d;m++){dan[m] = dan[m] + (po - m + 1);}
po = 1;
}
}
printf("\n");
}
printf("biggest = %d\n",sumt);
return 0;
}
d段のピラミッド上に並んだ数を右・左に一個ずつ移動しながら降りていき、
その道筋の合計値が一番高い物を求め、出力するプログラムなのですが・・・
異常と示してある部分で、if分に入る際にどうやらdan配列の中身が全て1に
戻ってしまうようなのです。(前後で出力して確認しました)これはどのような原因なのでしょうか・・・?
0923デフォルトの名無しさん
NGNG>if(dan[po] = dan[po-1]){ /*異常*/
= じゃダメでしょ。
0924920
NGNG意味わからん!
0925デフォルトの名無しさん
NGNGdo {
*s1 = *s2;
s1++;
s2++;
}while(*s1) コウナル
0926デフォルトの名無しさん
NGNGNULLとNUL文字を混同してる
0927デフォルトの名無しさん
NGNGl ::::::::::::::::::::;;;;;;i;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::: i i
i, ..::::: ○:::::::;;;;/;;;;;;;;;;;;;;;;;;;;:::::::::::::::::: ! /
i ..::::::::::::::::::::::;;;/;;;;;;;;;;;;;;;;;;;;;;:::::::::○:: i' /
'l, ..:::::::::::::::::::::::::::/|、;;;;;;;;;;;;;;;;;/::::::::::::::::: ,i' /
i, .::::::::::::::::::::::::::/::| ~"''''"/::::::::::::::::::: / /
' ., :::::::::::::::::::::::/:::::|'⌒`ヽ,/;:::::::::::::::::: / /
`・、., ::::::::::::::/;::::::,人,__,/;;;;;:::::::::::::://
~--‐ ' -''"_/
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGループ終了条件が違う
0933920
NGNGdo {
*s1 = *s2;
s1++;
s2++;
}while(*s2)
こうかな?
0934デフォルトの名無しさん
NGNGdo {
c = *s1 = *s2;
s1++;
s2++;
}while(c);
s1++されるのは条件判定後である点に注意
0935デフォルトの名無しさん
NGNG同意。そんなソースで作りつづけていたら、そのソースを見た人間が
for(〜;〜;〜){
};
を正式な構文として誤認識する恐れがある。
普通、コメントとかは別だが、動作に無関係なものは入れないように配慮する。
っていうか、いったいどうやったらそんなコード書くようになることやら...
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNGってみるけどこの引数って何すか?
どんな意味が?
0938デフォルトの名無しさん
NGNGgcc test.c -o test -O3
とかってやるよな?これはgccに色々パラメータを与えてるんだ。
プログラムを実行するときに、与えられたパラメータを読み込むのに使う。
argcは何個パラメータがあるか、char *argv[]はその内容だ。
以下を試してみてくれ。
#include <stdio.h>
int main(int argc,char *argv[]){
int i;
for(i=0;i<argc;i++){
printf("[%5d] - %s \n",i,argv[i]);
}
return 0;
}
$ ./a This is a pen.
[ 0] - ./a
[ 1] - This
[ 2] - is
[ 3] - a
[ 4] - pen.
0939デフォルトの名無しさん
NGNGコマンドの引数だろ。。
0940デフォルトの名無しさん
NGNG考えようだが、基本的に
if(a==0)a=10;
というような書き方してると、elseとの対応がわからなくなる可能性もあるので、
if(a==0){
a=10;
}
という書き方の方が望ましいかと。どうせコンパイルした結果は変わらないだろうし。
追加する時もうっかりミスが減るしね。
()は優先度をわかりやすくするときにも使うかな。
if ((a >= 0) && (a <= 10))とか。
0942デフォルトの名無しさん
NGNGint a=10;
if(a*i == 1)
printf("%d\n",a);
}
というようなfor文の中に、変数宣言をした時は
毎回変数の領域を確保するのか
それともコンパイラが最適化してくれるのかどっちなんでしょうか?
0943デフォルトの名無しさん
NGNG処理系依存
0944デフォルトの名無しさん
NGNGその場合、レジスタに直接割り当てられる「可能性」もある
0945デフォルトの名無しさん
NGNG8.000000e+001と出力されます
001の方の桁数を変更することはできないのですか?
ちなみに8.000000の桁数の変更はわかります
0946デフォルトの名無しさん
NGNG8.000000e+001と出力されます
001の方の桁数を変更することはできないのですか?
ちなみに8.000000の桁数の変更はわかります
0947デフォルトの名無しさん
NGNG指数部の桁数は処理系依存じゃなかったかな。
0948デフォルトの名無しさん
NGNG12345 → 54321
12300 → 321
0 → 0
という風に作りたいのですが、0の場所をどうすればいいかどうしても分かりません。
どなたか教えてくれませんでしょうか?
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG1.変換したい数値を文字列に変換
2.変換した文字列を反転
3.反転した文字列を数値に変換
これで OK
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNG反転したあと文字列の先頭から'0'判定して、
'0'の数だけmemmoveでもいんじゃない?
これなら何桁でもオーバフローしない。
あるいは、反転する前に1の位から上位に
判定していって、'0'以外の数字が見つかった
ところから処理をはじめるとか。
0954186
NGNG暗記じゃない。理解汁
0955918
NGNG帰って来て見たけど、まだ動きつづけてる。
ログによると、2199023255553.000000を超えているらしい。
インクリメントでfloatをオーバーフローさせるのは相当遠いらしい。
もぅやーめた。
0956デフォルトの名無しさん
NGNG0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGあーあ、いっちゃった。
0959918
NGNGfor(;;)
{
float y = x;
++x;
if( !( x > y ) )
{
// このときの x の値を調べたかったのです
}
}
0960デフォルトの名無しさん
NGNG浮動小数点数で遊ぶときは、ちゃんと例外処理を入れといた方がいいよ。
0961デフォルトの名無しさん
NGNGmain()
{
float f;
for (f=1.0 ; f+1>f ;f=f*2); ;
printf ("%e\n",f);
for(f=1.0 ; f+1>f ; f=f*2+1); ;
printf ("%e",f);
}
0962デフォルトの名無しさん
NGNGmain()
{
float f;
for (f=1.0 ; f+1>f ;f=f*2); ;
printf ("%f\n",f);
printf ("%f\n",f-1);
printf ("%f\n",f-10);
printf ("%f\n",f-1000);
printf ("%f\n",f-10000);
}
0963918
NGNG++とか--でこっそり数億かわってる・・・。
あぶねぇ。・・・アァ、アノコードシュウセイシナキャ・・・
0964デフォルトの名無しさん
NGNG浮動小数点数は一度に数桁しか表現できないから、
数が大きくなってくると 1 足しても何も起こらなくなっちゃうよ。
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNGgets が読み込む文字数を制限できなかったから
fgets で読み込む文字数を制限できるようにした、と。
よく知らないけど。
0967デフォルトの名無しさん
NGNGその2つの違いがよくわかりません。
どのように違うか、わかりやすく教えてください。
よろしくお願いします。
0968直リン
NGNG0969デフォルトの名無しさん
NGNGreturn → 関数の処理を終了する
exit() → プロセスの処理を終了する
0970デフォルトの名無しさん
NGNG>>2のリンクにあるホームページでgccって
どこでダウンロードすればいいんだ?
教えて君でスマソ。
0971デフォルトの名無しさん
NGNG> アホ丸出しの質問で悪いんだが
> >>2のリンクにあるホームページでgccって
> どこでダウンロードすればいいんだ?
> 教えて君でスマソ。
http://gcc.gnu.org/install/binaries.html
普通にダウンロードからいけたよ。
0972970
NGNGgccのHPのどこで、どのコンパイラをダウンロード
すれば一番良いのかと、聞きたかったんでつ…・゚・(ノД`)・゚・
0973デフォルトの名無しさん
NGNGOSによってちがう。
windows ならCygwin かMinGW。
0975デフォルトの名無しさん
NGNG何度も見直したんですが解らないので・・・凄い単純な見落としがあるかも知れないんですが。
/*if文と等価/関係演算子*/
#include <stdio.h>
main()
{
int a,s;
printf("整数を二つ入力して下さい\n");
printf("それらが満たす関係を示します: ");
scanf("%d %d",&a,&s);
if (a==s)
printf("%dは%dと等しい\n",a,s);
if (a!=s)
printf("%dは%dと等しくない\n",a,s);
if (a<s)
printf("%dは%dよりも小さい\n",a,s);
if (a>s)
printf("%dは%dよりも大きい\n",a,s);
if (a>=)
printf("%dは%d以上である\n",a,s);
if (a<=s)
printf("%dは%d以下である\n",a,s);
return 0;
}
0976デフォルトの名無しさん
NGNGエラーが出ますとだけ書いて、エラーの内容を書かないやつは
聞く気がないんですよね。
0977デフォルトの名無しさん
NGNGあれはC処理系じゃないのでこのスレで質問するのはスレ違い。
出てるのは文法エラーとかsyntax errorとかだろう。
下から2番目のifの条件式が変だぞ。
0978デフォルトの名無しさん
NGNG1.〜
2.〜 という感じで。
#include<stdio.h>
main()
{ char a[10];
int n,k,i,j,l,m,h,g;
scanf("%d %d",&n,&k);
for(i=0;i<n+1;i++)
if(i%2==1)
a[i]='*'; else a[i]=' ';
g=0;
if(n%2==0)
g=1;
for(i=0+g;i<n+g;i++)
for(l=0;l<k;l++)
{
h=0;
if(i%2==0)
h=1;
for(j=0+h;j<n+h;j++)
for(m=0;m<k;m++)
printf("%c",a[j]);
printf("\n");
}
}
おかしな出力結果になったら教えて下さい。ではお願いします。
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNGレポートを提出しなければいけないので。
0982デフォルトの名無しさん
NGNG宿題スレがあるのに、なんでわざわざここで?
0983デフォルトの名無しさん
NGNGスマソ。では移動します。
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG・0 && 1 || 1 : 真
・0 && (1 || 1) : 偽
・1 || 1 : 真
なんでしょうか。
どうにも理解できませんです。
0987デフォルトの名無しさん
NGNG> || 1
これだけで真
2
> 0 &&
これだけで偽
3
おいおい。
0988987
NGNG0989デフォルトの名無しさん
NGNGただそれだけのことだったのね。
ホンマすいません。
0990デフォルトの名無しさん
NGNGおいおい1と2の説明を合わせたら、1がわからなくなるだろ。
0991デフォルトの名無しさん
NGNG括弧で演算の順番を変えているじゃん。
0992989=986
NGNGこんなあほらしいこと聞いちゃってホントすいません。。。
0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG> とりあえず次スレ先頭に「C machineはCに非ず」を書くこと求む。
テンプレ追加
0997デフォルトの名無しさん
NGNGC言語なら俺に聞け! Part 〈57〉
http://pc2.2ch.net/test/read.cgi/tech/1053725121/
0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG--- 僕の後ろに1001はできる。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。