C言語なら俺たちに聞け パート0001
■ このスレッドは過去ログ倉庫に格納されています
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所 localtime()をつかったとき、オブジェクトは、自動的に用意されてるのですか? 自動的に解放されますか? 「オブジェクトへのポインタを返す」 http://www.bohyoh.com/CandCPP/C/Library/localtime.html 静的に確保された領域に格納されるので解放する必要はないです >>4 解放する必要はないということで安心しました。ありがとうございます! あ、思い出した Darwinのソースの中にあったから気になった >>11 Unixなどのシステムをかける言語です The C Programming Language プログラミング言語C という本がある >>11 Linux、FreeBSDなどのカーネル、ドライバーが殆どCで書かれています。 エキスパートCプログラミングを読むといっぱしになった気分になれます。 初心者は、独習C、初めてのC言語などお勧めです。 どす窓が一瞬開いて閉じちゃて結果がわからないんだけど、どうすればいいんだろう? VCだから? >>25 VCに限らずそういうもんやねん。リードキー的なものを最後に書いといたらええで。 >>25 VC?Ctrl+F5で実行すれば窓閉じる前にPAUSEが挿入されるよ コマンドプロンプトで、コマンドを入力して、Enterをおします 民主党「韓国で反日が盛り上がっていてヤバイ… そうだ! 秋田のシェールガスを日韓で開発しよう!」 http://engawa.2ch.net/test/read.cgi/poverty/1342227537/ 仙谷氏、韓国の“対日感情”高まりに懸念 民主党・仙谷政調会長代行は13日、「未来志向の日韓戦略協力」をテーマにした財団法人世界平和研究所の シンポジウムで基調講演を行い、12月の韓国の大統領選挙を前に、対日ナショナリズムが韓国国内で高まるこ とに懸念を示した。 仙谷氏「相当な鋭い言論によって、どうしても選挙を控えた、あるいは選挙があろうとなかろうと、政治の世界 がそこを無視できなくなる。政治家の仕事は、その種の過剰なナショナリズムに対して、どこまで踏ん張れるかと いうのが最大の問題、最大の課題だと考えています」 その上で、仙谷氏は「日韓相互がウィン・ウィンの関係を作るべきだ」として、ロシアの天然ガスやアメリカの シェールガス開発などを日韓共同事業体で行うことを提案した。 また、知的財産権の問題などで「日韓がある種の価値観を共有し、国際社会の中でリードするルール作りに積極 的に参加することが重要だ」として、日韓の連携強化の必要性を強調した。 http://www.news24.jp/articles/2012/07/14/04209493.html ウィンドウズパワーシェルで○○.cをコンパイルする方法を誰か教えて >>34 GCCかVisual C++ Express使えばいいです(”^-^) f(){ char a[8]="HOGE"; puts(a); } ↑これができるなら ↓これもできて然るべきなんじゃねえの? f(){ char a[8]; a="HOGE"; puts(a); } まあ表記としては a={"HOGE"}; のようにでもするべきだが。 これは前者でも char a[8]={"HOGE"}; こうあるべきだけどな。 /* >>40 */ #include <stdio.h> #include <string.h> f(){ char a[8] = "HOGE"; puts(a); } func(){ char a[8]; strcpy(a, "HOGE"); puts(a); } function() { char a[8] = {"HOGE"}; puts(a); } int main(void) { f(); func(); function(); return 0; } 【大赤字】 韓国万博にK-POPスターを呼んでも客が来ないため、チケット69円で投売り開始 http://engawa.2ch.net/test/read.cgi/poverty/1342528699/ 麗水エキスポ:1000ウォンの深夜入場券発行へ 麗水エキスポの入場者数が目標を大幅に下回っていることを受け、 韓国政府は1000ウォン(約69円)の深夜入場券を発行することを決めた。 http://www.chosunonline.com/site/data/html_dir/2012/07/17/2012071701101.html #define NON_OVERFLOW_SIZE 256 #include <stdio.h> #include <string.h> typedef struct STRING STRING; struct STRING { char c[NON_OVERFLOW_SIZE]; int length; }; void set_string(STRING *s, const char *p) { strcpy(s->c, p); s->length = strlen(p); } int main(void) { STRING a, HOGE; set_string(&HOGE, "HOGE"); a = HOGE; puts(a.c); printf("%d\n", a.length); return 0; } >>46 f(){ char a[8] = "HOGE"; puts(a); } これが静的変数じゃない場合は結局は代入するルーチンが入るんだから、 初期化じゃなくても同じようにできたっていいだろって意味なんだが。 >>49 char foo[] = "abcd"; ってのは char foo[] = {'a', 'b', 'c', 'd'}; の糖衣構文だ。この構文を見て判るように、構造体の初期化と同じである。 構造体メンバの直接代入ができないんだから、配列でできなくてもいいだろ。 構造体は代入できるだろ。 struct T a, b; b=a; 静的と動的の初期化は意味がまったく違うんだから、 動的の文字列が初期化できるなら 同じ方法でコピーできたっていいだろ。 初期化の時に展開されるルーチンを同じように使えばいいだけじゃん。 既に決まっている言語の仕様についてガタガタ抜かすスレにようこそ >>51 私の言っているのは、構造体全体の代入ではなく、メンバの直接代入だ。 つまり、これができないと言っている。 struct foo { int a, b; } bar; bar = {3, 4}; >>50 char foo[]={'a','b','c','d',0}の誤り。 二分探索木を利用するプログラム 探索、要素追加、要素削除 #include<stdio.h> #include<stdlib.h> #include<malloc.h> #define NODE_NUM 10 #define RAND_SEED 0x1031000 必要な関数・構造体の定義をここに書く int main(void){ struct BST_Node *T_root; int i; T_root=(struct BST_Node*)malloc(sizeof(struct BST_Node)); T_root->left=T_root->right=NULL; T_root->value=0; srand(RAND_SEED); for(i=0;i<NODE_NUM; i++){ insert_v(T_root,rand()/(double)RAND_MAX*NODE_NUM*10); } 木の高さや木の形をここで表示 } プログラムを書いてくださいますようお願い申し上げます >>58 struct BST_Node { struct BST_Node *left,*right; double value; }; struct BST_Node *new_node(double value) { struct BST_Node *node= (struct BST_Node *)malloc(sizeof(struct BST_Node)); node->left=node->right=NULL; node->value=value; return node; } void insert_v(struct BST_Node*root,double value){ if(value<root->value){ if(root->left)insert_v(root->left,value); else root->left=new_node(value); } else if(root->value<value){ if(root->right)insert_v(root->right,value); else root->right=new_node(value); } } void print_node(struct BST_Node*node,int level){ int i; for(i=0;i<level;i++)printf(" "); printf("%g\n",node->value); if(node->left) print_node(node->left,level+1); if(node->right) print_node(node->left,level+1); } 韓国産のヒラメで食中毒 調べてみたら寄生虫がうようよみつかる http://engawa.2ch.net/test/read.cgi/poverty/1342639945/ 県内初 ヒラメ由来の食中毒 今月14日、新庄市内の飲食店でヒラメの刺身を食べた5人が下痢や吐き気などの食中毒の症状を訴え、原因は、 ヒラメに特有の寄生虫とわかりました。 この寄生虫が原因の食中毒が確認されるのは県内で初めてです。 県によりますと、今月14日午後、新庄市内の飲食店で、韓国産の養殖ヒラメの刺身を食べた5人がその日の夜に かけて次々に下痢や吐き気などの症状を訴えて病院に運ばれ、1人が入院しました。 県によりますと全員快方に向かっていて入院した1人もすでに退院しているということです。 県が飲食店に保管されていた残りのヒラメを回収して調べたところ、「クドア・セプテンプンクタータ」という寄 生虫が見つかり、食中毒が原因と断定しました。 この寄生虫は、おもにヒラメの刺身に寄生し、全国的に食中毒が相次いだことをうけ厚生労働省は去年6月、都道 府県などに注意を呼びかけていましたが、県内で確認されたのは今回が初めてです。 県によりますと、国内で養殖されるヒラメは出荷前に寄生虫がいないか検査が行われているということです。 http://www.nhk.or.jp/lnews/yamagata/6023681251.html ポインタの配列の型を関数の引数にかくとき、サイズも必要ですか? typedefのとき、どうですか char *p[POINTER_ARRAY_SIZE] ここってネタスレでしょw >>69 やりたいことを思った通りに書いてみて、エラーがでるかどうか。 エラーがでなかったとしたら、思い通りに処理できるかどうか検証するコードを書く。 検証するコード自体もエラーが出ないようなら、実行して結果を検証する。 思い通りの結果が得られないようなら遣り直し。 川渡りパズル クマの親子、トラの親子、ワニの親子の計6匹が、2匹乗りボートで対岸に渡ろうとしています。 ただし、子どもは自分の親がそばについていないときに、他の親と一緒にいると食べられてしまいます。 (普段は、とっても仲良しなのですが...) みんな、泳げませんが、1匹でもボートに乗って渡ることはできます。 どのような順番で渡れば良いでしょうか? 課題:このパズルを縦型探索で解くプログラムを作成してください。 実行結果としてOpenListの変化の様子と得られた解を表示させてください。 これC言語で解いてくれませんか? cmdにgccと打つと、{gcc: 致命的エラー:入力ファイルがありません RpC~オワオスB}とでるんだけど、だれか助けて(泣) オワオスが分からんが、ファイル名を指定する必要ガール ふぁいるめい?(私は何故か今日c言語始めようと思ったど素人なので) 当たり前のことまで聞いてすみません。 for (i=0;i<num1;i++){ array_value = *(b+?); sum1 = sum1 +array_value; printf("current sum = %8.3lf\n",sum1); どういう意味? 変数の定義がない、括弧が閉じてないなどいろいろおかしい #include "stdafx.h" double mean1(int num1,double *b){ int i; double array_value; double sum1=0.0; double avg0=0.0; for (i=0;i<num1;i++){ array_value = *(b+?); sum1 = sum1 +array_value; printf("current sum = %8.3lf\n",sum1); } printf("sum = %8.3lf\n",sum1); avg0=sum1/(double)num1; printf("average = %8.3lf\n",avg0); return avg0; } int _tmain(int argc, _TCHAR* argv[]) { int num0=5; double a[5] ={-1.0,3.5,2.1,1.2,-2.3}; double avg1 = 0.0; avg1 = mean1(num0,&a[0]); printf("mean of a is %8.3lf",avg0); printf("\n"); char c1; printf("hit enter key to quit\n"); scanf("%c",&c1); return 0; 元はこれ /* myc.c */ #include<stdio.h> int main(void){ printf("My C programming\n"); return 0; } を myc.c て書いて保存した。 次に、cmd起動、cd c:\myc と打った。 そのあと、gcc myc.c -o myc とやったがエラーがでる。 (こういうことですか?) ドライブ C のボリューム ラベルは Windows Vista です ボリューム シリアル番号は XXXX-XXXX です c:\myc のディレクトリ 012/07/24 18:35 <DIR> . 012/07/24 18:35 <DIR> .. 0 個のファイル 0 バイト 2 個のディレクトリ 18,851,442,688 バイトの空き領域 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a[3][4] = {{8,2,12,4},{11,5,1,10},{7,6,9,3}}; int row1 = 3,column1 = 4,b,i1,j1; i1 = 0; j1 = 0; b = a[i1][j1]; if (b>a[0][0]) {b = a[0][0];i1 = 0;j1 = 0;} if (b>a[0][1]) {b = a[0][1];i1 = 0;j1 = 1;} if (b>a[0][2]) {b = a[0][2];i1 = 0;j1 = 2;} if (b>a[0][3]) {b = a[0][3];i1 = 0;j1 = 3;} if (b>a[1][0]) {b = a[1][0];i1 = 1;j1 = 0;} if (b>a[1][1]) {b = a[1][1];i1 = 1;j1 = 1;} if (b>a[1][2]) {b = a[1][2];i1 = 1;j1 = 2;} if (b>a[1][3]) {b = a[1][3];i1 = 1;j1 = 3;} if (b>a[2][0]) {b = a[2][0];i1 = 2;j1 = 0;} if (b>a[2][1]) {b = a[2][1];i1 = 2;j1 = 1;} if (b>a[2][2]) {b = a[2][2];i1 = 2;j1 = 2;} if (b>a[2][3]) {b = a[2][3];i1 = 2;j1 = 3;} printf("??? value of matrix a is a[%d][%d] = %d\n",i1+1,j1+1,b); char c1;printf("hit enter key to quit\n"); scanf("%c",&c1); return 0; } if文でなにを行ってるの? gcc: 致命的エラー:入力ファイルがありません RpC~オワオスB >>83 1.cmd を起動する。 2.dir "My Documents" で確認する。 3.myc.cが有れば結果を2chに貼り付ける。 4.cd c:\myc 5.gcc myc.c むかしの日本人技術者は優秀だった。もちろんABCは、日本国内で学習できた。 アメリカに研修にいったひとたちは、ABCではなくPQRぐらいから質問するほど レベルがたかかったそうだ。 いまはどうかしらないけど… 中国人技術者は、ABCから質問したそうだ。かんがえられないことだ。 アメリカ人技術者もABCから質問するひとがいて、質問というか議論好きな人もいるということらしい。 日本人は、そういうのがなんかめんどくさく感じる(「あの連中、いらんことまで質問するなぁ」) >>96 ABCから聞くのも良いだろ別に。 ヤバイのはABCを議論で決める風潮が今ある事www 定石があるのに、議論するんだぜ、やってらんねーよ。 引き渡された配列aをポインタbで受けて順に加算した結果を sum1に入れて順次表示している。 最後に全ての合計がsum1に入っているので 配列のサイズ(数)で除して配列aの平均値を求めavg0に入れて 戻り値として返している。 誰かもっとわかりやすく説明して Type func(Type const a[], unsigned size) { Type sum1 = 0; for (unsigned ic = 0; ic < size; ++ic) sum1 += a[ic]; return sum1 / size; } // あれ、bとavg0はどこだw 俺はActionScriptできるからどんな言語でもできるよ? なんか質問ある? 10代20代テレビ離れ 30%減少 インターネットの方が面白い 総務省 http://engawa.2ch.net/test/read.cgi/poverty/1344886835/ Twitter Facebook YouTube mixi ニコニコ動画 総務省が発表した「情報通信白書」には、 世代別の「テレビを見る」時間を過去と比較したデータがある。 若い世代のテレビ離れは一目瞭然。 10代では、2005年に1日平均106分だった視聴時間が、2010年には70分と、 わずか5年で3割以上も減少している。 同様に20代では、2005年に104分だったのが2010年には76分に激減。 10代 106分 → 70分 20代 104分 → 76分 http://zasshi.news.yahoo.co.jp/article?a=20111104-00000005-pseven-pol テレビよりインターネット メディア環境研究所は2010年6月23日、毎年2月に実施している 「メディア定点調査」の最新版「メディア定点調査・2010」の抜粋編を発表した。 「20代男性はテレビ以上にパソコンでネットに接続している」 「男性は10代から30代でテレビよりも、パソコンと携帯電話を合わせた インターネットへの接続時間が長い」 グラフ http://www.garbagenews.com/img10/gn-20100624-17l.gif http://www.garbagenews.net/archives/1443170.html char型の配列に文字を入れて、それを別の関数に渡して全文字を出して 欲しいんですけど、下記コードのようにちゃんとFまで出てくれません。 確保数と実際に入っている文字数が異なる場合、入ってる文字数分だけ 配列を回す処理をvoid print_char(char *)でやりたいんですが、どうすれば よろしいでしょうか? おそらくものすごく基本的なことだと思うのですが、ご教授いただけますと 幸いにござります。 http://ideone.com/P7Ris すみません、間違って本スレでない方に書き込んでしまったので、>>114 は 撤回いたします。 8月15日に攻撃対象へ指定されていた、日本のコミュニティサイト 「 2ch 」 は現在スムーズに稼動している。 インターネットカフェ ネトテロデウンヨンハプ は14日、光復節当日(8/15)、日本のコミュニティサイト 「 2ch 」 を対象とした 集団サイバー攻撃の計画を立てた。 計画が出ると、このカフェでは、(2ちゃんねるへの)攻撃に参加するというネチズンたちが列をなした。 しかし、このカフェは、15日早朝、突然の計画を取り消した。 カフェは、 『攻撃予定日は9月ですが、光復節(8/15)に日本サイトの攻撃はない』と公示した。 詳細 2012/8/15 ソース韓国語 inews24 http://news.inews24.com/php/news_view.php?g_serial=682052&g_menu=020310 《明博の本当の台詞》ハングル分かる奴の直訳 『日王は韓国民に心から土下座したいのなら来い 重罪人に相応しく手足を縛って頭を踏んで地面に擦り付けて謝らせてやる 重罪人が土下座もしない、言葉で謝るだけならふざけた話しだ そんな馬鹿な話は通用しない、それなら入国は許さない』 ネタスレには違いないが 本スレの隔離乱発をリセットしたい点には同意だな C言語の本、5冊読んでなんとなくわかってきたんですけど 次何すればい? #include <stdio.h> int main(void) { int i,price; scanf("%d",&price); for (i = 1;i <= 9;i++) { printf("%d Price Down = %d\n",i,(price * (10.0 - i) / 10)); } return 0; } 1割から9割までの表示するプログラムですけど 実数にのするにはどうすればいいでうsか? int main(void) if (suuti == 10) printf("入力値は10です。\n"); else printf("入力値は10ではありません。\n"); int main(void) { if (suuti == 10) { printf("入力値は10です。\n"); } else { printf("入力値は10ではありません。\n"); } } {}をつけるのと付けないのは何が違うんですか? void main(void) { int d,p[2],stay; char buf[20]; pipe(p); if((d=fork())==0){close(p[1]);} } これどういうプログラムですか? forkとpipeっていう関数見た事なくて..... フォークのように2つのプロセスに分裂する。 ─⊂ 親プロセスと子プロセス。 両端に読み取りと書き込みの口があるパイプを作る。 ─ フォークより前に作ったパイプは親プロセスと子プロセスで共有される。 2つのプロセスはパイプを通してデータをやり取りできる。プロセス間通信。 これくらい書いておけば自分でググれるだろ? 文の終わりにはセミコロンを付けるって規則なのに、なんでwhile文などの{ }の後には付かないの? といいながらもdowhile文の最後には付く。なんて一貫性のない言語なんだろう。 文とブロックの区別がつかないお子様なら、{ }の後にもセミコロン付ければいいじゃん セミコロンを文の先頭に付けてもいいし セミコロンばかりずらっと並べてもいい スレチかも知れんが、C言語検定の2級の問題見たけんだけど、 これ本当にプロが作ってるのか? 例えばさ (4)C言語では,変数名がABC とabc のように大文字と小文字の違いだけなら,同じ 変数として識別される。 って問題があるけど、こんな問題出して意味あるのか? 普通にプログラミングしてたら、まずこんなふうに被る変数名なんて絶対に付けないだろ。 他にもこんな感じの問題がいっぱいあるんだけど、過剰反応してる俺がおかしいのか? お前が書くような小規模なゴミプログラムだとそうかもしれないが >>143 プログラミングの作法は置いといて、 言語そのものにどれだけ精通してるかの試験なんだろ。 C言語検定なんだから。 Javaの試験で「正しいmain()はどれ」って問題があったの思い出した 引数名が正しいのは型がおかしくて、型が合ってるのは引数名が違うんだが 当然ながら型が合ってるほうが正解という問題だった #include <stdio.h> int main(void) { int age; printf("年齢:"); scanf("%d",&age); if (age <= 3) { printf("幼児:無料\n"); } else if (age <= 12) { printf("子供:250円\n"); } else { printf("大人:400円\n"); } return 0; } else if 文がよくわかりません・・・ どうして if をつけるんですか? 本来else ifという構文はない。 if (condA) { procA; } else { if (condB) { procB; } else { procMisc; } と書くところを便宜上、 if (condA) { procA; } else if (condB) { procB; } else { procMisc; } と書いているに過ぎない。 >>152 elseの後に続く文がひとつである場合、{ } は省略することが出来る。 >>151 前段のprocMisc;の後に閉じ括弧。 第23回高専プログラミングコンテストで宇部高専が優勝。勝因は「人力で数えた」と判明し話題に http://engawa.2ch.net/test/read.cgi/poverty/1350194313/ これサイコロの判定ってどうやればいいの? 答え知ってる人いない? > 第23回高専プログラミングコンテストで宇部高専が優勝。勝因は「人力で数えた」と判明し話題に > > 競技概要 > http://www.procon.gr.jp/uploads/procon23/Apply23.pdf > > 上位陣がすべてクリックでサイコロの数が入力出来るカウンタを作った模様 > 人力が優勝するのは2年ぶり2回目 > > 1位「人力で数えた」 > 2位「判定できなくて経験で入力した」 > 3位「1位と同じです」 > 4位「1位と同じです」 > 5位「会場でプログラムキツイわ」 > 6位「1位と(ry」 > > 2010 運営「手動で優勝とは、なんと情けない!厳しくしよう!!」 > ↓ > 2012 学生「難しすぎwww 手動するしか無いだろww」 → 決勝がほぼ全員手動 → 運営「\(^o^)/」 鏡をおくとかイジメ以外のなにものでもない 運営側/出題者は自分ができるものを出してくれ atexit()は、main()の最初にかくべきでしょうか それとも、プログラムのどこでかいても有効ですか atexitする前に後処理残してexitしちゃうおバカさんでなければ atexitを取り消す(pop?)方法はありませんか? プログラム覚えれば、映画みたいにブラインドタッチできますか? >>173 ゲイツがブラインドタッチできないのは有名な話。 普通はタイピングに慣れてくると自然に楽な姿勢になってホームポジションが維持されるようになるけど、 直接にはプログラミングの技能との関連はなくて、まぁ、要するに個人差があるのでなんともいえない。 オヌヌメのコンパイラを教えてください IDE以外でお願いします ちなみにwinです まあ今ならIDE付きが良けりゃVC Express、コマンドラインやUnix系ならgccでいいやな 半角英数字5文字の文字列を格納可能な、文字型配列の要素数は最低限何個必要か? 3行×2列の整数型の2次元配列matrix_dataに関して、 matrix_data[2][0] は、matrix_data[0][0]を1番目の要素とすると、計算機のメモリ上では、何番目の要素となるか数字で答えよ。 超暇な俺が真面目に答えてやるよ >>193 文字列型があればよいので文字型配列は不要 >>194 アーキテクチャと実装言語により異なる 193はcharを8bit文字コードをUTF32と仮定して最低20個だな >>193 「半角英数字」って書体の話か? どれだけ必要かなんて実装次第だろ。 例えば文字列「123ABC$!&00字」というのは、良く使うと思われるエンコードで16進表記にすると ・SHIFT-JIS : 31 32 33 41 42 43 24 21 26 30 30 8E 9A ・CP932 : 31 32 33 41 42 43 24 21 26 30 30 8E 9A ・ISO-2022-JP : 31 32 33 41 42 43 24 21 26 30 30 1B 24 42 3B 7A 1B 28 42 ・EUC-JP : 31 32 33 41 42 43 24 21 26 30 30 BB FA ・UTF-8 : 31 32 33 41 42 43 24 21 26 30 30 E5 AD 97 ・UTF-7 : 31 32 33 41 42 43 2B 41 43 51 41 49 51 41 6D 2D 30 30 2B 57 31 63 なので、半角英数は1byteで良いのかな。 (「試した範囲ではこうでした」の域を出ないけど…) UTF-7だと半角記号は厄介ですね。単独だと 0 = 30 $ = 2B 41 43 51 ! = 2B 41 43 45 & = 2B 41 43 59 0 = 30 だし、並ぶと 0$!&0 = 30 2B 41 43 51 41 49 51 41 6D 2D 30 しかも 0$$$$$0 = 30 2B 41 43 51 41 4A 41 41 6B 41 43 51 41 4A 41 2D 30 >>203 「半角」というのは文字の形を表現している言葉に過ぎないので、 書体によっては何でも半角になり得る。 http://opentype.jp/hankakufont.htm かつて1バイト文字を半角で表示していた習慣から混同されているが、 半角文字に対応する文字コードのサイズは決定できない。 >>205 ここのスレタイからして、>>193 は書体に関わる質問ではないと思うんだが 全角文字が生まれるまでは半角文字など存在しなかったのであるよ 半角文字というのは全角に対応してそう呼ばれているだけ煮すぎない >かつて1バイト文字を半角で表示していた習慣から この認識は間違いなので新ためるように >かつて1バイト文字を半角で表示していた習慣から まるで今は1バイト文字を半角で表示していないかのような言い草だ罠。 まだぺーぺーなんだけど、ちょっと教えてほしい! printf("0x%02x〜 の"02x"って何? いまいちわかんないんだ 0xは16進数の表記とはわかるんだけど… >>221 %02x でひとまとめの指定。 printf に渡している次の整数ひとつを十六進数二桁 (二桁に満たない場合は上位桁をゼロ詰め) で表示せよということ。 その場合の 0x は 0x と表示するだけ。 >>222 おお!そーゆーことか! らくらく突破C言語テキスト読んでるんだけどさっぱりだったんだわ(´・ω・`) ありがと! #include <stdio.h> #include <time.h> int main(int ac, char **av) { time_t time; struct tm t, *l; t.tm_year = 2013 - 1900; t.tm_mon = 3 - 1; t.tm_mday = 18; t.tm_hour = 8; t.tm_min = 0; t.tm_sec = 0; time = mktime(&t); printf("%ld\n", time); l = localtime(&time); printf("%d-%02d-%02d %02d:%02d:%02d\n", l->tm_year + 1900, l->tm_mon + 1, l->tm_mday, l->tm_hour, l->tm_min, l->tm_sec); return 0; } これで 1363557600 2013-03-18 07:00:00 という結果になるのですが、 なぜ一時間ずれるのでしょう? t.tm_isdst = 0; を入れればいいんじゃね? 俺の環境では再現しないからわかんないけど。 UTC で作成した時刻を現地時刻に変換したからじゃね? 調べてないけど。 >>225 全部大文字で書け! #INCLUDE <STDIO.H> #INCLUDE <TIME.H> INT MAIN(INT AC, CHAR **AV) { TIME_T TIME; STRUCT TM T, *L; T.TM_YEAR = 2013 - 1900; T.TM_MON = 3 - 1; T.TM_MDAY = 18; T.TM_HOUR = 8; T.TM_MIN = 0; T.TM_SEC = 0; TIME = MKTIME(&T); PRINTF("%LD\N", TIME); L = LOCALTIME(&TIME); PRINTF("%D-%02D-%02D %02D:%02D:%02D\N", L->TM_YEAR + 1900, L->TM_MON + 1, L->TM_MDAY, L->TM_HOUR, L->TM_MIN, L->TM_SEC); RETURN 0; } ん〜、ホント、汚らしいプログラムだなw 馬鹿かと思ったw すいません。プログラム初心者です 質問、よろしいでしょうか? MsgBox "前から言おうと思ってたんだけど良い?" , vbExclamation Or vbApplicationModal , "キーボードからの警告" MsgBox "あのさぁ汚い手で触らないでくれる?" , vbExclamation Or vbApplicationModal , "キーボードからの警告(2)" MsgBox "ほら、小指の爪ばっかり伸ばしてるからあたって痛いんだよね" , vbExclamation Or vbApplicationModal , "キーボードからの警告(3)" MsgBox "あと、Enterだけ強く叩くのやめてくれる?カッコいいと思ったら大きな間違いだよ" , vbExclamation Or vbApplicationModal , "キーボードからの警告(4)" MsgBox "あと、お礼に良いこと教えてあげるよ!!キーボードからよく見えるしさ" , vbExclamation Or vbApplicationModal , "ありがとぉ〜" MsgBox "鼻毛のびてるよ...." , vbCritical Or vbApplicationModal , "キーボードからのお礼?" MsgBox "早めに切ってね." , vbCritical Or vbApplicationModal , "キーボードからのお礼?(2)" このプログラム面白くできませんか? >>236 すいません。センス無いんです... 改善点だけでも!! そもそもこのスレが何のスレかも分かっていないようだが。 Unix環境ですと、セグメンテーション違反やバスエラーが発生した場合、 コアダンプしてプロセスが強制終了するのですが。 プロセスを強制終了させずに、エラー処理ルーチンに制御を移して 処理を続行させるようなことは、C言語では可能ですか? >>239 出来るけどシグナルが発生した原因を取り除かないと同じ事が繰り返すよ。 error LNK2019: 未解決の外部シンボル __imp__SetCursorPos@8 が関数 _main で参照されました。 これの解決策がわかりません、opencvを使うにあたってプロジェクトの プロパティで、インクルードディレクトリなどを追加していることなどが 関係しているようなのですが特定できません。 よろしくお願いします。 また、opencvを使用していない簡単なプログラムでSetCursorPosを 使った際はエラーが発生しません。 >>242 全然分からんけど、もしかして 1. #include <windows.h> を #include "stdafx.h" の次に書く 2. int main() を int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow) にしてみる これでは…? >>243 ありがとうございます。 しかし、1と2を行った結果 MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 というメッセージが増えてしました。 >>244 馬鹿輩! 先ずは1だけ試した結果を書けよ。 申し訳ないです。 1のみの結果 C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] が増えました。 2のみ MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 です 横からすみません。 これってDLLのプロジェクトですか? ttp://d.hatena.ne.jp/gomi-box/20101006/1286355611 と同じかな? >>248 リンク先の対処法でstdafx.hについては解決しましたが、 error LNK2019: 未解決の外部シンボル __imp__SetCursorPos@8 が関数 _main で参照されました。 このメッセージは消えません。 >>247 コンソールアプリケーションです。 >>248 ありがとうございました。 空のプロジェクト にチェック入れて作ってしまっていました。 とりあえず作り直してみます。 >>251 で作り直しましたが、何も変わりませんでした。 \_ _ /`|l: : : : l: : l.:イ| |:l 'l:| lヽ.: : :| ヾ ヽ.:|ハ: : : :|.: |  ̄ / .|.:| `V:)´ /|.l.:|: : :l.: :l: :| ,t==z, l| \: | ,r==z,|: : : |.:_:| \_/:`ヽ/|:| |( / | l:|.: : :l: :ll: |/んノ心 ヾ んノ心.|: : : |´-| 入.: :| |: |: :| |:| l| 'ーl´.:^lヽ_,,l|ヽ: :ヽ.:l: | {:::i::j:::リ {:::i::j:::リ|: : : |...l lt-'´/:|: /':,|:/|: | |:| \: :|\: \:\:ヽ;|'. ゝ- '" , ゝ- '".|.: :/ー'/.:|: /: :|/: : |!. |/. |' >>1 乙 /:`'.: : :\: : :|`l: iヽ "" "" 、 , "" ""|: /:-t'´://: :/: : : ´':.' ( ー'-=z_ニー' i、.:|`'l: 'z、 ., :|:/: : :_|;/-‐--‐t_,,z'" ):, `7- 、 `ヽ_'ー--; :|: |`: :t- ., _ ..: :i: :/´:|.:l´ r=ニシ- '` _./、.: :':, /: ;ノ/\ `ヽ. /ヽー=ニノ_: |ー----‐|: : |: ':_;:-y、r| / /‐-t_|_ :_.:':, // __ \_ .lヽ }/ `i\ ー----‐'冫 _,r' ( | | ノ / __  ̄ ) γ´ ,.イ´ / /ノ .〉、 `i_ `. ´ _r" )'/ / / (_ 〉: : ̄: ':, ,:ー:'´: i/ ./`l ,、 / l _) ) `i、_ ´ r''" /l/ 弋 ,:=,,_` ' : 、: : ', ,:'.: : : :,.' /^|,_/ / | .l-'./ / o oγ'Y´o o ( `iー、ヽ._ r: 、 \ノ` : 、._): : ':, ,:'.: : : :,(_/`i '/ /三| l ノ リ 弋リ  ̄`iーゝ_, >、\l\ \: : : : : : : ', ,:'.: : :/: : : /: :ゝ(_ノ 冫' ,イ-' _r-' "'ー、_. |ー--−'ゝ,_).:`ー ': : : : : : : :':, お前ら全員雑魚。なに勉強してんだよ。 SetCursorPos関数を使ってるのにuser32.libをリンクしてないのが原因。 ソースのどこかに #pragma comment(lib, "user32.lib") の一行を書けば解決する。 >>255 VSで普通にC++のアプリのプロジェクトを作ったら特に何もしなくても user32が使えると思っていたけど違うの? >>242 が #pragma comment(lib, "user32.lib") を書いてどういう結果になるのか楽しみ getcで質問なんですが while((c = getc(file)) != EOF); getcをwhileでループしているだけなのになぜ順番に1文字ずつ読まれるのでしょうか 現在何番目の文字が読まれているとかいうのをfileに書き込んでいるのですか? >>262 ありがとうございます getcは1文字読み込んでFILE構造体のptrをインクリメントしているのですね ファイルの読み込み位置をFILEに記録してる処理系なんてないだろ。 >>263 >getcは1文字読み込んでFILE構造体のptrをインクリメントしているのですね Cの規則ならGETC(FILE++)にすべきなんだろうなw FILE++(笑) ちなみにFILEは構造体じゃなくてもいいんだけどな 将棋電王戦でポナンザを開発した山本一成氏がツイッターで 「C#マンセー」みたいな事言っていて、.NETの開発効率には賛同なんだが それ以前のつぶやきで、「C++って関数の引数の直値で配列書けないのか‥?」 って・・・。 C++及びCの基本も知らないようで驚いた。 応用分野には詳しいようだけど、東大の大学院を出ていて このレベルというのはどうかと・・・。 CとC++なんて3日でマスター出来るのに Cを知らないようでは、SDKプログラミングが出来るかどうかも 怪しいね・・・。 MASMオンリーでWindowsアプリを書けるくらいの人だと思っていたのに ちょっと幻滅。 >>272 C/C++では関数の引数としての配列はcall of reference になってしまうのだが、山本氏としては call of value でありたかったのでは、構造体と同じように。 用語を間違えた、call by reference / call by value だったね 無理して元々無い英語力を見せつけようとしなくてもいいよ、低脳Q君w >>275 それもそうなんですが、用語「参照」が変な風に使われるようになってしまったのを意識しているのです。 あの感じだと、テキストセグメント、データセグメント、スタックセグメントの概念も知らなそうですね。 知っているからどうなんだという意見が出そうだけど、プロセスが終了するまで malloc等で動的に確保され拡大されたデータセグメントはfreeしても縮小しないので。 いやね?、しつこくてスマンけど、 >>272 の 「C++って関数の引数の直値で配列書けないのか‥?」 って、定数なんだから、値渡しだろうと、アドレス渡しだろうと 関係ないでしょ? それにconst配列の引数は使えるんだし、根本的に意味不明で、 山本氏は一体何を言いたいのだろうかと。 天才の考える事は常人には理解不能って事? もしかしたら自分が間違っているのかと思って、テストプログラムまで書いちゃったよ。。 最近はCとC#とJAVAしか使わないから、もしかしたらCとC++では 規約が違っているのかと思って焦ってしまった。 まさか、 hoge(const int nTemp[5]={0,1,2,3,4}); こんな呼び出しをしようってわけじゃないよね? これって動くの?こんなことやった事ないから分からんけど。 眠いから、もうテストする気無し。 そういや、直値ってハードコードされた数値の事で、定数の一種ではあるけど 直値の配列なんて表現は無いんであって、そうなると 「C++って関数の引数の直値で配列書けないのか‥?」 この日本語って、どう解釈すればよいわけ? 「関数の引数の直値で」「配列を書く」???? 日本語自体が破綻しているとしか思えないんだけど。 って事でワケワカメのC#厨の話はお開きにして、F1決勝まで寝る。 初めからラッパーばかり使って楽してきた奴はこうなってしまうという典型? もしかして、これ? hoge({0,1,2,3,4}); こんなん見た事ないけどw hoge({*0++,*1++,*2++,*3++,*4++}); (笑) >>284 確かC++11出来るようになったような。 androidでギャラリーアプリに使用する 1枚目の画像を右にスライドさせると右にスライドしながらフェードアウトして 後ろにある2枚めの画像が表示されるという機能を付加するのに参考になる情報ありますか? >>255 #pragma comment(lib, "user32.lib") を入れても変わらず動きませんでした。 逆にSetCursorPosを使っていても、25行程度の簡単なプログラムでは #pragma comment(lib, "user32.lib") を入れなくても動きました、 もちろん入れても動きました。 >>291 #include <windows.h> #include <stdio.h> int main(int argc, char* argv[]) { int x=0,y=0; SetCursorPos(0,0); while(1){ POINT pos; GetCursorPos(&pos); printf("(%d,%d)\n",pos.x, pos.y); SetCursorPos(pos.x+x,pos.y+y); Sleep(10); if(pos.x>3198)x--; if(pos.x==0)x++; if(pos.y==0)y++; if(pos.y>1198)y--; } return 0; } こんなんで動きます。 ループは無限です nodefaultlibが設定されている可能性がある。nodefaultlibでソース内を検索 ソース内でnodefaultlibを検索しても見つかりませんでした。 プロパティ > 構成プロパティ > リンカー > コマンドライン の 追加オプションに 「/NODEFAULTLIB:"atlthunk"」 と過去に追加したことはあります。↓の情報です。 www.atinfinity.info/wiki/index.php?OpenCV%2FvideoInput%20Library%E3%81%AB%E3%82%88%E3%82%8B%E3%83%93%E3%83%87%E3%82%AA%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3 ヘッダーにもnodefaultlibが設定されている可能性が。ATLは詳しくないから分からないけど >>298 ヘッダーにもnodefaultlibはありませんでした。 >>297 どうもです、 そちらに書き込んでみます。 >>299 >>248 の > ttp://d.hatena.ne.jp/gomi-box/20101006/1286355611 は問題なかったの? >>301 「プロパティ > 構成プロパティ > 全般 > MFCの使用」を「共有DLLでMFCを使う」にする。 で解決しました。 >>298 分からないならレスするな そこまでして自己顕示欲を満たしたいのか No.411139 無題 2013/03/10(日) 10:58:22 返信 削除 2ちゃんねるのプログラム板たまに見てるんだけど、 片山とかって投稿者は何でいつも中途半端な投稿してるの? 信用してたらヤバめのバグを組み込むことになりそうなんだけど No.411142 無題 (※削除※) 2013/03/10(日) 11:14:08 返信 削除 >411139 初心者を騙して楽しんでるらしいよ 必ずどこかに嘘を混ぜてる No.411144 無題 (※削除※) 2013/03/10(日) 11:32:51 返信 削除 >411139 聞いた話ですが、数年前からそういった書き込みをしているそうです。 年単位で成長していないということも考えにくいので、やはり411142さんの言う通りなのかなと思います。 >411143 strncpyの前にNULL文字で埋めてください。 No.411149 無題 2013/03/10(日) 11:49:52 返信 削除 >411142 必ずではないぞ 正確な内容を書き込んでるのも見たことある 但しそのときは質問者の意図とは関係ない書き込みで 違った方向に議論を誘導しようとしてた No.411152 無題 2013/03/10(日) 12:01:30 返信 削除 >411148 トリップ付けてる人でしょ? 2チャンネルで質問する際は気を付けろって(※削除※)のMLで流れてたよ。 int n = 10; int a[n]; こういう実行時に長さが決まる配列型って処理系の独自拡張?標準? 標準だとしたらいつから? ウォーリーを探せをC言語でやりたいのですができますか? >>308 やる気と無限の時間と画像を取り込む装置があればできなくもない C言語ってどうすれば上達するの? 書こうと思っても全然発想が出てこない topcoder codeforces codechef pku 日本語が良ければaoj >311 他の言語、ツールで出来ることもC言語で作ってみる。 C言語にゅうもんのコンソールアプリしか作れない症状と診た >>311 C言語プログラミング能力認定試験を受けて資格を取ってみる。 きっとCが嫌いになる >>319 サンプル問題みたけど一級の問題作ったのコボラーとしか思えない COBOLは消えてなくなると考えられていたから C言語プログラマーが代替できるようにそういう問題にしてるとかじゃね? 10進数で計算してるから銀行からは消えないって聞いたけど 任意精度整数演算できればいいんだから、そんなもん理由にならん #include <stdio.h> int main(void) { int i, j; int ar[7]; for (i = 0; i <= 15; i++) { j = i % 7; ar[j] = i * i; printf("%2d ar[%d] = %3d\n", i, j, ar[j]); } return (0); } 剰余でつまずきました 0〜15の数字 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 7で割った余り : 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 最初の、7で割った余り : 0 1 2 3 4 5 6 がわかりません・・・orz >>326 うぅむ、4年生がわからないのは理解できるが、親がわからないのはひどいな。 でも、計算出来ないと、人生のいろいろな場面で損する事はあるよね。 気づいてないかもしれんが... C言語、5年くらいやってるけどオレもわからん・・・orz 用途によるのでどちらが良いということはない。 オムライスと剛力彩芽のどっちがいいかなというくらいの無意味さ。 俺はオムライスの方がいいけどな。 C言語がわからないのではなく、C言語によるGUIの作り方や日本語文字列の処理方法がわからないw そーいうのはWin32APIとかgtk+とかを勉強しないと 俺もCをやり始める前はそうだった 「C言語入門」だとクルマのエンジン部分しかわからない JavaとかVBだともう少しいろいろついてくるんだけどな >>334 >剛力彩芽 名曲探偵アマデウス以来‥‥ちがった、あれは黒川芽以 ペイント実行してJPG画像読み込んでBMP画像として保存する をC言語でそうやってやるんですか? ペイントを実行するのにC言語が必要なのか それはご苦労なコッタ やりたいことはJPG画像からbmp画像の変換です。 たくさんのJPGファイルを一括で処理します。 一括変換フリーソフトをいろいろ試したのですが、 ペイントの24ビットマップ形式で保存できるものがありませんでした。 なのでC言語からペイントを実行、保存しようと考えました。 Irfan Viewならできそうだが ついでに言っとくと 「ぼくはC言語でぷろぐらむできます」とか他で言わないようにな 恥をかくぞ Irfan Viewでは一括処理やマクロが出来なかった気がします。 C言語はド初心者レベルと自覚しています。はい。 ペイントだとbmp保存で24ビットや256色とかいろいろ種類があります。 一方Irfan Viewでのbmp保存は一種類しかなく、この形式が望むものと違います ありがとうございます。 JTrimは一括変換できそうでね。あとはbmpがどの形式で保存されてるか。 試してみます。 >>335 必要な処理が書かれてそうなSoftware探してきてfind-grep よほどバカでなければ2、3個のプロジェクト眺めたら何が必要かぐらい分かる 真面目にフローを追うのは知らない。 動的デバッグで処理をトレースする方法を知りたいけれど、あんまりネット上で情報を見ない。 typedefみたいな型変換ってなんのために必要なの? 結局、中身は int とかじゃないんですか? >>353 typedefがないとstdio.hのFILEの代わりにコンパイラごとに異なった構造体を使う羽目になるよ。 例えば、FILEはこんな構造体の別名になっているかも知れない。 -- struct __sFILE { unsigned char *_p; /* current position in (some) buffer */ int _r; /* read space left for getc() */ int _w; /* write space left for putc() */ short _flags; /* flags, below; this FILE is free if 0 */ short _file; /* fileno, if Unix descriptor, else -1 */ struct __sbuf _bf; /* the buffer (at least 1 byte, if !NULL) */ int _lbfsize; /* 0 or -_bf._size, for inline putc */ /* separate buffer for long sequences of ungetc() */ struct __sbuf _ub; /* ungetc buffer */ unsigned char *_up; /* saved _p when _p is doing ungetc data */ int _ur; /* saved _r when _r is counting ungetc data */ /* tricks to meet minimum requirements even when malloc() fails */ unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */ unsigned char _nbuf[1]; /* guarantee a getc() buffer */ /* separate buffer for fgetline() when line crosses buffer boundary */ struct __sbuf _lb; /* buffer for fgetline() */ }; typedef struct { ...... } T_STRUCT; T_STRUCT aaa,*ppp; 主に構造体変数の記述が楽になる機能と思っとけばいい。 楽になるって言うか、環境ごとの差異を吸収してくれると言えるね。 >>356 なんにつけても、別名とか読み替え、すげ替え(怖‥)とか、最後の切り札として欲しいという場面があるのかもしれません C99のforはfor (int i=0; i<10; i++){}こう書くとエラーになるそうなんですが clang 3.0で試してみたらエラーになりません clang 3.0ってC99に対応してますよね 何故エラーが出力されないのですか? >>360 > エラーになるそうなんですが そんなことをどこで聞いた? あ、すいませんclangだと思ってたらgccでした gccだとc99でコンパイルしないとエラーになるんですよ オンラインでコンパイルできるところはほとんどそういうエラーがでますよ http://ideone.com/YzhJfB とか いったんclangの話は忘れてください clangではエラーはでません。 gccでC99としてコンパイルしない場合にエラーがでるんですが これ元からこういう仕様なんでしょうか? わざわざ int i; for (i=0; i<10;i++) みたいに書いてるの昔から見た記憶がないんですよ >>360 で書いてるのは「C99だとエラーになる」と「clang3.0 ではエラーにならない」で、 >>362 では「gcc では c99 モードでコンパイルすることを明示した場合意外ではエラーになる」と言ってる。 お前、ほんまに説明が下手なやつやな。 >>364 が本当に言いたかったことでいいんだな。 それは仕様。 int i; for (i=0; i<10;i++) みたいなのも昔は普通にあったし今でもそういうスタイルを好む人はたくさんいる。 リンカスクリプトの話題はこのスレで聞いてもよいものだろうか? http://pastebin.com/sngpMHR7 printf("%sの%s\n", mark[draw_mark-1], digit[draw_mark-1]); draw_mark-1 とdraw_mark-1は、どうして-1なんでしょうか? >draw_mark = rand() % 4 + 1; //マークを決定する 1から4の乱数を0から始まる配列番号に当てはめるから。 それは、わかるんだが >draw_mark = rand() % 4 + 1 これって、変数に1〜4 までを適当に決めてるだけで どうして、配列と関係があるんですか? >>373 中の mark[draw_mark-1] で なんで -1 してるん? という質問からの派生 配列のインデックスは 0 から開始する(リンク先ソースでは mark[0] 〜 mark[3] まで) 変数 draw_mark は 1 から4まで この draw_mark を使って 配列の要素を正しくアクセスするのに -1 して帳尻をあわせてる typedef struct { int value; } TEST; TEST t = {1}; printf("%d\n",t); 環境:VC++2012 express このコードで1が出力されるのは、C言語の仕様に合ってるんだっけ? ポインタ渡してるのかと誤読した。 まぁ未定義で、常識的にやるべきじゃない記述だな。 メンバー変数がint型一つしかない構造体をつくる理由が思いつかん。 >>378 その疑問が解消したとして 何かの役に立つのでしょうか? 型保証したくてね。 typedefだと間違って引数に渡した時にコンパイルエラーにならないから。 で、普通のプリミティブ型でやってたのを構造体に置き換える作業中に なぜかprintfで正しく出力されたんで、面倒臭いアクセス関数使わなくてもいいのかも と思って聞いてみた。 Cで擬似オブジェクト指向やってると面倒臭すぎる。演算子のオーバーロードが欲しい。 改めてC++の偉大さ(謎)が分かったかもww printfは可変長引数の関数だから第2引数以降の型を確認しないのでエラーが出ないでしょ。 sprintf、fprintf、scanf、、、など。 その引数をどう扱うかは関数によって様々 固定長引数での関数の話。 printfとかは、もちろん値を取り出して渡すつもりだったんで、あれ?と思っただけ。 引数のスタックへの積まれる方向と構造体のメンバーの並ぶ順番は一致するのかと考え…ることも無く「やるな!」の一択。 printfの本体(vprintfだったかな)のソース眺めてみれば、答えが #include <stdio.h> typedef struct { int value; } TEST; void pr(int data) { printf("%d\n", data); } int main() { TEST t = {1}; pr(t); // ← コンパイルエラーになる return 0; } をコンパイルすれば分かると思うけど型が指定されている関数だとエラーになる。 >>378 は構造体TESTのデータ(つまりvalue==1のみ)がprintfに渡されたまたま表示されているだけ。 以下のコードが "111, 333" ではなく "111, 222" と表示される理由を考えると分かるかな? #include <stdio.h> typedef struct { int v1; int v2; } TEST; int main() { TEST t = {111, 222}; int d = 333; printf("%d, %d\n", t, d); return 0; } そして、111, 222 と表示されるとしても 「たまたま」そう表示されているだけで 環境によっては変な表示になるかエラー 初めまして、 8〜12個のxy座標で囲まれた地域(歪な多角形)があり、調査対象の座標がその中にあるか、を判定する関数を作りたいのですが どうすれば良いかが見当もつかず困っています。 判る方がおりましたらご教授下さい。 OSはLinuxです。 宜しくお願いします。 >>395 思いつきだけど 1. 囲まれた地域(歪な多角形)を囲み多角形に接しない(余白を大きめに取った)四角形をまず求める 2. 調査対象の座標から色を塗りつぶす 3. 囲まれた地域の外である、1.で求めた四角形のところを塗ろうとするなら、調査対象の座標は多角形の外側である 4. 1.で求めた四角形のところを塗らずに処理完了したら、調査対象の座標は多角形の内側である でいかがでしょう。 調査点と 範囲を決める頂点列 P(Xi, Yi) とのなす角(符号付)の総和が 360度ならば内包点 そうでないならば外の点 ダブルポインタが理解できない。 int **pp; int *p; int n[] = {0, 1, 2}; pp = &p; p = n; p++; printf("**pp : %d", **pp); これでなんで0じゃなくて1が出るの。だれかわかりやすく解説してくれ。 もしくは参考書教えて。たのむます。 始めにpは0のアドレスを指している。 p++でpは1のアドレスを指す。 *ppはpのアドレス、**ppはpの指す値。 BASICならPOKE/PEEK()/VARPTR()で分かる筈だけど、Cは変数とメモリを混ぜてるから分かりにくいよなw BASICでプログラムを書いてると分かるけど、メモリを直接いじるプログラムは通常書かないから、Cの異常性が分かりやすいw >>398 > pp = &p; > p = n; 順序逆だ だいたいBASICよりアトに出てるのに、どうして構文解析がBASIC未満なんだろうな?w ダブルポインタなんて言葉無いのに ポインタ知らない奴に限ってなぜかよく使う・・・・なぜだろう [EXEファイル可] JavaScript統合開発環境 DX Studio [転載禁止]©2ch.net http://peace.2ch.net/test/read.cgi/tech/1423340731/l50 ポインタ自体わかってない。pp→p→n => pp→p→n+1 リンクやショートカットだってば。 トリプルポインタって使うことある? ***pとかw なんかで使ったけど忘れたw たぶん二次元配列を動的に確保したとかだと思う。 ポインタって良く考えると難しい概念だよな アドレスに関連付けられた値をさらにアドレスに使えてしまうっていうのが なんかメタ的っていうか、ラッセルのパラドックスみたいなのが導けそうっていうか 言葉だけで理解しようとすると少し難しいと思うんだよね。空間的というか。 VARPTR(VARPTR(VARPTR(VARPTR(プッ 既にポインタのポインタになっている変数のアドレスを さらに関数へ渡してとなるとポインタマネギ化するのか。 ポインタで躓くなら、学部生向けのコンパイラの教科書でも読めばいいよ >>395 点から適当な直線を引く 多角形を構成する線分との交点を全て列挙する 多角形との最も近い交点に注目して その交わり方が、多角形を出る方向だったら内部、入る方向だったら外部 >>415 CPUの動作原理と無関係で、表記法の独りよがりw Cは構文解析が弱すぎるw EOFって、異常終了ですか? それとも、\0を見つけると終了ですか? End Of File ファイルの終わりです。異常ではない。 \0のないファイルもあるから、\0と関係ないきがする。 実際は、\0がきてたりする。よくしらべないと… スクラッチと言うソフトで作ったゲームをc言語に変換できますか? int i; char str[] = "123"; i = atoi(str)+1 これ実行すると、124 になるけど何で? >424 ttp://hitorilife.com/atoi.php >int atoi( const char *str ); >文字列で表現された数値をint型の数値に変換する。 >■戻り値: >int型に変換した数値。変換不能文字は0を返す。 大抵こういう質問するやつは解ってて聞いているただの釣り。 解ってて聞いているただの釣りとか言論封殺すんな お前の書き込みより釣りの方がまし x=(r=v)は r=v;x=r;なの? r=v;x=v;なの? x=(r=v)は t = v; r = t; x = t; という感じ for(i = 0; i < 100; i++) if(i % 2) printf("%d ",i); 超初心者ですけど、この逆ってどうすればいい? 2 4 6 8・・・ ってやりたいんですけど その1 if(i % 2) → if(!(i % 2)) その2 if(i % 2) ; else printf("%d", i); void mystrcpy(char *to, char *from); int main(void) { char str[80]; mystrcpy(str, "これはテストです"); printf(str); return 0; } void mystrcpy(char *to, char *from) { while (*from) *to++ = *from++; *to = '\0'; /* ヌルで文字列が終わる */ } 「 ヌルで文字列が終わる」 ヌル文字って、なんで必要なんですか? 終わりを示すマークがくるまではずっと続きますよ という約束なのが文字列の約束 何故必要か? 文字列であるためには、そういう約束だから BASICでは先頭に文字数でその後に文字列が続いてたっけ。 MS-DOS の文字列表示ルーチンは $ が終端。 int main() { max(100); max(70); max(50); return 0; } void max(int d) { static int max = 0; if(d > max) max = d; printf("max = %d\n", max); } 全部0になるはずなのに、ならないのはなんで? maxはコンパイル時に0で初期化 その後dを代入してるのでmax == d static int max = 0; この行はプログラム実行時の最初の一回だけ実行される。 max()を呼んだ時は既に初期化済みで、その行は通らない。 >>444 実装としては現実的には実行されるとはいいがたい static変数の定義を含む関数が利用(参照)されない場合、そのstatic変数は確保されない。 これでファイルサイズを試せ int f(int i) { static int a[10000000]; a[i]++; return a[i]; } こうしないとダメか int f(int i) { static int a[10000000] = {1}; a[i]++; return a[i]; } static int a[10000000]; と static int a[10000000] = {1}; では、確保されるサイズは同じだと思うが.. 違うよ。 前者は内容が不定値で、初期化に使う値が実行ファイル内に保存されない。 メモリ上に同じ大きさが確保されてもファイルサイズには反映されない。 ちなみに0初期化される領域も初期化値を実行ファイルに保存するのではなく、0クリア専用のランタイムルーチンを使うらしい。 てなわけで、処理系の実装上の工夫が色々とあるのでそもそもファイルサイズを見て変数が確保されるかどうかを判断しようとするのが間違い。 ファイルサイズが違うって事か。 実行時に確保されるメモリサイズは同じだよね。 >>453 >0クリア専用のランタイムルーチンを使うらしい。 ランタイムというか、OS 内のローダー担当であることが大半でないだろうか‥ char *str; で宣言したあとに scanf("%s",str); とすると「strを初期化せずに使うな」みたいなエラーが出ます char str[10]; みたいに配列で宣言するとエラーは出ません ポインタで宣言した時のと配列で宣言した時のstrは同じ物ではないんですか? あと値が使われるわけでもなく、入力されるだけなのに初期化しなければいけない必要性がわかりません 誰か教えてください C言語の初歩の初歩。 char str[10];とchar *str;は別物。 char *strはアドレスを入れるための変数。アドレスを記録するための容量は確保されてるが10バイト分などは確保してない。 これだったらいけるはず。 char str[10]; char *str2; str2=str; scanf("%s",str2); >>458 ポインタ変数である、char* str の strは、 アドレスという数値を1つ格納するだけの唯の変数。 それに * を付けると(*str)、そのアドレスが指し示す先のメモリ にリンクする「ショートカット」になるだけ、と考えると分かり易いかな。 Windowsでショートカットファイルをダブルクリックしたらその先のファイルが開くようなもので そうすると当然、指し示す先のファイルパスが設定されていないショートカットは「使えない」 というのが分かるよね? >>458 >strを初期化せずに使うな それは多分おせっかいな警告機能で、どんなコンパイラでもそうなるとは期待してはいけない >ポインタで宣言した時のと配列で宣言した時のstr は別ものだ、そう思い込んだほうがいい なお蛇足だが C で配列の名前を単独で使うときは意味が変わる(この部分だけ直交性を失っている) if (scanf("%d", &v) != 1) この1って何? scanf の戻り値は、フォーマットに従い変数に代入した個数 1変数ならまあ好きに書けば良いけど 2変数以上の時に間違わないよう習慣付けているのかもしれない 入力文字がアルファベットしかなくて vに整数をつっこんでねーよ って時は 1 にならない C言語初心者です。 windows7 MinGWのgccバージョン4.8.1です。 /*スタート*/ #include <stdio.h> int main(void){ float pai,r,s; printf("半径を入力してください="); scanf("%f&r"); pai=3.14159; s=pai*r*r; printf("面積は%fです\n",s); return 0; } /*終わり*/ 円の面積を求めるプログラム作りました。コンパイルするのはうまくいくんですが、実行して半径を入力すると○○○.exeは動作を停止しました。とエラーダイアログが表示され結果が出力されません。 何が原因でしょうか? >>468 scanf("%f&r"); ではなくて、 scanf("%f",&r); よくわからんけど、gcc 拡張の警告でチェックしてくれんの? フォーマット文字列 と 渡した引数数の不一致 >>468 のプログラムをgcc 4.8.1でコンパイルしたら エラーメッセージは出なくて、実行したら 当然ながら、面積の値が0.000000と誤まった 値が出てきた。 エラーメッセージが出ないのが不思議。 オプションを付ければ、エラーメッセージがでるのだろうか int scanf(const char *format, ...) int printf(const char * restrict format, ...); そういうことで。 >>469 ありがとうございます。 実行することができました。 >>471 stdio.hを追っかけていけば、 int scanf(const char *format, ...); int printf(const char *format, ...); のようにprintfと同じ形であることがわかる。 printf("hoge"); がエラーでないように scanf("hoge"); もエラーとはならない。 ただgccは賢くて -Wall をつけると、 formatの中身を解析して警告を出してくれる。(printfも同様) googleでgccのコンパイルオプションについて検索すると 検索結果がゼロになることが何度かあった ちなみに gcc -オプション名 みたいな感じ検索してた どうもman gccの最初の数ページしかgoogleに登録されてないっぽい挙動なんだが google で検索キーワードの前にマイナス記号がついてると、 そのキーワードを含む検索結果を除外する (いわゆるマイナス検索) ようになってるので、 オプションについて検索するときは気をつけような。 数か月前にgoogleで gcc version-script gcc bsymbolic-functions gcc fvisibility で-抜いて検索しても検索結果ゼロだったのに 今見たら検索結果でるようになってる gcc bsymbolic-functions が stackoverflow ばっかりでgcc本家の https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html が出てこないのは今も同じ 単にstackoverflowの質問が増えたからgoogleに引っかかるようになった? そろそろC言語初心学習者に、もっとも最適な書籍を決めてください 柴田本? 苦C? 林本? やさC? K&R。プログラミング自体初心とかの特殊な人は知らん >>479 C言語は、アセンブリ言語を操れる人にとって簡単に使えるように出来ている。 なのでアセンブリ言語関係の本を先に読むべき。 # ジョークだよ? 学校の課題でc言語でゲームを作るんですが作りやすいものとかないですか? >>485 純粋にCだけでってなると数当て(乱数適当に作っておいて、値を受け取って小さいか大きいかを表示する)なんかも 作り易いと思う。 あとはフルハウスやババ抜きなんかのターン制のカードゲームとか もっと面倒なのだと数独やオセロなんかの平面に文字を並べればなんとなくそれっぽく見える感じのゲームは作れうるかな なぜ学校でプログラミングをやるのか? なぜCを使うのか? 目的と手段を履き違えてないか? ィ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙t, 彡;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r''ソ~ヾ:;;;;;;゙i, t;;;;;;;リ~`゙ヾ、;;;;;;;;;;;;;;;;;;;;ノ i,;;;;;;! ゙i,;;;;t ヾ-‐''"~´_,,.ィ"゙ ヾ;;f^! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ト.;;;;;》 =ニー-彡ニ''"~´,,...,,. レ')l. < >489 おまえは何を言っているんだ t゙ヾ;l __,, .. ,,_ ,.テ:ro=r''"゙ !.f'l. \____________ ヽ.ヽ ー=rtσフ= ; ('"^'=''′ リノ ,,.. -‐ゝ.>、 `゙゙゙゙´ ,' ヽ . : :! / ~´ : : : : : `ヽ:. ,rf :. . :.: j 、 . : : ト、.、 : : : : : : : : : : ヽ、 /. .゙ー:、_,.r'゙: :ヽ. : :/ ヽ\、 :f: r: : : : : : : : !丶 r-、=一=''チ^ ,/ !:: : :`丶、_ : /: : : : : : : : :! ヽ、 ゙ ''' ''¨´ / ,i: : : l!: : : : :`ヽ、 〃: :j: : : : : : : ゙i `ヽ、..,,__,, :ィ":: ,ノ:: : : : : : : : : : : :\ ノ: : : : : : : : : : :丶 : : ::::::::: : : : /: : : : : : : : : : : : : : : :\ >>489 目的はこの支配からの卒業 手段は課題消化 メジャーなコンパイラにはなんで実行ファイルの難読化オプションがないんだろうか。 デマングリング不可の関数ラベル名を生成するだけでも相当な難読化になると思うのだが。 本格的な文字列処理を行う場合、内部コードはUTF-16に統一するのが常識なのだろうか。 あと最近はユニコード扱う場合はchar16_t使うのが主流になってたりする? なにかのライブラリ使うならそのライブラリが対応しているエンコーディング使えばいいが、 自前で文字単位の処理やるならマルチバイトよりワイド文字のが楽でしょ。 内部的には結局コードポイントの単位で扱うだろうし。 「本格的な」の内容がUNICODEに定義されたすべての文字を扱えるということを含むなら UTF-32、基本多言語面だけで十分ならUTF-16でいいだろう。 文字単位が大方2バイトと決まってるUTF16使うのが一番楽。 unsigned short ch = u"あa"; ch[0]; // 'あ' ch[1]; // 'a' UTF-8ではこうは行かない。 >>500 その「大方」がつらいんよ。 自分しか使わないプログラムとかなら手抜きしてそういうのでもいいと思うけど。 たいてい「このアプリはBMPまでしか対応しません」で困らん。 if(argc>3|||!strcmp(argv[1],"/?")||strcmp(argv[1],"-?")) /? と-? て、どういう意味? >504 そのまま。特別に変換するわけでもない文字列。 コマンドラインアプリで引数にヘルプオプション指定されてるか調べてると思われる。 >aaa.exe /? >aaa.exe -? サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ https://www.youtube.com/watch?v=NDq1QoJY0nY 宇ドナルドアナリストパワーストーンコーチングとしまえん サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足 サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題 春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残 コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題 マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了 校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント 高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート C++ならクラス作ってクラスの操作関数を多数登録できますが、Cの構造体で同じことをやろうとしたらどう書くのでしょうか? 構造体に関数ポインターをもたせる 第一引数は構造体のポインター >>508 なるほど、そういうやり方なんですね!ありがとうございます。 >>508 構造体に関数ポインタ持たすの意味なくね? int main(){ char a[20]; char b[20]; scanf("%[^abc]", a); printf("a[] = %s\n", a); scanf("%s", b); printf("b[] = %s\n", b); return 0; } 2回入力できないのは、なんで? ネットから拾ってきたソースを参考にしています。 2つのファイルをマージして、コードからメッセージを参照するハッシュリストを なのですが、どうも無限ループに陥ってしまっているようなのです。 hashlist_lookupのwhile脱出条件であるNULLをhashlist_add内で セットしなければいけないのはわかるのですが、どのようにすればいいのでしょうか? メインはこのようになっております(関連部分だけの抜粋です) static struct hashlist message_list; ハッシュリストの作成部分 hashlist_create( &message_list, 2048, 682 ); マージしてハッシュへ登録部分 if( src1id == src2id ) { src1ptr += 7 + src1len; src2ptr += 7 + src2len; hashlist_add( &message_list, src2id, destptr ); } else if( src1id > src2id ) { src2ptr += 7 + src2len; hashlist_add( &message_list, src2id, destptr ); } else { src1ptr += 7 + src1len; hashlist_add( &message_list, src1id, destptr ); } ハッシュリストを参照する部分(hashlist_lookup内で無限ループ) struct hashnode* node = hashlist_lookup( &message_list, message_id ); return node ? (char*)node->info : "(null)"; 以下、ハッシュ関連 struct hashnode { struct hashnode* next; u32 keycode; void* info; }; struct hashlist { struct hashnode* current; struct hashnode** table; int current_table; struct memblock memblock; int tablesize; int n_items; }; void hashlist_create( struct hashlist* _list, int _tablesize, int _bufsize ) { memblock_create( &_list->memblock, sizeof(struct hashnode), _bufsize ); _list->table = (struct hashnode**)xmalloc( sizeof(struct hashnode*) * _tablesize ); _list->current = _list->table[0]; _list->tablesize = _tablesize; _list->current_table = _list->n_items = 0; memset( _list->table, 0, sizeof(struct hashnode*) * _tablesize ); } struct hashnode* hashlist_add( struct hashlist* _list, u32 _keycode, void* _info ) { struct hashnode* node = (struct hashnode*)memblock_alloc( &_list->memblock ); node->keycode = _keycode; node->info = _info; node->next = _list->table[_keycode % _list->tablesize]; _list->table[_keycode % _list->tablesize] = node; _list->n_items++; return node; } struct hashnode* hashlist_lookup( struct hashlist* _list, u32 _keycode ) { struct hashnode* node = _list->table[_keycode % _list->tablesize]; while( node ) { //ここで無限ループ if( node->keycode == _keycode ) return node; node = node->next; } return NULL; } >>512 scanf() の [...] 変換指定子なんて初めて見たよ。 調べたところ、以下のような動作をするみたいね。 scanf("%[^abc]", a); 配列aには a, b, c 以外の文字が入る (入力文字列の先頭から a か b か c の直前までをaに格納) 上の入力で配列aに格納されなかった分はバッファに残る scanf("%s", b); すでにバッファに入っている内容を配列bに格納して関数終了 (配列aへのscanf()を終了させたa, b, cから始まる文字列が待機してるはず) というわけで入力操作は、 a, b, c を含まない間は scanf("%[^abc]", a); が完了しない scanf("%[^abc]", a); が完了したら、その途端に scanf("%s", b); も完了 scanfのスキャン集合はよく使われる機能だよ >>512 2回入力、というのは改行キー(エンターキー)を押して2回入力した、という意味で 使ってるんだろうけど、スキャン集合を使うと改行も入力文字として扱うようになるから、 つまり改行キーがエンターするキーではなくなってるのが、理由。 ttyのcookモードの観点では依然改行でエンターだけど、まあそれは別の話 >>514 引用の範囲は問題ない http://codepad.org/yoBUyHMg >>518 返信有難うございます 他の部分の調査を行ってみます お手数をお掛けしてすみませんでした >>520 いやいや>>508 の前提では意味ないと思う。 逆に聞きたいんだが、どういうふうに使うのか、もしくはどんな利点があるのか、教えてくれたら嬉しい。 >>521 用途は質問趣旨でメソッド風に使う。 利点は質問者なりにあるんじゃないの。 何故無意味と思うのか具体的に書かないと誰も答えられないと思う。 >>522 そのイメージがわからないから、コードでいいので具体例を示してくれない? すごい単純なので良いので。 本当にイメージ出来ないんだ。 >>523 イメージがわからないけれど、無意味とは判ったのですか。。。 ひょっとして 「インスタンスには関数ポインタじゃなくてクラス定義へのポインタを持たせろよ」 的なこと? ふつう、インスタンスが違っても関数の定義は一つなので、インスタンスのポインタだけでいいよね。 構造体に関数ポインタを持たせれば、 インスタンスごとに関数の実体を変更できる。 C++でのオーバーライドに相当する使い方。 というのはどうかな。コード示せなくて悪いけど。 ip->func(ip, ほかの引数...) 仮想関数を実現するときぐらいで静的に確定してるなら func(ip, ほかの引数...) で十分だよね >>530 を見るまで >>510 の意図を把握できなかったよ。 そういう意味だったのか。 ip->func( ip) に対応するのは func_of_some_class( ip) だよ。ネームスペースが違うんだよ。 自分がそうしないから無意味というような考え方はあまり楽しくないと思うよ。 Cなんだから、単純に構造体に識別子を持たせるだけでいいね >>507 まだ見てる? func_of_some_class( obj) よりは obj->func( obj) の方が嬉しいだろうけど、関数が多いと *obj が大きくなる。もう気づいてるよね? それが問題になるようなら関数ポインタのための構造体を1個だけ用意して some_class . func( obj) という方法もある。でも、あまり嬉しい書き方ではないだろうね。 そこで、この構造体を指すポインタを *obj に入れて obj->f->func( obj) みたいな感じでどうだろう。これなら *obj の大きさはポインタ1個分増えるだけだし obj->func( obj) と同様にコードの再利用性も高い。まあ、C で簡単にやりたいなら多少は妥協も必要だけど。 getsって危険な関数って書いてあったけど putsとputcharって、危険ですか? すまない、ちょっとお尋ねします debian lenny なんつー古い環境で開発せざるを得ない中、C++で「unsigned long long」型を使おうとしてるんだけど 16ビットずつシフトさせていくと、32ビットを超えた部分が消えてしまう a = 0x00000000ffffffff; a << 16; → 0x00000000ffff0000 こんな感じ、本来なら0x0000ffffffff0000になるはずだが… 環境変えろは分かるんだが、以前のgccでそんなバグの事例があったかどうかが知りたいです >>537 配布済みパッケージならgcc 3.4, 4.1, 4.2, 4.3があるけど 少なくても 4.3.2 にはそんなアホみたいなバグは無い http://ideone.com/qN9OJV とはいえdebian lennyだろうと好きなバージョンのgcc突っ込んで使えばいいと思う >>539 原因が分かりました… 画面にprintf出だしてたんだが、0x%016x にしてたんが問題やった 0x%016llx でちゃんと表示された!コードら正しかった! お騒がせしました gdbも使えない環境なのはきついね… gccだって指定されてるから変えらんないのですわ >>541 いかにも「うっかり間違えそうな人」が書いた投稿だね。 よほど慌ててるのか。 cppcheck を試したらどうだろう。 printf() の書式文字列と引数の型の一致もチェックしてくれるよ。 >>544 俺です たしかにちとパニクってしまった一連の流れではある まぁこのあとにディストリビューション更改が決まってはいるので、できうる限り俺が主導権握って いろいろ決めてしまおうかと思ってる int tensu[3] for(i = 0;i < 3;i++) scanf("%s %d %d",tensu[i],tensu[i],tensu[i]); printf("%s %d %d", tensu[i],tensu[i],tensu[i]); 超初心者です 配列がわかりません 文字列を混ぜる場合、どうすればいい? 田中 59 46 char namae[3][128]; int tensuu1[3], tensuu2[3]; for(i = 0;i < 3;i++) scanf("%s %d %d",namae[i],tensuu1[i],tensuu2[i]); printf("%s %d %d\n", namae[i],tensuu1[i],tensuu2[i]); char namae[3][128]; int tensuu1[3], tensuu2[3]; for(i = 0;i < 3;i++) scanf("%s %d %d",namae[i],&tensuu1[i],&tensuu2[i]); printf("%s %d %d\n", namae[i],tensuu1[i],tensuu2[i]); int lang[3][2] hound dog to zu no nein 2次元配列だけど、scanf使ってこんな感じで 入力したいけど、どうすればいい? C言語でゲラフィック液晶動かしてみたいんだが、簡単に動かせるツールみたいなのある? ___ ♪ ∩/ || ̄ ̄||♪ ∩∧__,∧ _ ヽ|.....||__|| 7 ヽ( ^ω^ )7 ゲラフィック♪ /`ヽJ ,‐┘/`ヽJ ,‐┘ ゲラフィック♪ | ̄ ̄\三 / ̄ ̄ ̄/ ´`ヽ、_ ノ ´`ヽ、_ ノ | | ( ./ / `) ) ♪ `) ) ♪ DENSOの奴はC言語のインターフェースあったかな・・・ ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ デバッグで初期化してない変数の値見ると でたらめな値が入ってることあるけど zaifの2246兆バグもそんな感じなの? あっちでそんな質問にための質問してるのがいたが 教師無し学習中のAIっぽ >>561 その可能性はない、とは言えないね。 未初期化領域からの読み出しは「未定義の動作」らしいから、 口座に多額の振込がされてもANSI規格には反しない。 1年近く放置されて沈んでたのが、たまたま上がってたんで、 質問する人と答える人が現れたという程度じゃろ。 最近「俺に聞け」の145も立って機能してるし。 あのお、どのレベルまでいけたら初心者脱出=プロとして食っていける、 なんでしょうか 大いに世の中に役に立つソフトウェア、もしくは高い値段が付いてよく売れるソフトウェアが作れればプロだ。 C言語のみに限定する話ではないし、色々な選択肢はある。高い技術力は必ずしも必要ではない。 ゼロからの製造よりも組み立ての方が良質になる。個人の技術力では、我がソフトのカラスンポくらいのものが作れれば十分だ。 開発段階では、訳のわからないことになるかもしれないが、現在のコンピューターのシステムは、 管理者権限がなければ、そんなに簡単には壊れないので、大いに試行錯誤するとよい。 情報科学や計算機科学の理論・知識があれば、試行錯誤の手間と時間は削減できる。 だからこそ、皆さんには大学へ進学し、資格を取得することをオススメしている。 資格なんかに頼らなくてもいくらでも勉強できる 資格はレベルの低い大学を出た人がレベルの低い会社に入る時に有効になる場面があるかも といった程度 YouTube にある、セレブエンジニアの小松和貴の動画を見れば? プログラミング未経験者が、月50万円を稼ぐ方法! >>566 他人が書いたソースの「あらゆる」バグを見つけて 原因も治し方もすべて解説出来ればOK 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 3F9AF >>573 あらゆる、というのは到達困難かもしれないね… >>573 実際は、バグの原因がわからなくとも、対処できればプロ。 対処しかできないプロが多いのかもしれないが。 //理由はわからないが下記を消すと動かない。 sleep(500); sleep()ってわけじゃないが、同じプログラムを速いマシンで動かすと 不具合が出るってことあったなあ。 それはシグナルハンドラの作りが悪くてそうなってたんだけどね。 遅いマシンだとその遅さ故にまともに動く率が高かったという。 I/O直叩きでセトリング時間をCPUクロック依存で確保してると… CPUが変わった時、 パケットとパケットの隙間が狭くなりすぎてたまにエラーになることがあったな お願いします。 C言語でテトリスを作るのに4次元配列はかならず必要でしょうか? >>582 実際にテトリスを作ったことはないけど、各次元をどう配分するの? 盤面のタテヨコで2次元、ブロック消滅前後の状態保存用に1次元、 対戦のプレーヤ2人分に1次元、これで合計4次元って感じ? >>583 そんな感じです。でもよく考えたらブロックの回転状態用にもう1次必要で、 5次元ですね。 3次元より上は空間的にどうイメージしたらいいのでしょうか? この世は11次元だという話もありますが(物理学)・・・ ついていけてないです 本当にそれだけの 独立変数が必要なのか? を考えるだけー >>585 空間をイメージするのは2次元で十分 4次元幾何や5次元幾何をイメージ出来る必要は全く無い この世が11次元?誰がそんな事を? 超ヒモ理論のヒモの震動の自由度が11次元 て言うのをそういう解釈しちゃう人がいるのか そんな事をいったら、 この世界に無限次元な物などいくらでもあるが 普通に生活出来てる >>582 要らんだろう。縦横の2次元配列で余裕で行けると思うが? 更に言語も関係ないと思うが。 そもそもなんでそういう考えになったの? >そもそもなんでそういう考えになったの? うん、私もそれが聞きたい、責めているわけじゃないですよ、新しい発想を求めているのです… まず、紙に小さな点を描いてみる。これがゼロ次元だ。 次に、小さな点を描いた紙を2つ横に並べて、その2つの点を頭の中で連続的につなげる。これが線であり、一次元だ。 さらに、線を2つ並べて頭の中で連続的に繋げる。これが平面であり、二次元だ。(以下略) >>591 そこでやめずに、4次元まで続けていただけませんか? 大学で超立体くらい勉強しただろう。板違いなので、これで終わり。 データの世界では、n変数の関数のことをn次元という。 毎月のミカンの生産量と、毎月のリンゴの生産量を縦に並べるとしよう。 これは、月と、果物の種類の2つのパラメータがあるから、2次元のデータだ。 このデータが有限であれば、二次元の紙の上に、表(table)として書き表すことができる。 線を切断すれば点が現れる。 面を切断すれば線が現れる。 立体を切断すれば面が現れる。 物体を「切断」すれば、より小さい次元に映し出すことができる。 ならば、3次元のデータを紙に書き表すにはどうすれば、いいか? 3次元のデータをあるパラメータの定義域についてすべて切断すれば、複数の二次元のデータになる。 つまり、3次元のデータは、複数の表として書ける。 片山が新キャラ扱いされるなんて時代の流れを感じざるを得ない >>599 片山さんはすっごく尊敬しています、注目に値するべき生産性です ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる