C言語なら俺に聞け! Part 124
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/03/14(火) 11:20:04質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は専門の別スレッドがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
C言語なら俺に聞け! Part 123
http://pc8.2ch.net/test/read.cgi/tech/1140929905/
0002デフォルトの名無しさん
2006/03/14(火) 11:24:170003デフォルトの名無しさん
2006/03/14(火) 11:47:400004デフォルトの名無しさん
2006/03/14(火) 12:16:01参照する変数がnullであるため処理を続行できなくなったときに
プログラムまたはJava仮想マシン(JVM)が送出するランタイム例外
ガベージコレクション(GC)のタイミング、処理が重いときや
JVMのバージョン等の影響で再現性なくこの例外が送出される場合がある
再現性なく問題が発生することがあるので、対処のしようがない
(設計も見直すことで解決するかもしれない)
→オーマイ「ガッ」
→キーボードなど「ガッ」と叩いて八つ当たりする
とすることから ぬるぽ→ガッ の流れができた
のかは知らん
0005デフォルトの名無しさん
2006/03/14(火) 12:32:25「ガッ」してたのは「Javaにはポインタなんてないよ派」だけど
まあ大体あってる。
0006デフォルトの名無しさん
2006/03/14(火) 12:36:09「ガッ」の由来が違う。
0007デフォルトの名無しさん
2006/03/14(火) 14:55:070008デフォルトの名無しさん
2006/03/14(火) 15:26:59どこがわかったのかw
0009デフォルトの名無しさん
2006/03/14(火) 15:39:350010デフォルトの名無しさん
2006/03/14(火) 15:45:060011デフォルトの名無しさん
2006/03/14(火) 17:41:020012デフォルトの名無しさん
2006/03/14(火) 17:53:030013デフォルトの名無しさん
2006/03/14(火) 17:55:260014デフォルトの名無しさん
2006/03/14(火) 18:03:45#include <stddef.h>
int main()
{
int *p = NULL;
*p = 0;
return 0;
}
0015デフォルトの名無しさん
NGNGそれはぬるぽの出し方のような。
0016デフォルトの名無しさん
2006/03/14(火) 18:33:12なんかこのスレは、ぬるぽ叩きスレになっているなw
0017デフォルトの名無しさん
2006/03/15(水) 00:59:470018デフォルトの名無しさん
2006/03/15(水) 01:17:44日本語と英語の違いと同じ
0019デフォルトの名無しさん
2006/03/15(水) 01:18:21っつーか、「国鉄と乗用車の根本的な違いって、何ですか?」並にアフォな質問だな。
0020デフォルトの名無しさん
2006/03/15(水) 01:21:23http://pc8.2ch.net/test/read.cgi/tech/1139931895/914
から移ってきたんだろうけど、ここも残念ながらスレ違いだw
こっちの方がいいだろう
http://pc8.2ch.net/test/read.cgi/tech/1140269442/
0021デフォルトの名無しさん
2006/03/15(水) 01:29:04struct tagtext{
inta;
struct tagtext*next;
};
typedef struct tagtextTEXT;
int main()
{
TEXT*head,*cp;
inti;
head = NULL;
for(i = 0;i < 10;i++){
if((cp = (TEXT*)malloc(sizeof(TEXT)))==NULL)
{
puts("記憶領域の確保失敗");
exit(1);
}
cp->a = 200 + 10 * i;
cp->next = head;
head = cp;
}
while(cp != NULL){
printf("%d\n",cp->a);
cp = cp->next;
free(head);
head = cp;
}
return (0);
}
このプログラムの時に、freeで開放するのはwhileの中で一個ずつ開放するのと、
whileから出て freeで開放するのは、どっちで開放しても同じ結果になるんですか?
0022デフォルトの名無しさん
2006/03/15(水) 01:42:38どちらにしてもループさせながら全部 free() するのが正解だと思う。
0023デフォルトの名無しさん
2006/03/15(水) 01:49:45解答ありがとうございます<(_ _)>
今度から毎回whileの中で開放するようにします。
>>22さん本当にありがとうございました!
0024デフォルトの名無しさん
2006/03/15(水) 03:05:59まあ別に for でもいいんだけどさ。確保したものはきっちり解放するようにした方がいい。
まあ、解放直後に終ってOSに制御を移すような場合はやってもやんなくても同じだが、
OSなしの環境でそれをやるとしばらくすると暴走する機械ができ上がったりする。
0025デフォルトの名無しさん
2006/03/15(水) 08:25:19不定値だから1以外になることももちろんある。
連続して実行させると1ばかり出るというのも起こりえる。それでも不定は不定。
0026デフォルトの名無しさん
2006/03/15(水) 17:04:10どこの辺が問題の部分なのか指摘して頂きたいのですがお願いします。
少し分けて貼ります。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct person {
char name[64];
struct person *next;
}Person;
typedef struct {
Person *head;
Person *tail;
}List;
Person *AllocNode(void);//1ノード追加
void AppendPerson(List *list);//ノードの追加
void PrintPerson(List *list);//全ノード表示
void InitPerson(List *list);
0027デフォルトの名無しさん
2006/03/15(水) 17:05:24{
return ((Person *)calloc(1,sizeof(Person)));
}
void AppendPerson(List *list)
{
Person *ptr = list->tail;
list->tail = AllocNode();
printf("名前は?");scanf("%s",ptr->name);
ptr->next = list->tail;
}
void InitPerson(List *list)//制御ブロック作成
{
list->head = list->tail = AllocNode();
}
void PrintPerson(List *list)
{
Person *ptr = list->head;
while(ptr != list->tail){
printf("%s",ptr->name);
ptr = ptr->next;
}
}
0028デフォルトの名無しさん
2006/03/15(水) 17:06:33List list;
int flag = 1;
InitPerson(&list);//初期化
do{
AppendPerson(&list);
printf("追加しますか?1→YES、2→NO\n");
scanf("%d",&flag);
}while(flag != 0);
PrintPerson(&list);
free(&list);
}
0029デフォルトの名無しさん
2006/03/15(水) 17:21:47&list固定されてね?
0030デフォルトの名無しさん
2006/03/15(水) 17:23:42でもmain内のlistって初期化されてないよな?それ
0031デフォルトの名無しさん
2006/03/15(水) 17:24:520032デフォルトの名無しさん
2006/03/15(水) 17:25:08気付きませんでした・・・ポインタでは無いと言う事ですよね?
ポインタにして実行してみます。
0033デフォルトの名無しさん
2006/03/15(水) 17:25:250034デフォルトの名無しさん
2006/03/15(水) 17:26:35芋づる式にケツからfreeせんとだめだから結構面倒だぞ
0035デフォルトの名無しさん
2006/03/15(水) 17:29:24ご指摘されたlistをポインタに変え、アドレス演算子のついた場所を取り除いてみましたが
やはり、エラーの報告と言うのが出て、エラーを送信しますか?というのが出てしまいす。
>>33
freeの関数のアドレス演算子も取ってみましたが変わらずエラーになってしまいます。
0036デフォルトの名無しさん
2006/03/15(水) 17:31:56確保した領域は全てfreeしなければいけないという事なんですね・・・。
このプログラムの場合ですとfreeしていく関数が必要なんですねorz
ではまず、その関数を考えます。ありがとうございます!!
0037デフォルトの名無しさん
2006/03/15(水) 17:32:14エラーは一番最後のfree(&list);のせい。
listはcallocで割り当てられてないのでfreeしちゃだめ。
AllocNodeで割り当てた分についてはPrintPersonみたいに一つづつfreeしないとだめ。
0038デフォルトの名無しさん
2006/03/15(水) 17:32:40|
head ←こいつはmallocで確保してるからfreeできる、けど・・・
|
head ←こいつからfreeしないとダメ(上からやるとこいつを参照する手段無くなる)
だからListをポインタにして、こいつを動的に確保しただけだと結局意味ねえ
0039デフォルトの名無しさん
2006/03/15(水) 17:39:28そういう間違いをしていたのですか。では領域を開放するのをPrintPersonの関数と
似た感じで作ればよろしいのですね。理解できてきました!ありがとうございます
>>38
結局意味無いのですかorz。でも作ってしまったので一応やってみます。
書いてあるのをみると、tailからfreeしていけばよろしいですね。
とても参考になります!ありがとうございます。
0040デフォルトの名無しさん
2006/03/15(水) 17:39:290041デフォルトの名無しさん
2006/03/15(水) 17:42:16一応、Listをポインタで宣言して、動的に確保した場合、エラーは発生せずに終了する(と思う)
でもゴミ(free出来ていない枝)がメモリ上に残ることになるので非常によろしくない
この場合誤ったfreeの直後に終了しているからトラブルは何も無いがこのあといろんな処理をする際
トラブルの温床になるのでこの機会に気をつけるようにしておくといいかな
0042デフォルトの名無しさん
2006/03/15(水) 17:50:09はい。これからメモリの扱いには注意深く気をつけてみます。
皆さん親切に解答して頂きありがとうございます。
これからメモリ開放できるように考えてみます。長いプログラムで面倒でしょうに
答えて頂き本当にありがとうございました。
0043デフォルトの名無しさん
2006/03/15(水) 18:43:27表示でグルグルまわしてるじゃねーか。
freeも同じようにやればいい。
でも途中の1要素だけ消すとか、そういうのも今後追加するんだろうから
それやってからでも遅くは無いか
0044デフォルトの名無しさん
2006/03/15(水) 19:36:56// Declare local identifiers:
HRESULT hr = S_OK;
CComPtr<ISpPhoneConverter> cpPhoneConv;
CComPtr<ISpLexicon> cpLexicon;
LANGID langidUS;
SPPHONEID wszId[SP_MAX_PRON_LENGTH];
hr = cpLexicon.CoCreateInstance(CLSID_SpLexicon);
// 0x409 for English.
langidUS = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
if(SUCCEEDED(hr))
{
hr = SpCreatePhoneConverter(langidUS, NULL, NULL, &cpPhoneConv);
}
if(SUCCEEDED(hr))
{
hr = cpPhoneConv->PhoneToId(L"r eh d", wszId);
}
if(SUCCEEDED(hr))
{
hr = cpLexicon->AddPronunciation(L"red", langidUS, SPPS_Noun, wszId);
}
if (SUCCEEDED(hr))
{
// Do stuff here.
}
0045デフォルトの名無しさん
2006/03/15(水) 19:39:54スレ違い
0046デフォルトの名無しさん
2006/03/15(水) 20:38:551文字前なら\bで戻れるんだけど行を超えて戻れない
0047デフォルトの名無しさん
2006/03/15(水) 20:44:01標準Cではそんなことできないから、適当なスレへ行きなさい。
わからなければここへOSなどを書き添えて。
http://pc8.2ch.net/test/read.cgi/tech/1140963340/l50
0048デフォルトの名無しさん
2006/03/15(水) 21:51:00例えば、プログラムを実行すると勝手に
「windowsキー」→「U」→「U」
って押したことになるようなの
0049デフォルトの名無しさん
2006/03/15(水) 21:52:240050デフォルトの名無しさん
2006/03/15(水) 21:57:53>>47
0051デフォルトの名無しさん
2006/03/15(水) 22:03:18例えば、プログラムを実行すると、
C:\>ipconfig
みたいになるヤシ
0052デフォルトの名無しさん
2006/03/15(水) 22:05:140053デフォルトの名無しさん
2006/03/15(水) 22:06:050054デフォルトの名無しさん
2006/03/15(水) 22:08:17こんな性格ですみません。
態度を改めますので、ぜひ教えていただけないでしょうか?
0055デフォルトの名無しさん
2006/03/15(水) 22:09:370056デフォルトの名無しさん
2006/03/15(水) 22:13:34いえ、無視してたわけではありませんよ。
system関数使っていろいろやってみたんですけど、
system("hogehoge");
引数をどうしたらいいかわかりませんw
0057デフォルトの名無しさん
2006/03/15(水) 22:15:220058デフォルトの名無しさん
2006/03/15(水) 22:18:07お前は何を言ってるんだ?
ipconfig実行したなら
#include<stdio.h>
#include<stdlib>
int main(void){
system("ipconfig");
return 0;
}}
0059デフォルトの名無しさん
2006/03/15(水) 22:18:44&
最後の括弧イラネ
0060デフォルトの名無しさん
2006/03/15(水) 22:19:39カレントディレクトリを変更するのって無理なんでしょうか?
0061デフォルトの名無しさん
2006/03/15(水) 22:22:17>>47
0062デフォルトの名無しさん
2006/03/15(水) 22:23:39main()の最後でどっちにしても変わらないんですが
006360
2006/03/15(水) 22:25:230064デフォルトの名無しさん
2006/03/15(水) 22:26:23mainに0返すか-1返すか
0065デフォルトの名無しさん
2006/03/15(水) 22:28:070か-1を返すのでは何か違いでもあるのでしょうか?
0066デフォルトの名無しさん
2006/03/15(水) 22:29:26てか気にしなくてOKだと思うが
0067デフォルトの名無しさん
2006/03/15(水) 22:32:40あれは、単に明示的なものなんでしょうか?
わかりました。気にしないようにします。
ありがとうございました。
0068デフォルトの名無しさん
2006/03/15(水) 22:33:20-1は知らん
0069デフォルトの名無しさん
2006/03/15(水) 23:23:07おまいさんが UNIX/Linux 使ってるなら、
こういう風にエラーで分岐できる。
#!/bin/sh
if a.out; then # a.out は実行ファイル
echo success # return 0; の時
else
echo fail # それ以外のとき
fi
Windows のバッチファイルでも何か方法あったはず。
0070デフォルトの名無しさん
2006/03/16(木) 01:10:49でも -1 はどうかな? 普通OKだったら0返してダメだったら1とか、
あるいは sysexits.h にある EX_なんとか を返すよな。
stdlib.h の場合は EXIT_SUCCESS とか。
0071デフォルトの名無しさん
2006/03/16(木) 02:35:450072デフォルトの名無しさん
2006/03/16(木) 02:37:110073デフォルトの名無しさん
2006/03/16(木) 02:59:130074デフォルトの名無しさん
2006/03/16(木) 02:59:440075デフォルトの名無しさん
2006/03/16(木) 03:26:210076デフォルトの名無しさん
2006/03/16(木) 03:33:450077デフォルトの名無しさん
2006/03/16(木) 03:36:210078デフォルトの名無しさん
2006/03/16(木) 03:58:040079デフォルトの名無しさん
2006/03/16(木) 04:10:460080デフォルトの名無しさん
2006/03/16(木) 04:18:390081デフォルトの名無しさん
2006/03/16(木) 04:27:400082デフォルトの名無しさん
2006/03/16(木) 04:31:310083デフォルトの名無しさん
2006/03/16(木) 08:36:170084デフォルトの名無しさん
2006/03/16(木) 12:43:36ファイルの概念自体がない環境もあり得るから。
0085デフォルトの名無しさん
2006/03/16(木) 12:49:58それを言うなら「ディレクトリの概念がない」だろう。
0086デフォルトの名無しさん
2006/03/16(木) 12:58:13なにを言ってるんだお前は
0087デフォルトの名無しさん
2006/03/16(木) 13:01:07組み込み系とかはファイル無いシステムもあるんじゃないかね
0088デフォルトの名無しさん
2006/03/16(木) 13:27:06fopen()は名前をストリームとして開く関数だから、これをファイルの概念と言ってもいいと思うが。
0089デフォルトの名無しさん
2006/03/16(木) 13:45:29ディレクトリ操作関係はPOSIXで定義されているがC標準では無い。
0090デフォルトの名無しさん
2006/03/16(木) 14:00:420091デフォルトの名無しさん
2006/03/16(木) 15:02:560092デフォルトの名無しさん
2006/03/16(木) 15:05:180093デフォルトの名無しさん
2006/03/16(木) 15:18:250094デフォルトの名無しさん
2006/03/16(木) 15:19:46ガッ
0095デフォルトの名無しさん
2006/03/16(木) 15:20:32私を叩いてくださいというお願い
0096デフォルトの名無しさん
2006/03/16(木) 15:29:49しないでもいいと書いてあるサイトもありますが・・。
プログラム終了時に解放されることは保証されているのでしょうか?
0097デフォルトの名無しさん
2006/03/16(木) 15:33:56ただ自分で解放したほうがいいよ
0098デフォルトの名無しさん
2006/03/16(木) 15:41:02物事を柔軟に考えられない硬直した思考の持ち主
0099デフォルトの名無しさん
2006/03/16(木) 15:41:59普通のOSはメモリについてはプロセスが完全に終わった時に開放する
ので普通のOS上で動くプログラムの場合はなくても多分大丈夫。しかし
マイコン基板のROMなどに焼かれて動くプログラムでそれをやると多分
まともに動かない機械ができあがる。
0100デフォルトの名無しさん
2006/03/16(木) 15:43:00それは取り壊す人が別に居る場合に言えることだ。
0101デフォルトの名無しさん
2006/03/16(木) 16:38:100102デフォルトの名無しさん
2006/03/16(木) 16:56:28マシンは物理的に存在し、何時かは寿命を迎えるのだから
・メモリを確保する理由が無くなったら解放する必要がある。
・(特に理由がなければ)プログラム終了時にメモリを解放する必要などない
0103デフォルトの名無しさん
2006/03/16(木) 17:03:36解放しなくてもいい場合もあるがそうでない場合もある。
この違いに自信がなければ解放しといたほうが無難。
0104デフォルトの名無しさん
2006/03/16(木) 17:11:470105デフォルトの名無しさん
2006/03/16(木) 17:14:56ファイルもクローズしないでいいよ
0106デフォルトの名無しさん
2006/03/16(木) 17:21:17メモリが開放されることは保証してないよな?
OS が保証していることはあると思うが。
0107デフォルトの名無しさん
2006/03/16(木) 17:22:16まぁ忘れやすいんだけどね解放
0108デフォルトの名無しさん
2006/03/16(木) 17:30:460109デフォルトの名無しさん
2006/03/16(木) 17:33:010110デフォルトの名無しさん
2006/03/16(木) 17:48:20メモリが開放されることは保証してないよな?
0111デフォルトの名無しさん
2006/03/16(木) 18:01:01それがなに
0112デフォルトの名無しさん
2006/03/16(木) 18:09:06alloc系でメモリ確保したポインタをfreeしたときは解放することが保証されてる
0113デフォルトの名無しさん
2006/03/16(木) 18:16:27( ゚Д゚)ハァ?
0114デフォルトの名無しさん
2006/03/16(木) 18:20:030115デフォルトの名無しさん
2006/03/16(木) 18:32:45void free(void *p)
{
malloc(1024 * 1024 * 1024);
}
0116デフォルトの名無しさん
2006/03/16(木) 18:34:010117デフォルトの名無しさん
2006/03/16(木) 18:34:45お前、頭おかしいだろ
0118デフォルトの名無しさん
2006/03/16(木) 18:37:130119デフォルトの名無しさん
2006/03/16(木) 18:41:320120デフォルトの名無しさん
2006/03/16(木) 18:45:220121デフォルトの名無しさん
2006/03/16(木) 18:55:240122デフォルトの名無しさん
2006/03/16(木) 19:06:38{
void *p = malloc(1);
free(p); /* #1 */
}
というパターンと、
main()
{
void *p = f();
unf(p);
}
void* f() { return malloc(1); }
void unf(void *p) { free(p); } /* #2 */
というパターンを同列に論じるからおかしくなるんだよ
「プログラム終了前」は #1 だけであり、
プログラム全体の中でただ1カ所の特殊な位置での議論から
#2 まで含めて「free 不要」に聞こえる主張をされても
ライブラリの意義からして賛同できるはずがない
main は実行環境とのインターフェイスなので本質的に処理系依存だ
free の実装だの返却値の解釈だのを処理系を特定せずに強弁するから
どんどんおかしな方向へ話がそれていく
# 規格の中にまでこの歪みが入り込んでしまっている
0123デフォルトの名無しさん
2006/03/16(木) 19:16:530124デフォルトの名無しさん
2006/03/16(木) 19:18:280125デフォルトの名無しさん
2006/03/16(木) 19:40:49その領域はどうなるか? って話だろ?
>>122がなにをいいたいのかよくわからん
0126デフォルトの名無しさん
2006/03/16(木) 19:58:42「プログラム終了前のfreeは不要」まで読んだ
0127デフォルトの名無しさん
2006/03/16(木) 20:02:39何その房コードは
0128デフォルトの名無しさん
2006/03/16(木) 20:06:28詳しく説明してくれないか
0129デフォルトの名無しさん
2006/03/16(木) 20:26:53という感じにできませんか?
0130デフォルトの名無しさん
2006/03/16(木) 20:31:22>>129
ret = (a/5)*5;
これでいいだろ?
0131デフォルトの名無しさん
2006/03/16(木) 20:32:170132デフォルトの名無しさん
2006/03/16(木) 20:51:540133デフォルトの名無しさん
2006/03/16(木) 21:12:06ありがとうございます。
何で気づかなかったんだろ・・・
0134デフォルトの名無しさん
2006/03/16(木) 23:26:38「このCD-ROMには、本書で扱ったサンプルコードを収録しています。
ファイルをハードディスクにコピーし、「unlock.bat」を実行して
全ファイルの読み取り専用属性をはずしてから、ご利用ください。」
と表示され、意味が全くわかりませんでした。
特に、「読み取り専用属性をはずす」って、どうやればよいのでしょう?
それから、「unlock.bat」がみつかりません。
「unlock」というのがあり、押してみたのですが、黒い背景に、ただただ「アクセスは拒否されました」といったメッセージが並び、
また、サンプルどおりにCでプログラムを書き、その「unlock」に重ねて(これを実行するというのでしょうか?)みたのですが、黒い背景に「隠しファイルは再設定できません」とだあーーっとでてきてしまいます。
(「隠しファイルは再設定できません インベーダーゲーム…」とか「ピクチャー…」などでてきたので、私のコンピュータ全てを何かしているようです…)
どうしたらプログラムを書いて実行できるようになるのでしょうか?
本には、このCD−ROMがコンパイラだと書いてあるのですが、それ以上は何も書いてありません。
すみませんがよろしくお願いします。
0135デフォルトの名無しさん
2006/03/16(木) 23:27:39自分で調べられないなら止めといた方が無難
0136デフォルトの名無しさん
2006/03/16(木) 23:28:39あの、私すごく初心者なので、「ここまでは言わなくてもいいだろ」ということろまで詳しくお願いします。。
0137デフォルトの名無しさん
2006/03/16(木) 23:29:05読み取り専用は書き換えができないファイルのこと
入ってたらそのままそれ使えばいいけど無いなら
BCCかVC++でもDLしてきてコンパイルせよ
0138デフォルトの名無しさん
2006/03/16(木) 23:29:15猫スレがあるだろ
隅から隅まですれ違いだ
0139デフォルトの名無しさん
2006/03/16(木) 23:29:49unlock.batとunlockは同じ物。
拡張子を表示する設定にしてないだけ。
アクセス拒否はCDのファイルの属性を変えようとしたから失敗しただけ。
ハードディスクにコピーしてからやれ。
0140デフォルトの名無しさん
2006/03/16(木) 23:30:41ここはC言語の話題の場
特定の本にかいてあるC言語以前の使い方ならよそでやってくれ
0141デフォルトの名無しさん
2006/03/16(木) 23:32:53134ですが言い忘れました、
あの、私すごく初心者なので、「ここまでは言わなくてもいいだろ」ということろまで詳しくお願いします。。
これは酷いw
なんで赤の他人がお前の勉強を全力でサポートしてくれるんだw
釣りにしてもヘタクソだ
0142デフォルトの名無しさん
2006/03/16(木) 23:40:27次に質問するときは「猫スレ」にいってきます。すみません。。。
レス返しだけごめんなさい
>>137
コンパイラ付属、だそうで入っていました。ですが説明がほとんどなく。。
>>139
なるほど、ハードディスクにコピー・・ まずはそれからですね。やってみます。
ありがとうございました。
0143134(142もです)
2006/03/16(木) 23:44:12釣りではありません、ほんとです。。困っています。。
質問スレだったので、言いました。
面倒だと感じた人は、スルーしてください。。
0144デフォルトの名無しさん
2006/03/17(金) 00:02:31コンパイラは何が入ってたんだよ
0145デフォルトの名無しさん
2006/03/17(金) 00:05:37お前、責任もって最後まで面倒見ろよ。
0146デフォルトの名無しさん
2006/03/17(金) 00:05:50エッ(゚Д゚≡゚Д゚)マジ?
0147デフォルトの名無しさん
2006/03/17(金) 00:07:25Borland C++ Compiler その他開発ユーティリティ
と、書いてあります。
あと、とりあえず改めて「猫スレ」に質問してきたので、よかったらそこにレスしてもらえると嬉しいです
0148デフォルトの名無しさん
2006/03/17(金) 00:14:210149デフォルトの名無しさん
2006/03/17(金) 03:09:550150デフォルトの名無しさん
2006/03/17(金) 03:24:02ある。
0151デフォルトの名無しさん
2006/03/17(金) 03:36:560152デフォルトの名無しさん
2006/03/17(金) 03:43:320153デフォルトの名無しさん
2006/03/17(金) 03:49:54可変長引数みたいなもんですか?
0154デフォルトの名無しさん
2006/03/17(金) 03:53:30qsortの説明嫁。
0155デフォルトの名無しさん
2006/03/17(金) 09:53:090156デフォルトの名無しさん
2006/03/17(金) 10:08:24具体的にどういう作りにすればいいんでしょうか?
0157デフォルトの名無しさん
2006/03/17(金) 10:59:01だから、qsort みたいな関数を作りたい時に必要だろ?
0158デフォルトの名無しさん
2006/03/17(金) 11:05:45C言語でオブジェクト指向風なことをしたい場合に使う
こともできる。構造体の中にその構造体へのポインタを
第一引数に取ってその内容に従って動く関数へのポインタを
入れておく。すると何が出来るかというと、処理する
関数を変えられるのでオブジェクト指向の言語のオーバー
ライドができて多態性を実現できる。
0159デフォルトの名無しさん
2006/03/17(金) 11:07:59配列にするのは使い方としてはお約束だよな
0160デフォルトの名無しさん
2006/03/17(金) 11:08:070161デフォルトの名無しさん
2006/03/17(金) 11:09:10正にCから見たCOMインターフェイスがそうなっている。
0162デフォルトの名無しさん
2006/03/17(金) 11:10:05あなたが作ろうとしている「スレッド」の内容による
開始処理と終了処理の対が破れたときに何が起きるかを明らかにし、
そのうちのマズいことへの対策を考える
0163デフォルトの名無しさん
2006/03/17(金) 11:32:55こんなのとか
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/atexit.3.html
あとは
log("hello, world")
という関数を実行した時、stderrに表示する関数を登録したり、ファイルに追加して行ったり
画面のダイアログに表示したりという処理をアプリ側が決められるようになる。
0164デフォルトの名無しさん
2006/03/17(金) 12:15:47環境依存なので各OSのプログラミングスレもしくは
スレッドプログラミング一般のスレでどうぞ
0165デフォルトの名無しさん
2006/03/17(金) 13:23:22これはリスト構造になっていますでしょうか?
typedef struct _date{
int number;
int score;
struct _date *next;
}date;
date *add(int number,int score,date *d)
{
date *p;
p=(date*)malloc(sizeof(date));
p->number=number;
p->score=score;
p->next=d;
d=p;
return d;
}
int main()
{
date *d;
d=NULL;
int number,score,i=4;
while(--i){
scanf("%d",&number);
scanf("%d",&score);
d=add(number,score,d);
}
return 0;
}
0166デフォルトの名無しさん
2006/03/17(金) 14:21:34typedef struct UHOIOTOKO
より
typedef struct UhoIotoko
の方が個人的には好みなんだけど
0167デフォルトの名無しさん
2006/03/17(金) 14:25:150169デフォルトの名無しさん
2006/03/17(金) 14:27:58大文字は定数だろ?
Winは糞だから従う必要はない。
0170デフォルトの名無しさん
2006/03/17(金) 14:29:500171デフォルトの名無しさん
2006/03/17(金) 14:32:240172デフォルトの名無しさん
2006/03/17(金) 14:32:430173166
2006/03/17(金) 15:03:31ありがと
0174デフォルトの名無しさん
2006/03/17(金) 18:26:590175デフォルトの名無しさん
2006/03/17(金) 18:31:57実装が知りたいんなら、gccのソース嫁
0176デフォルトの名無しさん
2006/03/17(金) 18:34:200177デフォルトの名無しさん
2006/03/17(金) 18:39:370178デフォルトの名無しさん
2006/03/17(金) 18:42:13ごめんなさい
0179デフォルトの名無しさん
2006/03/17(金) 18:43:16ふつーの UNIX や Linux なら sbrk() とか使ってプロセスのメモリ領域
広げてそこ使ってるんじゃないのかな。
0180デフォルトの名無しさん
2006/03/17(金) 18:44:18ISO/IEC9899 は malloc の実装を定義していないので
この話題はスレ違いになりやすいので注意されたい
まずは gcc か VC のソースを読んでみてはいかがかな?
gcc のソース
ftp://ftp.gnu.org/gnu/gcc/
VC のソース(CDドライブのドライブ文字を X: と仮定)
X:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\crt\src
X:\VC98\CRT\SRC
0181デフォルトの名無しさん
2006/03/17(金) 18:59:230182デフォルトの名無しさん
2006/03/17(金) 19:00:55みたいなのを練習で作ってみるとか。貸し出しテーブル作ってもいいし
貸し出すときにヘッダつけてもいいし。
0183デフォルトの名無しさん
2006/03/17(金) 19:22:440184デフォルトの名無しさん
2006/03/17(金) 20:01:11static char *head;
void *malloc(size_t size)
{
void *p = (void*)head;
head += size;
return p;
}
void free(*p){}
0185デフォルトの名無しさん
2006/03/17(金) 20:03:260186デフォルトの名無しさん
2006/03/17(金) 20:04:180187デフォルトの名無しさん
2006/03/17(金) 22:06:27データC1(データB1、データB2…)|データC2(データB1…)|データC…
データA2
データC1(…)…
データA…
というテキストを読み込んでA、Cに属するBを格納するプログラムですが
三次元配列になってしまいました。
仕方ないことでしょうか?
教えてください。お願いします。
0188デフォルトの名無しさん
2006/03/17(金) 22:31:110189187
2006/03/17(金) 22:54:52多次元配列となると処理が遅くなるようなイメージがあったので
もっと効率的に処理できる方法が、他に何かなかったか
分からなかったのでこちらで尋ねました。
0190デフォルトの名無しさん
2006/03/17(金) 22:56:34その領域を初期化する方法は正しいでしょうか。
誤りがあればご指摘いただけると助かります。
#include <stdio.h>
int main() {
struct A {
int a;
long b;
int c;
long d;
char *e;
};
int z;
struct A *AA;
AA = (struct A *) malloc(sizeof(struct A));
memset(AA,'\0',sizeof(struct A));
return 0;
}
0191デフォルトの名無しさん
2006/03/17(金) 22:57:410192デフォルトの名無しさん
2006/03/17(金) 23:05:09処理が遅くなるかどうかは、まず実測してから
その観測事実に対して考察を行うべし
10万回から1億回くらいの実行時間なら
ストップウォッチや時計の秒針でも確認できるだろう
base[index].displacement みたいなアドレッシングの速度は、
昔言われていた計算時間の考え方と今とではかなり違ってきている
0193デフォルトの名無しさん
2006/03/17(金) 23:06:160194デフォルトの名無しさん
2006/03/17(金) 23:15:100195デフォルトの名無しさん
2006/03/17(金) 23:37:03ここだけの話、mallocに関してはVC++のソースを読んでも役に立たないと思う。
0196デフォルトの名無しさん
2006/03/17(金) 23:39:350197デフォルトの名無しさん
2006/03/18(土) 00:06:21ハァ?
0198魚チョコ
2006/03/18(土) 03:04:50それで動くけど struct A が char *e を含んでることが問題なのかな?
memset(AA, 0, sizeof(struct A)); で AA が納まる領域はすべて 0 (全ビット
0 )で埋まるけど、C の仕様上、
・ポインター型の 0 は、全ビット 0 とは限らない。論理が反転していて(負論理)、
111...111b かもしれない。十進コードかもしれない。
・ NULL は「ポインター型の 0 」とも限らない。負論理の 0 なら、111...111b のは
ずだが、NULL は 011...111b かもしれない。
これらはデータとポインター(アドレス)とを厳密に区別していた(CPU 内部の
演算器も別になっていた)時代の名残で、現代の CPU のアーキテクチャーから
見ると迷惑な配慮でしかない。
処理系ごとの NULL 値の違いには、コンパイラーが全部自動的に対応してく
れるので、ソースコード中、ポインター値が必要なところに 0 と書けばそれはその
処理系における NULL 値に翻訳される。ヘダーファイルの中に、NULL はどうせ
((void*)0) と定義されている。これを ((void*)777) 等に直すとたぶん動かなくな
る。
NULL を int にキャストすれば 0 が得られる。もし上記がほんとなら、ポインター
変数を int にキャストするようなコードでは、実行時に NULL に出会うと変な値が
得られそうなものだが、そういう処理系ではその変な NULL 値を検出して 0 に直
すコードが追加されるんでしょね(遅くなる)。私はそんな処理系を見たことないの
でどんなコードが吐かれるか知らないが。
コンパイラーがすべて自動的にやってくれるはずだが、ポインターのポインター
を強引に別の型のポインターにキャストして参照するようなコードでは、内部表現
の違いが露見してしまう。
こういう問題があるので、口うるさい香具師は、メンバーにポインター変数を含
む構造体の初期化には memset()、calloc() を使ってはいけないと言いやがる。各
メンバーを個別に初期化せよ、と。その際は次のように問うてみよう。「NULL の内
部表現が全ビット 0 でないような機種・ OS ・コンパイラーが何て名で何処にある
のか?」 私は memset() も calloc() も使いますけど。どうせ食品ですから。
0199デフォルトの名無しさん
2006/03/18(土) 04:36:360200デフォルトの名無しさん
2006/03/18(土) 04:44:26みたいな配列の中身をランダムに格好良く書き換える方法教えてください
0201デフォルトの名無しさん
2006/03/18(土) 04:50:12配列の中身をランダムに入れかえるですね
arry[10] ⇒{1,0,6,2,7,3,8,5,4,9} みたいに
0202デフォルトの名無しさん
2006/03/18(土) 04:52:21おれ、NULLの内部表現のこととかまだ曖昧なんだけど
内部表現が0じゃない場合
int *p;
memset(&p, 0, sizeof(int*)/sizeof(char));
としたら
if( p != NULL )
は真になってまうんですか?
0203デフォルトの名無しさん
2006/03/18(土) 04:52:48int j, tmp;
j = rand() % 10;
tmp = arry[i];
arry[i] = arry[j];
arry[j] = tmp;
}
0204デフォルトの名無しさん
2006/03/18(土) 04:54:390205デフォルトの名無しさん
2006/03/18(土) 04:56:00やってみれば?
真にならないと思うよ
0206デフォルトの名無しさん
2006/03/18(土) 04:59:010207デフォルトの名無しさん
2006/03/18(土) 05:02:41std::randam_shuffleの実装をコピー
0208デフォルトの名無しさん
2006/03/18(土) 07:32:40「空ポインタの表現」な
0209デフォルトの名無しさん
2006/03/18(土) 07:40:41真になるんじゃね?
0210デフォルトの名無しさん
2006/03/18(土) 08:00:41なる。
0211デフォルトの名無しさん
2006/03/18(土) 08:01:17rand() % 10 か・・・。
0212デフォルトの名無しさん
2006/03/18(土) 08:46:15http://www.kouno.jp/home/c_faq/c5.html
0213デフォルトの名無しさん
2006/03/18(土) 10:37:07> 「NULL の内部表現が全ビット 0 でないような機種
Lisp マシンはおおむね NULL の内部表現は全ビット 0 ではないな.
C の処理系が実装されているものがあるかどうかは知らないが...
0214デフォルトの名無しさん
2006/03/18(土) 10:45:43分布に偏りがあるあたりが格好悪い
0215デフォルトの名無しさん
2006/03/18(土) 10:46:180216デフォルトの名無しさん
2006/03/18(土) 11:09:47お前、おもろ過ぎ
0217デフォルトの名無しさん
2006/03/18(土) 11:12:28発言の意図がわからないので解説か正しいコードよろ
0218デフォルトの名無しさん
2006/03/18(土) 11:30:43要素数nのとき可能な並び順はn!
>>203のコードによって生成される並び順はn^n
n^n/n!は整数になるかな? ならないかな?
You see?
0219デフォルトの名無しさん
2006/03/18(土) 11:32:220220デフォルトの名無しさん
2006/03/18(土) 12:27:42お前は何を言っているんだ
0221デフォルトの名無しさん
2006/03/18(土) 12:31:45こんな単純なことも分かんねぇんだ
プログラミングやめたほうがいいよ
0222デフォルトの名無しさん
2006/03/18(土) 13:49:05が正解。
0223デフォルトの名無しさん
2006/03/18(土) 14:34:40おーなるほどー
0224デフォルトの名無しさん
2006/03/18(土) 15:49:38キーボード整数a,b,cを読み、最大値を表示するプログラムを作る」
/* 題名・・ */
#include<stdio.h>
void main (void)
{
----------------
----------------
}
---から---までの間を回答してもらえると助かります。
多分if文を使うと思います。
宜しくお願いします。
0225デフォルトの名無しさん
2006/03/18(土) 15:59:500226デフォルトの名無しさん
2006/03/18(土) 16:03:22printf("1個目の数字を入力\n");scanf("%d", &a);
printf("2個目の数字を入力\n");scanf("%d", &b);
printf("それらを超える数字を入力\n");scanf("%d", &c);
printf("最大値は%dです\n", c);
0227デフォルトの名無しさん
2006/03/18(土) 16:14:41#include <stdio.h>
int main(void){
unsigned int i;
char temp[] = {0x82, 0xD8, 0x82, 0xF1, 0x8E, 0x81, 0x82, 0xF1, 0x82,
0xBE, 0x82, 0xE7, 0x82, 0xA2, 0x82, 0xA2, 0x82, 0xE6, 0x00};
for(i=0; i<=0xFFFFFFFF ; i++ ){
printf("%d%s\n",i,temp);
if( i == 0xFFFFFFFF ) i=0;
}
return 0;
}
0228デフォルトの名無しさん
2006/03/18(土) 16:19:16はvoid func(int (*hoge)[2]);
のシンタックスシュガーである。
0229デフォルトの名無しさん
2006/03/18(土) 16:21:10ぺん氏んだらいいよ
?
0230デフォルトの名無しさん
2006/03/18(土) 16:22:23ワロw
0231デフォルトの名無しさん
2006/03/18(土) 16:26:05このように無限ループするプログラムで
Pauseキーを押すと、ループを止めることが出来ます。
0232http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 18:21:590233デフォルトの名無しさん
2006/03/18(土) 19:10:39自 分 で や れ
0234デフォルトの名無しさん
2006/03/18(土) 19:11:13通常マルチポスト自体を責めはしないが
おまえは本当に鬱陶しい
特注ソフトウェアが必要なら対価を払え乞食め
0235デフォルトの名無しさん
2006/03/18(土) 19:12:210236デフォルトの名無しさん
2006/03/18(土) 21:49:11bool型の変数に格納できる値の上限は32bitまでなのでしょうか?
よく分かりません、助けてください
0237デフォルトの名無しさん
2006/03/18(土) 21:54:49すいませんした屑共
0238デフォルトの名無しさん
2006/03/18(土) 22:01:41main(){
int player,i,r;
for (i=0;i<5;i++){
r = scanf("%d",&player);
while(getchar()!='\n'){}
printf("%d回目",i+1);
if(r){printf("%d\n",player);} //入力が正常の場合
else {printf("入力エラー\n");} //入力が不正な場合
}
return 0;
}
これのr = scanf("%d",&player);とは何を意味してますか?rが何かよく分かりません
0239デフォルトの名無しさん
2006/03/18(土) 22:03:25リファレンス嫁
0240デフォルトの名無しさん
2006/03/18(土) 22:03:52その場は難を逃れても先が思いやられるな
そのサンプル作ったセンセイ・・・
0241デフォルトの名無しさん
2006/03/18(土) 22:05:360以外なら正常 0だとおかしい、つーかんじ
詳しくはscanf 戻り値 でググレカス
0242デフォルトの名無しさん
2006/03/18(土) 22:06:45hoge{for (i=0;i<3;i++){printf("%d",aray[i]);}printf("\n");}
を実行すると毎回、上書きになるのですが、続きから書き出すにはどうすればいいですか
MSDOSで 実行.exe > ホゲ.txt のように書き出してます
0243デフォルトの名無しさん
2006/03/18(土) 22:07:580244デフォルトの名無しさん
2006/03/18(土) 22:09:520245242
2006/03/18(土) 22:17:010246デフォルトの名無しさん
2006/03/18(土) 22:19:110247デフォルトの名無しさん
2006/03/18(土) 22:20:070248242
2006/03/18(土) 22:35:40前の書き出し位置を覚えておかないとだめですよね。どうするんだろ
0249デフォルトの名無しさん
2006/03/18(土) 22:43:39文字が入力されたとき(scanfが停止したとき?)は0,数字が入力されたときは1になるんでしょうか?
0250デフォルトの名無しさん
2006/03/18(土) 22:52:59この例ではね
0251デフォルトの名無しさん
2006/03/18(土) 22:53:16あ、0 か 1 の他に -1 もある
0252デフォルトの名無しさん
2006/03/18(土) 22:53:270253デフォルトの名無しさん
2006/03/18(土) 22:54:18こんなとこで聞いても答えは返ってきません。
自分で調べることを覚えなさい!!
0254デフォルトの名無しさん
2006/03/18(土) 22:56:29a = アナル
アナルを開けぇ(゚∀゚ )
0255デフォルトの名無しさん
2006/03/18(土) 22:57:07scanfなんて使うのやめましょう
0256デフォルトの名無しさん
2006/03/18(土) 23:02:50おまえ本当に師に恵まれないな・・・ (255 とか
規格票くらい買えって命令してくれる人を探す方が修行に先立って必要っぽいぞ
0257デフォルトの名無しさん
2006/03/18(土) 23:03:220258デフォルトの名無しさん
2006/03/18(土) 23:05:37rand() % (10 - i) + i
にしなくても、純粋にバラバラにしたいんだったら
rand() * 10
でもいいんじゃないの?
0259デフォルトの名無しさん
2006/03/18(土) 23:07:35それを言うなら arry[i] = rand(); だろ
0261デフォルトの名無しさん
2006/03/18(土) 23:10:23>>249
おまえ本当に師に恵まれないな・・・ (255 とか
規格票くらい買えって命令してくれる人を探す方が修行に先立って必要っぽいぞ
0262デフォルトの名無しさん
2006/03/18(土) 23:11:33いや、バラバラに「並べ替えたい」んだってさ
0263デフォルトの名無しさん
2006/03/18(土) 23:20:220264デフォルトの名無しさん
2006/03/18(土) 23:22:460265デフォルトの名無しさん
2006/03/18(土) 23:25:27どういうことですか?
1a
とか
(スペース)1
とかって入力しても
入力エラーにならないからダメなんですか?
0266デフォルトの名無しさん
2006/03/18(土) 23:28:04if(r)
↑
これ
問題点は複数あり、どこから突っ込むか迷うほど
少なくとも、そのうちの1つに、あなたは気づいているわけだが
0267デフォルトの名無しさん
2006/03/18(土) 23:28:150268デフォルトの名無しさん
2006/03/18(土) 23:37:40%*c って必要?
0269デフォルトの名無しさん
2006/03/18(土) 23:39:45だからよぉ>>218でいった通りそれじゃあ均等にはなんないんだってばさ。
(rand()が均等であることは前提な。)
要素数3でくらいで全パターン書き出してみろや。
要素数nとして常にrand()%nで交換すると、n回交換するとnのn乗のパターンが等確率で出るのは分かるか?
しかし全パターン数はn!しかない。
そもそもnのn乗/n!は整数にならん。
ということは、いずれかのパターンがほかのパターンよりも多く出現するってこった。
整数になるからって均等とは限らんが、少なくとも均等であるためには整数であることが必要条件。
0270デフォルトの名無しさん
2006/03/18(土) 23:52:24if文で、
if(a>b)
printf("最大値=%d\n",a);
if else(a>c)
printf("最大値=%d\n",a);
if else(b>a)
printf("最大値=%d\n",b);
if else(b>c)
printf("最大値=%d\n",b);
if else(c>a)
printf("最大値=%d\n",c);
else printf("最大値=%d\n",c);
と入力しました.
a=6 b=5 c=4と入力したはずなのに「最大値=5」表示されてしまいます。
ifを使って解けるといっていますが、これを使って解けないでしょうか。
ifガ使えない場合は、なるべく簡単な方法にてご教授下さい。
0271デフォルトの名無しさん
2006/03/19(日) 00:01:40if else →else if
0272デフォルトの名無しさん
2006/03/19(日) 00:03:44マルチの上に嘘つきとは、救いようがないな。
0273デフォルトの名無しさん
2006/03/19(日) 00:03:560274デフォルトの名無しさん
2006/03/19(日) 01:03:250275238
2006/03/19(日) 01:16:35また分からないところが出てきたんですが、
while(getchar()!='\n'){}
の意味は、文字が入力されたときscanfが止まるからバッファを空にするため?ですか?
0276デフォルトの名無しさん
2006/03/19(日) 01:39:46そのように見えますね。(stdinを空にしているのかな。
でもfflushを使わない事や、getcharのチェックでEOFを使わないのはなぜだか良くわからない。
0277デフォルトの名無しさん
2006/03/19(日) 01:42:410278デフォルトの名無しさん
2006/03/19(日) 01:43:430279デフォルトの名無しさん
2006/03/19(日) 06:25:060280デフォルトの名無しさん
2006/03/19(日) 06:35:170281279
2006/03/19(日) 08:54:12馬鹿にしよってからに
0282デフォルトの名無しさん
2006/03/19(日) 09:29:02280 はどう見てもマジレス
0283279
2006/03/19(日) 09:32:420284デフォルトの名無しさん
2006/03/19(日) 09:37:24例えば __int64 などとなっていたりする
0285デフォルトの名無しさん
2006/03/19(日) 09:52:120286デフォルトの名無しさん
2006/03/19(日) 09:57:560287デフォルトの名無しさん
2006/03/19(日) 10:08:51struct word {
int b0:1;
...
int b511:1;
};
0289279
2006/03/19(日) 10:28:540290デフォルトの名無しさん
2006/03/19(日) 11:02:250291デフォルトの名無しさん
2006/03/19(日) 11:27:560292デフォルトの名無しさん
2006/03/19(日) 11:30:58え? '.' なんてC言語にあったっけ?
0293デフォルトの名無しさん
2006/03/19(日) 18:35:520294デフォルトの名無しさん
2006/03/19(日) 18:41:33何が言いたいのか判らないので詳しく。
#例えばストリーム系なんていとも容易くエラーを返すわけだが。
0295デフォルトの名無しさん
2006/03/19(日) 19:02:10いくらでもある
0296デフォルトの名無しさん
2006/03/19(日) 21:07:55偽?
0297デフォルトの名無しさん
2006/03/19(日) 21:18:03していないんですかごほごほ。
0298デフォルトの名無しさん
2006/03/19(日) 22:20:220299デフォルトの名無しさん
2006/03/19(日) 22:50:01intはinteger=整数、charはcharacter=文字という感じで
0300デフォルトの名無しさん
2006/03/19(日) 23:18:04サイトは知らないけど
std=standard
io=input/output
lib=library
str=string
0301デフォルトの名無しさん
2006/03/19(日) 23:21:19つ[google]
つ[2ch]
つ[http://pc8.2ch.net/test/read.cgi/tech/1056173956/]
0302デフォルトの名無しさん
2006/03/19(日) 23:25:43俺くらいオサーンになると
機械語→アセンブリ→PL/M→C
0303デフォルトの名無しさん
2006/03/19(日) 23:30:370304デフォルトの名無しさん
2006/03/19(日) 23:42:43HP逆ポーランド→4K BASIC→機械語→自作ASM→大型機ASM→大型機C→組み込みC
いまハード屋
0305デフォルトの名無しさん
2006/03/20(月) 00:27:11BASIC→機械語→FORTH→C→Ruby→C++
元は趣味で今プログラマ
0306デフォルトの名無しさん
2006/03/20(月) 00:27:53char str[]="あいう";で「い」を出力するためにはどうすればいいですか?
0307デフォルトの名無しさん
2006/03/20(月) 00:31:53> 機械語→アセンブリ→PL/M→C
PL/M 使った奴は負け組み
0308デフォルトの名無しさん
2006/03/20(月) 00:34:06一般的な方法は無い
0309デフォルトの名無しさん
2006/03/20(月) 00:37:47どう記述すればいいですか
0310デフォルトの名無しさん
2006/03/20(月) 00:40:36スレ違い
0312デフォルトの名無しさん
2006/03/20(月) 00:48:13�d
0313デフォルトの名無しさん
2006/03/20(月) 01:01:27Win32API スレ池
http://pc8.2ch.net/test/read.cgi/tech/1141392216/
0314デフォルトの名無しさん
2006/03/20(月) 01:10:45まぁ
printf("%c%c",str[2],str[3]);
とでもしておけ
0315デフォルトの名無しさん
2006/03/20(月) 01:12:15するな
0316デフォルトの名無しさん
2006/03/20(月) 01:22:37まぁ
char *str[] = { "あ", "い", "う" };
printf("%s", str[1]);
とでもしておけ
0317デフォルトの名無しさん
2006/03/20(月) 01:23:31え?これマズい?
0318デフォルトの名無しさん
2006/03/20(月) 01:27:10おいおい、ネタじゃなかったのかよ
0319デフォルトの名無しさん
2006/03/20(月) 01:29:01騙されたようだ
0320デフォルトの名無しさん
2006/03/20(月) 01:31:05いやぁやってみたら問題なかったからOKなのかと思ったぜ( 'A`)
0321デフォルトの名無しさん
2006/03/20(月) 01:33:050322デフォルトの名無しさん
2006/03/20(月) 01:36:27strをコピーして先頭アドレスを任意のところまで移動して出力したい文字の後ろに\0入れて
%sで出力とか?
てか・・・・・・素直にwchar_t使った方がいい希ガス
0323デフォルトの名無しさん
2006/03/20(月) 01:47:360324デフォルトの名無しさん
2006/03/20(月) 01:52:340325デフォルトの名無しさん
2006/03/20(月) 01:56:12知らんかった
0326デフォルトの名無しさん
2006/03/20(月) 01:57:010327デフォルトの名無しさん
2006/03/20(月) 01:57:150328デフォルトの名無しさん
2006/03/20(月) 01:59:41俺の脳みそでは常識になってた
俺ダメぽorz
0329デフォルトの名無しさん
2006/03/20(月) 02:03:02という風に考えて問題ないかもしれんが
EUCとかだとそうもいかんからな
0330デフォルトの名無しさん
2006/03/20(月) 02:22:28こちとら日本じゃ
いまこそ「ひまわり」「なでしこ」の出番ですよ!
0331デフォルトの名無しさん
2006/03/20(月) 02:32:52調べてみたらeMVC3++というのがmicrosoftのフリーであるらしいんですが、
そもそも可能なのかどうかわかりません・・・
0332デフォルトの名無しさん
2006/03/20(月) 04:24:100333デフォルトの名無しさん
2006/03/20(月) 04:32:200334デフォルトの名無しさん
2006/03/20(月) 05:17:190335デフォルトの名無しさん
2006/03/20(月) 08:10:42少なくともここではスレ違い。
どこかほか行ってちょうだい。
0336デフォルトの名無しさん
2006/03/20(月) 11:52:24grepのように検索して、当たった行を表示するのを作ってるのだけど、
c = getc(fp)で一文字ずつ取り出した文字を配列にいれていったのだと
要素数が大きくなるからどうしようかなと....
0337デフォルトの名無しさん
2006/03/20(月) 11:55:46リテラルを実行時に動的に作るとかありえない
0338デフォルトの名無しさん
2006/03/20(月) 12:07:53scanf("%d", &num);
if(num == Q or q)
{
exit();
}
0339デフォルトの名無しさん
2006/03/20(月) 12:11:16while(scanf("%c", &c) != 1 || (c !='q' && c != 'Q'))
;
0340デフォルトの名無しさん
2006/03/20(月) 12:16:520341デフォルトの名無しさん
2006/03/20(月) 12:24:200342デフォルトの名無しさん
2006/03/20(月) 12:33:54>>340
ああ、そうだよ、この糞ガキがっ!
0343デフォルトの名無しさん
2006/03/20(月) 12:35:380344デフォルトの名無しさん
2006/03/20(月) 14:46:180345デフォルトの名無しさん
2006/03/20(月) 15:43:580346デフォルトの名無しさん
2006/03/20(月) 15:48:49エキスパートCプログラミングだったか何かでそんなのも可能だというのを見たが
なんかよくわからんかったんで、よかったら説明キボンヌ
0347デフォルトの名無しさん
2006/03/20(月) 15:55:51式の中で関数名など関数型のオブジェクトは関数へのポインタへ変換される。
ポインタだから*演算子で参照はがしができる。
関数へのポインタを参照はがしすると、関数型になる。
関数型は関数へのポインタへ変換される。
・・・
この繰り返し。
そして関数呼び出し演算子は関数へのポインタに対して作用するようになっている。
0348デフォルトの名無しさん
2006/03/20(月) 22:34:03あぁそういうことか
確かにそうなるわなw
0349デフォルトの名無しさん
2006/03/20(月) 22:42:54デリファレンスと呼びたいです。
0350デフォルトの名無しさん
2006/03/20(月) 23:37:42アセンブラ使いにはインダイレクトが通じやすいけどな
0351デフォルトの名無しさん
2006/03/20(月) 23:39:510352デフォルトの名無しさん
2006/03/21(火) 01:05:380353デフォルトの名無しさん
2006/03/21(火) 01:07:23三菱重工とかでつくってたっけ?
0354デフォルトの名無しさん
2006/03/21(火) 04:02:39if((fp=fopen("test.txt","r"))==NULL){
以下略
で、ifの条件式が正しくないときでもfpとtest.txtは関連付けされているんですか?
0355デフォルトの名無しさん
2006/03/21(火) 04:08:15条件式が正しくないときって、たとえばどんなことを言っているんだ?
0356デフォルトの名無しさん
2006/03/21(火) 04:10:45fopenはファイルを開けなければNULLを返す
その場合もちろんfcloseなどでファイルを閉じようとする必要はない
0357デフォルトの名無しさん
2006/03/21(火) 04:17:36え? なに? 元の質問ってそういう意味なの? だとしたら日本語ヘタだなあ。
0358デフォルトの名無しさん
2006/03/21(火) 04:46:150359デフォルトの名無しさん
2006/03/21(火) 04:47:500360デフォルトの名無しさん
2006/03/21(火) 04:52:040361デフォルトの名無しさん
2006/03/21(火) 04:53:560362デフォルトの名無しさん
2006/03/21(火) 05:02:29ファイルがオープン出来なかった場合などです
>>356
ちょっと違うような…
>>354の続きは
printf("ファイルオープンエラー");
exit(1);
}
while((c=fgetc(fp))!=EOF){
printf("%c",c);
}
fclose(fp);
return 0;
}
です。ただし char c;です。
ifの中の条件式が正しくないのにifの中のfpどtest.txtは関連付けられてるのは変な気がしたので…
0363デフォルトの名無しさん
2006/03/21(火) 05:13:38ああ、if文の真偽を間違えて考えてるのか
(fp=fopen("test.txt","r"))==NULL
これはfopenが失敗すると、fpにNULLが代入されて、真と判定される
そんでエラー文の出力してexitというわけ
if文が偽と判定されるのは、fopenが成功してるときだ
0364とか言いつつ俺も初心者
2006/03/21(火) 05:32:38ifで評価されるのは「条件式」であって、その式の中にはいわゆる判定文以外の「演算」も含めることが出来る
例) i=3の場合
if(i==3) printf("%d", i);
3 が出力
if((i+1)==4) printf("%d", i);
3 が出力
if((++i)==4) printf("%d", i);
4 が出力
※ ++iの結果は4となり、条件が正しいので、printfによって i=4 が出力。
同様に、
fp=fopen("text.txt","r")
が成功すれば、textは正しく開かれる → NULLを返さないのでif文は偽 → exit(1) は実行されず、while((c= ・・・以下の処理に移る
0365デフォルトの名無しさん
2006/03/21(火) 05:36:260366デフォルトの名無しさん
2006/03/21(火) 05:39:120367デフォルトの名無しさん
2006/03/21(火) 05:43:11ご丁寧な回答ありがとうございましたm(_ _)m
0368デフォルトの名無しさん
2006/03/21(火) 09:06:11兵器と火力プラントとエアコンしか作ってません。
>>354
今度から↓で訊くように。
はきだめC/C++下級者の質問箱
http://pc8.2ch.net/test/read.cgi/tech/1124256027/l50
0369デフォルトの名無しさん
2006/03/21(火) 17:18:06DOSでHELLO!!でOK?
マルバツゲームができたらOK?
それ以上?
0370デフォルトの名無しさん
2006/03/21(火) 17:22:07一応作れるぜぇいって言えると思うよ
文書をビット演算や文字置き換え使って暗号化してみたり簡単なDosゲームを作ってみたり
エロ画像生成プログラム作ってみたり
0371デフォルトの名無しさん
2006/03/21(火) 17:23:12> エロ画像生成プログラム作ってみたり
うpうp!
0372デフォルトの名無しさん
2006/03/21(火) 17:23:30つまりまだ全然できてないですね・・
0373デフォルトの名無しさん
2006/03/21(火) 18:01:410374デフォルトの名無しさん
2006/03/21(火) 18:01:520375デフォルトの名無しさん
2006/03/21(火) 18:02:45printf("(。人。)");
0376デフォルトの名無しさん
2006/03/21(火) 18:05:250377デフォルトの名無しさん
2006/03/21(火) 18:07:220378デフォルトの名無しさん
2006/03/21(火) 18:12:360379デフォルトの名無しさん
2006/03/21(火) 22:28:40なんかサイトによっては上手くいかないんで、そういう場所でもOKなやつ作ってけろ。
(IEのヘッダとか偽装するといいのかなぁ…。)
0380デフォルトの名無しさん
2006/03/21(火) 22:30:36氏ねばいいのに
0381デフォルトの名無しさん
2006/03/21(火) 22:37:270382デフォルトの名無しさん
2006/03/21(火) 23:00:06エロ画像の生成ならこれでできます。
#include <stdio.h>
int main()
{
printf("エロ画像\n");
return 0;
}
0383デフォルトの名無しさん
2006/03/21(火) 23:03:100384デフォルトの名無しさん
2006/03/21(火) 23:13:52void PrintOmanko(void) //豆付きおマンコ生成関数
{
puts("(i)");
puts("挿入しますか?");
}
0385デフォルトの名無しさん
2006/03/22(水) 00:32:59Apache1.3のmain(){}はどこにあるとですか!?
みつかりません!
0386デフォルトの名無しさん
2006/03/22(水) 01:50:310387デフォルトの名無しさん
2006/03/22(水) 02:38:56grep で探せばいい。
0388デフォルトの名無しさん
2006/03/22(水) 04:01:54たけえよww
0389デフォルトの名無しさん
2006/03/23(木) 07:03:51#include <stdlib.h>
#include <string.h>
main(){
FILE *fp; //入力ファイルのファイルポインタ
char filename[256]; //入力ファイル名
FILE *outfp; //出力ファイルのファイルポインタ
char outfilename[256]; //出力ファイル名
char c;
//ファイル名取得
printf("ファイル名を入力してください > ");
scanf("%s",filename);
//入力ファイルオープン
if((fp = fopen(filename,"r")) == NULL){
printf("ファイルオープンエラー\n");
exit(1);
}
//出力ファイルオープン
strcpy(outfilename,filename);
strcat(outfilename,"_");
if((outfp = fopen(outfilename,"w")) == NULL){
printf("ファイルオープンエラー\n");
exit(1);
}
0390デフォルトの名無しさん
2006/03/23(木) 07:04:40//ファイルの内容をコピー
while((c = fgetc(fp)) != EOF){
fputc(c,outfp);
}
fclose(fp);
fclose(outfp);
return 0;
}
これを実行して
ファイル名を入力してください > P162.c として、同じフォルダにP162.c_が作成されたのですが、P162.c_が開けません
ちゃんと中身が一緒になってることを確認したいんですが、どうやったらP162.c_は見れますか?
スレ違いなら、適したスレを教えてください
よろしくお願いします
0391デフォルトの名無しさん
2006/03/23(木) 07:11:400392デフォルトの名無しさん
2006/03/23(木) 07:23:03バカな質問ですみませんでした
0393デフォルトの名無しさん
2006/03/23(木) 07:44:09どんな原因が考えられますか
0394デフォルトの名無しさん
2006/03/23(木) 07:47:460395デフォルトの名無しさん
2006/03/23(木) 07:57:300396デフォルトの名無しさん
2006/03/23(木) 08:02:110397デフォルトの名無しさん
2006/03/23(木) 08:09:51レジに出したら隣に居たバカっぽい女子高生に
小声でこの人童貞?とかって言われました
対処法を教えてください
0398デフォルトの名無しさん
2006/03/23(木) 08:55:550399デフォルトの名無しさん
2006/03/23(木) 09:21:520400デフォルトの名無しさん
2006/03/23(木) 09:25:55393はどうみてもリンカエラーだろ。
0401デフォルトの名無しさん
2006/03/23(木) 10:12:39>397はどう見てもネタだろ。
0402デフォルトの名無しさん
2006/03/23(木) 10:12:47拡張子が cpp だったらボールギャグに蝋燭責めだぞ
0403デフォルトの名無しさん
2006/03/23(木) 10:39:08ばかだなあ、それ逆ナンだよ
せっかく誘ってきてるのにもったいねえ・・・
0404デフォルトの名無しさん
2006/03/23(木) 12:33:12.cじゃなく.cppで実行しても
なにか不都合とかありますか?(C言語で書いてるけどって意味です
0405デフォルトの名無しさん
2006/03/23(木) 12:39:530406デフォルトの名無しさん
2006/03/23(木) 14:30:52ヘッダにassert書いても良いもんなの?
定数を使うところ全部にassert書いておくの嫌じゃないですか。
どこにもassert書かずにコメントに逆らったら知らん、ていう態度でおk?
/* some header file */
const int SOME_VALUE = 1; /* assert(SOME_VALUE >= -100 && SOME_VALUE <= 100); */
0407デフォルトの名無しさん
2006/03/23(木) 14:34:000408デフォルトの名無しさん
2006/03/23(木) 14:40:570409デフォルトの名無しさん
2006/03/23(木) 14:48:09引数の型を間違えたり、引数が少なかったりしても警告すら出ません。
書き方間違っていませんか?
typedef int (CALLBACK * callback_proc)(int, int);
int
callback(
int a
// ☆ここを間違えていても、コンパイルが通ってしまう
)
{
}
void
hogehoge(callback_proc callback)
{
callback(10, 10);
}
main()
{
hogehoge(callback);
}
0410デフォルトの名無しさん
2006/03/23(木) 15:37:39警告周りのコンパイルオプション見直してみたら
0411デフォルトの名無しさん
2006/03/23(木) 15:59:12C++にしたら
0412デフォルトの名無しさん
2006/03/23(木) 16:18:06どういうことですか?
freadが実行された回数ですか?
0413デフォルトの名無しさん
2006/03/23(木) 16:21:440414412
2006/03/23(木) 16:25:050415デフォルトの名無しさん
2006/03/23(木) 16:36:26#include<stdio.h>
struct k{
int a=0;
}A,B;
int main(){
B.a=900;
A=B;
printf("%d",A.a);
B.a=77;
printf("%d",A.a);
}
とした場合
2回目のprintfは77?
それとも構造体の代入文はJavaのクラスと違ってアドレス渡しではなくコピーそのもの?
0416デフォルトの名無しさん
2006/03/23(木) 16:38:250417デフォルトの名無しさん
2006/03/23(木) 16:40:330418デフォルトの名無しさん
2006/03/23(木) 17:22:33構造体のアドレスについての質問なのですが
#include<stdio.h>
struct k{
int a=0;
char *c;
int b=0;
}A;
int main(){
int adder1=(int)&(A.b);
int adder2=0;
struct k *p;
A.c=(char *)malloc(40000);
adder2=(int)&(A.b);
if(adder2==adder1){
printf("hoge");
}
(*p)=A; /**この文はOK?事前にmalloc必要?**/
}
hogeは出力されますか?
また構造体のポインタを宣言した後にmallocする必要はありますか?↓
0419デフォルトの名無しさん
2006/03/23(木) 17:27:03Aを丸ごとコピーしてる。
0420419
2006/03/23(木) 17:30:53昔は構造体はコピーしてくれなかったが
いつの日かできるようになった。実態はmemcpyが動いてるようなもん。
0421デフォルトの名無しさん
2006/03/23(木) 17:37:55なるほど、ありがとうございます。
もう一つ確認で聞きたいのですが
構造体の中に構造体がある場合でも、それらもDeepコピーされるのでしょうか?
0422393
2006/03/23(木) 17:38:38extern void ww();
・a.c
#include "a.h"
void ww(){}
・・実行.c
#include "a.h"
ww(){}
としています。リンカというのはどこをどうしたらいいですか
0423デフォルトの名無しさん
2006/03/23(木) 17:39:27いつの日か、というか、昔々の K&R の頃には既に出来ていたのだが、
PC用コンパイラには中々実装されなかった、ということだ。
0424デフォルトの名無しさん
2006/03/23(木) 17:41:53構造体の代入はC言語の場合はなにも考えずにmemcpy()してるのと同じだ。つまり
a と b の型が同じだとして a = b; は memcpy(&a, &b, sizeof(a)); と同じと
いうことだ。
あとは自分で考えろ。
0425デフォルトの名無しさん
2006/03/23(木) 17:46:23ポインタ型の変数だって、ポインタ型の値にすぎないのだから
0427デフォルトの名無しさん
2006/03/23(木) 17:49:57STRICTとはなんだ?
0428デフォルトの名無しさん
2006/03/23(木) 17:56:51(*p)=A;
多分エラーで落ちる
malloc必要
0429409
2006/03/23(木) 17:57:09http://www.microsoft.com/japan/developer/library/vccore/_core_using_strict_to_improve_type_checking.htm
ちなみに環境はVC6です。
0430デフォルトの名無しさん
2006/03/23(木) 18:36:080431デフォルトの名無しさん
2006/03/23(木) 18:42:57STRICTはWindowsプログラミングのお話で、
C言語そのものとはじぇんじぇん関係ありません。
0432デフォルトの名無しさん
2006/03/23(木) 18:50:59kernel32.lib user32.lib gdi32.lib
この辺、リンクしてるか?
0433393
2006/03/23(木) 18:53:22・a.c に #include "a.h" void ww(){}
・・実行.c に#include "a.h" int main(void){ww(){}}
a.cはどこで取込むのだろ。。extern使用例を見ると
取込みかたは間違ってないと思うのですが、未解決エラーになります
0434デフォルトの名無しさん
2006/03/23(木) 18:57:09Thx
動いた、そういう基本的なDLLは自動でくみこんでくれないんだね・・・><
0435デフォルトの名無しさん
2006/03/23(木) 19:04:57コンパイラ何よ。
0436デフォルトの名無しさん
2006/03/23(木) 19:06:100437デフォルトの名無しさん
2006/03/23(木) 19:06:39君もコンパイラ何だ
0438デフォルトの名無しさん
2006/03/23(木) 19:10:3620005です。
まぁ無料だし我慢我慢。
0440デフォルトの名無しさん
2006/03/23(木) 19:14:24つけない限りリンクするんじゃないのかなあ・・・
0441デフォルトの名無しさん
2006/03/23(木) 19:16:14とりあえず、個々にコンパイルしてできたオブジェクトをリンカで全部指定して実行ファイルを作るか
コンパイラとリンカを呼び出すコマンドに全ソースファイルを指定してやればいい
0442デフォルトの名無しさん
2006/03/23(木) 19:17:46bcc なら、
bcc 実行.c a.c
でいけるんじゃ?
つかコンパイラやリンカの話はスレ違いだなあ・・・
0443393
2006/03/23(木) 20:02:47としました。
・a.h に extern ww(int);
・a.c に ww(n){}
・・実行.c にww(5){}
a.c の n が未定義エラーとなりましたので
a.h に、int n;を加えたのですが、やはり未定義エラーになります
0444デフォルトの名無しさん
2006/03/23(木) 20:07:18n???
どこでn使いたいの?
ファイル間で同じ変数使えるようにしたいんなら
ヘッダファイルでextern宣言しろ
定義はどこかの.cファイルでする
0445デフォルトの名無しさん
2006/03/23(木) 20:08:180446393
2006/03/23(木) 20:24:44a.cはint n;ww(n){}
実行.cはmain(void){ww(5)}
となってますが、nが未定義エラーになります
0447デフォルトの名無しさん
2006/03/23(木) 21:00:120448デフォルトの名無しさん
2006/03/23(木) 22:01:03socketを使ったプログラムで、サーバー側の実験をしてます。
接続されるのを待って、接続されるとスレッドを起動して、その中で受信しています。
ただ、ケーブルが抜かれる等、相手側がcloseせずに接続が切断されると、それをうまく検出できません。
どのようにするべきでしょうか?
0449デフォルトの名無しさん
2006/03/23(木) 22:02:19これの手順4を行えばよい。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0450デフォルトの名無しさん
2006/03/23(木) 23:36:09スレ違い
0451デフォルトの名無しさん
2006/03/23(木) 23:50:16スレ違いでしたか、すいません。socketってANSI Cじゃなかったっけ?
0452デフォルトの名無しさん
2006/03/23(木) 23:59:01バカじゃねえの?
0453デフォルトの名無しさん
2006/03/24(金) 00:06:34winsockじゃねえの?
0454デフォルトの名無しさん
2006/03/24(金) 00:12:50ここはposixすら許さない万年春厨が仕切ってるから
おとなしくネットワークスレ逝っとけ。
0455デフォルトの名無しさん
2006/03/24(金) 00:36:13g_
ってなんなのさ!
0456デフォルトの名無しさん
2006/03/24(金) 00:37:360457デフォルトの名無しさん
2006/03/24(金) 00:39:060458デフォルトの名無しさん
2006/03/24(金) 00:48:480459デフォルトの名無しさん
2006/03/24(金) 00:51:120460デフォルトの名無しさん
2006/03/24(金) 00:51:240461デフォルトの名無しさん
2006/03/24(金) 01:01:380462448
2006/03/24(金) 01:09:20>>453
まぁ〜、確かにwinsockなんですけど、socket、bind、send、recvあたりはある程度互換があるから、
駄目な部分は自分で調べりゃいいかなと思ってました。
>>454
ありがと。ネットワークスレ逝ってくる
0463デフォルトの名無しさん
2006/03/24(金) 17:15:18問題: A君55点 B君77点 C君65点 だったとします。
まずこれらを入力させ、次に並び替えをし、再度出力するというプログラムです。
入力させる際はfor文で回し、並び替えの際はバブルソートを使い、表示
させる際はfor文で回して出力させるというものです。
よろしくお願いします。
0464デフォルトの名無しさん
2006/03/24(金) 17:18:290465デフォルトの名無しさん
2006/03/24(金) 17:19:11ちょwwwそれ質問じゃねえwww
C/C++の宿題を片付けます 62代目
http://pc8.2ch.net/test/read.cgi/tech/1141363718/
0466デフォルトの名無しさん
2006/03/24(金) 17:39:110467デフォルトの名無しさん
2006/03/24(金) 17:49:230468デフォルトの名無しさん
2006/03/24(金) 19:09:53要素数が1個だろうが100個だろうが面倒くさいからそのまま qsort() に渡す。
0469デフォルトの名無しさん
2006/03/24(金) 23:07:38文字列と文字列の間にある文字列の抽出方法を教えてください
お願いしますね
0470デフォルトの名無しさん
2006/03/24(金) 23:09:01日本語で
0471デフォルトの名無しさん
2006/03/24(金) 23:14:16意味が分かりませんか?
AAA○○○BBB
という文字列があったとして○○○の文字列を取り出したいのです。
○○○は決まった文字列、文字数ではありません。
0472デフォルトの名無しさん
2006/03/24(金) 23:18:20まずAAAを検索して、それを元にAAAの直後の文字へのポインタ(p)を記憶する。
次にBBBを検索して、それを元にBBBの直前の文字へのポインタ(q)を記憶する。
pからp - q文字分を取り出せば出来上がり。
元の文字列を破壊してよければ、BBBを検索して見つかるBBBの先頭部分に'\0'を代入してしまうという方法もある。
0473デフォルトの名無しさん
2006/03/24(金) 23:18:22取り出したいとは?
0474デフォルトの名無しさん
2006/03/24(金) 23:20:120475デフォルトの名無しさん
2006/03/24(金) 23:22:210476デフォルトの名無しさん
2006/03/24(金) 23:24:16int a;
int b;
} ab;
struct AB *pab;
int *a, *b;
pab = &ab;
a = &(ab.a);
b = &(ab.b);
printf("%d %d %d", (int)a - (int)pab, (int)b - (int)pab - sizeof(int), (int)b - (int)a - sizeof(int));
この時出力が0 0 0になることは保障された動作ですか?
つまり構造体のアドレスとメンバのアドレスの関係を知りたい
(構造体のアドレスから上のメンバから順に詰められてるのは絶対かということ)
0477デフォルトの名無しさん
2006/03/24(金) 23:25:55素晴らしい
0478デフォルトの名無しさん
2006/03/24(金) 23:27:12保障されていません。
各メンバの間にパディングで隙間が開いている場合があります。
ANSI Cにはoffsetofマクロがあるのでこれを使うといいでしょう。
0480デフォルトの名無しさん
2006/03/24(金) 23:52:04(int)a - (int)pab
が0になるのは絶対ですか?
0481デフォルトの名無しさん
2006/03/25(土) 00:16:45言語は何でも良く、とりあえず電卓的なものを作ってみようかと
0482デフォルトの名無しさん
2006/03/25(土) 00:19:54Cなんてウンコ
0483デフォルトの名無しさん
2006/03/25(土) 01:05:480484デフォルトの名無しさん
2006/03/25(土) 01:36:240485デフォルトの名無しさん
2006/03/25(土) 01:38:070486デフォルトの名無しさん
2006/03/25(土) 01:51:580487デフォルトの名無しさん
2006/03/25(土) 02:42:41どもです。VisualC#ExpressとDelphi落としました。
色々いじって見ます
0488デフォルトの名無しさん
2006/03/25(土) 05:03:300489デフォルトの名無しさん
2006/03/25(土) 09:45:430490デフォルトの名無しさん
2006/03/25(土) 13:17:36int c;
・・・
if(!c){
・・・
}
!cっていうのは !(0<c)でしょうか?
それとも !(0!=c)でしょうか?
0491デフォルトの名無しさん
2006/03/25(土) 13:23:080492デフォルトの名無しさん
2006/03/25(土) 13:33:460493デフォルトの名無しさん
2006/03/25(土) 13:59:100494デフォルトの名無しさん
2006/03/25(土) 14:17:560495デフォルトの名無しさん
2006/03/25(土) 14:21:36Cが0だと!で反転するから1 = True
それ以外は1以上は1として!で反転するから0 = False
0496デフォルトの名無しさん
2006/03/25(土) 14:21:540497デフォルトの名無しさん
2006/03/25(土) 14:41:040498デフォルトの名無しさん
2006/03/25(土) 17:00:15スレッドが費やした CPU 時間を得るにはどうすればよいですか?
sys/times.h の times() だとプロセス時間になるので困ってます.
0499デフォルトの名無しさん
2006/03/25(土) 17:14:27>>1によれば
>標準Cではできない事の質問(中略)は専門の別スレッドがあるのでそこへ
↓だと思うけど
UNIXプログラミング質問すれ Part7
http://pc8.2ch.net/test/read.cgi/tech/1127373405/
0500デフォルトの名無しさん
2006/03/25(土) 17:20:070502デフォルトの名無しさん
2006/03/25(土) 17:24:400503デフォルトの名無しさん
2006/03/25(土) 17:28:370504デフォルトの名無しさん
2006/03/25(土) 17:38:11そもそも(ry
0505デフォルトの名無しさん
2006/03/25(土) 18:20:49適当ならいいんじゃないか?
いい加減だと困るが。
0506デフォルトの名無しさん
2006/03/25(土) 19:21:37しかも意味がほぼ正反対だからなお困る
0507デフォルトの名無しさん
2006/03/25(土) 20:54:330508393
2006/03/25(土) 20:59:00のとき、未定義エラーになる原因は何が考えられますか
条件が後出しだが。ごめ
0509デフォルトの名無しさん
2006/03/25(土) 21:04:020510デフォルトの名無しさん
2006/03/25(土) 21:05:230511デフォルトの名無しさん
2006/03/26(日) 09:09:57strtokだと完全一致しないので困っています。
0512デフォルトの名無しさん
2006/03/26(日) 09:10:40strstr
0513デフォルトの名無しさん
2006/03/26(日) 09:11:36超速レスきめぇwwwwwwwwwwwww
0514デフォルトの名無しさん
2006/03/26(日) 09:15:00いや…だから区切りたいんですが?
0515デフォルトの名無しさん
2006/03/26(日) 09:16:120516デフォルトの名無しさん
2006/03/26(日) 09:19:47strstr
0517デフォルトの名無しさん
2006/03/26(日) 09:22:270518デフォルトの名無しさん
2006/03/26(日) 09:31:270519511
2006/03/26(日) 09:37:04このスレの人達のレベルの低さを垣間見た気がして、何かやるせないです。
ではでは
0520デフォルトの名無しさん
2006/03/26(日) 09:41:29他人に自分がやりたいことを伝えることもできないのに、
コンピュータに伝えることができるのだろうか。
「区切る=strtok()みたいに元の文字列をぶった切る」ならこれでいいだろ。
char * src = "abcdefg";
char * key = "cde";
char * p = strstr(src, key);
p[strlen(key)] = '\0';
0521デフォルトの名無しさん
2006/03/26(日) 09:41:48お前のレベルの低さにみんな飽きれてるんだが?
もしかしてそれすら分からなかったのか^^
0523デフォルトの名無しさん
2006/03/26(日) 09:45:240524デフォルトの名無しさん
2006/03/26(日) 09:45:45ロハ
0525デフォルトの名無しさん
2006/03/26(日) 09:47:530526511
2006/03/26(日) 09:48:09実のところお前らを試したんだよ。
〜答え合わせ〜
>>511,513,514,515,517,518,519=俺
これがC厨共のレベルかぁ…ここまでレベルが低いとホント、笑いすらこみ上げてくるね!
まぁC厨なんて時代遅れの勘違い野郎共が使う言語だし、しょうがないよね!
Javaスレ行ってきま〜す^^
0527デフォルトの名無しさん
2006/03/26(日) 09:50:09スレ違い
0529512
2006/03/26(日) 09:53:220531デフォルトの名無しさん
2006/03/26(日) 09:55:210532511
2006/03/26(日) 10:01:460533521
2006/03/26(日) 10:03:560534デフォルトの名無しさん
2006/03/26(日) 12:18:36解けない…
問題解くコツとかあったらだれかおしえれ
0535デフォルトの名無しさん
2006/03/26(日) 12:19:410536デフォルトの名無しさん
2006/03/26(日) 12:20:080537デフォルトの名無しさん
2006/03/26(日) 12:22:43出題者は意外に身近にいる ・・・「コツ」なんてそのくらい
実力以上の試験に通ってしまうとその後に地獄が待ってるぞ
0538デフォルトの名無しさん
2006/03/26(日) 12:26:41Cの問題って大体ポインタ絡みじゃなかったっけ?
まあ、なんだ、ポインタがんばれ
0539デフォルトの名無しさん
2006/03/26(日) 12:27:48それはよく学校の先生にいわれてるww
実行してみます
>>536
とりあえずプログラムを浴びればいいんですか?
>>537
大学の推薦がもらえるらしいので早めにとっておきたくて(ry
とりあえずみんなマジレスサンクスwww
0540デフォルトの名無しさん
2006/03/26(日) 12:50:21現実逃避してないでマジメに受験勉強しろよ(´・ω・`)
0541デフォルトの名無しさん
2006/03/26(日) 13:39:45進学校じゃないんじゃね?
0542デフォルトの名無しさん
2006/03/26(日) 13:40:100543デフォルトの名無しさん
2006/03/26(日) 13:43:040544デフォルトの名無しさん
2006/03/26(日) 14:12:410545デフォルトの名無しさん
2006/03/26(日) 16:08:21本は持ってるんですが、本に説明がないところがたまにあって・・・
一応ぐぐって理解してるつもりではありますが
0546デフォルトの名無しさん
2006/03/26(日) 16:29:59本がわるいのでもっと良い本を買いましょう。
「初心者向け」と謳うWebサイトのほとんどすべてはクソです。
0547デフォルトの名無しさん
2006/03/26(日) 16:33:200548デフォルトの名無しさん
2006/03/26(日) 16:35:260549デフォルトの名無しさん
2006/03/26(日) 16:39:120550デフォルトの名無しさん
2006/03/26(日) 16:40:580551デフォルトの名無しさん
2006/03/26(日) 17:00:51それぞれひとつずつ対応しています。
Aは1で割り切れ、AB(2ケタの数)は2で割り切れ、
ABCは3で、ABCDは4で、・・・・・と続いていき最後に
ABCDEFGHIJは10で割り切れます。
A〜Jがどの数と対応しているかを求めなさい
というのをプログラムでやりたいんですけど、
数値を代入するところがうまく表現できません。どうすればいいですか。
0552デフォルトの名無しさん
2006/03/26(日) 17:02:390553デフォルトの名無しさん
2006/03/26(日) 17:08:16static main (void) {
int A B C;
A=68 B=55
C=A+B
system.out.println(C) return 0;}
}
これで足し算できるはずなんですがエラーがでます。何が、問題ですか。
0554デフォルトの名無しさん
2006/03/26(日) 17:08:20int A = i;
int B = j;
int AB = A*10 + B;
:
どううまく表現できんか知らんが、こんなもんだろ。
intが32bit以下の環境では10桁の数値は表現できんがそれは環境依存。longとか多倍長とかあされ。
つーか、Jは0だろ。
0555デフォルトの名無しさん
2006/03/26(日) 17:08:240556デフォルトの名無しさん
2006/03/26(日) 17:10:06C言語でおk
0557デフォルトの名無しさん
2006/03/26(日) 17:10:13おまっ…それのどこがCなんだよ!
0558デフォルトの名無しさん
2006/03/26(日) 17:11:37宿題スレにあったら喜んでやるんだけどな
0559デフォルトの名無しさん
2006/03/26(日) 17:17:30傑作ですね
見てておもしろいと思います
0560551
2006/03/26(日) 17:21:06未知数1つのケースなら容易に分かるのですがこれだけ未知数があると・・・
0561551
2006/03/26(日) 17:23:01宿題スレでしたか。何分宿題ではなかったもので・・・
でも今からそっちに書くとマルチとかいわr
0562デフォルトの名無しさん
2006/03/26(日) 17:26:23自分で「反復処理」って書いてるんだから分かると思うけどなぁ。
マルチと言われかねないなら先に断っときゃええんとちゃう? 追い出されたって。
宿題スレに行け。
0563デフォルトの名無しさん
2006/03/26(日) 17:29:28もう戻ってくんな
0564デフォルトの名無しさん
2006/03/26(日) 17:37:35適当に書いて調べてみた。
結果......解なし 以上
0565564
2006/03/26(日) 17:46:17#include<stdio.h>
long long f(long long n,int i,int j,long mask){
long long ret;
if(j==10)return n;
else if(i==10)return -1;
else if( (mask&1<<i) || (n*10+i)%(j+1)!=0 || (ret = f(n*10+i,0,j+1,mask|1<<i) ) < 0 ) return f(n,i+1,j,mask);
else return ret;
}
int main(void){
long long n = f(0,0,0,0);
if(n == -1) printf("解なし");
else printf("ABCDEFGHIJ = %010lld\n",n);
return 0;
}
0566デフォルトの名無しさん
2006/03/26(日) 17:55:220567デフォルトの名無しさん
2006/03/26(日) 17:57:23お前の財布の中身
0568デフォルトの名無しさん
2006/03/26(日) 17:58:16ここは10重ループを回すのがセオリーってもんだろ
0569デフォルトの名無しさん
2006/03/26(日) 17:59:17#include <stdlib.h>
main(){
FILE *fp;
int r; //freadの戻り値
char buff[16]; //読み込んだものを格納するバッファ
//バイナリモードでオープン
fp = fopen("test2.c","rb");
if(!fp){
printf("ファイルオープンエラー\n");
exit(1);
}
//ファイル読み込み
while ((r = fread(buff,sizeof(char),8,fp)) != 0){
buff[r]='\0';
printf("%s",buff);
}
fclose(fp);
return 0;
}
これの、while以下がどうもピンときません
whileのところはコンピュータはどういう動作をしてるのでしょうか?
0570デフォルトの名無しさん
2006/03/26(日) 18:03:180571デフォルトの名無しさん
2006/03/26(日) 18:05:28for(;;){
r = fread(buff,sizeof(char),8,fp));
if(r == 0) break;
buff[r]='\0';
printf("%s",buff);
}
0572デフォルトの名無しさん
2006/03/26(日) 18:07:48strcmpって関数を自作して使おうと思ったら動作が不可解なものになりました。
調べてみたら、strcmpという名前の関数が標準ライブラリにあるんですね。
俺も、なんとなく聞いたことがあるから、そういう名前にしたんですが。
名前を変えたら、問題なしで動きました。
でも、なんだか気になる。
もし、誰かのライブラリにある関数と同じプロトタイプの関数を書いてしまったら、
どっちかを無効にする方法はあるのでしょうか。
それとも、救いようはないのでしょうか。
0573デフォルトの名無しさん
2006/03/26(日) 18:13:41根本的な問題として C はプロ用なんで
「初心者」という免罪符を捨ててからでないと
とりつく島もないのが実情だ
誰かに先に言われてしまったが
何か勘違いしてるサイトや本はたくさんあるが
そういうところに入門しても年単位で見ると結局
徒労散財に終わるだけだ
どうせ「初心者向け」と称するところに入門するなら
C じゃなくアセンブラや組み込みをやっているところをすすめたい
0574デフォルトの名無しさん
2006/03/26(日) 18:13:520575デフォルトの名無しさん
2006/03/26(日) 18:14:33今書いてるぜ
0577デフォルトの名無しさん
2006/03/26(日) 18:21:46名前がかち合ってしまったらどうしようもない。
# C++とかではnamespaceというのを修飾して
# mylib.stdcmpといった感じで区別できるようになる。
現実にはxxStrcmpとかイニシャル・会社名、ライブラリ名を頭にくっつけて
ぶつからないようにする。
また、関数をstaticにすればそのファイル内では好き勝手に名前をつけても
他のファイルには影響を及ぼさないように出来る。
0578デフォルトの名無しさん
2006/03/26(日) 18:38:48ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1712.txt
0579デフォルトの名無しさん
2006/03/26(日) 18:39:13mylib::strcmp か std::strcmp ならわかるが・・・
0580デフォルトの名無しさん
2006/03/26(日) 18:40:01俺もだけど
0581デフォルトの名無しさん
2006/03/26(日) 18:57:44ワロスwww
出直せwww
もしかして釣られた?
0582デフォルトの名無しさん
2006/03/26(日) 19:07:17漢を見たw。
そして意外に早く答えが求まることにびっくり。
計算機も速くなったもんだ。
0583デフォルトの名無しさん
2006/03/26(日) 19:14:050584デフォルトの名無しさん
2006/03/26(日) 19:15:37想像以上に早いwwww
0585デフォルトの名無しさん
2006/03/26(日) 19:16:07テラワロス
0586デフォルトの名無しさん
2006/03/26(日) 19:18:510587デフォルトの名無しさん
2006/03/26(日) 19:21:560588デフォルトの名無しさん
2006/03/26(日) 19:27:090589デフォルトの名無しさん
2006/03/26(日) 19:28:020590デフォルトの名無しさん
2006/03/26(日) 19:59:000591デフォルトの名無しさん
2006/03/26(日) 20:09:390592デフォルトの名無しさん
2006/03/26(日) 22:24:130593デフォルトの名無しさん
2006/03/26(日) 23:39:10{
while (listp != NULL) {
struct list *nextp;
nextp = listp->next;
free(listp);
listp = nextp;
}
}
list構造ならfreeはこんな感じですればいいと思いますが
tree構造
struct tree{
int val;
struct tree *left;
struct tree *right;
};
みたいな時には再起を使わずにかけますか?
0594デフォルトの名無しさん
2006/03/26(日) 23:49:18再帰が使えない言語でそういう処理を考えたこともない
あ、再起だったか
こりゃ失礼
0595デフォルトの名無しさん
2006/03/26(日) 23:56:16辿った順を自分で記憶しておけば書ける。
0596デフォルトの名無しさん
2006/03/27(月) 00:12:34こんな初歩的なことでストールしやがる
只で面倒見てやるほど甘かねえが1つだけ: 再帰の最深レベルを限定しろ
別に再帰に限ったことじゃなくスタックは有限だが
0597デフォルトの名無しさん
2006/03/27(月) 00:13:42これも毎日見ているエロ画像のおかげ
0598デフォルトの名無しさん
2006/03/27(月) 00:19:570599デフォルトの名無しさん
2006/03/27(月) 00:23:340600デフォルトの名無しさん
2006/03/27(月) 00:26:08ある意味精神的ブラクラ
0601デフォルトの名無しさん
2006/03/27(月) 00:30:440602デフォルトの名無しさん
2006/03/27(月) 01:37:57void free_tree(struct tree*p){
struct tree*x;
while(p){
while(p->left){
x = p;
p = p->left;
x->left = p->right;
p->right = x;
}
x = p;
p = p->right;
free(x);
}
}
0603デフォルトの名無しさん
2006/03/28(火) 00:07:51char 256までが限界です。256以上足し算するとどなるでしゅぁ?><?
int も65366超えたら どるんあですか><? やっぱ限界とぱしちゃうかな^^;
0604デフォルトの名無しさん
2006/03/28(火) 00:08:510605デフォルトの名無しさん
2006/03/28(火) 00:32:510606デフォルトの名無しさん
2006/03/28(火) 01:00:30charが符号付きであるか否かは処理系定義
であるからcharの範囲が-2^〜2^7-1であるか、0〜2^8-1であるかはlimits.hでも見ないと分からない
0607デフォルトの名無しさん
2006/03/28(火) 01:02:510608デフォルトの名無しさん
2006/03/28(火) 02:42:110609デフォルトの名無しさん
2006/03/28(火) 04:00:19intが65535?どんな環境だ?
intが2バイト?しかもunsigned?
0610デフォルトの名無しさん
2006/03/28(火) 04:07:05# ここしばらく俺の担当案件なんぞこればっか
まあデフォが unsigned はさすがに「少ない」が
0611デフォルトの名無しさん
2006/03/28(火) 04:46:04int == unsigned intは確かに稀としても
規格上、intのサイズとして最低限保障されてるのは2バイトなんだから
そう想定しておくのは悪い事じゃない
0612デフォルトの名無しさん
2006/03/28(火) 05:18:16WG も玉石混淆で技術的にすごい人と政治の天才が混じってて
ときどきおかしいことが書いてある
0613デフォルトの名無しさん
2006/03/28(火) 05:29:21-(2^15-1)〜2^15-1
以上の表現範囲を持つように規定されてるから
sizeof(int)==1は規格合致処理系じゃない可能性が高いだろ
1バイト=16ビットなんてトンデモ仕様なら別だが
0614デフォルトの名無しさん
2006/03/28(火) 05:33:100615デフォルトの名無しさん
2006/03/28(火) 05:35:06そんなの有るのか?
とゆうかsizeof(int)==1ならcharでいいじゃん
0616デフォルトの名無しさん
2006/03/28(火) 05:40:070617デフォルトの名無しさん
2006/03/28(火) 07:25:29銀行のATMが止まります(><;)
0618デフォルトの名無しさん
2006/03/28(火) 11:03:050619デフォルトの名無しさん
2006/03/28(火) 11:04:100620デフォルトの名無しさん
2006/03/28(火) 11:36:23データポインタもコードポインタも16ビット
large, hugeモデルなら
データポインタもコードポインタも32ビット(但し、リニアではない)
0621デフォルトの名無しさん
2006/03/28(火) 11:46:280622デフォルトの名無しさん
2006/03/28(火) 12:33:320623デフォルトの名無しさん
2006/03/28(火) 12:35:200624デフォルトの名無しさん
2006/03/28(火) 12:44:35charが8ビットとは限らないよな?
0625デフォルトの名無しさん
2006/03/28(火) 12:47:19「バイト」じゃなくて「オクテット」では?
言葉の定義の問題だが、「バイト」だと8ビット単位とは限らない。
0626デフォルトの名無しさん
2006/03/28(火) 13:11:580627デフォルトの名無しさん
2006/03/28(火) 13:16:25そして>>605の俺に結論を提出。
0628デフォルトの名無しさん
2006/03/28(火) 13:52:45short int 16bit以上
int 16bit以上
long int 32bit以上
long long int 64bit以上
charのバイト数(sizeofの結果)は1
0629デフォルトの名無しさん
2006/03/28(火) 13:57:130630デフォルトの名無しさん
2006/03/28(火) 14:16:47「まで」があるのでちょっと違うな。
0631デフォルトの名無しさん
2006/03/28(火) 14:22:11規格で保証されている範囲を言ってるつもりなら
お前も >>626。
0632デフォルトの名無しさん
2006/03/28(火) 14:25:170633デフォルトの名無しさん
2006/03/28(火) 14:27:220634デフォルトの名無しさん
2006/03/28(火) 14:29:130635デフォルトの名無しさん
2006/03/28(火) 14:33:43int main () {
printf("こんにちは”¥n);
}
/これって、コンパイルできますか?/
0636デフォルトの名無しさん
2006/03/28(火) 14:34:150637デフォルトの名無しさん
2006/03/28(火) 14:35:38System.out.println("試してみたらどうよ??");
0638デフォルトの名無しさん
2006/03/28(火) 14:38:300639デフォルトの名無しさん
2006/03/28(火) 14:42:19Linux だとちゃんと \ で出るが。
0640デフォルトの名無しさん
2006/03/28(火) 14:45:53OS関係ねー
0641デフォルトの名無しさん
2006/03/28(火) 15:20:16それはJIS X 0201の罪だ。
PC-9801はJIS X 0201に従っただけに過ぎない。
0642デフォルトの名無しさん
2006/03/28(火) 15:26:36ここはCのスレです。
Javaは回線切って首吊って氏ね
0643デフォルトの名無しさん
2006/03/28(火) 15:30:100644デフォルトの名無しさん
2006/03/28(火) 15:37:02俺は完全にバイナリ化できないから手を出しづらい
0645デフォルトの名無しさん
2006/03/28(火) 15:54:440646デフォルトの名無しさん
2006/03/28(火) 16:01:000647デフォルトの名無しさん
2006/03/28(火) 16:02:41Javaはバイナリにはなる。ただ Java VM がないと動かないだけだ。
0648デフォルトの名無しさん
2006/03/28(火) 16:04:19#include <stdio.h>
void printfunc(const char* str){printf(str);}
int main(void){
struct { struct { void (*println)(const char*); } out; } System;
System.out.println = printfunc;
System.out.println("試してみたら?");
return 0;}
0649デフォルトの名無しさん
2006/03/28(火) 16:35:51つ gcj
0650デフォルトの名無しさん
2006/03/28(火) 16:38:07最低なprintf()の使い方だな。
0651デフォルトの名無しさん
2006/03/28(火) 16:50:29へんなホームページ作ったり、聞かれてもないのに
変なコード得意げに書いたり。
他人に教えるよりおとなしく勉強してればいいのに
つーかそのprintfuncは改行すらしてないな
きっとJavaも知らないんだろ
0652デフォルトの名無しさん
2006/03/28(火) 16:58:55スレタイを100回音読して巣に帰るといいよ
0653デフォルトの名無しさん
2006/03/28(火) 17:08:21改行するかしないかの問題ではないことに気が付かない君はバグメーカー。
0654デフォルトの名無しさん
2006/03/28(火) 17:10:51#define System.out.println(x) puts(x)
あ、'.' があったら駄目か?
0655デフォルトの名無しさん
2006/03/28(火) 17:12:51まぁ、こんなのいろんな入門書やらで言われてるし、
>>648も分かってて書いたんかもな
この手の関数は嫌になるねホント
安全を謳ったprintf_sってのもあるみたいだけど
0656デフォルトの名無しさん
2006/03/28(火) 17:16:28Tigerになってようやくprintfと同等の機能ができた。
Javaには拡張性がない。intが32bit固定って64bitOSが出てきたらどうするの?
JavaはWrite once all anywayなんて嘘。JVMが無ければガラクタだ。
Cではautomake/autoconfで達成できている。
Javaは所詮Cには永遠に敵わない。
0657デフォルトの名無しさん
2006/03/28(火) 17:18:400658デフォルトの名無しさん
2006/03/28(火) 17:27:01FormatGuard: Automatic Protection From printf Format String Vulnerabilities
Libsafe 2.0: Detection of Format String Vulnerability Exploits
0659デフォルトの名無しさん
2006/03/28(火) 17:38:17これほど痛いのは久しぶりだ
0660デフォルトの名無しさん
2006/03/28(火) 17:39:080661デフォルトの名無しさん
2006/03/28(火) 17:40:31最近の64bit CPUのコンパイラのintは32bitなわけだが。
0662デフォルトの名無しさん
2006/03/28(火) 17:41:420663デフォルトの名無しさん
2006/03/28(火) 17:48:440664デフォルトの名無しさん
2006/03/28(火) 17:56:270665デフォルトの名無しさん
2006/03/28(火) 17:58:530666デフォルトの名無しさん
2006/03/28(火) 18:00:030667デフォルトの名無しさん
2006/03/28(火) 18:05:13俺の環境ではchar = 8bit でした。
・・・で、よくわからんのが、Javaだと char = 16bit なのはなぜ?
0668デフォルトの名無しさん
2006/03/28(火) 18:11:110669デフォルトの名無しさん
2006/03/28(火) 18:20:540670デフォルトの名無しさん
2006/03/28(火) 18:22:17そこはC++としてコンパイルすればOK
0671デフォルトの名無しさん
2006/03/28(火) 18:27:44第一バイトで後に何バイト続くかわかるけどな・・・
0672デフォルトの名無しさん
2006/03/28(火) 18:38:42現行のunicodeだとね
0673デフォルトの名無しさん
2006/03/28(火) 18:49:2464bit OS が出ようが 128bit OS が出ようが Java の int は
32 ビット。long は 64 ビット。それの何がいけないんだ?
>>665
C99 は?
>>667
Java は Unicode の 1 文字を char 一つに入れようとして 16bit
になっているんだが、しかし Unicode の新しいバージョンでは
やはり16ビットでは足りないということになり32ビットのコードが
作られてしまい(サロゲート)、それだと char 2つ分ないと1文字を
表せないのであまり意味がなくなってしまった。
>>669
UTF-8 は Unicode のエンコーディングの一種なので Java の char
に入っている値とは違う。char は Unicode のコードそのまま。
UTF-8 はそれを変形して8ビット〜24ビット(サロゲートも入れたら
48ビット)に変形したものだ。
0674デフォルトの名無しさん
2006/03/28(火) 18:53:52私はC言語しか経験がありません。
あるソフトのログの中に、現在時刻としてJavaにおける System.currentTimeMillis() 関数の
返り血が出てくるのですが、これをCで解析するためにはどうすればいいでしょうか?
0675デフォルトの名無しさん
2006/03/28(火) 18:57:540676674
2006/03/28(火) 19:00:41解析というか、
2006/03/28(火) 18:57:54
みたいに可読文字列に直したいのです。
0677デフォルトの名無しさん
2006/03/28(火) 19:10:570678デフォルトの名無しさん
2006/03/28(火) 19:11:57Javaなんて知らないから適当だが、オンラインマニュアルによると
java.lang.System.currentTimeMillis()は協定世界時からの経過時間を返すらしいから
ctimeにでも渡してtm構造体から読み出せばいいだろ
0679デフォルトの名無しさん
2006/03/28(火) 19:17:35Javaのchar ≒ C/C++のwchar_tと思えばよい。
0680674
2006/03/28(火) 19:22:55System.currentTimeMillis() の正体が見当つかなかったので・・・
お騒がせしました。
0681デフォルトの名無しさん
2006/03/28(火) 20:14:320682デフォルトの名無しさん
2006/03/28(火) 20:18:01ビットフィールド
0683デフォルトの名無しさん
2006/03/28(火) 20:20:010684デフォルトの名無しさん
2006/03/28(火) 20:21:08おおありがとう!
危うくu-charに無理やり8個のビットを詰め込むところだったよ。
考えただけで寒気がする。
0685デフォルトの名無しさん
2006/03/28(火) 20:22:24ただそれ以上うまいことやってくれるbitsetのような型はない。
0686デフォルトの名無しさん
2006/03/28(火) 20:32:150687デフォルトの名無しさん
2006/03/28(火) 22:25:13int main(void){
FILE *fp;
fp = fopen("Sample.txt","w");
fprintf(fp,"パソコンがぶっ壊れた\n");
fclose(fp);
return 0;
}
0688デフォルトの名無しさん
2006/03/28(火) 23:53:10> うまいことやってくれるbitset
i/o 叩けないし...
0689デフォルトの名無しさん
2006/03/28(火) 23:54:47>考えただけで寒気がする。
お前Cは向いてないよ
0690デフォルトの名無しさん
2006/03/29(水) 04:31:320691デフォルトの名無しさん
2006/03/29(水) 04:54:32オープンモードによる
wなら作成されるし、rならNULLが返る
aや+が付いたときは知らん
つーかこれぐらい数行のコード書けば分かるだろうが
0692デフォルトの名無しさん
2006/03/29(水) 04:54:400693デフォルトの名無しさん
2006/03/29(水) 12:04:30僕は駄目な奴です><
0694デフォルトの名無しさん
2006/03/29(水) 12:12:14>>690
モード
ttp://www9.plala.or.jp/sgwr-t/c/sec17.html
0695デフォルトの名無しさん
2006/03/29(水) 12:26:050696デフォルトの名無しさん
2006/03/29(水) 12:51:13char *cp = s;
両者の違いってなんですか?
s++できない事くらい?
0697デフォルトの名無しさん
2006/03/29(水) 12:55:42> StackTraceってエラーの詳細文字列ですか?(ググったんですけどよく分かりませんでした。
>
> http://0xcc.net/blog/archives/000067.html
> こういうのよりtry catch書く分面倒な気がするのですが、そこんとこどうなんですか?
> try catchそんなに便利ならC言語からJavaに乗り換えようと思うのですが。
>730 名前:C言語使い [sage] 投稿日:2006/03/29(水) 12:31:59
> 部品ですね。正直OO理論はお腹いっぱいです。
>
> つっこみないみたいなので、trycatch便利じゃないんですね、残念。
0698デフォルトの名無しさん
2006/03/29(水) 13:06:34どこそれ?
0699デフォルトの名無しさん
2006/03/29(水) 15:19:37input:
scanf("%d",&num);
if((snum >= 0) && (snum <= MAXnum)){syori1; プログラム終了;}
printf("error");
goto input:
といった感じで、指定範囲外の数字または文字や記号が入ったら再入力させたいのですが。
数値以外を入れると無限でエラー文が出力されてしまうのですが…なにか対処法はないのでしょうか??
0700デフォルトの名無しさん
2006/03/29(水) 15:22:18何でifの判定がsnumなんだ?
0701デフォルトの名無しさん
2006/03/29(水) 15:32:57うんざりしているscanfネタと前方に飛ぶgoto文とかなかなか良い釣りだな。
個人的にはif( 0 <= snum <= MAXnum)の方がネタとしては高評価だけどな
0702デフォルトの名無しさん
2006/03/29(水) 15:59:37scanf は %d で指定して数字が入らないとバッファを消さずに
返ってくるから、scanf()の戻り値で判定して自分でバッファクリアして
仕切りなおし。英字入れたらnumに何が入ると思うんだ?
まあプログラムを動かしてみる、という最初の段階を超えたらscanfは捨てなさい。
0703デフォルトの名無しさん
2006/03/29(水) 16:15:47可変長引数の関数(void var_arg_func(int n, ...))をつくって、
var_arg_func(99, "call", "with", "five", "arguments");
と呼び出して、関数内で
va_list ap;
char *s
va_start(ap, n)
while( s = va_arg(ap, char*))
puts(s);
va_end(ap);
というふうにして引数を表示させると、動作はするんですが
最後にBus Errorが出ました。
var_arg_func(44, "arg2", "arg3", NULL);
と呼び出せばうまくいくんですが、あんまり気持ちよくないです。
呼び出し側から、引数にそのときの引数の数を入れるのもあまり
スマートじゃない感じがします。
こういうとき、関数の中から実際に渡された引数の数を知る方法
はありますか?
それか、うまく終了判定する方法はありますか?
0704デフォルトの名無しさん
2006/03/29(水) 16:24:03C-FAQ 15.8を読め
おとなしく最後にNULLを入れておくか、移植性のない方法でもググレ
0705デフォルトの名無しさん
2006/03/29(水) 16:50:13結局、番兵をたてるのが標準的なんですかね…
とりあえず、忘れずにおとなしくNULL入れときます。
0706デフォルトの名無しさん
2006/03/29(水) 17:20:120707690
2006/03/29(水) 17:43:18ありがとうございます。
もう1つ質問なんですが、
wfp = fopen("test.c","wb");
if(!wfp){
printf("エラー\n");
exit(1);
これでエラーが出る場合ってどういうときでしょう?
0708デフォルトの名無しさん
2006/03/29(水) 17:46:25いろいろ
例えば書き込み権限が無かったりするとエラーになる。
0709デフォルトの名無しさん
2006/03/29(水) 17:47:54カレントディレクトリに書き込み許可が無い場合
0710690
2006/03/29(水) 17:51:47どうもありがとうございました
0711デフォルトの名無しさん
2006/03/29(水) 18:05:450712デフォルトの名無しさん
2006/03/29(水) 18:56:550713デフォルトの名無しさん
2006/03/29(水) 19:13:36標準Cの範囲では無理だからスレ違いになるが
Windowsに限って言えば、Win32APIのFindWindow()がそれに該当するだろ
0714デフォルトの名無しさん
2006/03/29(水) 20:15:43static int spcAX[256] , spcAY[256];
case WM_LBUTTONDOWN:
{
:
else {cnNum[4][0][0]=5;}
}
break;
なんかcnNumに代入しているのにspcAXに入っちゃうんですが、
考えられる原因を教えてください。お願いします。
0715デフォルトの名無しさん
2006/03/29(水) 20:21:370716デフォルトの名無しさん
2006/03/29(水) 20:23:18cnNum[x][y][z]のxの取り得る範囲ってどこだと思う?
0718デフォルトの名無しさん
2006/03/29(水) 20:35:54ヽ(゚Д゚ )気にするな
俺も最初はたまにやったミスだ
0719デフォルトの名無しさん
2006/03/29(水) 20:38:12普通インデックスはみ出たら例外投げるのが常識だろう。
0720デフォルトの名無しさん
2006/03/29(水) 20:41:13それやると遅くなる
ついでにコンパイラ実装者が面倒臭くなる
0721デフォルトの名無しさん
2006/03/29(水) 20:47:57アセンブラの上位言語として生まれた経緯を考えれw
0722デフォルトの名無しさん
2006/03/29(水) 20:53:170723デフォルトの名無しさん
2006/03/29(水) 20:53:450724デフォルトの名無しさん
2006/03/29(水) 21:09:420725デフォルトの名無しさん
2006/03/29(水) 21:12:580726651
2006/03/29(水) 21:15:260727デフォルトの名無しさん
2006/03/29(水) 21:16:530728デフォルトの名無しさん
2006/03/29(水) 21:30:29C作った奴は無能だな。
0729デフォルトの名無しさん
2006/03/29(水) 21:33:070730デフォルトの名無しさん
2006/03/29(水) 21:43:460731デフォルトの名無しさん
2006/03/30(木) 00:25:410732デフォルトの名無しさん
2006/03/30(木) 01:06:56C言語の設計思想は
できるだけ軽く、例外処理は自己責任
だろ
0733デフォルトの名無しさん
2006/03/30(木) 01:47:01恥ずかしい人が紛れ込んでいますね
0734デフォルトの名無しさん
2006/03/30(木) 02:27:04main(){
char i;
i = 4;
printf("%d",i);
return 0;
}
char型なのに%dで出力できるのはなぜですか?
0735デフォルトの名無しさん
2006/03/30(木) 02:29:140736デフォルトの名無しさん
2006/03/30(木) 02:32:26それで出力できるのは偶然
変なゴミが出力されても文句は言えない
0737デフォルトの名無しさん
2006/03/30(木) 02:32:54charは8ビット整数だから
printf関数にわたるときにchar iはinteger iに符号拡張される
0738737
2006/03/30(木) 02:34:530739デフォルトの名無しさん
2006/03/30(木) 02:40:00と書けば確実になる
0740デフォルトの名無しさん
2006/03/30(木) 02:42:440741デフォルトの名無しさん
2006/03/30(木) 03:00:22floatはdoubleに変換されて渡されるんじゃなかったっけ?
0742デフォルトの名無しさん
2006/03/30(木) 03:09:26│この板は今日か│
│らSPALMの板に │
│なりました。 │
│SPALM以外の話 │
│をすると仲間が│
│殺しに行きます│
└──┐ ┌──┘
│ │
└─┘
0743デフォルトの名無しさん
2006/03/30(木) 03:14:440744デフォルトの名無しさん
2006/03/30(木) 03:27:04unsigned char, unsigned short は unsigned int に、
signed char, signed short は signed int に、
float は double に、それぞれ拡張される。
で、ポインタは一切の変換なしに渡されるんだっけ?
0745デフォルトの名無しさん
2006/03/30(木) 08:26:18規定実引数拡張
0746デフォルトの名無しさん
2006/03/30(木) 11:10:23車を作れないレーサーとか
マイクやカメラを作れないアナウンサーとか
ピアノを作れないピアニストとか
0747デフォルトの名無しさん
2006/03/30(木) 11:13:140748デフォルトの名無しさん
2006/03/30(木) 11:23:030749デフォルトの名無しさん
2006/03/30(木) 11:25:47いやそれは虚しい。
0750デフォルトの名無しさん
2006/03/30(木) 11:27:070751デフォルトの名無しさん
2006/03/30(木) 11:47:33C-FAQの15.2嫁。
0752デフォルトの名無しさん
2006/03/30(木) 12:00:07俺が神だ
0753デフォルトの名無しさん
2006/03/30(木) 12:54:59あるいは使ってますか??
0754デフォルトの名無しさん
2006/03/30(木) 12:57:16必要なときに使う。
0755デフォルトの名無しさん
2006/03/30(木) 12:58:340756デフォルトの名無しさん
2006/03/30(木) 13:10:36んじゃGlobalAllocでいいわ
0757デフォルトの名無しさん
2006/03/30(木) 13:18:48ヒント:ネットワーク
0758デフォルトの名無しさん
2006/03/30(木) 13:19:490759デフォルトの名無しさん
2006/03/30(木) 13:22:07動的にメモリを確保したいときに使う。
mallocしてしっかりfreeしないと、メモリリークが激しいよ。うん。激しいよ。
0760デフォルトの名無しさん
2006/03/30(木) 13:23:410761デフォルトの名無しさん
2006/03/30(木) 13:48:410762デフォルトの名無しさん
2006/03/30(木) 13:52:20まずはどんなに入力行が長くてもまるまる一行分受け取れる
char *gets_ex(void);
を書いてみろ。
0763デフォルトの名無しさん
2006/03/30(木) 14:01:28ポインタを使った文字配列へ使っていこうと思います。
トンクス子でした。
0764デフォルトの名無しさん
2006/03/30(木) 14:03:24トンクス子でした。
0765761
2006/03/30(木) 14:04:11ダウンロードして、ローカルで解凍するとファイルは
出来るのですが、開こうとすると”見つかりません”と出ます。
また、削除しようとすると”ファイルを削除できません。
送り側のファイルまたはディスクから読み取れません”と出ます。
コマンドプロンプトで消そうと努力もしたのですが消えません。
色々な削除ソフトも利用したのですが消えません。
どなたか知識の高い方、削除の仕方を教えてください。
0766デフォルトの名無しさん
2006/03/30(木) 14:05:450767699
2006/03/30(木) 14:08:290768デフォルトの名無しさん
2006/03/30(木) 14:10:48>>699
ない。
0769デフォルトの名無しさん
2006/03/30(木) 14:14:57char buf[256];
for(;;)
{
if(scanf("%d", &n) == 1)
{
if(0 <= n && n < 10)
break;
}
else
gets(buf);
}
printf("n=%d\n", n);
gets(buf);
0770デフォルトの名無しさん
2006/03/30(木) 14:16:34http://pc8.2ch.net/test/read.cgi/tech/1143405137/
0771デフォルトの名無しさん
2006/03/30(木) 16:51:51そこでgetsはないだろ。
0772デフォルトの名無しさん
2006/03/30(木) 16:56:570773デフォルトの名無しさん
2006/03/30(木) 16:57:01scanfの戻り値チェックとかはちゃんとやってるのに
よりにもよってgetsかよw
0774デフォルトの名無しさん
2006/03/30(木) 17:12:280775デフォルトの名無しさん
2006/03/30(木) 17:18:470776デフォルトの名無しさん
2006/03/30(木) 19:05:32ぶっちゃげ の検索結果のうち 日本語のページ 約 45,300 件中 1 - 20 件目 (0.20 秒)
0777デフォルトの名無しさん
2006/03/30(木) 19:07:360778デフォルトの名無しさん
2006/03/30(木) 19:22:440779デフォルトの名無しさん
2006/03/30(木) 20:09:050780デフォルトの名無しさん
2006/03/30(木) 20:16:500781デフォルトの名無しさん
2006/03/30(木) 20:51:210782デフォルトの名無しさん
2006/03/30(木) 23:33:19パイプ=pipe
データを通す管のことだよ
0783デフォルトの名無しさん
2006/03/30(木) 23:40:47scanf関数は素人しか使わないと聞きました
玄人または一般的な開発者はscanf関数の代わりにどういったものを使ってるんでしょうか?
0784デフォルトの名無しさん
2006/03/30(木) 23:43:05>>1
0785デフォルトの名無しさん
2006/03/30(木) 23:43:370786デフォルトの名無しさん
2006/03/30(木) 23:46:37fgets(buf,10,stdin);等の記述を見つけたのでこちらの方が言いのかなと思ってたんですが
このままscanf使っていきたいと思います・・
ありがとうございました。
0787デフォルトの名無しさん
2006/03/30(木) 23:49:161を読んだのか?
0788デフォルトの名無しさん
2006/03/30(木) 23:50:040789デフォルトの名無しさん
2006/03/30(木) 23:51:170790デフォルトの名無しさん
2006/03/30(木) 23:51:490791デフォルトの名無しさん
2006/03/30(木) 23:54:05> 玄人または一般的な開発者はscanf関数の代わりにどういったものを使ってるんでしょうか?
は、分からないけどな
0792デフォルトの名無しさん
2006/03/30(木) 23:55:110793デフォルトの名無しさん
2006/03/30(木) 23:55:18低脳はひっこんでてください。
0794デフォルトの名無しさん
2006/03/31(金) 00:23:43そらそうだろ低脳集団だもん
0795デフォルトの名無しさん
2006/03/31(金) 00:49:360796デフォルトの名無しさん
2006/03/31(金) 00:54:38main(){
printf("%d\n",'a');
return 0;
}
と
#include <stdio.h>
main(){
char a;
printf("%d\n",a);
return 0;
}
の違いは何でしょうか?結果が97と1になりましたが…
0797デフォルトの名無しさん
2006/03/31(金) 00:57:03定数と変数の違い
もしかして釣り?
0798デフォルトの名無しさん
2006/03/31(金) 00:58:28main(){
char a = 'a';
printf("%d\n",a);
return 0;
}
だとどうなりますか?
0799デフォルトの名無しさん
2006/03/31(金) 01:46:50前回チェック時間(例23:59)< 0時 <現在時刻(例0:01)
の条件の時、別関数を呼ぶ
という風にしたいんですが、どうすれば良いでしょうか?
24時間足すという事も考えたのですが、時間を戻される可能性もあるため、
前回チェック時間(22:00) 今回チェック時間(19:00)
の状態になった時、関数を呼ぶようにはしたくないんですが・・。
0800デフォルトの名無しさん
2006/03/31(金) 01:52:010801デフォルトの名無しさん
2006/03/31(金) 01:52:320802デフォルトの名無しさん
2006/03/31(金) 01:56:26localtimeを使えば
localtimeで返されるtm構造体の年月日を、前回のものと現在のもので比較
日が変わったら「別関数をよぶ」
ただ、「時間を戻される可能性もある」がやっかい
0803デフォルトの名無しさん
2006/03/31(金) 02:01:06なにがやっかいなんですか?
0804デフォルトの名無しさん
2006/03/31(金) 02:08:30コンピュータの時計が変更される可能性があると解釈したんだけど
考えすぎか!?
0805デフォルトの名無しさん
2006/03/31(金) 02:11:51変更される事の何がやっかいなんですか?
理由が思いつかないんですが
0806デフォルトの名無しさん
2006/03/31(金) 02:24:54それは、プログラムの仕様による。
たとえば、コンピュータの時計が0時05分のときに時計を10分後ろに
戻したとする。すると「別関数を呼ぶ」という処理(おそらく日替わりの処理)
が10分の間に2回発生する。それでよければ別に問題はない。
だけど、それでは困るという場合。それが厄介。
プログラムで時間経過を管理しなければならない。
0807デフォルトの名無しさん
2006/03/31(金) 02:33:52ほぼその通りの意味です。
しかも、現状だとすべて秒に直した値を比較しているので、
日にちの概念が無いんです。
>>806
2回発生させたくないので困っております。
0808デフォルトの名無しさん
2006/03/31(金) 02:44:15そんなにイヤなら10秒くらいごとにタイマーしかけておいて、10秒+-誤差の範囲を
はずれた場合は爆破でもすればいいんじゃね?
そもそも、同じ時間になっても2回発生はしないだろう。
0:05から2分おきに別関数呼ぶとして、
次に呼ぶのは0:07で、時計と照合するのはこの時間。
0:05直後に10分戻されるとしても関数が呼ばれるのは0:07じゃねえの?どこが2回?
酒が入ってる俺がおかしいわけ?そうですか。寝る。
0809デフォルトの名無しさん
2006/03/31(金) 06:26:57そんなことを考慮する暇があったらその他の部分に力を入れたほうがいいとおも。
ところで「時間を進める」ほうは考慮しなくていいの? もしそうなら
月日もあわせてチェックするだけでいいんだけど。
0810デフォルトの名無しさん
2006/03/31(金) 06:46:130811デフォルトの名無しさん
2006/03/31(金) 07:00:32と
> 日にちの概念が無いんです。
の関係が分からん。
いつからの経過時間の秒に直してるんだ? 00:00からのとは言わんよな?
0812デフォルトの名無しさん
2006/03/31(金) 07:08:472006/03/31 23:30:00 → 2006/04/01 00:30:00 のとき起動する。
2006/03/31 23:30:00 → 2006/03/31 00:30:00 のとき起動しない。
じゃあ
2006/03/31 23:30:00 → 2006/04/01 23:40:00 のときは?
2006/03/31 23:30:00 → 2006/04/10 23:40:00 のときは?
0813デフォルトの名無しさん
2006/03/31(金) 07:22:08時間経過の管理ったって、最終起動時刻を記録して、それと比較して
20h以上経ってなかったら無視して起動しない、とかでいいんじゃね?
0814デフォルトの名無しさん
2006/03/31(金) 10:09:04素直に ntpd 使えばいいのに
>>813 その20h以上経過をどうやって知るんだ?時計が変わってるのに
0815デフォルトの名無しさん
2006/03/31(金) 10:41:300816デフォルトの名無しさん
2006/03/31(金) 11:30:34つまりbatでpauseなどを使わないでプログラムそのものからキー入力かなにか操作しない限り窓を閉じないようにすると言う事です。
0817デフォルトの名無しさん
2006/03/31(金) 11:49:400818デフォルトの名無しさん
2006/03/31(金) 11:50:320819デフォルトの名無しさん
2006/03/31(金) 11:51:000820デフォルトの名無しさん
2006/03/31(金) 11:52:130821デフォルトの名無しさん
2006/03/31(金) 11:53:09実際は、学生の宿題のコードでくらいしかみないね。 scanf()
0822デフォルトの名無しさん
2006/03/31(金) 11:54:27mainの最後の行にブレークポイントをつけておくとか。
0823デフォルトの名無しさん
2006/03/31(金) 11:56:13getcharは使ってませんがgetchは使ったことがありますけど・・マクロってのは何か問題があるんですか?
0824デフォルトの名無しさん
2006/03/31(金) 11:56:340825デフォルトの名無しさん
2006/03/31(金) 11:58:31そうでもない。
0826デフォルトの名無しさん
2006/03/31(金) 11:59:340827デフォルトの名無しさん
2006/03/31(金) 12:01:22コマンドプロンプトのショートカットのプロパティで終わらない設定をするとか。
最後に getchar() やってもいいけど。
0828デフォルトの名無しさん
2006/03/31(金) 12:01:27コンソールが閉じなかったんだけど。
なんでリリースビルドだけだったか、なぜ、なくなったかは謎。
0829デフォルトの名無しさん
2006/03/31(金) 12:01:49ユーザから生の入力受けるところに使うのは馬鹿だけど
ほかのプログラムの結果をリダイレクトで受ける部分で使うとかなら
そのほうが余程簡潔にすむ。
0830デフォルトの名無しさん
2006/03/31(金) 12:03:52scanfの使い方をわかっていないバカ。
>ほかのプログラムの結果をリダイレクトで受ける部分で使うとかなら
ユーザーの入力は不正確でリダイレクトなら正確な出力が受け取れると思っているバカ
0831デフォルトの名無しさん
2006/03/31(金) 12:03:54scanf() は使い辛いよ。ちょっと間違えただけでバッファオーバーラン
するかも知れないし。使ったとしても fgets() 後に sscanf() かなあ。
数値の連続を読むだけなら scanf() や fscanf() でもいいんだけどね。
文字列が混ざるとねえ。
0832デフォルトの名無しさん
2006/03/31(金) 12:06:03fgets()とかで一行入力、sscanf()で変換とかをおぼえればそれで十分。
0833デフォルトの名無しさん
2006/03/31(金) 12:08:450834デフォルトの名無しさん
2006/03/31(金) 12:11:190835デフォルトの名無しさん
2006/03/31(金) 12:21:01scanf()は、エラーの時は、入力バッファを読み飛ばせばいいってこと?
それだと、正常のときとエラーの時の挙動が違ってしまうし、
そういう細かいことを気にしないでいい、一行入力+sscanf()のほうがいい。
0836デフォルトの名無しさん
2006/03/31(金) 12:25:48a.out < hoge
で一々fopenしてfscanfしてfcloseしなくていい
エラーチェック?perlで作れ?何のことです?
0837デフォルトの名無しさん
2006/03/31(金) 12:39:340838デフォルトの名無しさん
2006/03/31(金) 12:41:320840デフォルトの名無しさん
2006/03/31(金) 12:50:01リダイレクトの時に fopen(), fclose() が不要な
件については scanf() とは全く関係のない話だ。
0841デフォルトの名無しさん
2006/03/31(金) 12:50:20調べてみたら文字を置き換えるとあるんですがputchar,getcharも何かに置き換えるってことですか?
0842デフォルトの名無しさん
2006/03/31(金) 13:53:53putcharなどはマクロとして実装されている(可能性がある)ということ。
効率を問題視する場合なら兎も角、通常気にすることもない。
>>836
つ[fscanf(stdin, "%d", & val);]
0843デフォルトの名無しさん
2006/03/31(金) 13:55:230844デフォルトの名無しさん
2006/03/31(金) 14:25:37バッファを溢れさせた時の誤動作にほぼ100%対応していない。
0845デフォルトの名無しさん
2006/03/31(金) 14:26:33打鍵数が多すぎる。
君は一々printf(...)をfprintf(stdout, ...)と書くのかね?
0846デフォルトの名無しさん
2006/03/31(金) 14:26:550847デフォルトの名無しさん
2006/03/31(金) 14:28:310848デフォルトの名無しさん
2006/03/31(金) 14:51:20その場合でもバッファはあふれないでしょ
0849デフォルトの名無しさん
2006/03/31(金) 14:54:57見苦しい反論するくらいなら、マクロでも関数でも用意すればいいのでは?
実際、fgetc(stdin);はしばしば書きますがね。
0850デフォルトの名無しさん
2006/03/31(金) 15:09:040851デフォルトの名無しさん
2006/03/31(金) 15:09:56溢れはしないが、行を完全に読み込んだかどうかはチェックしないと
次の読み込みで想定していない値が読み込まれる事は
容易に想像できるわけで。
それが >>844 の言う「誤動作」だろう。
「ほぼ100%」がどこの脳内統計かは知らんが。
>>849
反論ではなく、呆れているんだろう。
0852デフォルトの名無しさん
2006/03/31(金) 15:14:480853デフォルトの名無しさん
2006/03/31(金) 15:18:080854デフォルトの名無しさん
2006/03/31(金) 15:22:400855デフォルトの名無しさん
2006/03/31(金) 15:31:31どうせなら対策してるに決まってるだろアホといってやれよ。
0856デフォルトの名無しさん
2006/03/31(金) 17:04:130857デフォルトの名無しさん
2006/03/31(金) 17:09:37母親は「男の人と女の人が仲直りするおまじないよ」と答えた。
その日の夜、両親がケンカした。俺は
「ケンカやめてセックスしなよ、セックスセックス!」と止めに入ったら
父親からボコられた。
0858デフォルトの名無しさん
2006/03/31(金) 17:16:16・ソフト作成
他にありますか?
0859819
2006/03/31(金) 17:23:18サイトに書いてある通り、bcc32 -W test.c としてコンパイルしても
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.c:
警告 W8057 test.c 9: パラメータ 'hInstance' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'hPrevInstance' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'lpCmdLine' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'nCmdShow' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
このようなエラーが出てコンパイルができません。何か問題がある場所を指摘して頂けないでしょうか?お願いします。
0860デフォルトの名無しさん
2006/03/31(金) 17:24:550861デフォルトの名無しさん
2006/03/31(金) 17:37:43同じくらいってことはないよ。
0862デフォルトの名無しさん
2006/03/31(金) 18:05:170863デフォルトの名無しさん
2006/03/31(金) 18:11:10注意深く使えば問題は回避可能なんだが、あまりおすすめしたくない関数だ。
0864デフォルトの名無しさん
2006/03/31(金) 18:12:14C言語で動く工業用ロボットを作った場合ハードウェアの作成も可能になります。
0865デフォルトの名無しさん
2006/03/31(金) 18:14:020866デフォルトの名無しさん
2006/03/31(金) 18:24:40いちいちfileopenしなきゃいけないのでしょうか><?
0867デフォルトの名無しさん
2006/03/31(金) 18:38:02移植性がある方法だとfopenするしかないな
0868デフォルトの名無しさん
2006/03/31(金) 18:39:43つかいこなせばscanfもいいって言うヤツがいるけど、
同様のことがもっと楽にできるのに、そんなことをする
必要があるのかって感じ。
scanfの仕様に精通したって、なんか応用きくわけでもないし。
0869デフォルトの名無しさん
2006/03/31(金) 18:47:02移植性のある方法って?
0870デフォルトの名無しさん
2006/03/31(金) 18:47:01ファイルサイズという概念自体が曖昧なので、環境依存しない方法では厳密には無理。
#よくあるfseek(SEEK_END)+ftell()も必ずしもサイズが得られる保証はないし。
0871デフォルトの名無しさん
2006/03/31(金) 18:48:340872デフォルトの名無しさん
2006/03/31(金) 18:49:29システムコールなりWin32API呼べ。
0873デフォルトの名無しさん
2006/03/31(金) 19:03:56じゃ、移植性のない方法を使ったほうがいいな。
0874デフォルトの名無しさん
2006/03/31(金) 19:09:35その値が指定した値以上になったときに
何らかの関数を実行するプログラムの
デバックを行っているのですが、
カウンターがオーバーフローした時の
対処法がよく分かりません。
yahooやgooleで「GetTickCount オーバフロー」などと
検索したのですが、符号なしなら差をとる以外、効果的な
対処法が見つかりませんでした。
カウンターをインクリメントしている時の対処法を教えて
ほしいです
なお、関数を呼び出しているときの処理の流れは以下のとおりです
(ほかの人が書いたソースなので、ソースを載せるのはできるだけ
避けたいです。勝手に公開すると、後でいろいろと問題になりま
すので)
---------------------------------------
1.ヒープから最も低い値(tick)取り出す
ただし、0xF80000以上なら最大値を取り出す。
2.tickが指定したtick以上なら関数実行する。
そうでないならループから抜ける
3.1に戻る
0875デフォルトの名無しさん
2006/03/31(金) 19:17:26ただしそのチェック間隔が十分長いと
カウンタ値: 1999999 <- ここでチェック
カウンタ値オーバーフロー
さらに進んで: 2000000 <- ここでチェック
となって見た目オーバーフローしてないように見えてしまう。
つうか別のAPI探すなりlong longでも使っとけ
0876デフォルトの名無しさん
2006/03/31(金) 19:22:270877デフォルトの名無しさん
2006/03/31(金) 19:25:28デバッグというけど、オーバーフローがバグの原因だってのも嘘くさいな
0878デフォルトの名無しさん
2006/03/31(金) 19:32:03stat() は?
0879デフォルトの名無しさん
2006/03/31(金) 19:39:32それ同等のレベルのプログラムのソースコードでも構いません。
0880デフォルトの名無しさん
2006/03/31(金) 19:42:13業務で使われている、オープンソースのやつじゃだめなの?
0881デフォルトの名無しさん
2006/03/31(金) 19:44:150882デフォルトの名無しさん
2006/03/31(金) 19:52:300883デフォルトの名無しさん
2006/03/31(金) 19:53:290884デフォルトの名無しさん
2006/03/31(金) 19:56:58そんなものはずかしくて人に見せられません。
0885デフォルトの名無しさん
2006/03/31(金) 19:58:230886デフォルトの名無しさん
2006/03/31(金) 20:04:07それともvectorみたいにまとめてあるんでしょうか
グーグルで検索しても見つけられませんでした。
0887デフォルトの名無しさん
2006/03/31(金) 20:07:09確かに・・・
QueryPerfomanceCounterとかを使ったほうが楽そうですね。
少なくとも通常の稼働時間内ではオーバーフローすることはなさそうですし。
できることなら、それを使いたいのですが・・・
いつかはオーバフローするわけですし、できたら、その時の対処法を教えて
いただけるとありがたいです。
>>877
ソースコードが理解できてない・・・
そんなバカな・・・
といいたいのですが、なんかうまく説明できないので、読み直してきます。
0888デフォルトの名無しさん
2006/03/31(金) 20:09:06>>875
>>877
わざわざ答えてくださりありがとうございました。
なんかうまく説明できないので、もう一度読み直してきます。
0889デフォルトの名無しさん
2006/03/31(金) 20:13:42どっかのエロゲーでライセンス引っかかって
おーぷんおやつがたたはず。
0890デフォルトの名無しさん
2006/03/31(金) 20:14:400891デフォルトの名無しさん
2006/03/31(金) 20:15:270892デフォルトの名無しさん
2006/03/31(金) 20:16:250893デフォルトの名無しさん
2006/03/31(金) 20:25:05いいよ。一部でいいよね。
////////////////////////////////////////////////////////////////
/// \summary 日時文字列変換
/// \param date 対象時刻
/// \return 変換済み文字列
/// \warning 内部静的領域を返すので取扱いに注意
//
const char * strDate(time_t date)
{
static char buf[20];
struct tm * ptm = localtime(& date);
strftime(buf, sizeof(buf), "%Y/%m/%d %H:%M:%S", ptm);
return buf;
}
0894デフォルトの名無しさん
2006/03/31(金) 20:29:11横からでスマンがそれってDoxygen用のコメントだっけ?
0895デフォルトの名無しさん
2006/03/31(金) 20:41:22制度の問題じゃないんだったら、普通に時計を使えば?
0896デフォルトの名無しさん
2006/03/31(金) 20:49:45GetSystemTime()のことですか?
ちょっと今は試せる状況にないので、改めて質問し終えたら、
試してみます。
わざわざ、答えてくださりありがとうございます。
0897デフォルトの名無しさん
2006/03/31(金) 20:52:32★Quake2のソースで勉強するぞ!!★
http://pc8.2ch.net/test/read.cgi/gamedev/1010658288/
HalfLife2のソースコードをみんなで解析するスレ
http://pc8.2ch.net/test/read.cgi/gamedev/1065328371/
GamDevPukiWiki - ToHeart2ほかAquaPlus/LeafのGPLゲーをいじるスレ
http://gamdev.org/w/?%5B%5BToHeart2%A4%DB%A4%ABAquaPlus%2FLeaf%A4%CEGPL%A5%B2%A1%BC%A4%F2%A4%A4%A4%B8%A4%EB%A5%B9%A5%EC%5D%5D
0898デフォルトの名無しさん
2006/03/31(金) 21:03:24http://www.justsystem.co.jp/ark/dev/
0899デフォルトの名無しさん
2006/03/31(金) 21:23:11ほかの人が書いた、一定間隔ごとに任意の関数を実行するプログラムを調べていたのですが、
49.7日毎にタイマーがうまく動作しなくなることに気づきました。
そのバグの原因はGetTickCounter()の返り値がオーバーフローすることにあるというのは分かったのですが、
下手に差をとると、ほかの部分も変更しなくていけなくなってしまいます。
Googleなどでほかの方法を探そうとしたのですが、差をとる以外の方法は見つかりませんでした。
オーバーフローを検出したら、どういう風に処理したらいいか、
知っている人がいたら教えてほしいです。
なお、処理の流れは以下のとおりです。
(勝手に載せるとまずいので載せることはちょっと難しいです)
前処理
tickにGetTickCount()の値 + 任意の間隔。funcに任意の関数へのポインター。
intervalに任意の間隔を代入する
メインの処理
1.GetTickCount()の値をnowに代入する
2.now > tickなら、任意の関数を実行し、
そうでなかったら、sleep()で一定時間待機した後、1へ戻る
3.now と tick の差が1000ms以上なら、
tickにnowとintervalの和を代入する。
その差が1000msより少ないなら、tickにintervalを足す
ごめんなさい。ソースコードを読みなしたのですが、
いくら考えてもこういう風にしか説明ができませんでした。
分かりにくくて申し訳ないです。
0900デフォルトの名無しさん
2006/03/31(金) 21:38:07精度が問題になるような処理じゃなかったら、time()を使えば、2038年までは使える。
0901デフォルトの名無しさん
2006/03/31(金) 21:48:360902デフォルトの名無しさん
2006/03/31(金) 22:06:500903デフォルトの名無しさん
2006/03/31(金) 22:18:510904879
2006/03/31(金) 22:19:10例えるとして、どういったプログラムが作れればPGとして業務遂行ができると思われますか?
0905デフォルトの名無しさん
2006/03/31(金) 22:19:25{
DWORD executeTime=GetTickCount() + interval;
while(1){
now = GetTickCount();
if( now < executeTime ){
Sleep(100);
continue;
}
func();
if( now > executeTime + 1000 ){
executeTime = now;
}
executeTime += interval;
}
}
こんな感じ?
0906デフォルトの名無しさん
2006/03/31(金) 22:21:53WaitableTimerを使え。それとそんなクソなロジックを作ったやつは切れ。
0907デフォルトの名無しさん
2006/03/31(金) 22:27:53マ版逝け
0908デフォルトの名無しさん
2006/03/31(金) 22:29:37とても衝撃を受けたのですが、それが一般的なのでしょうか?
ゲーム系のプログラマの知り合い数人に聞いたりしたのですが 「 i 」を使うという答えでした。
ビジネス系とか環境や地方によっては使わない場合などあるのでしょうか?
0909デフォルトの名無しさん
2006/03/31(金) 22:32:07そういうどうでもいい所に異常なほどのこだわりを持ってこそfj上級者になれるのだ。
0910デフォルトの名無しさん
2006/03/31(金) 22:32:21会社のルールで決まってたりする
iLoopCounterとか、キモイ名前を付けなきゃいけなくて泣きそうになるときもある。
0911デフォルトの名無しさん
2006/03/31(金) 22:33:35というだけならあんまり変数名考えずにiとすることも多いだろう
特殊な場合とかはわかりやすい変数名考えたほうがいいけど
0912デフォルトの名無しさん
2006/03/31(金) 22:34:360913デフォルトの名無しさん
2006/03/31(金) 22:34:390914デフォルトの名無しさん
2006/03/31(金) 22:35:11forに i を使うのは最も一般的だから、そんなこと気にする必要は無い。
910のような理由さえなければ i を使っていて全然問題ない。
0915デフォルトの名無しさん
2006/03/31(金) 22:35:54tick = GetTickCount() + interval;
while(1) {
int diff;
now = GetTickCount();
diff = now - tick;
if(diff > 0) {
func();
if(diff >= 1000) {
tick = now;
}
tick += interval;
} else {
sleep(timeSleep);
}
}
now - tick がオーバーフローするような事態まではフォローしてないが、
それは 25 日ほど func でフリーズした事に相当する。
0916デフォルトの名無しさん
2006/03/31(金) 22:41:17LinuxとかApacheとかMySQLとか、なんでもいいけど有名なソフトのソースに
grep -w i とかしてみ。
0917デフォルトの名無しさん
2006/03/31(金) 23:08:07頑張ってC言語を学んでいるものです。
まだ初心者です。
参考書を読んで勉強してるのですが、
以下の問題が解けません。
どなたかご教授下さい。
--
二つの整数値を読み込んで、それらの値の差が10以下であれば、
「それらの差は10以下です。」と、
そうでなければ、「それらの差は11以上です。」
と表示するプログラムを作成せよ。
論理OR演算子を使うこと。
--
一応書いてみたコード貼ります。
0918908
2006/03/31(金) 23:08:46「for文」 の添字に「 i 」を使うのは入門書レベルって自信満々で言うものだから
あまりにも気になってしまい、こんな質問してしまいました。
>>916
> LinuxとかApacheとかMySQLとか、なんでもいいけど有名なソフトのソースに
こういう手がありましたねw
0919デフォルトの名無しさん
2006/03/31(金) 23:08:47int main(void)
{
int a, b;
puts("二つの整数を入力してください。");
printf("整数A:");scanf("%d", &a);
printf("整数B:");scanf("%d", &b);
if((a - b) <= 10 || (a - b) >= -10)puts("それらの差は10以下です。");
elseputs("それらの差は11以上です。");
return 0;
}
こんな感じです。論理OR演算子使わなければ簡単なのですが…
0920デフォルトの名無しさん
2006/03/31(金) 23:11:36if((a - b) > 10 || (a - b) < -10)puts("それらの差は11以上です。");
else puts("それらの差は10以下です。");
0921デフォルトの名無しさん
2006/03/31(金) 23:15:24おお!早速書き直して実行してみたら成功しました!
ありがとうございました。
一つのことに捕らわれると他のことが見えなくなる性格って
プログラミングにはあまり向きませんね…
0922デフォルトの名無しさん
2006/03/31(金) 23:18:410923デフォルトの名無しさん
2006/03/31(金) 23:18:46経験積めばいいだけだから努力汁
天才プログラマーにはなれんかもしれんが
0924デフォルトの名無しさん
2006/03/31(金) 23:37:56| 次でボケて! |
|______|
`∧∧ ‖
(゚д゚)‖
/ づΦ
0925デフォルトの名無しさん
2006/03/32(土) 00:19:280926デフォルトの名無しさん
2006/03/32(土) 04:19:320927デフォルトの名無しさん
2006/03/32(土) 04:21:01わろた
今年はそうきたか…
0928デフォルトの名無しさん
2006/03/32(土) 08:28:47はい。そんな感じです。
実際はスリープの代わりに、executeTime-nowで待つ時間を算出し、
パケットを送受信する関数でその時間だけ待機してますが・・・
まあ、瑣末な事なので気にしない。気にしない。
>>906
WaitableTimer・・・
Windowsで言えばWaitFor何とかあたりでしょうか?
Linuxで同じようなものがあるかどうかはしりませんが・・・
探してみます。
>>915
ごめんなさい。
その方法はすでに元のソースで使われている方法はまさにそれでした。
(now > tick と now - tick > 0はほぼ等価なので、now > tickで
書いてましたが、元のソースで使われている方法で書くべきでした。
かき回してごめなさい)
0929デフォルトの名無しさん
2006/03/32(土) 09:43:230930デフォルトの名無しさん
2006/03/32(土) 10:36:270931デフォルトの名無しさん
2006/03/32(土) 13:43:26あ、確かに・・・
WaitForではなく、そのものずばりWaitableTimerと名前のつくAPIがいくつかありました。
なんか恥ずかしいです・・・
0932デフォルトの名無しさん
2006/03/32(土) 14:23:18#include <tlhelp32.h>
void main(){
printf("test");
}
// ------------------------------------------------ //
これをBCC使ってコンパイルしようとすると、
tlhelp32.h関連のエラーが沢山でるんですけどどうしてでしょう。
0933デフォルトの名無しさん
2006/03/32(土) 14:27:240934932続き
2006/03/32(土) 14:31:39エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 64: 宣言に ; がない
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 65: 宣言に ; がない
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 66: 宣言に ; がない
エラー E2238 c:\Borland\Bcc55\include\tlhelp32.h 67: 'DWORD' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\tlhelp32.h 65: 一つ前の 'DWORD' の定義位置
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 67: 宣言に ; がない
エラー E2141 c:\Borland\Bcc55\include\tlhelp32.h 78: 宣言の構文エラー
エラー E2141 c:\Borland\Bcc55\include\tlhelp32.h 85: 宣言の構文エラー
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 93: 宣言に ; がない
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 94: 宣言に ; がない
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 95: 宣言に ; がない
エラー E2238 c:\Borland\Bcc55\include\tlhelp32.h 96: 'SIZE_T' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\tlhelp32.h 93: 一つ前の 'SIZE_T' の定義位置
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 96: 宣言に ; がない
0935932続き
2006/03/32(土) 14:32:38エラー E2238 c:\Borland\Bcc55\include\tlhelp32.h 98: 'DWORD' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\tlhelp32.h 97: 一つ前の 'DWORD' の定義位置
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 98: 宣言に ; がない
エラー E2238 c:\Borland\Bcc55\include\tlhelp32.h 99: 'DWORD' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\tlhelp32.h 97: 一つ前の 'DWORD' の定義位置
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 99: 宣言に ; がない
エラー E2238 c:\Borland\Bcc55\include\tlhelp32.h 100: 'DWORD' の宣言が複数見つかった
エラー E2344 c:\Borland\Bcc55\include\tlhelp32.h 97: 一つ前の 'DWORD' の定義位置
エラー E2139 c:\Borland\Bcc55\include\tlhelp32.h 100: 宣言に ; がない
エラー E2228 c:\Borland\Bcc55\include\tlhelp32.h 100: エラーあるいは警告が多すぎる
0936デフォルトの名無しさん
2006/03/32(土) 14:41:440937デフォルトの名無しさん
2006/03/32(土) 14:47:59氏ねというからにはそれなりの理由があると思うんだけど何故?
0938デフォルトの名無しさん
2006/03/32(土) 14:49:00別なタスクで普通に参照するのっていいんでしょうか?
i=1;
とかでもPCは複数の機械語処理をしていると聞いたから
なんだかマズイ気がするんだけど。
OSとかに依存するんですかね?
初心者ですんまそ
0939デフォルトの名無しさん
2006/03/32(土) 14:49:45環境はWindowsXPのcygwinです。
configure --enable-widecの後makeしたncursesを使っています。
コンパイルはgcc test.c -lncurseswです。
"ハロー"と表示させたいのですが~Cn~C~M~A[と文字化けしてしまいします。
ただのprintf("ハロー");プログラムは正常に表示されています。
ソースは以下です。
#include <ncurses.h>
#include <string.h>
main(){
initscr();
wchar_t wc1[100];
strcpy((char *)wc1,"ハロー");
/*
addwstr(wc1);
*/
printw("%s",wc1);
refresh();
while(1){
}
}
0940デフォルトの名無しさん
2006/03/32(土) 14:58:56基本的にはタスクとかスレッドとかそういう概念が環境依存だから
言語として絶対に大丈夫と保証されてる方法はない.
ある程度過般性のあるやり方は volatile 指定すること.
ISO/IEC 9899 6.7.3:
An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects.
0941デフォルトの名無しさん
2006/03/32(土) 15:04:30スレ違い
0942デフォルトの名無しさん
2006/03/32(土) 15:12:12wchar_tとcharは全然別の型だろ。
0943939(ncursesの質問)
2006/03/32(土) 15:34:20ロケール設定した上で、mbstowcs使いましたがやはり~Cn~C~M~A[と文字化けします。ソースは以下の通り。
#include <ncurses.h>
#include <locale.h>
#include <stdlib.h>
main(){
setlocale(LC_ALL, "");
initscr();
wchar_t wc1[100];
mbstowcs(wc1, "ハロー", 10);
addwstr(wc1);
refresh();
while(1){
}
}
0944デフォルトの名無しさん
2006/03/32(土) 16:33:22PGに必要なものはコミュニケーション能力だけです。
以上。
と、人間関係嫌いな俺が言ってみるテスト。
0945デフォルトの名無しさん
2006/03/32(土) 16:43:510946デフォルトの名無しさん
2006/03/32(土) 17:05:06MSDNでCreateWaitableTimerとかSetWaitableTimerの使い方を調べてみたのですが、
まさに実行したいこと、そのものという感じがしてきました。
差をとる以外にオーバーフローの対処法があるのかないのかということも気になるのですが、
とりあえずこの方法を試してみることにします。
非常に分かりにくい説明な上、重要なことが書いてなかったという最悪の質問の仕方にも
かかわらず、わざわざ答えてくださりありがとうございました。
0947デフォルトの名無しさん
2006/03/32(土) 18:55:52ちなみにその例ならワイド文字列リテラル(L"ハロー"のように)が使える。
0948デフォルトの名無しさん
2006/03/32(土) 21:58:54unsigned intの違いって何ですか?
0949デフォルトの名無しさん
2006/03/32(土) 22:00:200950デフォルトの名無しさん
2006/03/32(土) 22:27:16スレ違い、ここで聞け
http://pc8.2ch.net/test/read.cgi/tech/1141400056/
0951デフォルトの名無しさん
2006/03/32(土) 23:07:44http://pc8.2ch.net/test/read.cgi/tech/1143900407/
0952デフォルトの名無しさん
2006/04/02(日) 02:26:33自分は
・Tera Pad
・BCC
です。
0953デフォルトの名無しさん
2006/04/02(日) 03:45:13gcc
0954デフォルトの名無しさん
2006/04/02(日) 04:09:30BCB6
0955デフォルトの名無しさん
2006/04/02(日) 04:27:15gcc
0956デフォルトの名無しさん
2006/04/02(日) 04:33:21コンパイラは基本はgccで、日本語周りで問題出たら
iccやvc2k5のコマンドライン使ってる
0957デフォルトの名無しさん
2006/04/02(日) 08:32:29vi
vim
emacs
meadow
xyzzy
peggy
桜エディタ
VisualStudio
コンパイラ
cc
gcc
vc
0958デフォルトの名無しさん
2006/04/02(日) 09:47:13xyzzy
コンパイラ
SHC
0959デフォルトの名無しさん
2006/04/02(日) 12:27:19C Machine
0960デフォルトの名無しさん
2006/04/02(日) 13:28:410961デフォルトの名無しさん
2006/04/02(日) 13:40:540962デフォルトの名無しさん
2006/04/02(日) 14:53:04gcc + Emacs
0963デフォルトの名無しさん
2006/04/02(日) 15:03:21俺はいつもこれで書いてる
軽くてお勧め
0964デフォルトの名無しさん
2006/04/02(日) 20:23:380965デフォルトの名無しさん
2006/04/02(日) 20:51:150966デフォルトの名無しさん
2006/04/02(日) 20:55:140967デフォルトの名無しさん
2006/04/02(日) 21:00:160968デフォルトの名無しさん
2006/04/02(日) 21:03:220969デフォルトの名無しさん
2006/04/02(日) 21:04:230970デフォルトの名無しさん
2006/04/02(日) 21:06:420971デフォルトの名無しさん
2006/04/02(日) 21:06:570972デフォルトの名無しさん
2006/04/02(日) 21:10:290973デフォルトの名無しさん
2006/04/03(月) 03:44:14int kan(){
if( hoge&&hogehoge) {
return buf[0];
//省略
}
: error C2018: 文字 '0x81' は認識できません。
return buf[0];の部分でエラーが出るのですが、助けて下さい。
グローバル配列の値を関数が返すことはできるのでしょうか?
0974デフォルトの名無しさん
2006/04/03(月) 03:47:35エラー名でぐぐれ
0975デフォルトの名無しさん
2006/04/03(月) 03:53:29int buf[200];
int kan(){
int z ;
if( hoge&&hogehoge) {
z = buf[0];
return z;
//省略
}
0976デフォルトの名無しさん
2006/04/03(月) 03:55:140977デフォルトの名無しさん
2006/04/03(月) 03:55:19エラー名でぐぐれ
0978デフォルトの名無しさん
2006/04/03(月) 03:56:32http://www.geocities.jp/chiakifujimon/pghint/c.html
0979939(ncursesで日本語表示)
2006/04/03(月) 10:38:080980デフォルトの名無しさん
2006/04/03(月) 14:18:37main()で表示させていたprintf文を消したいのですが、
画面を移動するときに、画面を初期化する方法を教えてください。
環境はANSI Cです。
main()
--------------------------------
あいうえお
--------------------------------
↓
sub()
--------------------------------
あいうえお ←これを消したい。
かきくけこ
--------------------------------
よろしくお願いします。
0981デフォルトの名無しさん
2006/04/03(月) 14:24:000982デフォルトの名無しさん
2006/04/03(月) 15:40:530983デフォルトの名無しさん
2006/04/03(月) 20:17:38環境によって違うが、\r で何とかなる端末は多いかも知れない。
0984初心者
2006/04/03(月) 23:00:32>>980
system("cls");
0985デフォルトの名無しさん
2006/04/03(月) 23:02:42UNIX系だったらどうするんだ
0986初心者
2006/04/03(月) 23:22:460987デフォルトの名無しさん
2006/04/04(火) 00:03:580988デフォルトの名無しさん
2006/04/04(火) 00:09:04このスレ的には、無理。
環境に依存する方法しかない。
無難なところで、printf("\r%79s\r", "");とでもするとか。
0990デフォルトの名無しさん
2006/04/04(火) 01:39:32「環境依存しないC言語なら俺に聞け! Part 125」
にしてくれ。
このスレタイじゃ、質問者と回答者で食い違いが出るのも当たり前だろ。
環境依存しようがしまいがC言語はC言語だから
ここで質問しても桶になってしまう。
0991デフォルトの名無しさん
2006/04/04(火) 02:07:15何も問題が無い。
0992デフォルトの名無しさん
2006/04/04(火) 02:57:11お前みたいなのがいるから
質問者と回答者の最初のやりとりが必ず
「標準Cじゃできない、環境依存スレ逝け」になるんだよ。
0993デフォルトの名無しさん
2006/04/04(火) 03:07:390994デフォルトの名無しさん
2006/04/04(火) 03:14:140995デフォルトの名無しさん
2006/04/04(火) 03:25:300996デフォルトの名無しさん
2006/04/04(火) 04:01:130997デフォルトの名無しさん
2006/04/04(火) 04:06:220998デフォルトの名無しさん
2006/04/04(火) 06:38:53clearにすればいいだけ
0999デフォルトの名無しさん
2006/04/04(火) 06:44:54てゆーか、近隣諸国見てみろよ
十分裕福な国だぜ
日本人ならそろそろ立ち上がれ
いつまでもニートと呼ばれてもしかたがないだろ
1000デフォルトの名無しさん
2006/04/04(火) 06:49:2910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。