1 :
デフォルトの名無しさん :
2011/12/23(金) 22:51:14.19
printfの書式文字列で size_t や time_t や long long の数値を表示したい時は、どんなふうに書けば最も移植性が高いの?
で、それをgettext のリソース中に書くにはどうしたらいいの?
unsigned char const*const format_str = #ifdef __GNUC__ "GNU式〜" #elseif _MSC_VER "MS式〜" #elseif __BORLANDC__ "BCC式〜" #elseif … "…" #else "仕方が無い〜" #endif ; /* close format_str */
5 :
デフォルトの名無しさん :2011/12/24(土) 00:38:20.44
#include<stdio.h> int main(void) { char x; x='A'; } エラーが出た。 何で?
エラーみりゃわかんだろ。
7 :
デフォルトの名無しさん :2011/12/24(土) 02:41:29.07
#include <stdio.h> int main(void) { int ar[3]; printf("ar=%p\n", ar); printf("&ar=%p\n", &ar); printf("&ar[0]=%p\n", &ar[0]); printf("(&ar)[0]=%p\n", (&ar)[0]); return 0; } ar=0028FF14 &ar=0028FF14 &ar[0]=0028FF14 (&ar)[0]=0028FF14 これ何でみんな同じ場所になるの? 特に2、4行目とか
int a = 0; a = 0; &a = 0xffffffff; &a[0] = 0; (&a)[0] = 0; このうち&aは特別
9 :
デフォルトの名無しさん :2011/12/24(土) 04:19:02.90
#include<stdio.h> int main(void){ char first, last; first = "kojima"; last = "yosio"; printf("姓=%s\n", first); printf("名=%s\n", last); return 0; } これどこか間違ってるみたいだけど、わからないので教えてください><
>>9 firstとlastを定義してるとこの型がおかしい
11 :
デフォルトの名無しさん :2011/12/24(土) 04:44:40.52
>>つまり、どうすればいいのですか?
12 :
デフォルトの名無しさん :2011/12/24(土) 04:45:36.88
11ミス
>>10 つまりどうすればいいのですか?
>>9 >>12 char first, last;
→
char *first, *last;
14 :
9 :2011/12/24(土) 09:00:26.22
ありがとうございましたm(__)m
いえいえ
17 :
デフォルトの名無しさん :2011/12/24(土) 15:48:05.16
#include<stdio.h> #include<math.h> char *Parity(); int main(void){ int num; char *pari; printf("整数を入力してください。\n"); scanf("%d", &num); pari = Parity(num); printf("%s\n", pari); return 0; } char *Parity(int nn){ char *parit; if (nn % 2 = 0){ parit = "even"; } else { parit = "odd"; } return parit; } ifの行にエラーが出るのだけど、どうしてですか?
18 :
デフォルトの名無しさん :2011/12/24(土) 17:44:12.89
mysqlでinsertをwhile文の中で実行すると、command out of sync;のエラーがでるのですが、 while分の中ではできないのでしょうか。 プログラムは以下のようになっています。
19 :
デフォルトの名無しさん :2011/12/24(土) 17:45:49.24
貼り忘れました。 connect = mysql_init(NULL); if (!mysql_real_connect(connect, MYSQL_SERVER, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DATABASE, MYSQL_PORT, MYSQL_SOCKET, MYSQL_OPT)) { fprintf(stderr, "%s\n", mysql_error(connect)); exit(1); } if (mysql_query(connect, "select * from mysql where ID!=1")) { fprintf(stderr, "%s\n", mysql_error(connect)); exit(1); } result = mysql_use_result(connect); while ((row = mysql_fetch_row(result)) != NULL) { 処理 sprintf(data,"replace into mysql values(%f,%f,%f,1)",a,b,c); if (mysql_query(connect, data)) { fprintf(stderr, "%s\n", mysql_error(connect)); exit(1); } mysql_free_result(result); mysql_close(connect); }while文の終了
20 :
デフォルトの名無しさん :2011/12/24(土) 18:13:01.40
>>14 配列の実体の変数に対し、&をつけてアドレスを取り出した時だけ、同じアドレスが取り出される(ポインタを挟んで参照すると、流石に変わる)みたいだけど、
int ar[N];
ar == &ar
Cではこういう規約みたいなものがあったりするのかな?
それとも偶々か。ちなみにGCC4.5とVC10で試してみた。
>17 if (nn % 2 = 0){ if((nn % 2) == 0){ 二重括弧いらないと思うが念のため。
22 :
デフォルトの名無しさん :2011/12/24(土) 19:02:27.39
こんなこと聞くのもスレチな気がするんだけど プログラミングの基礎力を上げるいい方法とか問題ってないかな? C言語4年やってるけどまだまだわからないことが多すぎて不安になる。 友達に聞かれても迷うことが多くて最近自分が嫌になってきた。
書いたり読んだりしたら良いとおもうよ
バッチファイル便利だなぁ... バッチジョブを終了しますか?ってのはWindows仕様なの?
#include<stdio.h> int main(void) { char *character; character='c'; } ってしたときに、characterの値を変えたい。 関数に渡してcをdに変えたい場合、関数は char* characterkansu(char *x) { x='d'; } でOK? 呼び出す時は characterkansu(character); でOK?
どちらもNG.
idef endif ってプログラマーじゃない限り知らなくていいでしょうか? どういうときに使うのですか?
>>26 #include<stdio.h>
int main(void)
{
char character;
character='c';
characterkansu(&character);
}
char* characterkansu(char *x)
{
*x='d';
}
コードがあるのに、これでいいでしょうかって動かす環境なしでやってるってこと?
覚えるのぜったい無理だと思う。
>>23 「Cプログラミング診断室」とか「Cプログラミングの落とし穴」とか、
「C言語 FAQ 日本語訳 」とか「Unix Programming Frequently Asked Questions」とか読め。
32 :
デフォルトの名無しさん :2011/12/24(土) 21:35:47.91
18,19ですけど、 エラーを直せません。 どなたかアドバイスいただけませんか。
>>29 #ifdef / #endif のことか?
別に職業プログラマじゃなくても、趣味プログラマでも普通に使うぞ
他の条件コンパイル絡みのものとあわせて、例えば…
・デバッグ時だけ処理したい部分があるときに使う
・第二の範囲コメントとして使う
・1つのプログラムでソースファイルが複数になったときに、依存関係を解決するために使う
・複数のプログラムから共用されるようなライブラリを作るときに使う
など…まあ、ある程度の複雑さを持つプログラムを書くなら知っておきたいね
35 :
デフォルトの名無しさん :2011/12/24(土) 23:08:11.96
>>34 #ifdefや#endifみたいなのって関数っていうんですか?
他に#defineみたいなのは知ってますが、関数より#〜は
数が少ないですよね。
>>36 関数ではなく、Cプリプロセッサへの指令。Cコンパイラを通る前に処理される。
Cプリプロセッサについて詳しく知りたいならググればいいと思う。
>>37 で
#define
#include
とか以外に何かある?#〜
#pragma
>>38 あるが、そろそろ自分で調べようとは思わないのかい?
>>40 #は記号だから日本語と違って調べても出てこない。
せっかく「プリプロセッサ」という言葉を教えてもらったのに……。
プリってどういう意味? プリレンダリングとか プリントとか。
46 :
デフォルトの名無しさん :2011/12/25(日) 00:45:21.70
microsoft visual studio2008 で"fprintf"の勉強をしています。 "fprintf"でメモ帳やエクセルなどを多量に作っています。 出力先を変更したいのですが、数が多いので手間と時間がかかってしまいます。 コードを一括に変更する方法がありましたら、ご教授をお願いいたします。
つ[リファクタリング] そろそろC++に移行する時期だな 出力専用クラスを作れば楽々
すげぇな、エクセルを作っているのか。それも大量に。
>28
>>26 >char *character;
>
>character='c';
型が合わない(ポインタ変数に数値(文字コード)入れちゃダメ)。
>char* characterkansu(char *x)
>{
>x='d';
>}
*x='d';
ならこの行でエラーは出ない。
だがchar *の値を返す関数として定義されてるのにreturnが無いのがいけない。
値を返す必要が無いならvoidにする。
#include<stdio.h> void change(char* x); int main(void) { char *character; *character='c'; } void change(char *x) {} コンパイル成功、実行stackエラー
「プロセッサ」って言い方が気持ち悪い。 セッサってw プロセッスとか言わないのに。 「投げキッス」みたいな?w
#include<stdio.h> void change(char* x); int main(void) { char *character; char word; word='c'; character=word; } void change(char *x) { } これはコンパイルエラー。。。。
>>50 ,52
おまえアホだろ
ポインタは「メモリ領域のアドレスを指す変数」なのだから、まずポインタがどのメモリ領域を指すのか初期化しないとダメ。
> *character='c';
初期化されていないポインタ character の指すメモリ領域に 'c' を代入してる。
どこかわからんアドレスにアクセスするのだから実行時に落ちても文句言えない。
>character=word;
式の左辺と右辺で型が異なる。
>>53 int a;
int *b;
b=&a;
int aa[10];
int *bb;
b=aa;
何故?
#include<stdio.h> void change(char* x); int main(void) { char *x; x=NULL; *x='c'; } void change(char *x) { } 初期化したけど、コンパイル→成功、実行→スタックエラー
#include<stdio.h> void change(char* x); int main(void) { char *x=0; *x='c'; } void change(char *x) { } スタックエラー
>>58 「どこも指していない」ことが保証されたポインタの指すメモリ領域に対して代入を行おうとしたんだから、
そうなるのが当然。
それがあなたのやりたかったことなのか?
>>49 の
*x='d';
ならこの行でエラーは出ない。
に従いましたが...
どこが間違えてるでしょうか?
>>60 あなたが何をしたかったのか分からないけど、プログラムはあなたの書いたとおりに動いているよ。
>>59 char*型で作った変数aの中身を関数によって変えたいです。
char *a;
関数の戻り値はvoid
>>62 もしmain関数がその関数を呼び出したいのなら、
変更されるメモリ領域をその関数に対して提示するべきだよな?
main(){
char c;
change( &c );
//FIXME: 変数cの内容を表示して、変更されたことを確認できるようにする
}
形式的に char *x; 空 *x='c'; でエラーでない時って 空の部分どうしたらいいですか?
char *x; char d; d='a'; x=&d; *x='c'; 答えは&ですね。 &以外だと絶対実行エラーでますね.. ありがとうございました。
char * x; char d[1]; d[0] = 'a'; x = d; * x = 'c';
>>31 さんくす。
とりあえず片っ端から勉強してみる。
総相 川端達夫 帰化人。 在日韓国人法的地位向上議員連盟 法相 平岡秀夫 帰化人。 在日韓国人法的地位向上議員連盟 文科相 中川正春 在日韓国人法的地位向上議員連盟 厚労相 小宮山洋子 帰化人。 在日韓国人法的地位向上議員連盟 自身の選挙区の太平建設と談合 国家戦略相 古川元久 パチンコ協会政治アドバイザー 韓国人から賄賂を貰っている野田 韓国人の集いに参加している野田 野田は日本人じゃないだろ
71 :
デフォルトの名無しさん :2011/12/25(日) 11:46:03.01
>>68 配列の場合&いらんのか?ややこしいな...
関数で渡すならなおさらややこしい。
>>71 配列は、[ ] の数が合っていれば値を、
足りなければ配列のある場所を返すからな
>>72 プロジェクトの構成の種類を ダイナミックライブラリ (.dll) にするだけだと思うが…
75 :
72 :2011/12/25(日) 12:27:25.61
>>74 先生ありがとうございます
まじすか
やってみたのですがうまくいかず難しいです
もしよろしければgithubにhelloworldを返すdllのソースコードを公開していただけないでしょうか?
>>75 >やってみたのですがうまくいかず難しいです
何をやって、どううまくいかないか書けよ。
て言うか、
char* SampleFuncStr() {
static char sz[100];
strcpy( sz, "test" );
return sz;
}
ぐらいは試したのか?
78 :
デフォルトの名無しさん :2011/12/25(日) 12:38:34.81
>>47 ありがとうございました。
「クラス」がすごく重要なんですね。
そこをしっかりと勉強します。
79 :
72 :2011/12/25(日) 12:49:00.23
>>77 コンパイルしてみたらVCの下の画面にエラーが出てしまいます
>>72 エラーメッセージも読めないレベルの人なら、先に普通のアプリが作れるようになってからDLLとか書いた方がいいよ
>>79 >コンパイルしてみたらVCの下の画面にエラーが出てしまいます
>> どううまくいかないか (=エラーの内容ぐらい) 書けよ。
82 :
デフォルトの名無しさん :2011/12/25(日) 14:02:41.47
83 :
72 :2011/12/25(日) 14:16:31.59
すいませんエラーはこれです >プログラム 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' を開始できません。
HelloWorld.dllを実行しようとしてる?
85 :
72 :2011/12/25(日) 14:34:08.22
F5を押してdllを作ってます ソースコードを載せるので添削お願いします ■hello.def LIBRARY hello EXPORTS SampleFuncStr ■hello.h extern int SampleFunc(); ■hello.cpp #include <string.h> char* SampleFuncStr() { static char sz[100]; strcpy( sz, "test" ); return sz; }
>>82 >n = 60
>A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
>3-th smallest element = 3
こういう出力が出てきて、正常に実行出来た。
関数selectの名前だけ変えたが。
>>83 >>プログラム 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' を開始できません。
ちゃんと
>>74 やった?
>>87 プロジェクト作るときにやりました
defファイルもプロパティのモジュール定義ファイルにファイル名を書きました
またプロジェクトを作り直してF5ボタンでデバッグをやったらさっきのエラーと別に新たに↓のエラーがでました
>HelloWorld.exp : warning LNK4070: .EXP 内の /OUT:hello.dll ディレクティブの指定が出力ファイル名 'D:\source\vc++\Projects\HelloWorld\Debug\HelloWorld.dll' と異なっています。ディレクティブは無視されます。
ソリュージョンのビルドをやると以下の1行しか表示されなくなりましたがdllが作られませんでした
========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ==========
>>86 それでもスタックエラー出ましたが。
どうしてなんでしょうか....
文書作成ソフトはNotepadです。
3
2
1
2
3
↑
この5行が中身なんですが、
要素数が3 pが2 要素が1 2 3です。
>>89 実行環境は?
OSとコンパイラ名、それぞれのバージョンも
91 :
デフォルトの名無しさん :2011/12/25(日) 16:21:23.16
>>90 txt保存のとき"ファイル名"でOKでした。
他に自分が、k=l;のところをk=1;でした。
ちなみに、s.cというファイルを作ったとしたら
勝手にs1.cみたいに数字付きファイルが作られている事があるのですが
何故ですか?
92 :
デフォルトの名無しさん :2011/12/25(日) 16:21:48.04
95 :
88 :2011/12/25(日) 16:44:52.34
どうかたすけてください
97 :
デフォルトの名無しさん :2011/12/25(日) 17:02:41.25
http://7ujm.net/C++/time.html (真ん中)
このページを参考に現在時間を取得しました。
10分後の時間を取得したいのですが、どのようにしたらよいでしょうか。
以下のように行ったところうまくいきませんでした。
sprintf(buff,"%d:%d:%d",pnow->tm_hour,pnow->tm_min+10,pnow->tm_sec);
結果、16:64:55
これを、17:4:55とでるようにしたいです。
98 :
88 :2011/12/25(日) 17:06:25.11
>>96 debugのところにはdllがあるんですけどソリュージョンでビルドをやったときにdllが作れませんn
>>97 nowに10分足してからlocaltimeすればいんじゃね?
10年前にこの地球が存在していたことを証明するには どこで計算ができますか?
仮にこの地球が本物ではないのだとしたら あなたはいったい誰なんですか?
登大遊さんが1日に1万行ソース書いたとかいうエピソード見ましたが 凄くないですか?
書くだけなら猿でもできるし
1万行はすごいけど、5000行程度なら普通にいるよな。 つまり、すごい人は普通の人の2倍の能力を持つ。
>>105 頭の良さってペーハー的に位置づけるらしいですね。
イメージだと、オイラーが10としたら,アインシュタインが8,シャノンが4くらいかな?
登大遊さんはどれくらいだろう。
少なくとも、彼程の天才今の大学生にいないでしょう。
周り見回しても。
5000行の内何割くらいがアルゴリズムなんだろう....
いまどき行数やステップ数で考える人がいるなんて。
全くの0から自分の知ってる分野のプログラムを書くなら早いだろうけど 例えば今からEclipseのプラグイン作ってって言われて全く経験ない状態から24時間以内に5000行書いてみろよと
行数抜きに考えることもまた難しい。
>>109 ほかに物差しが無いんだから仕方ないだろ。
行数だしとけばお金が引き出せるんだから
むしろ積極的に利用した方がお手軽だぜ。
#\ i\ n\ c\ l\ u\ d\ e\ とかやったらhello worldで60行くらいいけるな
Ruby みたいのだと格安になっちゃうな。
プログラミング環境としてはノートとデスクトップのどっちが 良いですか?やっぱりノートですか?速いし。
個人で使いやすいもの使っとけよ
Desktopだと疲れない?
デスクトップよりタワーの方がいいよ。
コーダーの上がプログラマの上がシステムエンジニアの上は?
>>109 >いまどき行数やステップ数で考える人がいるなんて。
じゃあなんで考えるんだよ。
マジな話すると、ラップトップの小さい画面より、 デスクトップで大きなディスプレイ使って大きめの文字で設定するのが良いよ。 ディスプレイは、やや見下ろす位置に配置、 ブライトネスは暗めに設定、部屋の証明は消さない。 キーボードは体に近付けすぎない、肘が鈍角になる位置まで離す。
肘の位置重要だわ、死んだ人みたいに肘曲げて寝てる人いるけど、 あれありえないだろw疲れるw
平松サイド 橋下サイド 民主党 大阪市民(ナマポ、70代以上の大半を除く) 自民党 共産党 財界・関西電力 連合・自治労 日教組・公務員 毎日新聞・MBS 解放同盟・反日極左 朝鮮総連・韓国民団(野田の支持母体) 革マル派・中核派
ノートで仕事すると5時間で死ぬな
ITドカタやってて、今の現場はPC用意してくれなくて自分で持ち込みなんだけど、 でかいモニターを二つ持ち込んでるのって俺だけで、他はちっこいノートで作業してるから 浮いてて恥ずかしいわ。 eclipseとかあんなちっこい画面でよく使えるわ。
void MergeSort(int x[ ], int left, int right) { int mid, i, j, k; if (left >= right) /* 配列の要素がひとつなら */ return; /* 何もしないで戻る */ /* ここでは分割しているだけ */ mid = (left + right) / 2; /* 中央の値より */ MergeSort(x, left, mid); /* 左を再帰呼び出し */ MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */ /* x[left] から x[mid] を作業領域にコピー */ for (i = left; i <= mid; i++) temp[i] = x[i]; /* x[mid + 1] から x[right] は逆順にコピー */ for (i = mid + 1, j = right; i <= right; i++, j--) temp[i] = x[j]; i = left; /* i とj は作業領域のデーターを */ j = right; /* k は配列の要素を指している */ for (k = left; k <= right; k++) /* 小さい方から配列に戻す */ if (temp[i] <= temp[j]) /* ここでソートされる */ x[k] = temp[i++]; else x[k] = temp[j--]; } /* ソートされるデータ */ int x[ ] = {9, 4, 6, 2, 1, 8, 0, 3, 7, 5}; MergeSort(x, 0, MAX_DATA - 1); これトレースして教えてくれ 再帰の部分がいまいちわからん
トレースお願い
エレガントにな。
ソーと関数の変数定義の後にこれ突っ込んどけ static int n;n++;printf("呼び出し回数:%d left:%d right:%d\n",n,left,right);
>>126 持ち込みPCって、情報漏洩(会社、個人とも)でヤバイんじゃないの?
>>106 試行錯誤の結果行数かもしれない。
あと変幻自在の謎仕様、レガシーコード渡されて「ちょこっと変更すれば出来るだろ?」→解読に数日、とかも。
mid = (left + right) / 2; /* 中央の値より */ MergeSort(x, left, mid); MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */ 上のMergeSortを呼び出し終わったらどうするの? 最初0,9を渡して、割っていくんですが0,4 0,2 0,1 0,0 そして次のMergeSort(x, mid + 1, right); /* 右を再帰呼び出し */ わかりません
例えば猫が愛らしい猫なで声で鳴けるのは 猫自身が努力をして試行錯誤を繰り返した結果獲得したのではなく 単にもともと愛らしい猫なで声を身に付けて生まれてきた猫だけが人間に餌を貰えて子孫を残すことが出来たというだけで 愛らしい猫なで声を持たずに生まれてきた猫は人間に餌を分けてもらえず餓死して絶滅したというだけ 生物の進化というのはこういうことを言う 要するに駄目な奴は努力しても無駄だから死ねということ
確かに努力しても無駄だと思わせる文章だ。
努力しても無駄な人が書いた文章の見本になるな
自己解決しました
そういえばソースの良し悪しを決めるソフトとかってないの?
うん
hello worldを表示するだけのプログラムのexeが50KBもあるのはなぜでしょうか? C#だと10Kb以下ですが
ワイルドカード展開するためのプログラムとか入ってるからな。
http://www1.cts.ne.jp/~clab/hsample/Sort/Sort6.html このマージソートがどうしてもわかりません
トレースはどのようになってるのでしょうか?
0 4
0 2
0 1
0 0で MergeSort(x, left, mid); /* 左を再帰呼び出し */0 0を呼び出した後
void MergeSort(int x[ ], int left, int right)
{
int mid, i, j, k;
if (left >= right) /* 配列の要素がひとつなら */
return; /* 何もしないで戻る */
/* ここでは分割しているだけ */
mid = (left + right) / 2; /* 中央の値より */
MergeSort(x, left, mid); /* 左を再帰呼び出し */
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
returnで何もしないで戻ったら次の MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */を呼び出すのでしょうか?
MergeSort(x, left, mid); /* 左を再帰呼び出し */ MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */ ここの下からの処理はいつ実行されるのでしょうか? ずっと再帰でループしてるように思えますが
>>143 clつかってるのなら、/MDつければ小さくなるよ
>>145 なんかどっかのすれでも見た気がするけど、returnしてるところで終わる
>>148 4回目でMergeSort(x, left, mid); これに0,0入れてますよね?
最初に0,9を入れてMergeSortを呼び出して mid=(left+right)/2
0 9
0 4
0 2
0 1
0 0
if (left >= right) return;
つまり 0>=0でreturnなんですが
このreturnを実行したらどうなるのでしょうか?
0 1が返されるのでしょうか?
このreturnがどこに返されるのかがわかりません
0 1を返してまた実行すると mid=(left+right)/2で mid=0
MergeSort(x, mid + 1, right); /* 右を再帰呼び出し */
ここに入れる?わかりませんが 1 1と呼び出す いまいちわかりません
具体的に流れを教えてくれる方はいませんか?
>>149 MergeSort(外側)のなかで呼び出したMergeSort(内側)がreturnすると、MergeSort(内側)のところに戻るので、その続きをする
>>143 perl だと
たった20バイト程度だぞ。
外側のMergeSortの変数は、内側のMergeSortの変数に影響をあたえないし、逆もしかり。 これはスタックという仕組みで実現されている。 もう少し簡単な再帰から練習したほうがいい。 void recursive_test(int i) { if (i > 0) { recursive_test(i - 1); } return; } こういうので、いろんなところにprintf入れてみるとかで。
>>151 斜めすぎだろ。
>>147 書いたけど、それにつづけて小さいスタブに変えたらもっと小さくなるとか、せめてそういう方向でたのむわ。
>>151 まじすか
俺の負けです
ちょっと今/MDつけてみたら6KBになりました
これすごいですね
/MDについて聞いたら怒られそうなので自分で/MDについて調べてみてこのページを見つけました
http://msdn.microsoft.com/ja-jp/library/2kzt1wy3 (v=vs.80).aspx#
つまりこれは実行する環境にlibcpmt.libとmsvcprt.libとmsvcrt.libが入っていないと動かないということですか?
一般的なソフトは/MDつけてコンパイルされて配布されているものでしょうか?
>>154 実行する環境にmsvcrt.dllが入ってないと動かない(そのlib群は不要)
んで、それはある程度新しいWindowsなら標準で入ってる
一般的なソフトがどうであるかは知らない
なるほど勉強になりました
ある程度新しいというのが気になるかもしれないけど、 ここ10年くらいのWindowsはこれに含まれる。
MergeSortの回答ありがとうございます 参考にして見ます
>151 バッチファイル echo hello world 改行無しで16バイト。 BASICなら中間コード化でさらに小さく。
>>154 VCで作ったプロジェクトだと、デフォのスイッチに含まれてるから、大半はついていると思っていい
>BASICなら中間コード化でさらに小さく。 行番号で2バイト、 PRINTの中間コードが・・・2バイトか? hello worldで11バイトだか、文字数とか範囲指定とか必要だろうからさらに数バイト。 16バイトより小さくはならんだろ。
Hコマンド最強。
Hボタン連打
連打ッス!
マージソートって難しくない? 再帰普段使わないし 見たけど難しいな
167 :
デフォルトの名無しさん :2011/12/26(月) 14:19:20.24
mySQLを扱う際に、whereを用いて制限をかけようと思うのですが、 セグメンテーション違反になってしまいます。 a=3; if(mysql_query(connect,"select * from テーブル where ID >"+a)){ 変数を扱うところが原因だと思うのですが、 どのように直したらよいのでしょうか。
とりあえず基本的な理屈だけ覚えとけばいい。 どうせ実際に使う機会がある頃には記憶薄れて忘れちまってるからな。
>>167 select * from テーブル where ID > 数値 という文字列を渡すことを期待しているようだが
C言語で 文字列の連結は + で表せないぞ
十分に大きい文字配列 buf があるとして
sprintf(buf, "%s%d", "select * from テーブル where ID >", a);
mysql_uery(connect, buf);
こうなる
sprintf(buf, "select * from テーブル where ID > %d", a); こっちの方がクエリパラメータっぽくていいかもしれんね。
パラメータ中に printf フォーマット文字が入ったらいやーんな感じなので %s で受けるようにたけど 例題中じゃ出てこないから 後者で十分だったようだね
一番初心者向きのC環境何ですか? 簡単なグラフィックが利用できたらいいなと思っています。 例えば、黄色い四角形を出力するプログラムとか作りたいです。 図書館でC関係のグラフィック関係の本漁りましたがWindows以前(1995年より前) の本が7割くらいで……
likeを使うとしても、%を含めてリプレイスするのが一般的だから、入ることはないかと。
今連結リストの方方向リストを使って入力した値をいれてっれ中央値を表示させようとしてるんですが、どうやって値をソートすればいいのでしょうか? バブルソート使って、値が入力された時にソートしようとしているのですが、どうしてもできません。よろしくお願いします。
できますよ。
>>176 何ができないのか具体的に書け。
ソース全く出さずに、1から全部書いてもらおうとしているのか?
>>179 どう考えても1から全部書いてもらおうとしてると思うけど、どう考えても質問に答えてもらえるとは思えない
, - , -─ - 、
/:::::::::::::::::::::::::::::::::`‐、
/::::::::::::::::::::::::::::::::::::::::::::::\
/::::::::::;:ィ::::::::';:::::::::::`ヽ::::::::::::::ヽ
,'::::::;':::/ l:::i::::::ヽ:::\:::::::';:::::::::::::::',
i:::l::::i:/ ';:::';:::::::',\::ヽ:::::::::::☆:::
l::l::;イ__, ヽ、ト、::::ヽ、\:',ヽ〃l::::::
>>176 さん
';l l::l ` ‐- l:::::l:::::: こ、ここ、これ読んで下さいっ!
l::::l == 、 ,.ィ== l:::::l:::::::::
l:::::li //////////// l:::::l::::::::::
, -ーl::::lヽ、 r....::´`ヽ /l:::;'> 、:::::
, -ー 、'´`ヽl::::l// ` ‐-r‐ァ' ´ ,':/ー、 ';
/ , ノ ` l::::l li /ニく /⌒ヽ \.i
, └ '´  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / ノ__ ', ,イ:
/ \ (⌒⌒) , └ '´ / i/
/ ヽ / ー ' / /,.イ
∠ __ / / /
 ̄ ̄ ̄プ ー r── -------/-‐'´ /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| |
| |
/  ̄ ̄ ̄ ̄ /_____
/ お断りします / //
/ ハ,,ハ / / /
/ ( ゚ω゚ ) / / /
/ ____ / / /
/ / / /
/ / / /
#include <stdio.h> #include <time.h> int main(void){ time_t t; time(&t); printf("%s", ctime(&t)); return 0; } を実行したら↓みたいになってエラーがでるんですけどこれはコードをどう直したらよいのでしょうか? ------ ビルド開始: プロジェクト: Test, 構成: Debug Win32 ------ test.c d:\source\vc++\projects\test\test\test.c(7): warning C4996: 'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\program files\microsoft visual studio 10.0\vc\include\time.inl(86) : 'ctime' の宣言を確認してください。 Test.vcxproj -> D:\source\vc++\Projects\Test\Debug\Test.exe ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
>>183 エラーじゃないよ。
警告 ctimeはあぶないのでctime_sを使ったほうがいいです。この警告がうっとうしかったら _CRT_SECURE_NO_WARNINGS を定義してくださいな。
ってかいてる。
ありがとうございます 書き方はこんな感じでよいでしょうか? 直すところがございましたらご指摘お願いします #include <stdio.h> #include <time.h> int main(void){ time_t t; char c[26]; time(&t); ctime_s(c,sizeof(c),&t); printf("%s",c); return 0; }
ctime_sとかってvisual studioのみでしか使用できないんじゃなかったっけ つまり問題ないから直さなくていいって感じで記憶してるけど 警告がうっとおしいと思うなら_CRT_SECURE_NO_WARNINGSを定義するって感じで
値比較後の要素交換の記述 双方向のリストなら単純にいけそうだけど、単方向リストだと自分の1個前が欲しくなるから面倒 (ex. i番目 j番目の交換が発生 リスト繋ぎ変えでi-1 と j-1 が欲しくなる
他環境に移植できなくするためのMSの罠だよ。
visual studioとかvisual C++って無償?
>>189 無償版もある。てかそれくらいはぐぐってください
実行すると tarou.name = "tarou";の部分で error C2106: '=' : 左のオペランドが、左辺値になっていません。 ってエラーがでます どこが問題でしょうか? #include <stdio.h> struct profile { int age; char name[10]; int sex; }; int main(void){ struct profile tarou; tarou.age = 21; tarou.name = "tarou"; tarou.sex = 0; printf("%d - %c - %d", tarou.age, tarou.name, tarou.sex); }
strcpy()使え
>>194 strcpy使ったら出来ました
なんでstrcpy使わないとだめなのですか?
せめて入門書の一冊も読んでからにしてくれないか?
struct profile tarou = {21, "tarou", 0}なら出来るとおもう
198 :
196 :2011/12/26(月) 18:52:20.68
言い過ぎたごめん
tarou.nameはポインタだから、そのプログラムだと初期化するかstrcpyするかじゃない ユーザーに入力を促すようなものだとscanfつかって出来る
あと%cじゃなくて%sね
ああ、tarou.name[0] = 't';って一つ一つ入力する方法あるか
初心者スレなのに適当なことばかり。
>>199 tarou.nameは確かにポインタを生み出すコードではあるけれど、tarou.nameは配列と言うべきタイミングだろ。
ということを
>>201 が言いたいんだろうので同意。
って置いてけぼりにするところだった。
>>195 一般に、配列(文字列=文字配列)に配列を代入することはできないため。
それをしたい場合は、memcpy、特に文字列をコピーしたい場合にはstrcpyを使う。
初期化の場合は別だし、構造体でラッピングしたものを利用して代入を行うこともできるけれど、それは後から覚えればいい。
リテラルを書き換えられない設計にしてるのがおかしい
× ポインタ ○ ポインター
JISはまだ変わってなかろ。
JASに従えよ。
tarou.nameは配列の先頭要素へのポインタであって配列ではないよね
>>210 構造体のメンバ名だよ。って返せばいいのか?何をしたいのかわからん。
struct { char *taro; char hanako[10]; };
>>210 tarou.name自体は配列
ポインタとして解釈される場合に配列の先頭要素へのポインタに変換されるだけ
sizeof(tarou.name)の結果を考えてみろ
そりゃ型が違うだけ。 char[10]型ってことだろ。
テトリス作りたいのだが、time関数はいるわけ? テトリスが落ちる時間ってtime関数だよな?
mySQLって具体的にどんな用途があるの? 聞いたことあるけどイマイチ利便性が分からない。
>>216 データ管理で重宝してる。
機能をCで一から組んだら大変だと思う。
組み込み用途ならSQLiteのほうが使い勝手はいいよ
テレビとかイメージでも会社でパソコン打ってる風景って良く見るけど、 あいつらってプログラム組んでるの?何してんだろ。
パソコン使う仕事って全部プログラミング?
プログラマ以外でずっとパソコンに向かってる仕事ってデザイナーとかCADとかのイメージがあるな
経理とか総務とかは思い浮かばないの?
丸一日向かい合うほど経理するとは想像できなくて
ホワイトカラーなら、今時はどんな職種でもPCに向かって仕事すんじゃねーの?
何をするのかがわからんってのに、向かうだろって言われてもなぁ。 ホワイトカラーでPCに向かわない職種なんてくさるほどあるし…
仕事せずに、サーフィンしてるのかもしれない
天皇さまですらPC使ってるのに
明らかにキーボードだけをカタカタカタカタしてるよな。 テンキーもマウスも使う素振りもない。
日がな一日書類を書いていたら殆どマウスに触る必要もないが、 一般事務職でそこまでショートカットに精通している奴は少ないと思う。
それはそうと、pthreadを使ったスレッドプールの手頃なサンプルないかな。 pthread_cond_wait()が意外に使い難くて参った。
引きこもりが熱く語る「僕の考えるパソコンを使った事務仕事」とか笑えるわ
>>232 >230のことを言っているなら、それを書いたのは会社員の私だ。
235 :
231 :2011/12/27(火) 09:34:21.72
>>234 それで見つかるところは大抵最低限の使い方だけなんだよね。
この板のマルチスレッドのスレでも同じように梃子摺っている質問は幾つか見つかるのに、
具体的な回答が見つからないし。
具体的に何をしようとしてどうなったか書いてないと答えようがなくね?
>>215 clock()のほうが良いと思いmath
clock は精度が秒の環境もあるぞ。
WindowsならtimeGetTime()かQueryPerformanceCounter()を使うしな time()はかなり機種依存的性格を持っている
DOSの時は走査線待ち。
自己解決しました for(i=N; i>2; i--)あるべきでした
C言語でこのスレに書き込めるプログラム教えてください
平松邦夫/民主党 大阪市役所・自治労・大阪市労働組合・日教組・大阪市教育委員会・自民党・共産党・社民党・関西電力・住友グループ ・毎日放送・毎日新聞・関西経済連合・日本原子力発電株式会社 ・ 週刊文春・週刊新潮・NHK・朝日新聞・読売新聞 ・部落解放同盟・朝鮮総連・在日本大韓民国民団・日本遊技関連事業協会・全日本遊技事業協同組合連合会・日本弁護士連合会・生活保護受給者・反日左翼・9条の会・革マル派・中核派 VS 橋下徹/維新の会 大阪市民・みんなの党・国民新党・亀井静香・石原慎太郎・東国原英夫 様子見:公明
Windowsでコンソールプログラムで右下にバルーンを表示させたいのですが それだけのシンプルなほどシンプルな本当に登竜門なサンプルで公開してるページありませんか?
ダブルポインターのコピーについての質問です。 二次元配列の文字列をコピーしたいのですが、コピー元の二次元配列は ヒープメモリの確保が必要になりますが、コピー先のメモリも動的に確保しようと コメントアウトの部分を外すと、メモリエラー(ヒープの破壊)が起こりますが、 コメントアウトした状態の実装で、メモリの使い方は間違っていないでしょうか? #include <stdio.h> #include <stdlib.h> char **getString(); char **strSrc; int main() { char **strDst; // コピーされる側はヒープメモリの確保は必要ないのか? //strDst = (char **)malloc( sizeof(char * ) * 2 ) ; strDst = getString(); printf("%s\n", strDst[0]); printf("%s\n", strDst[1]); free( strSrc ); //確保していないので、解放は当然不要なわけであるが・・・・ //free( strDst); return 0; } char **getString() { strSrc = (char **)malloc( sizeof(char * ) * 2 ); strSrc[0] = "ABCD"; strSrc[1] = "1234"; return strSrc; }
>>246 NOTIFYICONDATA NIF_INFO
でぐぐれ
そう。
この場合戻り値がvoidなんですが returnっていうより 最初の if (left >= right) { --reentcount; return; } で条件に引っかからず一番したの処理まできたら 自動で前の処理の再帰に戻すってこと? returnって書けば戻るんだけど 終了には--reetcount(カウント数)だけだよね 自動で前の再帰に戻るの?
voidって値を返す必要がないのに どうやって前の再帰に戻ってるんだろう void HeapSortだけど voidの場合でも関数終了時に再帰が残ってる場合は前の再帰に戻してくれるの?
いや、あたい返しても返さなくても仕組みは一緒だろ…
>>248 ポインタの基礎ができてない悪寒。
>248の場合、strDstにメモリ確保しても、それをgetString()の戻り値で上書きしてしまっている。
なので、free(strSrc)で解放したメモリ空間をfree(strDst)で更に解放しようとして異常終了している。
そもそも、何がしたいのか判らんが勉強中はグローバル変数は使うな。
>248 strSrcとstrDstが同じポインタ値になってる。 free( strSrc ); //確保していないので、解放は当然不要なわけであるが・・・・ free( strDst); 同じメモリを2回開放しようとしてる。 >strDst = (char **)malloc( sizeof(char * ) * 2 ) ; >strDst = getString(); やるなら strDst = (char **)malloc( sizeof(char * ) * 2 ) ; memcpy(strDst,getString(),sizoef(char * ) * 2 ) ; だろう。
>>253 例えばこういうコードがある。
--
void subFunc()
{
puts("subFunc()");
}
void someFunc()
{
puts("before sub");
subFunc();
puts("after sub");
}
--
このとき、どう出力されるかは判るかい?
before sub subFunc() after sub ですか? なんかひねって before sub 1 after sub だったりしそうですがわかりません
#include <stdio.h> int main(void) { int i=1; printf("%c\n",a()); return 0; } int a(){ } これだと1って返されますね void a()に変更するとコンパイルエラー だけどcodepadの再帰はVoid型なのに関数ブロックの最後になったら前の再帰が返されてる 再帰はVoid型とか関係なくコードブロックの終了に返されるってこと?
>>258 値を返すとかなんだとかを脇において、処理がどう推移するかを考えろ。
1を出力しているところはどこにもないぞ。
>257の例で、処理がどう流れているかを処理される順番で表現してみた。 # main()はないが、someFunc()を呼んでいると仮定。 -- void subFunc() // 5 { // 6 puts("subFunc()"); // 7 } // 8 void someFunc() // 1 { // 2 puts("before sub"); // 3 subFunc(); // 4...9 puts("after sub"); // 10 } // 11 -- subFunc()の途中にreturn文があれば、こうなる。 -- void subFunc() // 5 { // 6 return; // 7 puts("subFunc()"); // この文は実行されない。警告レベルを上げると警告されるはず。 } // 8 void someFunc() // 1 { // 2 puts("before sub"); // 3 subFunc(); // 4...9 puts("after sub"); // 10 } // 11 -- これで判るかねぇ。
262 :
155 :2011/12/28(水) 15:12:32.15
>>252 意図は MergeSort() の入り口でカウントアップ 出口でカウントダウン して、
再帰の深さがいくつになってるかを分かりやすくしたかっただけ
できるかぎり元ソースの形(
>>145 リンク先)を維持したまま追加したので
途中脱出の部分で --reentcount してるけど
void MergeSort(int x[ ], int left, int right) {
/* ... */
++reentcount;
if (lest < right) {
/* 本体 */
}
--reentcount;
}
こういう記述にしたほうが良かったかな?
C言語で逆引きサンプルでいいサイトありませんか?
264 :
デフォルトの名無しさん :2011/12/28(水) 15:39:11.42
コンパイル時に、 % gcc -DHEX=12 a.c とやって、ソースを int hex = 0x12; としたいのだけど、どう書けばいいんだっけ... ("0x"を追加したい) int hex = 0x00##HEX; じゃだめだよね..
VCでしか確認できてないけど、↓じゃだめ? #define HEX_VAL(arg) 0x##arg int hex=HEX_VAL(HEX);
それだとgccじゃだめなんだな... って、確かgccはその書き方じゃダメだったような気がしてきた。 コンパイラ別にするのイヤだから別の方法で回避するわ。
お前らマージソートを何も見ないでかける? 難しくない?再帰といい処理といい マージソートなんて使う意味あるのか?
>>268 マージソートはクイックソートと同じO(NLogN)オーダーの速度を持ちながら安定なソート
だからstable_sort()に使われる
欠点としては多量の記憶域が必要な事と、クイックソートの約2倍の時間が掛かる
安定でなくてもいいならクイックソート、安定で速度が必要ならマージソート
270 :
デフォルトの名無しさん :2011/12/28(水) 17:33:47.68
ふうん
教科書に載ってるようなくらいのC言語しかしたことないんだけど 仕事でC言語って行ったらどんなことするの?
>>271 個人的な感想ですが、担当者レベルだと、ひたすら、
ビジネスロジックを設計(詳細設計)して書く、
そして、コーディング規則は現場によって違うけど、
厳しい方が後々良い。けど、書いているときはすごく面倒。
で、大体、テンプレート(見本のソース)を誰かが作ってくれて、
それを、自分のビジネスロジックに合わせて記述する。
ビジネスロジック意外の定番のロジックは大抵、
テンプレートを先輩が作っておいてくれるから、
C言語的には、基本は知っておけば良い。
っていうか、ポインタ程度の理解はすごい重要。
で、よほど、性能を優先する処理以外は、
「他の人がメンテナンスしやすい(理解しやすい)処理を書く」が
基本、というのが自分の大昔の大雑把な経験。
他の人(後任)が理解できない記述やロジックは嫌われる。
もちろん、処理速度を優先する場合は仕方ないけど・・・。
>>272 ポインタをどのくらいまで理解すればいいの?
ポインタを「このくらいは理解できた」なんてのは妄想。 理解できたか、理解できていないか、どちらかしか有り得ない。 面接で「ダブルポインタは大丈夫ですが、トリプルポインタは自信がありません」なんて 言っているような輩は、実際ポインタを理解できていない。
トリプルポインタなんて使う場面はほとんどないけどな 大抵ダブルポインタまで
ダブルポインタなんて言われた時点で「きっと理解できてないんだろうなぁ」と思っちゃう この単語は使わない方がいい
そもそもそんな質問する面接があんの? 今時Cの仕事ってなにがあるんだろうか。 8bitとかのワンチップマイコンくらい?
パチンコ
■民主党政権になって放送禁止になった言葉一覧■ [道義的責任・進退問題・発言のブレ・閣内不一致・派閥・プライマリーバランス 空気が読めない・庶民感覚・国民目線・バラマキで人気とり・国民に信を問うべき・OECDの貧困率 ワーキングプア・ネットカフェ難民・世襲・料亭・漢字・読み違え・直近の民意・国民の生活が一番、政権交代が最大の景気回復策、公務員改革 ガソリン値下げ、景気回復策、解散総選挙、ホッケの煮付け 世襲制廃止、地域主権、議員定数削減、地球温暖化対策]
NGワード情報ありがとう
カーナビ除く車載ソフトはだいたいC言語
ぼくも先輩方のような立派なCプログラマーになりたいのですが 今は大学で学んだ程度の基本的なC言語の文法くらいしかわかりません。 この先はどのように学習していけば良いのでしょうか?
>>283 一口にC言語って言っても、それを使って何をやるかってのはすごく幅広い
そして目的によって全然ノウハウは違ってくるから、実際みんな得意分野不得意分野がある
具体的に目標となる分野を決めて、その分野のプログラミングの勉強をすればいいんじゃないかな
C言語はLinuxをかじっとけば大体大丈夫になる
>>285 じゃあC言語ではないが、HTML と CSS は覚えておいて欲しいな
Webプログラミングと言っても細かく分けると色々あるから
その後に何をやるのかは知らんが、何れにしろその辺の知識は役に立つはずだ
あとWebプログラミングなら専門板もあるんだぜ
WebProg
http://kohada.2ch.net/php/
なんでWebって文理不問なの やっぱ組み込み系の方が賢いんですよね
流石にC言語の質問から離れ過ぎでしょそれは
大学で1年間プログラミングを習い、文法やポインタや構造体などを理解し、
簡単なCUIプログラミングをいくらか演習したようなレペルです
amazonのレビューで好評だったんで
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル
http://www.amazon.co.jp/dp/4434124234 この本を買ったんですが、難しすぎです
こんな自分に、おすすめの書籍かサイトを教えてくださいませ
webweb言ってる香具師はweb板いけばいいのに
>>272 ああ、同意だわ。
後続が理解しやすい、には、他のソースと程度をあわせることも含まれるね。
いかに当たり前のような記述であったとしても、その書き方が他のソースでされていなければ「何だこの小難しいコードは」と思われてしまう。
C++をベターC(…)として使っているプロジェクトでstd::vector使っただけでその洗礼を受けた。
例えばみんな手作業でマグロの一本釣りしてるのに一人だけ全自動リール使って楽してたら 空気読めない奴だと思われて村八分にされるのが落ちだろ 全自動リールってすごいね俺も今度からそれ導入しよう!とは絶対にならない 日本とはそういう国だ
PHPを開発の主において、C/C++をアセンブラに翻訳するように PHPをCに翻訳して使えば良いと思う。 生産性的に。 そういうコンパイラがあるが、winで動かず確認してない。
なんでその程度の知識と技術しかないのにえらそうに言うの?
× ポインタ ○ ポインター
アクセントは「ポ」  ̄\___ ポインター
ポリンキーか!
犬かよ。 理系ならJIS使え。
CRCを計算するソース。
#define CRC32_POLY 0x82F63B78 // CRC-32C (Castagnoli) #define CRC32_POLY 0xEDB88320 // CRC-32-IEEE 802.3
class CrcCalculate {
public:
unsigned int crc32table[256];
void make_crc_table();
CrcCalculate() { make_crc_table(); }
friend unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal);
} CrcCalculate_;
void CrcCalculate::make_crc_table() {
unsigned int i, j, x;
for (i = 0; i < 256; i++){
x = i;
for (j = 0; j < 8; j++) if(x&1) x=(x
>>1 )^CRC32_POLY; else x>>= 1;
crc32table[i]=x; }}
unsigned int crc32base (void *ch, unsigned int byte, unsigned int cal) {
unsigned int i; unsigned char *p = (unsigned char *)ch;
for (i = 0; i < byte; i++) cal = (cal >> 8) ^ CrcCalculate_.crc32table[(cal ^ p[i]) & 0xFF];
return cal; }
unsigned int crc32 (void *ch, unsigned int byte) {return crc32base( ch, byte, 0xFFFFFFFF ) ^ 0xFFFFFFFF ; }
unsigned int crc32 (const std::string &ch) { return crc32( (void *)&ch[0], ch.size()); }
CRC32は重要な割に、標準関数に組み込まれてないから、簡単に使えるように貼ったんだよ。
頭悪そうだな。
チェックサムで十分
Cでもないもの貼るな。
つーか、CスレにC++貼るとか頭に蛆でも湧いているのかと。
C++をやるとバカになるっていう見本を、身をもって示してくれてるんだよ
お前ら、プログラミング以外だとイキイキしてるなw
c99の可能性は考えないのか。
310 :
309 :2011/12/29(木) 15:02:54.34
俺が悪かった。
C99禁止って職場は、レガシー以外の理由があるのかな?
大抵は低レベルに合わせるためだと思うけどな。 それ以外だと互換性か。
C99を導入する理由がそもそもないだろ
c99禁止と言いながら、//コメントやブロック先頭以外での変数の宣言は使う顧客もいるにはいる。
windowsではfopenは同時にオープンできる数に制限がある。 オープン、クローズを繰り返して使うか、APIを使うしかない。
大体は職場がターゲットにしてるコンパイラの問題だと思うけどね。 例えば、VC++はC99非対応。 まぁ、コーディング規約があって、上司が老害な可能性は否定出来ない。
FOPEN_MAXで分かる。 windowsでは50になってた。 しかし47あたりで開けなくなる。
標準入力や出力というものがあってだな。
>>318 そりゃデフォで3つディスクリプタつかうもん。
移植性をたもちつつWindowsのUTF-16に対応できる_wfopenが良いと思っていたが ファイル数の問題にぶち当たるとAPI使うしかなくなるな。
移植性のために、UTF-16(UNCODE)対応とファイル数制限を外した fwopenなどの関数群はないものか。自作しかするしかないか。
つーか、なんでそんなにたくさん同時オープンしたいん?
そんなに沢山オープンしていると却って管理が面倒な飢餓。
そのオープン数の制限はスレッド単位? プロセス単位? どっちにしろ、子スレッドなり子プロセスなりを立ててやらせたらいい。
#include <windows.h> #include <stdio.h> int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { printf("てすと"); MessageBox(NULL , "Error" , "エラー" , MB_OK); return 0; } 失礼します。 メッセージボックスを出して、かつコマンドプロンプトにも文字を出力させたいのですが 上記のプログラムではメッセージボックスしかできません。どうすればよいのでしょうか?
>>326 >editbin /subsystem:console hoge.exe
>>322 UTF-16なんて普通にfopenでいいじゃん
ファイル数制限も普通に解除できるし
W32を敵視する奴がいるから
>326 プロジェクトをWin32コンソールアプリケーションで作成する。
333 :
290 :2011/12/29(木) 20:42:25.03
おすすめサイトや書籍の質問は駄目なのか?
すいません #include<stdio.h> int main(void) { int a, sum=0; for(a = 1; a <= 10; a++ );{ sum= sum+a; } printf("1から10の数の和は・・・%d", sum); return 0; } だとなぜか11になるのですが なぜでしょう
int n = 1234; ↑のような数字の各桁を上から取り出す方法はあるでしょうか? 最初に1を取り出し、次に2を取りだしていくような感じです。 nの桁数は決まっていません。 よろしくお願いします。
>>337 遅くても良いなら sprintf してから一文字ずつチェック
むしろsprintfでいい
桁数が決まってないなら無理。 実装上の int や long の最大数を制限値とするならできる。
いやどっちにしろできるだろ。
>>340 どういう形であれロジック中で表現されているのに、それを取ることができないと断言するのはいかがなものか。
皆さん意見ありがとうございます。 桁数の方は2桁のときも4桁のときもありますが 最高は6桁で抑えれそうです。 引き続きsprintfを調査します。
桁数が決まってないってどんな状態だよw そんなもん扱えるわけねーだろw
実る前の林檎を食べることはできない。 時空を超越してる。
>>343 凄いスマートなコードですね。
ありがとうございます。
まぁsprintf()の中で同じことをやっているわけだが。
>>350 せめてlimits使え。
関数形式マクロの展開で、 #define max(x,y) (x>y?x:y) ・ ・ printf("max(x,y) = %d\n",max(x,y)); ・ ・ この場合""内のmax(x,y)が置換されないってのがいまいちしっくりこないんですが ""中の文字列は、定数としてメモリ上に取っておかれるようなイメージであってるでしょうか?
limits.hに最大桁数がマクロ定義されてるの?
じゃぁ桁数決まってない場合を書いてみろよ。
>352 なんか難しく考えてないか? コンパイラが文字列にはマクロを適用しない様にしてるってだけだろ。
>>355 だから桁数決まってないと無理ってんじゃん。
>356 なんだ、適当に反論したいだけか。
>358 元の要求は int n = 1234; なんだから問題ないだろ。
環境が書かれていない以上intの最大値(最大桁数)も決まっていない。 よって桁数が決まっていない。
つ アホは黙ってろって。>361
そいつと俺は違う人。
>>343 が桁数を決めずに処理できる良い例ってことだろ。
桁数が決まってない = 値が決まる前 これを扱うのはこの四次元時空においては不可能。
>>360 なんだからintの上限に決まってるだろ、アホ。
おこちゃまは寝る時間だぞ
intの最大値と最大桁数は違うと思うの。たとえ計算で求めることが出来るとしても。
最大値がわかれば桁数もわかるだろ。 どこの世界に住んでんだよお前は。
( <. | l // __ ヽ\,.ィ´ .ニニェ‐、// 〈〈〈〈 ヽ >、.く^┘ `) 〈 〈⊃ } // ´ , -‐-、 〈,ヘヘ ∩___∩ | | | l <丶`Д´> l | | ノ ヽ ! ! | l ヽ、__.ノ /./ / ● ● | / ,,・ ヽヽヘ、____,,..ィ,ン′ | ( _●_) ミ/, ’,∴ ・¨ `/`'‐--ヽ''´ 彡、 |∪| / 、・∵ ’ /、//|/  ̄ヽ / __ ヽノ / / // 異常 /\ 〉 (___) / / // TV/\ /
>371 子供は寝る時間だよ。
>371 アスペ乙
低脳乙。
>>355 桁数の決まってない数字を出力するから、入力が終わっている状態を示してくれ
>>376 getchar()が-1を返したら終わり。
1休さんかよw 屏風の虎w
>>379 それだとnがINT_MAX越えたらAUTO。
INT_MAXを超える桁数ワロタ
元々そういう話だろ、何言ってんだお前。
元々そういう話ワロタ 元々はちげーだろw
INT_MAX桁以上の数を扱うのってどういうときだろう 天文学的な数字っていうのもせいぜい数十桁だろうに
そんな話だったのならとっくに終わってるってこと。
>>384 intが16bitならいくつかわかるか?
DXライブラリってどこでダウンロードすべき?
有限でない数を内部で扱うのはむりだろ、それで結論?
>>386 3万ぐらいでしょ
ファイル数制限を外して、UTF-16LEに対応するためにここまでできた。関数の中身はこれから調べて作る。 typedef void _WOFILE; _WOFILE* _WOfopen( const wstring &fn , const wstring &mode){} int _WOfseek(_WOFILE *fp, long offset, int origin){} long _WOftell(_WOFILE *stream){} size_t _WOfread(void *buf, size_t size, size_t n, _WOFILE *fp){} size_t _WOfwrite(void *buf, size_t size, size_t n, _WOFILE *fp){} int _WOfclose(_WOFILE *fp){} int _WOfeof(_WOFILE *fp){} #define FILE _WOFILE #define _wfopen _WOfopen #define fseek _WOfseek #define ftell _WOftell #define fread _WOfread #define fwrite _WOfwrite #define fclose _WOfclose #define feof _WOfeof
C言語で無限大の数を扱うにはどうしたらいいですか?
>>392 ファイル数制限を超えてしまうような設計は考え直した方がいい
C言語で桁数の不明な数を受け取って表示するにはどうしたらいいですか? 何桁になるかは全くわからず、制約もつけられませんが、受け取り終わってから表示したいです
どんな方法にせよ、上限は必要
結論が出ました
>>393 IEEE754に定義があるからそれ使え。大抵の実装で使える。
最近「頭悪い質問で釣ってみた」の投稿多いな。
冬休みで暇なんだよ 面白いTV番組も無いし
>>392 違ってたら悪いんだけど、先頭4KBの人?
>>405 AOJって問題が日本語で書かれてるからか、ここ最近よく見るようになったね。
海外サイトならお金くれたりするのにね。。
日本語で書かれていても条件の見落としが多いのに 英語だと問題文何回も読み直さなきゃいかんのがしんどい
>>408 ちなみにAOJ、英語設定で解いていくと条件の翻訳不足で詰む問題がいくつかあるんだぜ
まちまちな大きさのロールケーキをたくさん作るケーキ屋さんなんて、ない。
>>407 マジで金くれるの?
未解決問題でもコンテストでもないのに?
メールで鍵を交換するソフトのことなんですが 質問いいでしょうか
スレタイとどう関係あるかを説明できたらな。
sscanfで、一度読んだところは飛ばして次から読むような方法って何かありますか? char *str = "1 2 3 4"; while(sscanf(str,"%d",&i)) で4回ループして1〜4を読むような感じのことがしたいです
ポインタ(アドレス)を進める
>>415-416 %nで取得した分だけポインタを進めることでできました
ありがとうございます
419 :
デフォルトの名無しさん :2011/12/30(金) 19:29:27.09
朝日新聞は一時期300人のネット工作員をかかえ、反日工作していた。 捕まった編集者は49歳ですが、こんなカスでも1500万円の年収がもらえるんですよ。 Domain Information: [ドメイン情報] a. [ドメイン名] ASAHI-NP.CO.JP e. [そしきめい] かぶしきがいしゃ あさひしんぶんしゃ f. [組織名] 株式会社 朝日新聞社 −「朝日新聞社は、とある思想やパラダイムに日本の世論を誘導する見返りに、中国から大量の資金を貰っている。」− これはおそらく週刊誌さえ書けない。 「失語症躁鬱ニートは氏ねよ」【ネット】朝日新聞社員(49)ネットで荒らし行為、会社ごとアクセス規制へ 09.3
ロールケーキの問題わからんなあ 普通に総当りしたら時間切れになるし どういう考え方で並びを求めるんだろう?
凸凹になるようにする。 たとえば半径5と5をつなげると、距離20を使ってしまう。 凸凹だと節約出来る。
そうね、一番凸凹になる並びを求めて入るかどうか調べればいいんでないか。 つまり、隣同士の半径の差の合計を最小にする問題かな。
あ、最大ね。
うむ、一番凹凸になる並びとはどのように求めるのかわからん
てんさいです 【東京都渋谷区】 12/31(土) 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ! 年忘れしてはならない!紅白さくら祭 みんなで「韓流紅白」をぶっ飛ばせ! 12時00分 渋谷駅ハチ公前広場 「街頭演説」(〜13時30分) 13時30分 移動 14時00分 渋谷公会堂前 「街頭演説」(〜14時45分) 15時00分 代々木公園・NHK横「イベント広場」 「年忘れしてはならない!紅白桜祭」 抗議集会・コンサート・炊き出し等々 盛りだくさんでお送りします!(〜21時00分)
誰も行かないだろ
>>427 何やってるのかさっぱり分からん
俺やべー
>>427 printf("%d %.5f¥n",width,min);
↑の行が余計とか?
>>427 while(sscanf(buf+offset,"%d%n",&cake[num],&oftmp) > 0){
↑ケーキ12個の場合、cake[12]をアクセスしているみたいだが。
#include <stdio.h> int main() { printf("円の面積計算機\n"); printf("半径を入力してください\n"); double pi,hankei,S; pi=3.1415926535; scanf("%f",&hankei); S=hankei*hankei*pi; printf("面積は%fです",S); return 0; } 結果が0.000000になるんだが
%fはfloatへのポインタじゃないとだめ。
scanf("%f",&hankei); ↓ scanf("%lf",&hankei);
printfでは%fでも大丈夫だからscanfでも大丈夫だと思ってた ありがとう
printf()系とscanf()系には色んな点で互換性が無いから要注意。 互換性があるかのごとく書いてある入門書で勉強した人は特に。
scanなんとかは型とサイズの指定が必須という事でいい?
>>397 長さを問わないということは、文字列だという想定で。
終わりの検知(EOFとか)の仕方があれば、人間がタイプできる長さくらいは受け取った後で表示できる。
>>436 正確には、ISO/IEC 9899:1999 6.5.2.2.6。
可変長引数では float -> double の型変換が行われる。だから printf() に float と double の区別は不要。
scanf()系にわたるのはポインタだから float->double は不可能であり区別しなければならない。
>>439 それだとcapaがINT_MAX越えたらAUTO。
>>438 floatとdoubleの違いも知らないやつが出てくるなよ。
>>441 じゃないが、まぁ別に不可能じゃないわな。
float=doubleの処理系もあるし。
>>440 >>439 じゃないが、同じようなのを考えてた。
一般論としてINTの上限は、取得できるメモリの最大長だったっけ?
INTの上限=コンパイラの仕様 取得できるメモリの最大長=OSの仕様
まぁ今時64bit OSも多いし、そんな一般論はないわな。
コマンドライン引数で、コマンドのオプション処理のところなんですが if(**(++argv)=='-'){ switch(*++(*argv)){ case 't': } } のように++(*argv)のポインタの移動で、argv[1][0]→argv[1][1]の処理が出来るのに、 double型4*3の配列の行ごとの合計を求めて表示する関数 void sum(double z[][3],int n){ //nは行数=4 で受け取って for(i=0;i<n;i++){ for(j=0;j<3;j++) sum+=*++(*z); //←ここでエラーが出ます printf("%d行めの合計は%f\n",sum); z++; } だとコンパイラからは「インクリメントの被演算子として左辺値が必要です。」とエラーが吐かれます "sum+=**z;"は通りますが、その次に"++(*z);"を入れると、「二項演算子 + への無効な被演算子です (‘double[3]’ と ‘int’)」とエラーが出ます そこで、該当個所を 「sum += *(*z+j);」にするとコンパイラも通り、期待通りの挙動をしてくれるのですが 配列z[i]の要素の、配列の要素z[i][j]を指すポインタをインクリメントするといったことはできないのでしょうか? 上の例で、それができる理由などはありますか?
int a[10]; a++;
初心者はC++のstringつかってしょりしろ
>>448 なるほど・・・まさしくな例ですね
それができないというか明らかに見慣れないのは分かるのですが
int a[10]; a++;が出来ないのは内部的にどういう理由なんでしょうか?
ポインタzが配列z[0]〜z[3]の先頭アドレスz[0]を指すのに対し
*zはx[0]のエイリアスで、
*zは配列z[0][0]〜z[0][2]の先頭アドレスz[0][0]を指す
とは単純に言えないのですかね・・・
それと
if(**(++argv)=='-'){
switch(*++(*argv)){
case 't':
}
}
ができるのはchar型特有なんでしょうか?
int a[10]は配列。 int *aはポインタ。
452 :
450 :2011/12/31(土) 15:48:10.79
すいません、
>>450 に追記すると
int a[10];に対してaのアドレスをint *ptrとして別の関数に渡してやれば
ptr++;の操作はできることと
a++;との差異は何なのでしょうか
別の関すに渡しているのは値。 その関数ではポインタで受けてるから操作できるってだけ。
>>451 あぁ、aは配列なのに対して、
>>452 で言うならint *ptrはポインタですもんね
なるほど、zはポインタで、*zが配列を指しているってことですか
確かにコンパイラのエラー表示がしっくりきました
ありがとうございます
ほう、飲み込みが早いな。 もうこれでQZを越えたぞ。
constなのか書き換え可能なのか考えろよ。 char a[]="0123";でa+1はできるだろ。 a=a+1は無理だろ。 何で無理なのかはそういう仕組みで作ってしまったからだな。
char a[]="0123";のアドレスが書き換えられないのは、 コンパイラが確保した変数のアドレス配置を書き換えられないって事だな。 例えば int n=1;のアドレスは&nだが、&n=&n+1とはできないのと一緒だな。
>>447 複数の点ではまっているようだ。
(1)
double[][N] は double ** と可換ではない。
コマンドライン引数の内容が格納されている *argv[] は決して char[][] にはならないことと同様。
http://codepad.org/SNGc1UiK (2)
>>448 ×double z[][3] で z++;
(3)
×sum+=*++(*z);
○sum+=*((*z)++);
またわけのわからないことを言い出したな。
char str[]="0125634"; や char str[]="3120456"; のように、0から6までの半角の数字を重複する事無く全て含んでいるかチェックしたいと思っています。 現在、forループ中で if(str[i]-'0'==3)flag3=TRUE; のように一つずつチェックしているのですが、もっとよい方法はありませんか?
>>457 char *p = "0123"と char p[] = "0123" とを混同していないか?
>>456 なるほどなるほど・・・
確かにいろいろ繋がりました
constと書き換え可能の視点で見ると良さそうですね
>>457 のサイトをちらちら読ませてもらいましたが
コマンドライン引数として受け取った、文字列リテラルに関しては
配列で実現する文字列というより、ポインタで実現する文字列として扱っているから
*argvは配列ではなくポインタであるんだろうと気づきました(違ってたら言ってください
>>459 ++も*も右結合の優先順位は同じですから(3)に関してはどっちもエラーが出ました
面白そうだからやってみよう。 でも、if(str[i]-'0'==3)flag3=TRUE; と大差なさそうだな。 int n = 0; for (int i = 0; str[i]; ++i) { n |= 1 << (str[i] - '0'); } if (n == (1 << 7) - 1) { } ちゃんと動くか確かめてない。 それに、速度的には全然ダメだろう。
>>459 (3)
それに関してはコード自体が間違ってました、すいません
しかしエラーという点では同じです
いろいろと考えることありそうなので、少し吟味させてもらいますねー
>>461 もっといいかはわからんが、俺ならこうする。
int counts[7];
int i;
const char *p;
for(i = 0; i < 7; i++){
counts[i] = 0;
}
for(p = str; *p != '\0'; p++){
assert('0' <= *p && *p < '7');
counts[*p - '0']++;
}
int ok = 1;
for(i = 0; i < 7; i++){
if(counts[i] != 1){
ok = 0;
break;
}
}
>461 char chk[7]={0}; flag = FALSE; ... if( (++chk[str[i]-'0']) >1) { /*重複あり*/ flag=TRUE; }
470 :
デフォルトの名無しさん :2011/12/31(土) 17:07:19.61
ゲームクリエイターってゲームのインターフェースだけを考えて プログラムは全くできなくてもいいんですか?
472 :
デフォルトの名無しさん :2011/12/31(土) 17:19:21.90
>>440 べつにsize_tでもlong long でも使えばええがな
>>471 そりゃボードゲームとかカードゲームとか作るのもいるし
>>471 そりゃそうだろ。ザクっとデモとかモックアップ持ってける人は強いと思うけど。
映画監督がセット全部建てられる必要は無いだろ。
>>474 それだとcapaがLONGLONG_MAX越えたらAUTO。
あけましておめでとう! Javaプログラマーの私が初書き込みを獲らせて頂きますね^^
派遣でCやってた俺の初カキコ。 学校でCを習ってたころに、このスレを発見できればよかった。
C言語さん今年もよろしく頼むよ
おう、まかせとけ。
483 :
461 :2012/01/01(日) 02:37:00.06
皆様、回答ありがとうございます。 そして明けましておめでとうございます。 まさかこれ程の答えてくれる方がいらっしゃるとは...それぞれ確認していきたいと思います。
まだ明けてねーだろ馬鹿。 一日の始まりは日の出からだ馬鹿。
新年早々何キレてんだ坊主
>>484 一年の始まりは1月1日 0:00 からだ、ボケ。
>>484 それが何の仕様かは知らんが、2chの仕様としては0:00からじゃね?
一日の始まりが日没からだった暦では、「クリスマス・イブ」はクリスマス日の始まりを意味してたけどな。
printf("ba------ka\n");
>>478 そのまえにヒープが足りなくなるからどうでもいい。
「経世会(旧田中派)」VS「清和会」> (田中派)田中角栄 逮捕 ロッキード事件 (←東京地検特捜部) (経世会)竹下登 失脚 リクルート事件 (←東京地検特捜部) (経世会)金丸信 失脚逮捕 佐川急便献金・脱税 (←東京地検特捜部&国税) (経世会)中村喜四郎 逮捕 ゼネコン汚職 (←東京地検特捜部) (経世会)小渕恵三 急死(←ミステリー) (経世会)鈴木宗男 逮捕 斡旋収賄 (←東京地検特捜部) (経世会)橋本龍太郎 議員辞職 日歯連贈賄事件 (←東京地検特捜部) (経世会)野中広務 議員辞職 日歯連贈賄事件 (←東京地検特捜部) (経世会)村岡兼造 逮捕 日歯連贈賄事件 (←東京地検特捜部) (経世会)小沢一郎 西松不正献金事件 (←東京地検特捜部) (経世会)二階俊博 西松不正献金事件 (←東京地検特捜部) (清和会)岸信介 安泰 A級戦なのに釈放。 (清和会)福田赳夫 安泰 清和会を創設 (清和会)安倍晋太郎 安泰 国際勝共連合、統一教会に深く関与 (清和会)森喜朗 安泰 子息の押尾事件関与疑惑ほか (清和会)塩川正十郎 安泰 小泉構造改革の旗振り役 (清和会)小泉純一郎 安泰 郵政米営化、りそな問題他、疑惑の総合商社。 (清和会)尾身幸次 安泰 (清和会)中川秀直 安泰 統一協会(=米国福音派)に祝電 (清和会)安倍晋三 安泰 統一協会(=米国福音派)に祝電
一年の計は元旦にあり ですよ。 自由でなんというか救われてなきゃあダメなんだ 独りで静かで豊かで・・・
unsigned int n = 0 ; n -= 1 ; if(n == UINT_MAX) { /* proc */ } else { /* error */ } これって環境によらずprocのブロックに行きますか?
いいえ。
何がやりたいかわからない。
>>470 丁寧語にしても上から目線だといわれ、丁寧語をやめて常体にしても上から目線といわれるのであれば、今後は敬体にするしかないですね。
(unsigned int)-1はUINT_MAXになるように規格に決まってたはず だからこの場合も常に正しいんじゃないかな
>494 たとえばどんな環境だと駄目なの?
JISに記載はあるが、減算のオーバーフローの場合”剰余”ってのはどうなるんだろう? (引用 JISX3010 6.2.5 型) 「符号無しオペランドを含む計算は,決してオーバフローしない。 すなわち,結果を符号無し整数型で表現できないときは, その型で表現しうる最大値より1 だけ大きい数を法とする剰余を結果とする。」
501 :
デフォルトの名無しさん :2012/01/01(日) 19:58:44.67
だからオーバーフローしないって、そこに書いてあるだろ
>>470 符号化とか純理論でもいけると思うけど。
>>499 phpは昔数か月だけやったので、覚えていないけど。
php等の言語が当たり前にサポートされている機能が、C言語ではサポートされていないことも多いから。
だから、知識として必要なアルゴリズムは別なはずだよ。
>>503 >C言語ではサポートされていないことも多いから。
C言語使う奴は、サポートされてなければ自分でどうにかするもんだ
負数の剰余ってなにか数学的な定義があるのか? ないとしたらC言語でも環境依存?
506 :
デフォルトの名無しさん :2012/01/01(日) 21:17:48.83
符号なしがどうやって負数になれるんだよw
符号なしの演算結果が負数になるときが 「結果を符号無し整数型で表現できないとき」 じゃないの?
______ r〃〃〃 f7⌒ろ) l‖‖‖ || f灯 |‖‖‖ || | | |儿儿儿._」⊥厶 〔__o____o_≦ト、 . i / ⌒ ⌒ ヽ ) !゙ (・ )` ´( ・) i/ | (_人__) | \ \ `ー' / / ー- 、 . ,ィ(⊆≧リ≦⊇)〃 / rク\ . / | ̄r少}¨ ̄〃 / /′ ヽ 〃 l | l| | l| 〃 / / └ヽ / l |l | |l/″ / ! 厂 \ く, Y ! l」fレト! / | / 1 丿 | | 丿} じ’ / | / | / l | `¨ / レ′ | 真の思考停 (在位 2009年9月16日〜2010年6月8日) 民主朝の初代考停、言行不一致、虚言、脱税、 そして外交において巨大な負の遺産を築いた。
>>508 今調べたのにそんな言い方するから恥をかくんだよ?
-7÷3 って、 0 あまり -7 であるべきだろ。
またバカが沸いた。
>>511 え?
>>500 を読むかぎりどう考えても
>>508 の解釈(正剰余)しかあり得ないんですけれども‥‥‥。
じゃあ
>>500 はどう解釈するんですか?具体的に記述願いますね。
あと
>>511 文中の「?」の使い方がよくわからないんですけど。まさか語尾上げを表意しているとかですかね?最近のはやりですか?
ISO/IEC 9899:1999 6.2.5.9
A computation involving unsigned operands can never overflow,
because a result that cannot be represented by the resulting unsigned integer type is
reduced modulo the number that is one greater than the largest value that can be
represented by the resulting type.
ISO/IEC 9899:1999 6.5.5.6
When integers are divided, the result of the / operator is the algebraic quotient with any
fractional part discarded. 88)
88)This is often called ‘‘truncation toward zero’’.
語尾に?を付けるのは、自分の言う言葉に自信がないから
500を読む限りって... 全部読んでないのかよ。
元を。
>>516-517 え?
>>514 に元とやらの関連部分を丸々コピペしたのですが、これだけで判断もできないの?
そちらの
>>500 の解釈を具体的によろしく。
しまった、これはわすれてたなあ。
ISO/IEC 9899:1999 6.5.5.6
If the quotient a/b is representable, the expression (a/b)*b + a%b shall equal a.
>
>>511 文中の「?」の使い方
子供に言い聞かせるときのオカンの口調であろ
コテハン名乗ってる割には、些細なことにうるさいやつだな。 コテ禁止スレが多いのもわかる。
>>509 のページを読んでもよくわからなかったんだけど
規格にも書いてある「代数的な商」ってどういう意味?
>>521 -7 ÷ 3 ならば、普通に電卓等で割り算すると、-2.3333......。これが代数的な商でしょうね。文脈からの推測だけれども。
で、C99 ならば、-7 / 3 = -2
したがって、C99 の余りは = -7 - ( -2 * 3 ) = -1 でこれしかない。
でもね。C99 の剰余演算子の定義と、規格の中で使われている単語「剰余」、英語では modulo は違うと思うんです。違うとしないと意味をなさないですから。
>>521 代数の定義そのままだと受け取ったけど。
語弊があるように言えば、数字を変数を使って処理しきれる数学の事じゃ。
そもそも「割り算」ってなんなのよってことだ。 「−7個の林檎を3人で分けたら1人分はいくつになりますか?」 答えは「ゼロ」だよ。
>>520 こいつは都合が悪くなるとすぐコテ外して自演するから性質が悪い。
レベルも低いが。
逆算できるようにしましょうねって事じゃないの?
>>522 ダリぃ。
そこの記述が曖昧でもわざわざ型変換とルール変える奴いねーから。
んな瑣末な解釈は入門スレで長々グダグダやってんな。
JISの6.3.1.3でも読んで今日は寝ろ。
起きてもまだ気になるなら、あとはガチ規格スレでやれ。
(-7 % 3) + (-7 / 3) * 3 の評価結果が -7 に戻ればオケ ってことかの
負債の概念が無いとか何処の途上国人だよて話しだ
>>527 それが、C99 では % の意味が変わっている(正確には今まで処理系依存だったのが規格にのった)んですね。その点を教えてもらったことは
>>509 に感謝。
>そこの記述が曖昧でもわざわざ型変換とルール変える奴いねーから。
確かに教えてもらった場所 ISO/IEC9899:1999 6.3.1.3.2 に的確に書いてますね。納得したので寝ます。おやすみなさい。
>>528 たぶん。
トイレに行きたい気分をcで表すとどうなりますか?
表さない これが真理
ccc
cね
乱数で出した数の重複を防ぐ以下のソースを書いたんだけど、重複が出てくる。 何が悪いの? srand((unsigned) time(NULL)); /* 乱数の初期化 */ for (i = 0; i <= 5; i++) { ra = rand() % 42 + 1; /* raに1〜42を入れる */ if (ra == r[i]) { /* raとr[i]が同じなら */ i--; } else { /* それ以外なら */ r[i] = ra; } }
i未満の全ての要素とraを比較しましょう
>>537 そりゃ今まで出した乱数を全くチェックしてないからな
チェックしてるのは今から入れようとしてる場所だけ
>>538 ,539
数値が入ってないものと比べることになってたのか。
ありがとう。数値が入った後で比べるようにする。
541 :
デフォルトの名無しさん :2012/01/03(火) 17:55:34.69
C言語で皆が元気になるモリモリプロジェクトを作成するにはどうしたらいいですか?
Hello,World!から始めて 四則演算、配列、条件分岐(if,switch)、繰り返し(for,while)、関数の宣言は一通りできるようになったし、 スコープ、ポインタ、構造体もある程度理解したつもりなんだが 未だにソフトウェア開発とかゲーム制作とか夢のまた夢 どうしたらその段階にいけるの
向いてないから死ね
>>542 既に出来るよ。
ブロック崩しとか、インベーダー風ゲームとか、
とりあえず作ってみなよ。
多分できるから。
初めて作ったゲームは課題で作ったcursesでのブロック崩しだったなぁ
>>542 ゴリ押しでいいならそのままでもできる
良い設計を心がけようとするとあと数年かかる
良い設計が学べる書籍やWEBサイト教えてください
>>542 こういう事ができるソフトが欲しいとか、
そういうのを考えて作ってみる。
>>547 人さまのソースを見る。
オープンソースで規模のあるコードは、それなりに上手くできている。
ソフト開発って、作りたいものを作ればいいだけ。
こんなフリーウェアほしいってのを、自分で作ればいい
夕飯の時間に食卓に座れば食事がやってくる そうじゃないとダメだしそうあるべきなんです
良い設計なんかできなくてもソフトウェア自体は作れる 作りたいものが何もないのが致命的なんだよ 作りたいものさえあれば馬鹿でも経験が無くても必死に調べて 試行錯誤しながらも完成にこぎつけるんだよ
なんだ、致命的って。 死ぬのか? お前、死ぬのか?
うざい
どうやら屍のようだ。
>542 標準ライブラリ以外のライブラリ使用に挑戦。 グラフィック描画やパッド入力など。
とりあえず socket.h かWinSock じゃね?
>>542 OSをWinと想定するが、Win32API覚えると良いよ
面倒くさかったらC#で.netでもいいけど
文法と規格に準じた標準ライブラリ覚えたんなら、環境依存のライブラリの使い方覚えれば、もぐら叩きやじゃんけん位はすぐに作れる
560 :
デフォルトの名無しさん :2012/01/04(水) 04:19:18.69
Google電卓機能だと -2%10=8 -2%-10=-2 -7%3=2 -7%-3=-1 C言語もこうであって欲しかった
なんでC言語ってアロー演算子使うんだろう? 型判ってんだからドットでいいじゃないか
なんでこの板ってアスペばっかなんだよ(´・ω・`)
>>561 そりゃポインタと実体は全然別物だからね。
別に無理してC使わなくていいんじゃね?
いやならアロー演算子を使わなければいいじゃない
______ r〃〃〃 f7⌒ろ) l‖‖‖ || f灯 |‖‖‖ || | | |儿儿儿._」⊥厶 〔__o____o_≦ト、 . i / ⌒ ⌒ ヽ ) !゙ (・ )` ´( ・) i/ | (_人__) | \ \ `ー' / / ー- 、 . ,ィ(⊆≧リ≦⊇)〃 / rク\ . / | ̄r少}¨ ̄〃 / /′ ヽ 〃 l | l| | l| 〃 / / └ヽ / l |l | |l/″ / ! 厂 \ く, Y ! l」fレト! / | / 1 丿 | | 丿} じ’ / | / | / l | `¨ / レ′ | 真の思考停 (在位 2009年9月16日〜2010年6月8日) 民主朝の初代考停、言行不一致、虚言、脱税、 そして外交において巨大な負の遺産を築いた。
日本を滅亡に導いた人物である
569 :
デフォルトの名無しさん :2012/01/04(水) 21:52:51.59
ユーティリティーって何? 参考書見てたら、ユーティリティーの作成ってあった。
utilityは便利な小道具の詰め合わせみたいな感じ
は?
>>569 なんで辞書引かないんだ?
なんでググらないんだ?
辞書をひくごとに寿命が1分縮んでいることに気が付かないのか
ググれば分かることを聞いてるのは、コミュニケーションをとりたい寂しいPG。 冷たくすんな。
ソープにでも行けよ
邪悪です!
>>568 入力例と出力例が一致しただけじゃ足りない場合がよくあるよ
>>578 実際にやってみればわかると思うが、この問題で引っかかるとこはそれじゃなかったよ
>>577-579 四捨五入はprintfがやってくれるので問題ないみたいです
+0/-0が関係あるのかと思って-0を+0にしたりしてみたんですがダメみたいですね
>>581 1入力(a b c d e f)で1出力ではなく、複数入力に複数出力では?
sample inputは2個の入力に対して、2個の出力を表示してる。
583 :
デフォルトの名無しさん :2012/01/05(木) 00:08:20.53
今までunsignedの付く変数型を使ったことが無かったので,試しに使ってみたのですが…
例えばunsigned int型なら,負の値は使用できないはずですよね?
int a = 100;
int b = 200;
unsigned int c = a - b;
とすると,cの値がマイナスになるのでエラーでも出るのかと思ったのですが…
問題なく c = -100 と出てしまいました.何故でしょうか?
codepadの仕様…?
http://codepad.org/GRuREQwD
そりゃ "%d" って指定したら、そうなるだろうね。
>>581 あれ、-0だとおもってたが、、、他に特に特殊な処理は入ってないけれど
>>568 おそらく+0 -0の問題なんだろう
if(x==0)x=0;としたら通った
+0.0とするのでは対応できないということか
いや、別途-0を+0にするロジックを入れてるっぽい書き方だけどね。
>>581
589 :
デフォルトの名無しさん :2012/01/05(木) 08:16:34.51
>>589 面倒だからそこは読んでないけど、負の値を扱わない保証がある場合はunsignedの方が値域を広く取れる。
しかし、どの道入門レベルでは細かいことまで気が回らないだろうから
signedで適切に組めるようになることを目指した方がいいかもしれない。
つまり、「マイナスになる可能性がないものは全部unsignedにしろ」と言うよりは
signedかunsignedかは適材適所、I/Fをよく考えて決めるべき。
大きさが足りないとかビット演算したいとかの理由がなければ常にsignedでいいよ unsignedだと小さな負の整数が大きな整数に変わっちゃうから下限チェックで問題が発生する
592 :
デフォルトの名無しさん :2012/01/05(木) 09:10:05.79
ありがとうございます。
>>593 解説:
なんでstrstr()使わねーの? 馬鹿じゃね?
strstr()相当を作る課題なら、match_str()の中でstrlen()も使ってないのに
strncmp()使っている辺りが大間抜け。
C言語今から勉強しようと思うんだけど初心者にオススメの本教えて下さい
>593 ファイル開いて 一行づつ読み込んで 検索する文字列を探す。 標準文字列関数の動作の勉強かと思ったがstrncmpは使ってるんだよなぁ。
#include <stdio.h> #include <string.h> #include <process.h> #include <stdlib.h> int main(){ printf("%s",INPUTj3g()); return 0; } char INPUTj3g(){ char filename[30]; int strnum; printf("Input file name>");scanf("%s",&filename); strnum = strlen( filename ); if(filename[strnum-1] != 't'){ filename[strnum-4] = '.'; filename[strnum-3] = 't'; filename[strnum-2] = 'x'; filename[strnum-1] = 't'; filename[strnum] = '\0'; } return filename; } 上のような文字列を返すユーザ関数を作りたいのですがどうすればよいのでしょうか?
600 :
デフォルトの名無しさん :2012/01/05(木) 19:30:22.16
どうすればよいのだおうね
>>599 突っ込みどころがありすぎ
ここで訊くより入門書読んだほうが早いレベル
>>599 INPUTj3g()を抜けた時点でfilenameは使えなくなるから、呼び出す側で用意したほうがいいかな。
あとそれだと3文字以下の入力のときに、バッファの外に書き込むことになるね。
最後の文字が't'以外のときに強制的に".txt"に書き換える仕様もどうよって感じ。
#include <stdio.h>
#include <string.h>
#include <process.h>
#include <stdlib.h>
int main(){
char filename[100];
printf("%s",INPUTj3g(filename));
return 0;
}
char INPUTj3g(char* filename){
int strnum;
printf("Input file name>");scanf("%s",filename);
strnum = strlen( filename );
if(filename[strnum-1] != 't'){
filename[strnum-4] = '.';
filename[strnum-3] = 't';
filename[strnum-2] = 'x';
filename[strnum-1] = 't';
filename[strnum] = '\0';
}
return filename;
}
>>602 ありがとうございます、ではもし拡張子が入力されていなかったら
プログラムで付け直させるにはどうすればよいでしょうか?
> filename[strnum-4] = '.'; > filename[strnum-3] = 't'; > filename[strnum-2] = 'x'; > filename[strnum-1] = 't'; > filename[strnum] = '\0'; strcpy(filename-4,".txt"); 遅くてもこう書き直したい。
605 :
604 :2012/01/05(木) 20:07:18.24
>strcpy(filename-4,".txt"); 俺ってバカ… strcpy(&filename[strnum-4],".txt");
>>603 if (strchr(filename, '.') == NULL) { /* '.'がないから拡張子が入力されていない */
strcat(filename, ".txt"); /* 拡張子を追加 */
}
↑みたいな感じでいいと思う。
ファイル名をフルパスで入力されてディレクトリに'.'が含まれている場合とか
には対応できない。
バッファの最大長を超える長さで入力された場合とか、まじめに作るとけっこう面倒。
>>607 INPUTj3g()は
char INPUTj3g(char* filename)じゃなくて、
char* INPUTj3g(char* filename)だった。
全ての行にコメント書くとさすがにくどい?
>>611 よほど全編に渡ってトリッキーなやり方してるコードとか
説明のためのサンプルコードとかなら分かるが
基本的にはコメントの内容を疑ってしまうかな…
どんなコメントなんだい?
何故エラーが出るかわかりません。 replace = strstr(ptemp,"テスト(XXXX年XX月分)"); sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]); strncpy(replace,monthfilename,sizeof(monthfilename)); fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー monthfilenameには201110っていう文字が入ってる。 fp2のファイルポインタはfopenした時にNULLじゃなかったから正常なファイルポインタのはず。 どんな原因が考えられますか?
>>614 >monthfilenameには201110っていう文字が入ってる。
monthbufの間違いだよな?
それにしたって変数名からするとmonthfilenameでfopenしそうなもんだが
”テスト(2011年10月分)”って名前のテキストファイルつくんの?
もうちょっとコード出そうよ。
>>614 ファイルのオープンモードの間違い
ポインタの指している先が無効
ここに書いてない部分が変なアドレスを書き換えている
>>615 monthbufの間違いです。
わかりにくかったですね。
char monthbuf[30];
char monthfilename[50];
//日付書き換え用ポインタ
char *replace;
//月取得
puts("指定した月をyyyymmddの形式で入力して下さい");
scanf("%s",monthbuf);
sprintf(monthfilename,"%s.html",monthbuf);
fp2 = fopen(monthfilename,"w");
replace = strstr(ptemp,"テスト(XXXX年XX月分)");
sprintf(monthfilename,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]);
strncpy(replace,monthfilename,sizeof(monthfilename));
fputs(ptemp,fp2);←ここで書き込みアクセス違反でエラー
ptempには大量の文字列が入っています。
replaceのポインタはNULLじゃないことは確認してます。
わかりにくいですが、monthfilenameはただ使いまわししてるだけです。
よろしくお願いします。
>>617 sizeof が問題だな
終端文字を破壊してるんだろう
おかげで読んじゃいけない部分を読んだ
>>618 ありがとうございます
sizeofって終端文字を破壊するんですか?
よく意味がわからないんですがどうやって解決すればいいですか?
strlenにしてもだめでした。
とりあえずやりたいのは、
ptempの中にある「テスト(XXXX年XX月分)」という文字列を
ちゃんと数字の入ったものに置き換えたいんです。
>>619 「sizeofが終端記号を破壊する」のではない。
sizeof(monthfilename)で50が得られるが、本当にreplaceしたいのは”テスト(XXXX年XX月分)”
の部分だから、50ではなく”テスト(XXXX年XX月分)”の長さが必要。
X sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)",
O sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)¥n", /* <-strlenで長さを得られるようになる */
X strncpy(replace, monthfilename, sizeof(monthfilename));
O strncpy(replace, monthfilename, strlen(monthfilename));
まだエラー出るじゃねーかw もう一回自分で調べてみるわ
*ptemp = "....."とかやってんじゃねーの?
>>619 strncpy()の挙動はちゃんと調べた?
曖昧にしていると嵌るぞ。
monthfilenameに文字列を作ったら、memcpy(replace, monthfilename, strlen(monthfilename))でいいべさ。
そもそも、replaceが見つかった時点で const int year = sizeof("テスト(") - 1; const int month = sizeof("テスト(XXXX年") - 1; replace[year] = monthbuf[0]; replace[year + 1] = monthbuf[1]; replace[year + 2] = monthbuf[2]; replace[year + 3] = monthbuf[3]; あ、面倒だ。以下同様に。或いはmemcpy()を使って。 memcpy(replace + month, monthbuf + 4, 2); ってこったろ。 monthfilenameなんて要らないじゃん。
>>620 > O sprintf(monthfilename, "テスト(%c%c%c%c年%c%c月分)¥n", /* <-strlenで長さを得られるようになる */
えっ
>>624 後でメンテが面倒だからその方法はあえて避けた
で、memcpyの関数を見て、「あれ?俺何でstrncpy使ってんだ?」と思ったんで、
memcpy(replace,monthfilename,strlen(monthfilename));
って書いてみたら一発でいけました
strncpyは最後に終端文字が自動的に付加されないことは知ってたから、
使ったのに何でダメだったんだろう?
あくまで文字列コピー用の関数だからかな?
まあとりあえずmemcpyでいけましたんで良しとします。
ご迷惑をおかけしました。
ありがとうございました。
確かに>620は間が抜けている。
>>604 strcpy()は遅くないよ。
>>626 sizeof使ってたからじゃなくてか?
>>628 sizeofをstrlenにしても、strncpyを使ったらだめでした
原因分かる人が居るなら教えて欲しいものですね
fputs で落ちてるんじゃなくて strncpy の内部で落ちてるんでないかい? replace の器が 丁度 ,"テスト(XXXX年XX月分)" で終るような場合 sizeof(monthfilename) = 50 で複写すると器の範囲を突破するもの
エスパー試験か。
>>630 残念
replaceの器であるptempで該当の文字がある部分は、終端よりも大分前だ。
たぶん終端よりも2000バイトぐらい前。
わかる人いない?
このスレならレベル高そうだから誰かわかると思ったんだけど。
いや、別にバカにしてないよ
ptempの文章はあるテキストファイルから読み込んでるから無理 他のコードはvector使いまくってて絶対読めないよ あと身バレしそうだし。 再現できるコード作ってみるわ。余裕があれば。
>>636 実行したら最後に数字の8が書き出されたぞ
あとなんで改行文字入れてるのか理解できん。必要か?
結果NULLについては事前に調べて問題なかったから、
あえて書いてないだけ。
配列のサイズが実は50ではない、ファイル名のプレフィクスが実はテストではない strncpyしたあとの文字列を標準出力に出してみるとかデバッガで見てみるとかしたらどう
ああでもmemcpyならうまくいったのか。 wchar関係とかは
>>637 再現コードを作ってからにしろ、低脳が。
ていうか、replaceの位置自体、ptempの終端から2000バイト以上も前の位置なんだから、 そこにもし50バイト書き込んでもちょっと上書きされる部分が増えるだけで、 別に不正な領域に書き出してるわけじゃないじゃん? もしおかしい領域に書き込んでたら、strncpyの時点でエラーが出るはずだしね。 fputsでエラーが出る理由がわからん。 0x0000000へのアクセス違反っぽいエラーだけど。 なぜmemcpyに変えるだけで、fputsでエラーが出なくなるのかが意味不明。 別に書き換えてる領域は変わんないんだし。 面倒になってきたからゆるーく考えるか、スルーして下さい。 再現コードも作る時間ないかもしれんから
分かったよ 再現コードは必ず作るから一日ぐらい待っててくれ。
>>641 実はC++/CLIでpin_ptr使ってないからってこともないんだよね。
糞CLIなんか使わないよ
vectorの内部を直接触ってるとか
646 :
614 :2012/01/06(金) 13:13:58.28
ptempはただの動的確保したバッファだし、 書き出し部分ではvector関連は一切触ってない
どっかで文字列終端コードを破壊しちゃってるような感じのコケ方だなあ
もしLinuxで書いてるなら、614はvalgrind とかの使い方を覚えるべき。
なんでvgrind?と思ったがそんなのがあるのか。
strlenは無条件にバイト数を返して、strncpyの引数3は文字数な環境だとか。
652 :
614 :2012/01/06(金) 15:50:59.85
すいません strncpyでもいけました。 ですが、monthfilenameのバッファを適当な別のバッファに変えて、 sprintf(tempbuf,"テスト(%c%c%c%c年%c%c月分)",monthbuf[0],monthbuf[1],monthbuf[2],monthbuf[3],monthbuf[4],monthbuf[5]); strncpy(replace,tempbuf,sizeof(tempbuf)); ってしないとだめでした。 monthfilenameを使うとやっぱりエラーが出ます。 まあmonthfilenameっていう使わなくなったバッファを使いまわした罰だと思いますが、 sprintf実行した時点でちゃんと終端文字が付加されるので、 おかしくなるはずはないと思うんですが何でですかねぇ。
653 :
614 :2012/01/06(金) 15:55:40.77
それとLinux使ってないってかさっぱりわからないです。 ありがとうございました。
で、再現コードは。 どこまで低脳なんだ。
655 :
614 :2012/01/06(金) 15:59:49.90
再現コードは作れませんでした 今は元コード使って実験してます。 だって再現しないんだもん
fopen に渡したファイル名のポインタを暗に保持してて、書き換え不可な処理系とかのオチだったりして char name[] = "hogehoge"; FILE* fp = fopen(name, "w"); strcpy(name, "a"); fputs("tekitou", fp); これだけで沈
まったく、どっからそんな妄想がわいてくるんだよ…
つか最初から処理系を書けよ。
659 :
614 :2012/01/06(金) 16:44:44.43
VC2008 express editionとwin 7のコンビです
660 :
614 :2012/01/06(金) 16:46:02.01
>>656 あ、これかもしれないです。
ちょっと待ってて下さい。
661 :
614 :2012/01/06(金) 16:49:32.60
あーでも再現コードでやってみても再現しないですね。 元コードでは相変わらずエラー。 何が違うんですかこれ
すでに他のところでヒープかスタックがぶっこわれてるに10ジンバブエドル
>>614 フィルターを通すと出てくる情報がすべてゴミになるなw
身バレ云々バカじゃね
664 :
614 :2012/01/06(金) 17:04:02.24
でも原因は明らかに
>>656 ですよね
ファイル名として使ったバッファは使いまわさないようにします。
ありがとうございました。
665 :
614 :2012/01/06(金) 17:04:52.46
バカというかマヌケですね ありがとうございました
>>656 で落ちる処理系なんてどんな行儀の悪いコンパイラだよ
そのゴミみたいなコンパイラの名前を知りたいもんだ
いや、馬鹿だよお前 プログラムやめるべき
>>665 落ちるコードの全体ってどこにあります?
未解決なら見てみたいんだが。
669 :
614 :2012/01/06(金) 17:34:37.76
>>656 が原因とも確認してねーんだろ?
だいたい、年を書くのに%c%c%c%cとか使うとこから程度は知れてるがな。
>>670 いや、だから再現するために
>>656 のコードと同じことしてみたけど再現しなかったんだって
>>661 で言ってるよ
元コードだと起こって、再現するために書いたコードでは起こらなかった
コード量による違いでもあるのか?
>>670 別に普通だろ。
それに自分用のプログラムだから動けばいい程度でしか作ってないし
>>672 これが処理できるか確認してもらえますか?
int main(void){
char buf[] = "aaa";
buf[1] = 'b';
puts(buf);
}
>>675 >>664 はそれ以外原因が思いつかないからそう書いたんだよ
一番筋が通ってるし、なんか聞いたことある気がしたしな
なんだその理由は。 これがゆとりが進化した形なのか。
少なくともお前よりはゆとりでない自信はある
じゃぁなんで
>>662 の指摘は無視なんだ?
デバッガ使ったことあるか?
デバッグなんてとっくの昔にやってるわ それでもわからんからここに来たんだろーが
ゆとり乙。
デバッガの使い方も知らないでよく言うな、まったく。
今回のはデバッガを使っても分からない問題だろ だからここに来た それだけ
なんのためのデバッガだよ。 printfだけでもわかるだろ。
わかんねーよ printfするまでもなく、ブレークポイントしかけて変数の中身見てるわ それでもわかんなかったんだよ
それはお前が低脳なだけ。 再現コードも出さずに迷惑なだけ。
先に俺の実力とどんなデバッグをしたか書いとけばよかったな 個別に黙らせてると疲れるわ
再現コードがかけないんだから仕方ないだろ まだはっきりと原因特定できてないんだから めんどくせーからまた後でくるわ
いやいや、すごいよ、お前は。 落ちる場所までわかってるのに理由がわからないとか。 しかもデバッガ上で再現してんだろ? ほんと、すごいわ。
元コードのデバッガ上で再現してるよ 変数見てもおかしくないんだから原因わかるわけねーだろ
つか最初からmonthfilename使い回そうとかバカ確定なんだからさ
しかし、よくそんなレベルでこんなこと
>>689 言えるね、おれもびっくりするよ。
>>693 問題のソースは
>>617 です。
ですが
>>652 のように、monthfilenameを使わずに、
別のバッファを使えば問題なく処理できました。
それともう一回検証してみたところ、memcpyでもstrncpyでも
>>617 のソースでやればエラーがでました。
「memcpyならいけた」という私の発言は間違いです。失礼しました。
>>617 のソースは全体のソースの一部です。
再現しようと
>>617 のソースを切り取って、
適当な文字列を作ってptempに代入してやってみたら、何故かエラーが出ませんでした。
ですので原因がはっきりと特定できていない状況です。
でも状況からして
>>656 の方が指摘していただいてることが
一番可能性が高いと個人的には思っています。
そろそろウザイと思われてると思いますので、
スルーしてくださって結構です。
>>694 お前は人のレス読んでるのか?
自分用のプログラムだから手抜いて作ってるって言っただろが
めんどくせーから使いまわすか、って気持ちで作ってたんだよ
だからそんなとこ突っ込んでも意味ねーよ
はいはい、低脳乙。
マジメにレスしてくれた方はありがとうございました。 その他のクズの皆さんは死んでください 以上。
迷惑かけるだけかけて、ほんとゆとりな上にクズが何言ってるんだか。
>>701 再現コードでは落ちなかったんだよ
元コードだと落ちるんだよ
俺も原因わからねーよ
>>699 win7でvc++2008で試してみたが。。。
表記されていないptempを「テスト(XXXX年XX月分)」にして、
strncpyの第三引数をstrlen(monthfilename)にすると普通に動いた。
こんな聞きかたしてるバカは死ねってことか。了解。
早く
>>689 頼むよ。
どんだけすごいのか教えてちょ。
>>689 当たり前だろ。
質問するときは、どういうことを調べたかとか試したかとか書けよ。
プログラムの技術以前の問題だ。
どこがおかしいか特定できないのに、ここがおかしいはずだって思い込むアホが多すぎて困る
思い切りから不具合を見つけることもあるんだが。 こいつCの仕様を丸暗記してるのか?
思い切り? こいつってどいつのことだ。 普通、わからなかったら仕様書確認するだろ。
とりあえず、思いつきで修正するが。 経験則って言葉知らないの?
本音をいえば、現象再現を確認しながらすこしずつソースコード切り詰めていく、という地道な作業が、実は己の得になると思います、が、それはともかく、申し訳ないけれども、たとえ3000行でも再現するコードを晒していただいたほうが、はるかに話が早いでしょう。 数年来、宿題スレで大恥を数限りなく晒しながら、それでもめげずにやっている私のいうことですから、信じていただけると期待します。
typedef int data[8]; こんな書き方を今日覚えたんだがこういうのが書かれた入門書ってなくね
キューに突っ込んだり出したりするときは基本的に セマフォを使って歯痛するのが一般的だと思うけど sigactionとか割り込みっぽいゾーンからキューに 突っ込みたいときはどうしたらいいかな。
セマフォがあるなら使えばいいじゃん。
>>713 まあ、ただの変数とか、構造体だな > typedefの説明
配列はないような気がする。
>>711 経験のないお前には無理だろ。
素直にまず仕様を確認しろ。
>689! >689!
東京にある6つのキー局の内、製作から財務まで一貫して朝鮮人が行ってるテレビ局が1つ 中国共産党から毎年大量の反日工作費が流れているテレビ局が2つ もろに北朝鮮と繋がっているテレビ局が1つ 年寄はまだまだテレビという外国人に騙され続ける
ネトウヨきもい
二次関数 f(x) = x2 について、x=0から3までの定積分を求めたい。 区分求積法により、この積分の近似値を求めよ。 この問題なんですけど、下のようにではできるのですが、 #define DX 0.1というのを使わずに書くことはできますか? #include <stdio.h> #define DX 0.1 int main(void) { double x, sum; sum = 0.0; for(x = 0.0; x < 3.0 - DX; x += DX) sum += DX * x * x; printf("%f\n", sum); return 0; }
723 :
デフォルトの名無しさん :2012/01/07(土) 02:26:41.00
>>722 逆になぜ使わないで書けないと思うのかを教えてくれ。。。。。。
すんませんできました
725 :
デフォルトの名無しさん :2012/01/07(土) 03:19:52.23
>>725 C言語で画像を扱うのならまずバイナリファイルを理解しろ
知り合いがハードウェア操作で「アドレスを叩く」て表現使うんだけど普通に使う表現? VRAM操作とか割り込みテーブルとか、9821の256色モードの操作で メモリ上に書き込む方法使ってたから間違ってる訳じゃないけど 自分はハードを叩くとかIOポートを叩くって表現使ってたからなんか違和感がある。
>>727 「IOポートを叩く」がアリなら同じようなことをメモリマップドIOのときは何て言うの?
>728 ハードを叩く
北朝鮮の金正日(キム・ジョンイル)総書記の遺訓を守るという北朝鮮が、
最近、連日のように偶像化に動物を動員している。 最も多いのは鳥だ。
最近、労働新聞など北朝鮮官営メディアは、金正日総書記の死後、フクロウが
悲しそうに鳴き、ワシが集まったなど奇異な自然現象が起きた、と報じた。
5日の労働新聞にはクマまでが登場した。 冬眠をしていたクマが突然目覚めて
鳴いたということだ。
この日の労働新聞は、金正日が最近訪れた大興(デフン)青年英雄鉱山の
労働者が悲報を聞いて弔意を表す時、3頭のクマが道路に現れ、悲しそうに鳴いた、
と伝えた。 母クマ1頭と子グマ2頭だったが、それらしき目撃談を伝えながら
「洞窟の中で眠るクマが人が行き来する真昼に、敬愛なる将軍様が通られた
道路に現れ、大きな声で長いあいだ鳴いたのは非常に珍しい現象」と強調した。
鳥の異常な動きも見られたと伝えた。 労働新聞は「慈城郡シンプン里では早朝から、
金正日総書記のモザイク壁画の上空に突然100羽を超えるカササギが飛んできた。
名川(ミョンチョン)地区の炭鉱周辺でも数十羽のカササギが飛んできて2時間ほど
休まずに鳴いた」と報道した。
この日、労働新聞は「鳥は人が近づいても動かなかった。 よく見ると、
鳥が木の枝をしっかりと握りながら固まってしまった」とし「後に分かったが、
民族大国葬の悲報が伝えられた日の晩からそうだった」と伝えた。
神話に登場するような内容の記事は、労働新聞の社会面に掲載された。
金晋希(キム・ジンヒ)記者 .
http://japanese.joins.com/article/153/147153.html?servcode=500§code=500
731 :
727 :2012/01/07(土) 09:18:50.61
確かにハードの操作方法の解説で「アドレスを叩く」って言うなら正しい表現ですね。 でもドライバー等の概念の雑談で「アドレスを叩くレベルの操作が」とか言われたんで、なんか納得できない気分に。 メモリマップドIOがメインのハードの開発やってたのかな?
普通I/Oは叩くもんじゃね? 「ハードウェア操作」なんて言い方の方が違和感あるわ。 素人かって感じで。
最近のテレビは叩かなくても映るよ
C言語は関係ないのですが, 次のようなアルゴリズムで木構造を捜査するのは 帰りがけ順でよいのでしょうか。 /* 二分木のノード数を返す*/ int size(Node *p) { int cnt = 0; if (! p) return cnt; cnt += size(p->left); cnt += size(p->right); return cnt + 1; }
>>733 昔のTVも叩かなくてもうつるだろ。
うつらなくなった時に叩くんだよ。
最近のTVはさらに壊れるだろうがな。
>>734 スレ違いだが、よくない理由でもあんのか。
何を気にしてるのかを言え。
>732 CPU、メモリ以外の物、例えばマウス、例えばサウンドチップ、例えばビデオチップ、例えばプリンタ、 それらに対してデータを送受信する行為を一言でなんと言いますか?
入出力
>>736 本人がそう言ってるのに何を聞いてるんだお前は。
そりゃ木の探索なんて言語は関係ないからだろ。
>>737 サウンドチップ、ビデオチップ、プリンタは叩く。
マウスは普通に使う分には叩かない。
普通じゃない使い方のときは叩く。
三冠陥落で目が覚めた!? フジテレビがついに韓流から決別か
※イメージ画像:『嫌「韓」第二幕! 作られた韓流ブーム 』/宝島社
http://www.menscyzo.com/images/hanryu0106.jpg 「出てけ! 日本が嫌だったら出てけ!」
今月17日に放送を予定している『なかよしテレビ』(フジテレビ系)の番組宣伝VTR中で、マツコ・デラックスが叫んでいる言葉である。
このマツコの言葉に、多くのネットユーザーが素早く反応、多くのスレッドが立ち「よく言った」「韓国ざまぁ」「本放送が楽しみだ」などとマツコを賞賛するコメントが寄せられている。
昨年の10月から放送をスタートしている『なかよしテレビ』。番組のコンセプトは、「日本を含むアジアを中心とした3カ国の出演陣が、さまざまなテーマについてお国自慢をする」というもの。
主に日中韓による討論形式のバラエティなのだが、その内容はバラエティの域を超えて、
各国の人々の本音が垣間見えるものとなっている。
似たような番組として同時期に始まった『世界のみんなに聞いてみた』(TBS系)があるが、3カ国に特化した同番組の構成は、より激しい討論を展開させている。
そんな番組に初出演を果たすマツコは、「K-POPに物申す」というテーマで論を展開している模様。
「日本の芸能界は草野球。韓国の芸能界はプロ野球」と主張する韓国人出演者に対し、「K-POPとか見ているとアメリカのパクリにしか見えない」と言い放ち、
「あんたたちの音楽も受け入れてやってる」「これだけ懐の深い国がどこにあるんだよ!」と主張する。
もちろん、これらの発言は先日から同局で流されている番宣VTRを見たものであり、それ以上でもそれ以下でもない。どういった経緯で、そういった話になったのか、またその後どんな結論になるのかというオチについては、本放送を見るまではわからない。
だが、冒頭に記した「日本が嫌だったら出てけ!」というマツコの言葉は、紛れもなく本人の口から出ている言葉であり、多くのネットユーザーがこの言葉に共感しているのは間違いない。
そしてまた、この番組を放送するのがフジテレビというのも彼らの興味を引く要因になっている。
http://www.youtube.com/watch?v=Q_5Mc532Vts http://www.youtube.com/watch?v=dSGHNKy5IbM
なんでこんなアホがいるんだろう
アホの選ぶ仕事だしねPGって 必然的にアホばっかになる
自己紹介乙。
748 :
デフォルトの名無しさん :2012/01/07(土) 17:19:38.85
ブラウザの画面を縮小しようとしたら、何で文字のサイズは小さくならず、 カレント画面の見える範囲が狭くなるだけなの? Windows media playerだと、画面を小さくしたら、範囲は変わらず サイズが縮小するだけでしょう。
750 :
デフォルトの名無しさん :2012/01/07(土) 17:28:18.80
>>749 どうやればいいですか?
GoogleChromeです。
ググっても見つからないんで。
751 :
デフォルトの名無しさん :2012/01/07(土) 17:31:55.67
どうしてこのスレに来た。
>>748 逆になんで縮小表示にされたいわけ?
もし、そういう風に表示されたいならアドオン
作ればいいんじゃない?
ただ、いまどきのブラウザならjsとPHPつかっていて
作る側はCSSとhtmlのDOCTYPで表示方式
に準じて作ってあるけど。
PHP?
>>752 FireFoxならデフォでそのまま画像的に拡大縮小されるが。
2560x1440のモニタ使ってるからおれはこの方が便利だな。
>>748 もっと右まで見えるようにとウィンドウを大きくしたら、今見えているものが横に伸びただけってなるのも残念だから
22 名前:名無し募集中。。。[] 投稿日:2012/01/06(金) 23:40:34.39 0 AKB=金正恩 この意味わかるか AKBという捏造ブームの裏に何があるか見えるか?
開発環境の話です。 eclipse(indigo)にcdt8を入れてます。 eclipse自体はubuntuのapt-getで取得しました。 cdtでプロジェクト直下に自動で表示される、 インクルードが表示されないです。 コンパイルは通るのですが、エディタ上はエラーだらけです。 エスパー出来る方いたらお願いします。
出ていけ。二度と来るな。かまってほしいならスレ選べ。
最近アドレスやらポインタやらやってるんだけどそれらの存在意義が全く分からんので誰か教えて 何のために勉強するのか分からんから勉強も捗らなくなるし
それがコンピューター(CPU)の基本だからだね。 Cは低レベル言語だからそういうのが出てくる。 そういうの使わなくてもいい言語もある。
>>760 例えば変数の値を入れ替えるswap()という関数が欲しいとして
参照のないC言語でどうやって実装する?
グローバル変数使えばできるし、いくらでも方法はある。
ポインタがないとscanfとかfgetsとかができなくなって困る わざわざグローバル変数を用意していたらグローバル変数があふれかえる 割と大きな構造体を作った時に、ポインタで渡すことで処理速度アップ!
>>760 実際にプログラムを作るとアホでもわかる。
今は、そういう仕組みもあると思えばいいよ。
木構造をポインタを使わずに表現したくないな
配列のインデックスで木を作ることはよくある
ポインタの機動力は過分で 配列コードに余計な足枷を掛けてる 大体がC++の参照相当で十分な場合が多いし
そう思うんなら他の言語使えばいい
メモリマップドIOでハードウェア叩くときに必要だろ
>>760 自分はリスト構造を操作するプログラムを書いて、初めて腑に落ちた。
木構造でもいいけど、リスト構造のほうが更にプリミティブだからリストの方をすすめる。
>>771 だから低レベルだと言っとろうが。
FORTRANも知らんのか。
C言語で継承とかやろうと思ったら関数ポインタが必要だろ
16bitCPUで処理速度が重要なアセンブラプログラムやれば必要性がわかってくるよ。
>>775 組み込み系ではアセンブラとか使われてるからなー。
震災前 /::::::::::::::::::::::::::::::;;::ノ ヽ;::\ /::::::::;;;;;;;;;,,,;;...-‐''"~ ヽ:;::l |:::::::::::| 岡田 異音 |ミ| |:::::::/ ,,, ヽ,、 '|ミ| '|:::::::l '''"" ゙゙゙゙` |ミ| |:::::|. ,,r ‐、 ,, - 、 |/ ,/⌒| ノ ・ _), (. ・ `つ| | ( "''''" |"'''''" | ヽ,,. ヽ | | ^-^_,, -、 | | _,, --‐''~ ) | マニフェストもう守れない。どうしよう・・・・ 'ヽ ( ,r''''''‐-‐′ / 震災後 |:::::::::/ |ミ| |::::::::| ,,,,, ,,,,, |ミ| |彡|. '''"""'' ''"""'' |/ /⌒| -=・=‐, =・=- | | ( "''''" | "''''" | .ヽ,, ヽ .| キリッ | ^-^ | . | ‐-===- | 大震災が起こったのだからマニフェストの破綻も致し方ありません ,\. "'''''''" / 朝鮮民主党 おわり
>760 バイナリーエディタや「スペシャルねこまんま57号」等のメモリエディタで ゲームデータ改造やってみれば多少は理解できるようになるぞ。
>>776 おまえiPhone板のちょっと面倒なコテだろ。
本当にプログラムやりたかったのか。
>>776 最近だとさすがにもうほとんどC/C++だけどね。。
C言語のchar型について質問があります.
ここのページ
http://marupeke296.com/CPP_charUnicodeWideChar.html によるとVCのcharはShift-JIS(ASCIIのスーパーセット)を格納するとあります.
以下の私の理解が正しいか教えてください.
1. C言語はcharを単なる数字としてしか見ておらず,printfやscanfの内部で文字列と解釈されている.その解釈はMSの独自の解釈である.
2. 他言語のWindows(例えばベトナム語版のWindows)ではShift-JISとして解釈されるとは限らない.
C言語の中ではprintfだろうがなんだろうが単なる数字としてしか扱ってないから独自の解釈もない 文字列なんかは、ソースコードに書かれたままを扱ってるだけだから ソース上にShift_JISで日本語をかいてそのまま出力させればShift_JISでの出力になる ターミナル(windowsだとコマンドプロンプトなど)がプログラムからの出力を文字として解釈して表示する だからターミナルとプログラム出力の文字コード設定が合ってないと文字化けする 解釈の仕方はターミナルの設定なので、ベトナム語版windowsでも設定すればShift_JISでの表示をしてくれるだろう
>>781 MS独自の解釈っていうか、一応規格にのっとってやってる。
SJISとかそれぞれメーカーによって微妙に違ってるみたいだけど、まあだいたい同じ。
2は、それはそう。
日本語のwindowsでもコードページの設定をUTF-8とかにできるみたいだから、SJISとはかぎらない。
パソ通時代は半角カナ文字はMacで誤作動起こすから使うなとか言われてたな。
>>781 printfやscanfはchar*やchar[]を文字列だとは扱っても
それを「解釈」はしていないと思われ
多分数値の列をOSやAPIにそのまま送るだけかと
それを「解釈」してるのはOS側で、そうなると当然前提になる文字コードは違う
解釈はしてるさ。 例えば「表」を正しく出力できないならShift JISには対応してないということ。
788 :
781 :2012/01/09(月) 01:42:23.39
端末とOSのAPI内部で解釈されていて,C言語自体は解釈していないと理解しました. ありがとうございました.
>>787 ああ、言われてみれば。
じゃVC側でも文字コードの設定とかがあるんかな
>>787 それって正しく出力できてないんじゃなくて
正しく表示できてないだけでしょ
>>790 いや解釈している。の shift-JIS コード表現において '表' の2バイト目 0x5c = '\' を解釈してしまうので、正しく出力できない。
>>790 リテラルとかがおかしくなっちゃうってことだろ
例えばShift_JISのソースに "表0hello" と書いたとき
全くShift_JISを考慮しないと
「表」の2バイト目がバクスラなせいでhelloの前に文字列終端が来ちゃう
それはコンパイラの話ではないのか? 一個ずつ{}内に16進で書くのと違うコードが出来上がるんだろうか?
UTF16をprintfで出力したい人もいるんですよ!
>>793 リテラルに書かなきゃ問題ないから
printf() や scanf() 自体には関係がない話…ってことか
「表示」を正しく表示できないというのが笑いどころだよねw
【ソウル聯合ニュース】国策シンクタンクの韓国開発研究院(KDI)は8日に公表した経済動向報告書で、
韓国経済の成長が輸出・内需ともに鈍化していると評価した。
前年同月比の輸出増加率をみると、12月は12.5%で前月(13.8%)よりやや悪化した。11月の
消費販売額指数は0.5%増にとどまり、前月の増加率(2.2%)を下回った。
産業生産は鉱工業、サービス業がともに振るわず、前月より減少した。また、需要不振などで在庫が
拡大して生産増加の制約要因に作用すると、KDIは予想した。
設備投資は前月と比べれば、減少幅がやや改善したが、全般的に不振が続いている。回復ペースを
見せていた建設投資も足踏み状態にある。
KDIは先進国一部の景気指標がやや改善したが、成長鈍化や財政危機などで下振れリスクが依然
として残ると指摘した。
聨合ニュース: 2012/01/08 14:03
http://japanese.yonhapnews.co.kr/economy/2012/01/08/0500000000AJP20120108000900882.HTML
>>796 Windowsに毒されすぎ。
出力は出来る。表示するのはまた別の人。そいつが表示できない事なんか知ったこっちゃない。
今大学1年であんまプログラミング分からないけど今から空いた時間とかで勉強してiPhoneのアプリとか作れるようになりたい俺はまず何した方がいい?
本屋にでも行ってアプリの作り方の本でも買ってこい
>>782 >文字列なんかは、ソースコードに書かれたままを扱ってるだけだから
なんか、最近どっかのスレで似たような話があったような気が…
UTF-8 で書いたソースコードリテラルをコンパイルするとオブジェクトコードに
Shift-JIS で格納するとか、gcc 3.4.0 以降は --input-charset と
--exec-charset オプションで、ソースコードと実行ファイルの文字コードを
別々に指定できるとかあるので、必ずしもそのまま出力するわけじゃないよ。
そんなの c じゃない。
名無しでいいよ:2011/08/15(月) 23:20:15.53 ID:2fed4jwtO FNS歌謡祭やHEY!×3の制作会社 株式会社CELL 東京都千代田区麹町2―2―4麹町YTビル 前バリ・REN4・野田らに政治献金した後藤組のフロント企業 メディアトゥエンテイワン 東京都千代田区麹町2―2―4麹町YTビル
おまえら、規格表の locale の項とコンパイラの仕様の項読んでこいよ。
>>802 の動作は規格の範疇。つまり、それもまた c。
Cはちゃんと文字コードを解釈する。規格がいい加減だから動作がいい加減だけど。
いや、面白くないと言うのはわかるけど、そうなら
>>798 のレスは意味不明だよ。
ものすごくどーでもいい話をしているのですか?
YES
質問はこちらへ、どしどし投稿してね! …どしどしって、よく考えると変な擬音だよね
どんどんやじゃんじゃんとそう変わらないと思うが。
>>779 すみませんそうです。
今プログラミングしてます。
よろしくお願いします。
>>780 あ、そうなんですか。
日進月歩の世界ですね。
その分やりがいがあります。
Win32APIの質問はスレ違いですか?
文盲が多いスレだな。
>>800 少なくとも、Cの勉強をしても時間の無駄。
このすれ的にはこんな答えだろうか
Objective-CやるにはCの習得が前提だからな
>>817 んーアプリ開発ではObjective-Cを使うわけですが、
完全下位互換のCもやっておくと分かりやすいですよw
>>817 無駄どころかCの知識は必要だろう。。
Objective-CはCの完全上位互換なんだから。。
別にiPhoneのアプリ作るのにObjective-C使わんでもできるし、使わない方が 100万倍楽だろw
>>819 下位互換じゃない。基礎だ。
国語が出来ない奴に小論文書けるか?
そういう心持ちがいかん。
スマホアプリは基本JAVAだっけ? iPhoneはMacじゃないと開発できんらしいね。
>>824 Androidも、言語としてはJAVAみたいな感じ(Javaとは言えない)だか、VMはスタックマシンじゃなかったりと変態系。
>>824 WindowsPhoneはは
C#だね
SEかプログラマーでブラックじゃない分野ってある?
ハッカー
9時出社、17時退社、土日休み、有給休暇完全保証、福利厚生施設完備。
>>827 SEって表現をする=SIerってことだけど、日本国内のSIerじゃ全部ブラックだろ。
SIerじゃないIT業界を選べばいいだけの話である
もう IT業界自体が、ブラックと言うか、色が薄くなってると言うか、衰退業界だろ。
>>831 amazonやgoogleやAppleもIT産業なんだが。SIerじゃないだけ。
人の閲覧リストを全世界に公開したりするAmazonや、 MACアドレスやパスワードを蒐集するGoogleや、 GPS情報や住所録を抜きまくるAppleがブラックじゃないとか。
>>833 個人情報を集めないで運営はほぼ不可能ですし。
どんな大企業でも漏洩は起こりうる事故ですしおすし!
誰もそんな話はしていない。
>>834 今時、そういうことを内緒でやるのは犯罪なんだよ。知らないの?
仕事がきついという意味のブラックと 仕事が汚いという意味のブラックを混同して話す奴はIQ低い
ブラックというのは違法あるいは脱法のことだろ。 なんで仕事がきついのがブラックなんだ。
アルバイトや社員に営業ノルマを課せる。 アルバイトには1000枚を、正社員には1万枚を 断ると、雇用が継続されなかったり、昇進に響く。
>>835 いやブラックの話でしょ。
>>836 そういう話じゃない。
>>837 だなw
>>838 「仕事がきつい」っていうのが”ブラック”の意味だよwww
ブラックをヤクザとかと勘違いしてるだろwww
あ? 残業代払わない=違法=ブラック じゃねーのか? ただきついと思うなら仕事が合ってないんだろ。
>>841 まぁ”違法”という意味も多少は含んでいるかもな。
多少か。
え、ブラック=違法って意味だったのか
ボス、やつはやっぱりクロですぜ。
>>844 ブラックのイメージ
・社員への扱いがひどい←パワハラなどで人権侵害
・サービス残業を強制←労働基準法で違反してる
・激務薄給←これは自分で選んでるから仕方ないかもしれない
・オリンパスのように影で悪いことしてる←完全に違法
すまん、ブラックは違法性も高かったわ。
ブラック=ブラックリスト、またはリストの内容?
>>847 スレ違いな上に少しググればわかることをなぜ聞く?
医療かな。俺はずっと医療だが。 前の会社はxxはブラックとスレが立つほど黒いが、普通はもう少しマシだと。 今の会社は金払いは良いが、書類は多いし激務だし試験網羅度はアホみたいに高いしミスったらとても困った事になる。 様は、買う方が素人じゃないと楽だよ。医者なんか頭良いと言うかさすがと言うか、 「おれはわからん、こいつはわかってる。だから俺が話を聞く」って態度の人が多い。 根拠が薄弱な事したら死ぬ程つっこまれるけどね。
まあブラックてのは文脈や場所によって、微妙に意味が違うわな 就職の話をするなら社員の扱いのほうが最優先だし
どの業界や分野のプログラマーは待遇良さげですか?
>>819 直接その言語をやる方が効率的と思うが。
導入として、Cをやりたいなら反対しない。
先にCやっても全く無駄にならないのがObjective-C
死ぬほどきついけどびっくりするほど給料がいい ってのはブラックなのかな だれかC言語でブラック判定式を書いてくれ
実行したらまけじゃねぇかタコ
判定して欲しいということはブラックだと思ってんだろ?
>>855 楽しい仕事ですか ? ホワイト : ブラック;
>>857 ^C で抜けるんだよ。
それに気づかない奴は、ブラック確定。
クッ まあ、おれはソフト屋じゃないからいいけど。。
>>860 SIGINTをトラップして捨てちゃうようにしようぜ
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している 野田内閣は過半数が帰化人 野田はどうだろうか 韓国人から賄賂を貰い、韓国人の集いに出席している野田は
865 :
デフォルトの名無しさん :2012/01/10(火) 10:20:12.53
国民の民度が低いほど就職難が多い気がする 民度が低いと次世代や国のことなんて考えずに自分の保身出世が第一になる そうなると今すでにある程度の地位を持ってるものが生き残るのは必然 結果として老害に椅子を独占されて若者が追い詰められていく 韓国や日本なんてもろにこのパターンでしょ 二大最低国家消えてなくなれ
定年を65まで伸ばすとか、何を考えてるんだろ。 ますます仕事無くなるじゃん。
バグを作る人と直す人で手分けすれば、仕事はなくならない。
868 :
デフォルトの名無しさん :2012/01/10(火) 19:47:56.18
なんだその東電と保安院の癒着みたいな関係
むしろ事態は悪化する
しかし金はまわる
ネットにわいせつ画像陳列容疑で組員を逮捕 兵庫
■「PC覚えるため、趣味で…」
インターネット掲示板にわいせつ画像を投稿したとして、県警サイバー犯罪対策室は10日、
わいせつ図画公然陳列容疑で、尼崎市七松町の指定暴力団山口組系組員で
「韓国籍」の
任信彦容疑者(51)=日本名・豊川政雄=を逮捕した。県警によると、任容疑者は
「パソコンを覚えようとして自分の趣味としてやった」などと容疑を認めているという。
逮捕容疑は、昨年6月2日〜7月11日、携帯電話を使い、インターネット上の掲示板に
わいせつ画像20点を投稿したとしている。
任容疑者の自宅パソコンなどからネット上で入手するなどしたわいせつ画像約690点が
見つかっており、県警は余罪を調べる。
http://sankei.jp.msn.com/region/news/120111/hyg12011102090002-n1.htm
例えば「20増える度に実行」という文を書くには何を使えばいいのでしょうか?
>>873 20増えたかどうかをチェックするif文とか。
>>873 while(1) {
if(++count % 20 == 0) handler();
}
while(1) { if((++count-count_initial_value) % 20 == 0) handler(); } だろ
for (int count = countInitialValue;; ++count) { if ((count - countInitialValue) % 20 == 0) handler(); } // だろ。JK
20カウントごとに1回という要件は満たしている 最初の1回をコールバックするタイミングの指示は要件に含まれていない
何れオーバーフローするんじゃないか?って思う奴は、おれだけ?
何か問題でも?
if ( (count=((count - countInitialValue)%20) ) == 0) handler(); かな?
20回に1回を実現するのに毎回モジュロを計算するというのはちょっともったいない気も。
>>881 countInitialValueが20を超えてたらだめじゃね?
>>879 そんくらいまわすんならサイクリックにすればよろしい
countInitialValueが0でないケースの存在価値が不明
なんで条件文実行のたびに代入したり引き算したりするのよ 条件文は count % 20 == countInitialValue にできるだろうし handeler(); count -= 20; の方が代入回数が少なくて速いし
>>886 要件が曖昧な事に比べれば、大した問題ではない。
ねえだからinitValueをわざわざ何度も使う理由はなんなの? 最初にcountを0で初期化すれば済む話だろカス
そういうこった 先頭が 0 から始まらないなら count = countInitialValue で初期化すれば済む話だしな まぁなんだ。平日の昼間はそういうレベルだってことだよ(自虐)
【レス抽出】 対象スレ:C言語なら俺に聞け(入門編)Part 94 キーワード:initValue 888 名前:デフォルトの名無しさん[sage] 投稿日:2012/01/11(水) 13:22:43.04 ねえだからinitValueをわざわざ何度も使う理由はなんなの? 最初にcountを0で初期化すれば済む話だろカス 抽出レス数:1
それ以前に%を使う必要がない。
それ以前に用件が曖昧すぎる。
__________ | 見ろよ! | ./::::::::::::::::::ノ、ヽ | 民主党支持者がいるよ!w | ./:::::::;;;-‐‐''"´ |:::| \____ ________/ |:::::::| 。 .|:::| ノ´⌒ V _____ .|::::/ ⌒ ⌒ ヽ:| γ⌒´ ヽ, / _____) |:::| /・\ /・\|| // ""⌒⌒\ ) | / ヽ げひひw .|´ ⌒_ ヽ⌒ | . i / ⌒ ⌒ヽ ) | 〉 ⌒ ⌒ | .| :::⌒(__人_)⌒| !゙ /・\ /・\i/ |/. /・\ /・\ヽ ⊂ ̄ヽ___ ヽ \__| ⊂ ̄ヽ_ | :::⌒(__人_)⌒⊂ ̄ヽ_ | ::::⌒(__人_)⌒:: | <_ノ_ ヽ_ _/ <_ノ_. \ \__| / .<_ノ_ \ ´ \__| ノ い〜ひっひw
要件が確定したら消し飛んでしまうような詳細について、彼是考えるのは面白いけど他人に強制するほどのものじゃないな。
>>874 は正しいが、
>>875 は間違っている。
なんで勝手に条件にもないインクリメントを入れるのか。
くやしいのうw
「20増える度」って「1ずつ増える」とは書かれてないよね。 なら俺ならこう書くかな。 int value = 0; void addV(int delta){ value += delta; while( value >= 20 ){ value -= 20; execute_something(); } }
addV(2147483647);
アホ。
おれなら void handler(); void nil(); void (*p_handler)[]={nil,handler}; p_handler[!(counter*=!~(++counter&&~0x13))];
1ずつ増やすも何も、自分で増やすとも言ってないしな。 だから増えてるかどうかの確認をするだけだな。 増やすのは別のところでやってるんだろう。
つまり、これが正解。 int f(v) { static int prev; if(v-prev > 20){ prev+=20,handler();} return 0; }
> → >=
>903 悔しい? この程度のキショイコードも思いつけない自身が虚しくて吊りたい気分?
>>906 それ本気?
内容が間違ってるとは思わないの?
>>901 こんな短いコードにバグを紛れ込ませるなんて、ある意味才能だよなwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
バグ職人にでも転職したらどうだ?マジでwwwwwwwwwwwwwwwwwwwwww
>>904 そこのifはwhileじゃね?あとなんで戻り値あるの?
こうだな。 int f(v) { static int prev; if(v-prev >= 20){ prev+=20,handler();return 1;} return 0; }
f(40) ダメじゃん
while(f(40)); なんのために変更したのか考えろよ。 つーか、返ってこないのは不便だからわざわざ一回で返ってるんだろ。
ここって学生しか居ないのか?
お題の要件を満たすのに回答の外側にコードが必要っておかしいだろ…
一瞬grassスレにでも迷い込んだかとオモタ
918 :
デフォルトの名無しさん :2012/01/11(水) 20:41:48.43
ありえねぇw
919 :
デフォルトの名無しさん :2012/01/11(水) 20:54:23.64
#defineで置き換えた先にdefine以外のプリプロセッサ置くのって可能?
日本語でおk。
921 :
デフォルトの名無しさん :2012/01/11(水) 20:59:45.64
#define TEST #include "aaa.h" みたいな使い方ができる方法ってある?
>>921 #if とか #ifdef とか使えばやりたいことは出来ると思うよ
924 :
デフォルトの名無しさん :2012/01/11(水) 21:13:50.85
さすが匿名 思慮の足りない塵ばかりであったか
自己紹介乙。
>>921 それは普通は
#ifdef TEST
#include "aaa.h"
#endif
みたいにして、それ以前に#define TESTを入れるか否かとか
プリプロセッサ(というかコンパイラか)にオプション渡して分岐するとこじゃね?
てか TEST ってのがデバッグ中のことなら
IDEとかの環境側がリリース形態によって勝手に定義しといてくれたりもするぞ
例えばVSならDebugリリース時に _DEBUG だっけ
ごめんDebugビルドか、ワケ分からん用語使ってすまぬ
#define TEST_LEVEL 1 #if TEST_LEVEL > 0 #define TEST_INC "test.h" #else #define TEST_INC "nothing.h" #endif #include TEST_INC こんなのでイケるかもよ?
>>929 二つもインクルードファイル作って管理するの面倒
仕様を悪用して無駄にゴチャゴチャさせるのは悪ノリ以外の何物でもないぞ。
935 :
934 :2012/01/11(水) 22:38:36.74
ごめん、誤爆ったーー;
謝っても許さねぇ。オメェだけは絶対に許さねぇぞフリィーザァーーーーーー!!
うぜえよ餓鬼
すでに質問者いないのにこの荒れようすごいな。 ってか釣りだとは思わないのかw
プログラミング以外と釣り相手だとイキイキする奴が多いからな。