C言語なら、オレに聞け! <3>
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001ジョブス2世
NGNGC言語しか知らないがC言語なら誰にも負けない...
C FAQに載ってる質問すると煽るぞゴルァ!
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/C-faq/C-faq-00.html
前スレ、関連スレは >>2 へ
0002ジョブス2世
NGNG関連スレ
・( ゚Д゚)ノ ギコ猫のプログラム相談室part5
http://piza.2ch.net/test/read.cgi?bbs=tech&key=980521175
・お兄ちゃんの宿題、私が答えるよ
http://piza.2ch.net/test/read.cgi?bbs=tech&key=982853418
・VisualC++相談室 2
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981630730
・C++Builder相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=969458279
・C++相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=980175292
・C#相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=977112364
・ネットワークプログラミング相談室
http://piza.2ch.net/test/read.cgi?bbs=tech&key=970344582
過去スレ
・C言語なら、オレに聞け!
http://piza.2ch.net/tech/kako/967/967985026.html
・C言語なら、オレに聞け! <2>
http://piza.2ch.net/test/read.cgi?bbs=tech&key=979529893
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005C言語見習い
NGNG#include<string.h>
struct cell{
double num;
struct cell *next;}
この宣言に意味がよく分かりません。
どうかご教授ください。
0006デフォルトの名無しさん
NGNG>この宣言に意味がよく分かりません。
質問の意味がよく分かりません。
0007>6
NGNGstruct cell *next; /*構造体の自己参照*/
初心者が、あくまでも*参照*であって、実体ではないことに
気付くのはいつの頃だろうか。
0008名無し
NGNG0009C言語見習い
NGNGすみません。どう質問すればいいのかも分かりませんでした。
その通りstruct cell *next; この部分です。
構造体の自己参照で調べてみたいと思います。
ありがとうございました。
0010デフォルトの名無しさん
NGNGそんなに参照って負担になるかなあ?
俺は抵抗を覚えたり理解できなかったりした記憶が
全くないんだけど。
というか、さくっと理解できる人とそうでない人が
色々いるのかなあ。
いわゆる本来の意味での頭のよさとは多分別だ(w
0012C言語見習い
NGNGヒントだけでもいただけないでしょうか?
0013デフォルトの名無しさん
NGNG参照(ポインタ)==住所かな。
nullポインタ==該当宛先なし。
cell a;//値
cell* pb;//ポインタ
pb = &a;//aのメモリ上の住所をpbに書き込む
>>5
は、単方向リンクリスト構造の各要素の為の宣言。
構造体のなかに、「次の構造体の住所」を書いておくところがあるということ。
ここに「次の構造体の住所」を書く。
次の構造体のその場所に、「次の次の構造体の住所」を書く。
…
で、数珠つなぎのデータの列(配列とはちょっと違っていて、要素はメモリ上の
あちこちにある)ができるというわけさね。それが何の意味があるのかは、勉強せい。
00147>12
NGNGでも指で指せる対象は他人という場合もありえる。
typedef struct 人 *誰か;
struct 人 {
誰か 指で指す; /* 自分や他人 */
};
test() {
struct 人 わたし;
struct 人 あなた;
わたし.指で指す = &あなた; /* わたしはあなたを指で指す */
}
0015デフォルトの名無しさん
NGNGint i;
cell a[N+1];
cell* pcell;
for(i=0;i<N;i++) cell[i].next = &cell[i+1];
cell[i]next. = NULL;
//芋づる式にnumを参照この場合適当な値だけどな
for(pcell = &a[0];ipcell != NULL;pcell = pcell->next){
pcell->num;
}
普通はヒープを使うがな。動的確保が分からなければそれを
調べる事だ。
00167>
NGNGreturn どなたか->指で指す;
}
test2(誰か わたし) {
誰か 誰でしょう = どなたかが指してる相手は?(わたし);
if (誰でしょう == &あなた)
printf("わたしはあなたを指しています。\n");
else
printf("わたしはあなた以外を指しています。\n");
}
0017デフォルトの名無しさん
NGNGtypedef float foo[3];
のような組み込み配列で作った型をコンテナとしてSTLで使おうと
思ったのですが、
typedef std::vector<foo> bar;
という宣言を行うと、コンパイルエラーになってしまいます。
これはどのような理由で、どのようにすれば使えるようになるの
でしょうか?
0018デフォルトの名無しさん
NGNGWWWのリンクが、一番似てるぞ。
#おかげで説明しやすくなったよ今は…しみじみ…
structの宣言はwww頁の雛型みたいなもんだ。
便利なHTMLエディタ使ってるみたいなイメージな。
実行時にその変数を作ったりnewで作ったりするのは
雛形から自分の頁を1つづつ作るのと同じだ。
*nextっていうメンバは、「次の頁へ」のリンクだ。
で、実際に次の頁ってどの頁なのよ?という話は、
実行時つまり雛型から頁書き起こした時に決めるわけな。
0019デフォルトの名無しさん
NGNGclass foo{ flaot value[3]; }
vector<foo> bar;
とか、valueって名前が出てきちゃうのがウザイね
0020
NGNGclass foo{
float value[3];
float operator[](int i){return value[i];}
}
これでOKか
0021デフォルトの名無しさん
NGNGすまん&が抜けた。鬱だ氏脳
0022デフォルトの名無しさん
NGNGそのコード、私の環境では通りました。
VC++をお使いなら、最新のサービスパックを当てましょう。
0023>20
NGNG0024デフォルトの名無しさん
NGNGコンストラクタとデストラクタが定義されていないから駄目なんじゃ。
classやらstructで包むしかないね。
0025デフォルトの名無しさん
NGNGtemplateの機能が標準に追随できてない古いコンパイラだとそうするしかないですね。
あと、vectorに格納するならoperator<とoperator==を定義してやる必要があります。
0026名無し
NGNG0027デフォルトの名無しさん
NGNGvector<float[3]> hoge;
とかでOK?
0028デフォルトの名無しさん
NGNG002925
NGNGvectorはそんな必要ないですね。逝ってきます……
0030デフォルトの名無しさん
NGNG今の規格だと std::vector<T> って T が左辺値になれない型でも大丈夫なんですか?
昔 vector の実装を読んだときには
T __x_copy = __x
みたいなコードがあって、T が左辺値になれないとダメだった覚えが。
手元の g++ (2.95.2), Visual C++ 6.0, Borland C++ Compiler 5.5 で試してみましたが、
vector<float[3]> hoge; だと construct はできるけど push_back できませぬ。
0031ななしさん
NGNG0032学生
NGNGtest1.cってファイルがこんな感じ
#include <stdio.h>
struct db{
char name[10];
};
int data_in(struct db data[], char *in_name, int index, int max);
int main()
{
中略・・・
index = data_in(data, in_name, index, 5);
・・・
}
===============================
test2.cはこんな感じ
#include <stdio.h>
int data_in(struct db data[], char *in_name, int index, int max)
{
中略
}
で、bcc32 -wc test.c test2.c
ってコンパイルするとtest2.cで「未定義の構造体 'db'」
とエラーに成ります。
構造体を大域で宣言してるけど、他のファイルからじゃスコープ外
ってことなんですか?
アンポンタンなことやってたらごめんなさい。
0033学生
NGNGで、bcc32 -wc test1.c test2.c
ってコンパイルするとtest2.cで「未定義の構造体 'db'」
とエラーに成ります。
構造体を大域で宣言してるけど、他のファイルからじゃスコープ外
ってことなんですか?
アンポンタンなことやってたらごめんなさい。
0034デフォルトの名無しさん
NGNG定義と宣言の違いをよ〜っく勉強せえ。K&Rに書いてあるよ。
0035学生
NGNGでも、もうチッと教えて〜。
ヘッターファイルにプロトタイプ宣言すれはええってことすっか?
0036デフォルトの名無しさん
NGNGは
bcc32 -wc test1.c
bcc32 -wc test2.c
と2回に分けてコンパイルしたのと同じことだろ。
bcc32 -wc test2.c
だけコンパイルすると未定義といわれるのは当然では?
0037デフォルトの名無しさん
NGNGclockでは駄目だった。どう作ればいいのでしょう?
0038デフォルトの名無しさん
NGNG時間をミリ秒単位で返すので、初期化部分に書いておくと
ほとんどの場合同じ値を返します。
APIのGetTickCount()やQueryPerformanceCounter()のどちらか
を使うといいと思います。ちなみに95系だとGetTickCount()
は10ミリ秒単位の精度しかなかったと思います。
QueryPerformanceCounter()は64ビットの値を返すので、
上位、下位の32ビットでXORとるのがいいと思います。
POSIXなら、gettimeofday()システムコールですね。
0040学生
NGNGとりあえず、後はK&R見て質問しますね。
僕が思ったのは、bcc32のオプションで解決する方法とか
有るのかと甘い考えもしてましたが、こっちがアンポンタンっすね。
0041デフォルトの名無しさん
NGNGどこかで狂ってしまいました。
教えて下さい。
typedef struct{
int a;
}b;
void main(void)
{
b p[N];
int i;
for(i=0;i<N;i++){
scanf("%d",&(p[i].a));
}
sort(p[i].a);
for(i=0;i<N;i++){
printf("%4d\n",p[i].a);
}
void swap(int* a, int* b)
{
int x;
x = *a;
*a = *b;
*b = x;
}
void sort(b p[])
{
int i = 0;
int j = 0;
for(i = 0; i < 3; i++)
{
for(j = i+1; j < 3; j++)
{
if(p[i].a < p[j].a)
{
swap(&(p[i].a), &(p[j].a));
}
}
}
}
0042デフォルトの名無しさん
NGNG・#define N 3
・sort(p[i].a); → sort(p);
・mainの閉じカッコ
ちなみにコンパイル通ったの?
004341
NGNG解決できました!ありがとうございます。
sort(p[i].a); → sort(p);
にしたら、直ったのですが、意味を理解できません(^^;
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGprint/f sin(0)
って打つと0にならないのは何で?
0046デフォルトの名無しさん
NGNGsort 関数は b (←何でこんな名前を付ける?) のポインタを
受け取るんだから、当然 b のポインタを渡さなきゃダメでしょ。
0047デフォルトの名無しさん
NGNGまじ??
0048850
NGNG>>> for(i=0; i<N; i++)
>>> printf(" %d %d\n",i,a[i]);
>>> sort(point);
>>> for(i=0; i<N; i++)
>>> printf(" %d %d\n",i,a[i]);
>>> sort(昇順に並び替え)した時に、
>>> a[i]の値は昇順になるのですが、iの値もそれと対比させて、
>>> 出力するにはどうすればよいのでしょうか?
>> int j[N] ;
>> for(i=0;i<N;i++){
>> j[i]=i;
>> printf(" %d %d\n",i,a[i]);}
>> sort(point);
>> for(i=0;i<N;i++)
>> printf(" %d %d\n",j[i],a[j[i]]);
>> ※sort(a[j[i]]の結果で、jをsortする)
> j[i]=i;
> って事は、
> printf(" %d %d\n",i,a[i]);}と
> printf(" %d %d\n",j[i],a[j[i]]);
> は、同じ意味になるのではないでしょうか?
iの値もそれと対比させて、出力すると言う事は、
同じ意味になって良いと思いますが、違いますか?
もしそうならば、あとは、全体の出力する順番を変えればOK。
j[N]をsortすれば、その順番がsortされるので、
その結果、元の順番がj[N]に残り、a[j[N]]は、sortされています。
またまた分かり辛いですが、もう少し頑張ってみて下さい。
0049デフォルトの名無しさん
NGNG原因不明 GDBのバグ??
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGmain(int argv, char *argc[] )
main(int argc, char *argv[] )
より一般的なのはどっち?
0052中途半端くん
NGNG(gdb) print/f sin(0)
No symbol table is loaded. Use the "file" command.
(gdb) printf sin(0)
Bad format string, missing '"'.
なんかへん
0053デフォルトの名無しさん
NGNG一般的ってそういう問題じゃないだろゴラァ
count vector
0054デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG-lmじゃないですか?
0057デフォルトの名無しさん
NGNGを_123.4567(_はスペース)
のようにするには、
%4fでいいのですか?
0058名無し
NGNG0059デフォルトの名無しさん
NGNGどうやればいいのでしょうか?
入力�@と入力�Aの各レコードでマッチング処理を行い、一致した物を抽出。
(シーケンシャルマッチ)
・マッチング処理は、 項目keyで行う ・各入力は全て項目keyでソートされている
・一致するレコードを一対とする ・入力keyにマッチしなければ、メッセージを出力
入力�@フォーマット(主key) 項目key|品目名|日付
入力�Aフォーマット 項目key|品目名|金額
出力フォーマット(結果) 項目key| 日付 |金額|品目名
*入力�@(a.txt)と入力�A(b.txt)は、既にあるファイルから読みとります。
*|は(0x7C)です。 *項目keyは、数字で4Byteです。
0060デフォルトの名無しさん
NGNGシリアライズする方法おしえて。
0061デフォルトの名無しさん
NGNG0062マジレス
NGNGパーセント(%)で表示させようとして
試みているのですが、どうもうまくいかないんです.
キャスト、floatを使ってみたのですが、
うまくいきません。
どうやれば、うまく処理できるんでしょうか
プログラマーの皆様、どうか教えてください。
お願いします。
int main (void)
{
int kazu=100;
int a=3;
float ans;
int ritu;/*%で出す変数*/
ans=(float)2/100;
printf("%1.3f\n",ans);
ritu=ans*100;
printf("%f\n",ritu);
return 0;
}
0063デフォルトの名無しさん
NGNGFILE *fp;
for........
c=getc(fp);
なぜfp++としていないのにcにはつぎつぎとファイルの値が
ほりこまれていくのですか?
0064デフォルトの名無しさん
NGNG<stdio.h> 読みなよ。
というか、なんで fp++ で次のバイトが読み出せると思ったんだい?
0065デフォルトの名無しさん
NGNGマイクロソフトのホームページでダウンロードできますか?
0066デフォルトの名無しさん
NGNGがんばれ
006763
NGNGよんでもよくわかりませんごめんなさい。
c=getc(fp);
c=getc(fp);
c=getc(fp);
なにも操作していないのになぜcの内容がかわっていくの??
006863
NGNGcdefgahkl(終わり)
getcで上記のファイル内容を読もうとしたら
改行の手前までしか読めないのです。2行目はどうすれば読める
のでしょうか。よろしくおねがいします。
0069デフォルトの名無しさん
NGNG>c=getc(fp);
>c=getc(fp);
>なにも操作していないのになぜcの内容がかわっていくの??
思いっきりgetc(fp)の結果をcに代入してるじゃん。(w
ネタなら下げてやってね。
007063
NGNGgetc(fp)とするごとに
つぎの値をとっていくとゆうことで
それはもうルールとしてきまりきったことなのですか?
0071デフォルトの名無しさん
NGNGfopenで開いたファイルは、現在の「読み・書きの位置」って情報を持ってるのね。
メモ帳のカーソル位置みたいなもの。
getc()はその読み・書き位置にある文字を返して、読み・書き位置を1つ進める関数。
だから、getc()を呼ぶたびに返る値が変わる。
ちなみに、現在の読み・書き位置を知りたければftell()、変更したければfseek()を使え。
0072デフォルトの名無しさん
NGNGだから getc() の定義を読みなよ。
007363
NGNGもしよろしければ>>68もおねがいしたいのですが
>>72
>>定義の説明に1文字読み込むとありました。だから
次に読む文字はどう指定するのかなと疑問に思っていました。
007472
NGNG定義というのはソースコードのことね。
環境依存だけど、たいていは FILE 構造体の中にバッファと、現在どこまで読んだか
の情報が格納されている。FILE 構造体と getc() 読めば全て書いてあるわけだが、
getc() はちょっと読みにくいかもしれない。
0075デフォルトの名無しさん
NGNGそんなはずはない。
'\n'が読まれることはわかってるか?
0076デフォルトの名無しさん
NGNGgetc()でも改行は読めるぞ。
getc()==0x0Aのときが改行。
0077デフォルトの名無しさん
NGNGあなたは荒らしと同じ事をしているのに気が付いてますか?
ここで基本的(Cを全く理解してない)な事を質問し続けられるのは迷惑でしかない。
C言語の本何冊か読破してから出直してください。
これはまじめな話です。
00783冊読破した人
NGNG>FILE *fp;
>for........
> c=getc(fp);
>なぜfp++としていないのにcにはつぎつぎとファイルの値が
>ほりこまれていくのですか?
これわしも疑問。原理的にどうなってるのか知りたい。
C実践プログラミングにも独習Cにも載ってなかったよ。
0079デフォルトの名無しさん
NGNGだから <stdio.h> 読んでくれよ……
0080偽善者君
NGNGstruct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
/* Macro definitions */
#define getc(_stream) (--(_stream)->_cnt >= 0 \
? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
008163
NGNGほぼ解決しました。
もっと初心者向けのスレに質問しようかなやみました。
>>77
うーん、タイトルと質問を見比べましたが嵐ほどには
ならないとおもうのですが。。嵐なら大変失礼しましたm(__)m
0082デフォルトの名無しさん
NGNGTnx.
0083デフォルトの名無しさん
NGNG…くれは、ダメ?
0084デフォルトの名無しさん
NGNGあなたは、別に荒らしじゃないぞ。
できれば、同様の質問をを初心者から受けたら親切に
答えてやってくれ。それが77を見返す正当な手段だと
思うぞ。分かりやすく答えた時が真に理解した証だ。
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG多分根本的なことを理解していないので、
わざとやってんじゃないのか?と思われてしまうんでしょう。
K&Rを頭から最後まで読んでみるのをおすすめします。
0087デフォルトの名無しさん
NGNGどの辺りがわからなくなったの?部分的なら回答する気も起きるが
それともプログラム1本全部晒せってか?
0088デフォルトの名無しさん
NGNGiskanjiを使っての0x7cを探すとこの処理。できれば、memcmpとstrcmpのどちらの
方が効率的かの指摘いただければ…。
>プログラム1本全部晒せってか?
やって見せてくれるなら有り難い。
0089!87
NGNG0090名無したん
NGNG一行に1単語が書かれたファイル「test.txt」からファイルを読み込み、それ
をソートして「tests.txt」に書き出すプログラムを作れと言われました。
読み込んでいく所までならなんとかなったのですがソートして書き出すというやり方
が分かりませんです。文字列比較ならstrcmpを使えばいいんでしょうが・・。
#include <stdio.h>
#define BUFFER_SIZE 200
void main(){
char buffer[BUFFER_SIZE];
FILE *fp;
fp = fopen("test.txt", "r");
if ( !fp ){
printf("ファイルオープンエラー\n");
return;
}
while( fgets(buffer, BUFFER_SIZE, fp) ){
printf("%s", buffer);
}
fclose(fp);
}
test.txtがこうだったら・・
osaka
hyogo
kyoto
nara
wakayama
shiga
tests.txtが
hyogo
kyoto
nara
osaka
shiga
wakayama
みたいになればいいようです。どなたかご教授お願いします。
009145
NGNGprint/f sin(0)
って打つと0にならないのは何でですか??
0092デフォルトの名無しさん
NGNGソース中に
printf("%lf\n", sin(0));
を入れてみろ、出力結果が0でない場合、以下の原因が考えられる。
・math.hがincludeされていない
・数学関係のライブラリがリンクされていない(unix系だとlibm.sl)
math.hをincludeしないでコンパイル&実行ができた上に
結果が間違っている理由は知らん(誰かのフォローを期待)
それが嫌ならC++のコンパイラを使え、宣言していない関数を使おうとすると
コンパイル時にエラーとなる。
0093デフォルトの名無しさん
NGNG#include <stdlib.h>
int main(void)
{
return system("sort test.txt > tests.txt");
}
すまん、ネタだ。
> ソートして書き出すというやり方が分かりませんです。
まず、1行しか覚えていないのが問題。
ソートをする為には全ての行を覚えておく必要がある。
> char buffer[BUFFER_SIZE];
ではなく
char buffer[MAX_LINE_SIZE][BUFFER_SIZE];
として
int i, max_line;
/* 行の読込み */
for (i = 0 fgets(buffer[i], sizeof(buffer[0]), fp) && i < MAX_LINE_SIZE; i++ )
;
max_line = i;
if(max_line == MAX_LINE_SIZE) {
printf("行が多すぎて読めん\n");
exit( -1 );
}
/* ソート */
qsort(buffer, max_line, sizeof(buffer[0]), strcmp);
/* ソートの検証 */
for (i = 0 i < max_line; i++ ){
printf("%s", buffer[i]);
}
ファイル出力は宿題だ。これぐらいは自分でヤレ。
ソート関数は自作したいのなら検索エンジンに聞け。
課題ならば「バブルソート」をキーにすれば十分だろう。
0094デフォルトの名無しさん
NGNG> 試みているのですが、どうもうまくいかないんです.
> うまくいきません。
こんな質問の仕方では煽られるか放置されるかのどちらかです。
そのコードを実行した結果、どうなった?
何が出力されるとうまくいったことになるの?
我々はあなたの書いたコードは見えてもあなたの頭の中は見えません。
> int ritu;/*%で出す変数*/
> printf("%f\n",ritu);
int型で%fは使えません。
009545
NGNGもちろん、math.hはインクルードしてます。
printf("%lf\n", sin(0));
の結果は0になります。
GDBで直接print/f sin(0)
と書くと0でない結果になってしまいます。
0096デフォルトの名無しさん
NGNG並び替えの際、構造体のポインタを引数とする関数を作成する。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGそれが理解できてたら質問なんかしないと思われ。
0099デフォルトの名無しさん
NGNGfprintf(stderr, "ゴラァ\n");
としてほしいぞ。
って初心者は混乱するだけか?
# UNIX でない人は無視してくれ。
# UNIX な人で初心者は心の中に秘めておいてくれ。
0101Take
NGNGプログラムの作り方をご存知内でしょうか。
while(1)
{
/*処理*/
/*ループ脱出*/
}
ちなみに
do
{
/*処理*/
}
while(getch() != 97) /* 97はAsciiでの 'a' */
のような処理だとgetch()関数で入力待ちになるので入力しない
時にはループを実行し続けるような処理がしたいんです。
(WindowのWinProc関数のような割り込み処理のようなもの)
どうかお願いします。
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNGマルチスレッドにすれば全部解決します。
やり方はOS依存なので自分で調べてください。
あと、'a'って書こうぜー?
0106デフォルトの名無しさん
NGNGの原因は何なんでしょう?
むむー。
0107デフォルトの名無しさん
NGNGlong aa
long bb
void (*cc)()
というものがあります。
short tmp[50]
というものがあります。
ヘッダで以下のように宣言されています
#define TMPAREA (*(PP **)&tmp[30])
tmp[32]には別の人がフラグとして情報をもたせてあります。
で、今解読しているソースで
TMPAREA->bb = 50000;
と書かれています。
コメントで /* tmp[30]にデフォルト値を設定 */ と書かれています。
これって問題なく動作するんですかねー??
0108デフォルトの名無しさん
NGNG設計した奴が目の前に居たら殴るかも
0109107
NGNG6年前から続いているシステムのソース修正を担当することになって
ソース開いて
「はあ?」
の連発ですー
0110名無しさん@お腹いっぱい。
NGNGほんとだ、0にならんね。
#include <stdio.h>
#include <math.h>
main()
{
printf("%lf\n", sin(0));
}
をコンパイルして実行すると
0.000000
と表示する。
gdb a.out してから
(gdb) br main
(gdb) run
としたところで
(gdb) print/f sin(0)
$1 = 3.34344531e-13
とでた(Linux@Intel)。
e-13だから殆ど0だけどね:D
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGif (fds[0] != STDIN_FILENO) {
dup2(fds[0], STDIN_FILENO);
close(fds[0]);
}
がさっぱり分かりません。dup2を詳しく
解説してください
switch (pid0 = fork()) {
case -1:
fprintf(stderr, "%s: cannot fork\n", argv[0]);
return -1;
case 0:
close(fds[1]);
if (fds[0] != STDIN_FILENO) {
dup2(fds[0], STDIN_FILENO);
close(fds[0]);
}
execl("/usr/local/bin/wc", "wc", "-l", NULL);
execl("/usr/bin/wc", "wc", "-l", NULL);
execl("/bin/wc", "wc", "-l", NULL);
_exit(-1);
}
switch (pid1 = fork()) {
case -1:
fprintf(stderr, "%s: cannot fork\n", argv[0]);
return -1;
case 0:
close(fds[0]);
if (fds[1] != STDOUT_FILENO) {
dup2(fds[1], STDOUT_FILENO);
close(fds[1]);
}
execl("/usr/local/bin/ls", "ls", "-1", NULL);
execl("/usr/bin/ls", "ls", "-1", NULL);
execl("/bin/ls", "ls", "-1", NULL);
_exit(-1);
}
0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG> dup2を詳しく解説してください
man dup2
名前
dup2 - duplicate an open file descriptor
形式
#include <unistd.h>
int dup2(int fildes, int fildes2);
DESCRIPTION
The dup2 function causes the file descriptor fildes2 to
refer to the same file as fildes. The fildes argument is a
file descriptor referring to an open file, and fildes2 is a
non-negative integer less than the current value for the
maximum number of open file descriptors allowed the calling
process. See getrlimit(2). If fildes2 already refers to an
open file, not fildes, it is closed first. If fildes2 refers
to fildes, or if fildes is not a valid open file descriptor,
fildes2 will not be closed first.
The dup2 function is equivalent to fcntl(fildes, F_DUP2FD,
fildes2).)
0115デフォルトの名無しさん
NGNGttp://www.jp.freebsd.org/man-jp/search.html
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG>どうやればいいのでしょう?
自殺でもすればー?
0119デフォルトの名無しさん
NGNG>処理が大きくなって途中で分からなくなり、ダメでした。
分割統治法を学び給え
0120デフォルトの名無しさん
NGNG比較関数が構造体のqsortで良いのでは?
>>112
dup2は、ファイルハンドルを複製する関数なので、
(ファイルハンドルについての、細かい事は自分で調べて下さい)
あとは、「STDIN_FILENO」の定義次第だけど、
普通に考えれば、stdinのファイルハンドルではないかと…。
つまり、この処理後は、fds[0]からの入力は、
stdinからの入力として読み込む事が出来ます…多分。
>>59
別に、それ程難しい(複雑)とは思いませんが…。(^^;
取り敢えず、自分で作れるところだけ作って、
入力部、出力部、マッチ部、等々、幾つかの関数に分け、
どうしても上手く行かない部分だけ聞いた方が良いかと…。
0121デフォルトの名無しさん
NGNGGDBのバグですかね??
私は2.12121442になりました。
Linux Red hat 6.0にて
0122デフォルトの名無しさん
NGNGUNIXで使いたいのですが。
0123デフォルトの名無しさん
NGNG文字列 str2 を挿入し,結果としてstr3を作るプログラムを作成しなさい。
str1は ABCGHI
str2は EFG
str3は 空っぽ
Pは 3
できるだけ簡単にお願いします。ちょうどIFとかWHILE文の所の
課題です。
死にそうです。
INTはI,J,k,P でお願いします。
0124デフォルトの名無しさん
NGNG(もちろん、if, while, int もないです。)
そのあたりのセンスというか感覚を磨いてからでないと
C どころかコンピュータそのものを操るのは無理でしょう。
と書きつつも「標準ライブラリは使用してよいのか?」
と言ってみる。
>>123
0125デフォルトの名無しさん
NGNG# include <stdio.h>
void main()
{
って始まるやつです。
これに変数の型を指定するのに
intやcharを使いますよね?
標準ライブラリ?なんだろ?
ソフトは「LSIC」で,メモ帳で書いて拡張子をcにして
アイコンにD&Dすれば勝手にコンパイル→exeファイルができる
ものです。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG>って始まるやつです。
ここに反応しそうです。
0128デフォルトの名無しさん
NGNGこの程度が自分で組めないようなら、、、学校?仕事?趣味?
趣味なら、頑張れ。
学校なら、友達に聞け。友達いない? 諦めろ。才能ないし。
仕事? 辞めろ。邪魔だ。
0129VBなら
NGNGだな(w
0130デフォルトの名無しさん
NGNGstrncpy(str3,str1,p);
strcat(str3,str2);
strcat(str3,str1+p);
標準ライブラリベタ使い(w
これは冗談としても、この先どんどん課題難しくなるから、
今のうちに勉強するか学校やめるか考えたほうがいいよ。
それかレポートを丸写しさせてくれるような友達を見つけるか。
0131124
NGNG全角で書いたつもり↑
0132デフォルトの名無しさん
NGNG良く分かりませんが、こんな所でしょうか?
でも、LSIC使ってて、課題が出るような環境って…。
やっぱ、ネタ? (^^;
------------------------------
#define MAX 10
char str1[] = "ABCGHI" ;
char str2[] = "EFG" ;
char str3[MAX] ;
size_t P = 3 ;
void main () {
size_t I ;
size_t J ;
size_t k ;
I = J = k = 0 ;
while ( I < P ) {
str3[k] = str1[I] ;
k++ ;
I++ ; }
while ( str3[k] = str2[J] ) {
k++ ;
J++ ; }
while ( str3[k] = str1[I] ) {
k++ ;
I++ ; } }
------------------------------
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGの中で落ちてしまうのですがこれはどういうことなんでしょうか?
サイズが小さいと落ちないようですが、確保しようとするサイズは何か
関係ありますか?
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGライブラリの蟲かヒープ壊したかでしょ
Linuxだと失敗時は使った瞬間にSEGVだった気がする
0137123
NGNG独学で昨日始めたばっかりなんです。
ちょっといきづまってしまいました。
また来るかもしれませんが,冷たくしないでください。
0138質問翁
NGNG他のアプリケーションのウィンドウをSetParent で
自身の子ウィンドウにした場合の弊害は何ですか?
MSDNには「新しい親ウィンドウと子ウィンドウは、
同じアプリケーションに属していなければなりません。」と
書いてありますが、試してみると一応表示されるんですよね。
0139デフォルトの名無しさん
NGNGなんかスレ違いだよ。
0140デフォルトの名無しさん
NGNGmain()
{
char mode;
mode = !WRK_CODE;
・
・
・
・
modeには何が入るの?
0141デフォルトの名無しさん
NGNG微妙にスレ違い。
↓こっちがふさわしそう。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981185737
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG真偽の反転だろ?
0145134
NGNGこれは不具合の原因になりますか?
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNGだから、その式書いてみろや!
人のいうこと聞かずに一方的に質問しないこと。常識やぞ。
0148134
NGNG*it = malloc( (int)255 );
です。
0149デフォルトの名無しさん
NGNGit = (int *) malloc( ... )
です。
あと、int 255 分個用意したければ malloc(sizeof(int) * 255)
ポインタについて勉強なされ。
0150134
NGNGやっぱ書き込まないのが一番だな。。。はーめんどくさ。
0151デフォルトの名無しさん
NGNG微妙にスレ違い。
↓こっちがふさわしそう。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=981185737
0153デフォルトの名無しさん
NGNGおいおい、バカにされたからって偽者のせいにして
自分はいかにも賢い、みたいな態度とるなよ。嫌われるぞ?
0154134
NGNG面倒くさいって言うのは偽物の指摘とこういう誤解へのレスなどのこと。
放置しとけばいいんだが俺的にキモイんでね。でもやっぱ面倒くさいので
もう書き込むのはこれで最後にしとく。>153
0155デフォルトの名無しさん
NGNG0156132
NGNG誰宛てか、書くの忘れたけど分かりましたよね。(^^;
でも、独学なのに、何で課題があるの?
やっぱ、ネタだったのかな…。
本当に、昨日から始めたばかりで、気を悪くしたら、ゴメンね。
0157デフォルトの名無しさん
NGNG文字列Aを特定の文字で切り分けて
配列にいれるっていう関数はありますでしょうか?
Perlの
@array = split(/\,/,$line);
と同じモノです。
0158デフォルトの名無しさん
NGNGこれってホント?
0160デフォルトの名無しさん
NGNGhttp://mackako.im.uec.ac.jp/chiba-f/octave/fpu_control.html
ここ見てやってみてもエラーが出てできないです。
0161デフォルトの名無しさん
NGNG文句言うのが多いよなー
ちったあ自力でやれ!自分で関数作れ!って思うことが多い・・・
スレに反するので、さげ
0162デフォルトの名無しさん
NGNGstrpbrk() もしくは strtok(), を使って自分でバラす。
元の文字列を破壊して構わないなら、strtok() でセパレータを '\0' に書き換えつつ、
各要素へのポインタを記録しておくのがセオリー。
0163デフォルトの名無しさん
NGNGperlのソースからぱくってこい
0164デフォルトの名無しさん
NGNGなにかいい本など教えてください
0165デフォルトの名無しさん
NGNGシステムコール・・・
機種や使ってるコンパイラはなんですか?
0166デフォルトの名無しさん
NGNGオンラインならlinuxのJFドキュメントとか参考になるかな?>164
本は腐るほど出てると思うけど。
0167デフォルトの名無しさん
NGNG私は良く判らないのでそのまま「エスティーアールコピー」って言ってたんですが、「ストラコピー」や「ストリングコピー」っていう人もいました。
もしも正しいのが判らなければ多数派でもいいです。
お願いします。
0168デフォルトの名無しさん
NGNGcharですらキャラ派、チャー派がいるのに
strなんかだと……
つーか正しいも糞もないので
そんなこと気にせず、勉強しなさい。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGint main ()
{
int c, b;
while ((c = getchar()) != EOF) {
b = (c & 0x01) << 7 | \
(c & 0x02) << 5 | \
(c & 0x04) << 3 | \
(c & 0x08) << 1 | \
(c & 0x10) >> 1 | \
(c & 0x20) >> 3 | \
(c & 0x40) >> 5 | \
(c & 0x80) >> 7;
putchar(b);
}
return 0;
}
これってなんですか?
0171デフォルトの名無しさん
NGNGマクロ展開に失敗したのか?
0172デフォルトの名無しさん
NGNGスターコンプ
スターカット
これだけは譲れません。
0173デフォルトの名無しさん
NGNG'\'は必要無し
どっからパクってきたソースだ?
0174デフォルトの名無しさん
NGNGcat input.txt | foo > output.txt
0176デフォルトの名無しさん
NGNGLinuxデバイスドライバ (オライリー)
Linuxプログラミング (ソフトバンク)
この2冊だけでご飯3杯はいけるね。
あとは カーネルソース がおかず。
JF,JM が漬物(ただしちょっと痛んでる)。
0177ひよこ
NGNGA: test(d, c, b, a++);
B: test(d, c, b, a+1);
例えば、このような関数を再帰関数として使うとき、Aだと「不正な処理のため強制終了」
だったのですが、Bだとなんの問題もなく通りました。
なぜなのでしょうか?
0178デフォルトの名無しさん
NGNGはぁ?
a++ってなに?
なんで全角混じってるの?
それと
> このような関数
と言われてもよくわからない。
0179デフォルトの名無しさん
NGNGなんかスゲーワラタ
0180デフォルトの名無しさん
NGNGa++とa+1の違いわかってる?
0181中途半端くん
NGNGa++ だと、test終了後にインクリマンコされる。
a+1だと、testに a+1 が渡されるが aの値は変化なし。
基本動作が全然違うから、>>177は勉強頑張りなさい
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG違う。a++ でもtest関数に制御が移る前にインクリ○○○される。
0184ひよこ
NGNGa++ が間違いだということはわかりました。
でも、++a が a+1 と同じ意味というわけではありませんよね?
0185中途半端くん
NGNGむう・・・処理系によって動作がことなるのか?
手元で実験したけど確かにtest後にインクりメンコされたよ。
main()
{
int b=9;
test(b++);
printf("%d\n",b);
}
test(int b)
{
printf("%d\n",b);
}
$ ./a.out
9
10
0186デフォルトの名無しさん
NGNGはい、++a が a+1 と同じ意味というわけではありません。
0187デフォルトの名無しさん
NGNG『詳解UNIXプログラミング』なんかどうよ?
Linuxだと微妙に違うかも知んないけど。
http://www.amazon.co.jp/exec/obidos/ASIN/4894713195/249-6075145-6980341
0189183
NGNGそう。
#include <stdio.h>
int a;
void test(int n)
{
printf("n = %d\n", n); /* nは9 */
printf("a = %d\n", a); /* aは10になっている! */
}
int main(void)
{
a = 9;
test(a++);
printf("a = %d\n", a); /* もちろん a は 10 */
return 0;
}
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGもともと b++ の使い方間違ってるよ。本読みなおせ。
0193デフォルトの名無しさん
NGNG間違った使い方のサンプルなんです。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG大抵はVC++かC++かJAVAでしょ。Cなんて役に立つのかなあ
0197デフォルトの名無しさん
NGNG寝言は寝てからな。
0199デフォルトの名無しさん
NGNGC言語知らないのか?
CとC++を比べるのはいいけど、C++とVC++を別物というのは
ちょっと馬鹿っぽいぞ。まあ、違うといえば違うがな。
0200デフォルトの名無しさん
NGNGをランダムに決定するにはどうしたら良いでしょうか?
0201デフォルトの名無しさん
NGNGなんか文がおかしいよ。
for(i=0;1<10;i++){
str[i]=rand()%(0x7e-0x21)+0x21;
}
0202デフォルトの名無しさん
NGNGCについて「どうも話が合わん。」って思ったとき、
相手が MS-C しか知らない or MS-C 出身者だったってこと多くない?
0205デフォルトの名無しさん
NGNG???
0207デフォルトの名無しさん
NGNGブ、ラジャ!
0208デフォルトの名無しさん
NGNG処理が早いの?
switch〜case文で30段階ぐらいに分かれてるのと
if〜else文で分岐は3つ、その中でまた細かく分かれて
合計30ぐらいの条件になっているのってどっちのほうが
負荷が軽いか、一般論でいいので教えてください。
0209デフォルトの名無しさん
NGNG単純に定数の比較だけなら一般的には同じ。
0210デフォルトの名無しさん
NGNG0から始まってる連番のcaseはジャンプテーブルに展開されるので高速らしい。
if文は単純にテーブルにできるものじゃないから、
処理速度はcase<=ifじゃないかなーと思う。推測レベルですが。
>>208の処理だと、ifの方は2段階で条件分岐をしているので、
1段階のcaseのほうが速いと思う。
0211208
NGNGいやあ、呼ばれる頻度の高いものが上に来るようにif文を最適化して
書いておけば、上からひとつひとつチェックされていくcase文より
結果的に早くなるよ、と言われてそれを試したところ、実際にかなり
早くなったことが8年ぐらい前にあるんです。
でも、今のCPUだとちょっとした処理程度では、速度の差なんて
見えない、ソースコードの見易さのほうが先だ・・・みたいな状況ですから
どっちが本当にいいのかわからなくなってまして、ね。
・・でもVBの場合は、select〜case〜end selectよりも、if〜end ifの
方が格段に早いような気もするなぁ・・・
タイマー関数で使ったら差を感じたことがあります。
0212デフォルトの名無しさん
NGNGcaseの条件次第でしょう。ジャンプテーブルで簡単に分岐できる
のなら早くなるし、逆に、まったく出来ずに30回の比較になる可
能性もありえます。意外とifの方がいい場合も結構あるかと。
0213デフォルトの名無しさん
NGNGvoid aho( void )
{
switch( ? )
{
case a:
return;
case b:
break;
case c:
return;
default:
return;
}
baka();
}
になっている。これはこれで早いのかいな。
0214デフォルトの名無しさん
NGNG・caseの数がそれなりにある(10ぐらい)
・ほぼ連番(1つなら連続してない数があっても可)
・0からじゃなくても可
な条件でジャンプテーブルに展開されたよ。
一般にはcaseで逝けるところはcaseのほうがよさそう。
>>212
なんか具体的にifのがいいところがあったら教えて。
0215まちこさん
NGNG#include <stdlib.h>
#define TYPE float
int main(){
int i, j, k;
TYPE ***h;
int L = 17, M = 13, N = 14;
h = (TYPE ***)malloc(sizeof(TYPE **)*L);
*h = (TYPE **)malloc(sizeof(TYPE *)*L*M);
**h = (TYPE *)malloc(sizeof(TYPE)*L*M*N);
for(i=0;i<L;i++){
h[i] = *h + i*M;
*h[i] = **h + i*M*N;
for(j=1;j<M;j++){
h[i][j] = *h[i] + j*N;
}
}
for(i=0;i<L;i++){
for(j=0;j<M;j++){
for(k=0;k<N;k++){
h[i][j][k] = 0.1;
printf("&h[%02d][%02d][%02d] = %p\n", i, j, k, &h[i][j][k]);
}
}
}
exit(0);
}
3次元配列の動的確保の部分を
関数にしたいのですが、
どうしたらいいのでしょうか?
void hogehoge(TYPE ****f, int X, int Y, int Z){
(関数の中身)
}
で、main関数で,
hogehoge(&f, L, M, N);
と、したいのですが...
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGなかったっけ。mallocは、宣言位置より下の関数に対しては有効だけど
宣言位置より上には無効じゃなかったけー?
0218デフォルトの名無しさん
NGNGそういうmalloc欲しいな〜
あったら便利だよね♥
でも、そんなものはない
0219デフォルトの名無しさん
NGNG激しい電波だな。大丈夫か?
0220デフォルトの名無しさん
NGNGそのmain関数を書いたのがあなたなら
そんなもの簡単に書けると思うのですが。
それとも大学の課題とかですか?
どっちにせよ僕が答える必要はないでしょ。
0221デフォルトの名無しさん
NGNGどう書いたらいいのでしょう(藁
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGメモリを確保する関数など書けないではないか、
ということを言いたかったのだと思われ。
0224215のまちこさん
NGNG>>215は半分以上俺が書いた
void でない関数なら1個関数を知ってるのよ
double ***mona(int X, int Y, int Z)
{
int i, j;
double ***a;
a = (double***)malloc((X+1)*sizeof(double**));
for(i=0;i<=X;i++){
a[i] = (double**)malloc((Y+1)*sizeof(double*));
for(j=0;j<=Y;j++){
a[i][j] = (double*)malloc((Z+1)*sizeof(double));
}
}
return a;
}
で、main関数で
double ***f;
f = mona(50,50,50);
とかで、確かに3次元配列の動的確保ができる。
だけど、これだとメモリに連続して確保されてないのよ。
しかも、返り値を持たない関数を作りたいので、
どうしようかと。
単にアドレスを渡して、関数側ではさっきの部分を
それぞれポインタにすればいいと思うのですが、
ドキュソなのでうまく逝かないのね。
0225217
NGNGmain()
{
char *a;
seset( a );
printf( "%s", a );
}
void seset( char *aa)
{
aa=(char *)malloc(255);
strcpy(aa,"hoehoe");
}
で、ちゃんとhoehoeって出るの?
MS-DOSで5年ぐらい前にやったときはでなかったような・・
ごめん、もうC4年以上触ってないから自信無いです
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGメモリ確保云々より、ポインタを理解するのが先だと思われるっす。
0228デフォルトの名無しさん
NGNGポインタずーれーまーくーりー
悪い例てんこもりー
0229デフォルトの名無しさん
NGNGそれってalloca()の事では?
それにしても
>宣言位置より下の関数に対しては有効だけど
ってのは違ってるが。
0230カミーユ
NGNGmain()
{
char *a;
seset( &a );
printf( "%s", a );
}
void seset( char **aa )
{
*aa=(char *)malloc(255);
strcpy(*aa,"hoehoe");
}
0231デフォルトの名無しさん
NGNGalloca のことか?
0232デフォルトの名無しさん
NGNGハゲしく勘違いしてる
0233デフォルトの名無しさん
NGNG自分で書いたんだったら明らかだと思うのだが。
0234デフォルトの名無しさん
NGNG恒例の宿題だと思われ。
0235220
NGNG半分以上って……やっぱ宿題か…よく見るとmainも変だね。
たぶん君の意図してるのは
void hogehoge(TYPE ****f, int x, int y, int z){
*f = (TYPE***)malloc(sizeof(TYPE)*x*y*z);
}
でしょ。
0236デフォルトの名無しさん
NGNGstrcat(a,b)などのstr系の文字列処理関数は、
引数にそれ自身が変化する文字は使えないですよね。
たとえば、for(i=0;i<99;i++)のiをbのところに置けないです。
このような変化する文字を他の文字に連結させる方法はないですか?
参考書でも調べてみたのですが、載って無かったです。
0237デフォルトの名無しさん
NGNGsprintf
0238デフォルトの名無しさん
NGNG質問の意味がよくわからな
0239デフォルトの名無しさん
NGNGstrcat(a,i);
この処理は無理です。
文字列aの後ろに数値を連結させたいのです。
sprintfだと連結ではなくて、コピーになってしまいます。
0240デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG目から鱗が30枚くらい落ちました。
勉強しよう。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGまず型ってのを理解してもらわないと。
0246デフォルトの名無しさん
NGNGポインタで無ければならないし、処理前のa+=strlen(a)が抜けてる
0247デフォルトの名無しさん
NGNG絶対なれません。
0248
NGNGhoge01234567891011、、、なんて何に使うの?
0249デフォルトの名無しさん
NGNGキニスルナ。236の日本語が不自由なだけだよ。
0251デフォルトの名無しさん
NGNG0252佐藤浩嗣
NGNGまた、同じくTurbo C++でEasy Winでcinやcoutによって入力ファイルや出力ファイルを指定するときも同じく、そのプログラムのあるフォルダ内のファイルしか呼び出せません。(GetApplication()->ExecDialog(new TFileDialog(this, SD_FILEOPEN,
strcpy(FileName, "*.txt"))) == IDOKなどで、開くファイルや保存ファイルを指定するとフルパスで指定できるのに、WinExec, EasyWinでのcin, coutではフルパスが無効なのはなぜでしょうか?有効にするにはどうすればよいのでしょうか?
0253デフォルトの名無しさん
NGNG\\→\
0254デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0255デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0256デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0257デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0258デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0259デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0260デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0261デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0262デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0263デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0264デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0265デフォルトの名無しさん
NGNGこれに変わるものがあれば教えてください。
カーソル移動なんかをやりたいのですが、できません。
0266デフォルトの名無しさん
NGNGうざい 消えろ 氏ね
0267デフォルトの名無しさん
NGNGカーソル移動なんかやらなくていいよ
0268デフォルトの名無しさん
NGNG0269ウルトラ初心者
NGNG良いのでしょうか?
0270デフォルトの名無しさん
NGNG2)アルゴリズムを見直して使用しないようにする
bool cmp(char *p1,char *p2)
{
do{
if(*p1 != *p2)
return false;
}while(*(p1++) != NULL);
return true;
}
こんな感じかな?
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG}while()
も職場によっては嫌われるよな〜
0273デフォルトの名無しさん
NGNGじゃぁ処理の結果によってループみたいなのはどうやって書くのかな。
for()?
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG>>273
while( 1 )
{
if( ?? ) break;
}
じゃない?
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGファイルの開け方やチェイン構造体は本を読んでなんとなく
わかるのですが、ファイルから文字列を一文字づつ読み込んで、
それをチェイン構造体に入れる方法がわかりません。
struct string{
char str;
struct string *next;
};
FILE *fp1;
char s[256];
int i;
i = 0;
struct string *data;
while(s[i] = getc(fp1) != EOF){
s[i] = getc(fp1);
data->str = [i];
i++;
とりあえずこんな感じでファイルの中の文字列を
構造体に変換しようとしてるのですが、うまくいきません。
なにか簡単な方法ありますでしょうか?
0279デフォルトの名無しさん
NGNGgetc()を2回も呼ぶのはおかしいよ
ていうか、文法がめちゃくちゃだ;_;
リストがどうこうと言う前に、
C言語をもう一回勉強しなおそう。
0280佐藤浩嗣
NGNGお蔭様でうまくいきました。ありがとうございました。m(__)m
void TMy::HandleButton3Msg(RTMessage)
{
// strcpy (s1,"c:\\Tcwin\\MyApp\\Template\\test1");
strcpy (s1,"C:\\Progra~1\\Intern~1\\IEXPLORE c:\\tcwin\\myapp\\template\\help.htm");
WinExec(s1, SW_SHOWNORMAL);
}
0281279
NGNG気にしないで下さいませ。
0282デフォルトの名無しさん
NGNGif (fd = first()) {
do {
/*fdの処理...*/
} while(fd = next());
}
これよりスマートに書けるか?
0283デフォルトの名無しさん
NGNGfor (fd = first(); fd; fd = next()) {
/* fdの処理 */
}
すまそ。
0284デフォルトの名無しさん
NGNG0285!279
NGNGdataは、sと同じ大きさの配列で無ければいけません。
まあ、その前に、配列をチェイン化する目的も見えませんが…。
もし、それ以外の間違いなら、もう1度正しいと思っている、
(でも上手くいかない)ソースを、正しく(?)書いて下さい。
このままでは、欲しい結果(指摘)を得る事は、困難だと思われます。
要するに、間違いを気にするなと言われたら、
じゃあ、何を気にすれば良いんだ?って事になりますので…。(^^;
0286デフォルトの名無しさん
NGNG書けてないんじゃない?
age足
0287デフォルトの名無しさん
NGNG飛行機にだけは乗りたくないものだ。
0288282=283
NGNGくわしく指摘してくれい。
0289288
NGNG0290288
NGNG0291デフォルトの名無しさん
NGNG多分線形リストのことを言っていると思うので、
アルゴリズム辞典を買ってきて調べましょう。
>>286
俺もわからん。説明してくれ。
0292!(286-291)
NGNGファイルハンドル関係は、失敗した時、大抵-1を返すので、
もしかしたら、成功したfdの値が0の可能性もあるのでは?
まあ、結局は、first()とnext()次第だし、
本当に0を返す時があるかは、知らないけどね…。(^^;
0293名無しさん@お尻おっぱい。
NGNGfdは確かにファイルディスクリプタとして使われる変数名だけど
ここでもその意で使ってるか?
勝手な憶測でfirst(),next()ともに成功したら何らかの数値を、
最後までたどり着いたら0を返却する関数として読んでたよ。
0294デフォルトの名無しさん
NGNGfd->ファイルハンドル
失敗->-1
決め付けはいかんなあ・・
>>282-283を純粋に見ると、C言語の条件式同様、
成功->非0
失敗->0
として扱ってるのは自明なんじゃないのか?
0295デフォルトの名無しさん
NGNG自分は、成功した時にはファイル名へのポインタ、
失敗したら、NULLが帰ってくると読みました。
ただ、286,287の言うバグの可能性を考えると、
これ以外考えられなかった(思いつかなかった)ので…。
まぁ、どちらにしても、関数の戻り値次第だし、
あまり気にする必要もないのでは?
0296デフォルトの名無しさん
NGNG>>286-287
はドキュンということでファイナルアンサー?
0297292=295
NGNG>決め付けはいかんなあ・・
では、負の数と訂正させて頂きます。
それと、自分の基本的な考え方は、286と287以外の方と
ほぼ同じですので、あまり、厳しく突っ込まないで下さい。(^^;
0298デフォルトの名無しさん
NGNG読解力に欠ける知能障害者だから・・・
彼らと仕事をしたら(職種が何であれ)とても大変な目にあいそうだ。
0299デフォルトの名無しさん
NGNG286,287の意見を聞きたいので、
テレフォンを使わせて下さい。
0300なもし
NGNG0301デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG某スレの101、別の某スレの430だろこいつ。
どうしようもないシッタカ厨房君だから相手にしなくていいよ>all
0304デフォルトの名無しさん
NGNG>某スレの101、
気付けば「何だ」と思うよーなMiss[c/c++]
http://piza.2ch.net/test/read.cgi?bbs=tech&key=986528326
>別の某スレの430だろこいつ。
こっちはわからん・・・
0305デフォルトの名無しさん
NGNGシューティングゲームを作りたい!!
http://piza.2ch.net/test/read.cgi?bbs=tech&key=990219336&nofirst=true&st=430&to=430
0307デフォルトの名無しさん
NGNGfd = first();
while (fd = next()) {
・・・
}
っていう形に持ち込みたいなぁ。
0308デフォルトの名無しさん
NGNGwhileの中の処理を関数に分ければ出来るよ。
意味あるかどうかは知らないけど。
0309デフォルトの名無しさん
NGNGtypedef unsigned char UCHAR;
unsigned char *getTable( int cnt, unsigned char *key, UCHAR *wrd, unsigned char *key2 );
この3行の意図するところを、誰か教えてください。
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG型定義とプロトタイプ宣言じゃん
(せっかくの定義型の使い方が中途半端だな。
貴殿はその辺を晒したいのか?)
0312親切な人
NGNGその先輩を始末したら、ここに報告してくださいね
0313309
NGNG0314309
NGNG/* このプロジェクトでは未使用 */ // ここから
typedef unsigned long u_long;
typedef unsigned short u_short;
typedef double u_double;
/* このプロジェクトでは未使用 */ // ここまで
じゃあ、消せよ! と思ったら別のソースで
u_long getKeyNyuryoku( unsigned long )
とかやってます。
0315デフォルトの名無しさん
NGNGchar tmp:3;
という書式があるんですが、これ何でしょう?
普通のCのソースで、コンパイルも通るのですが
何をやっているのかわかりません。
詳しい方、お教え願います。
0316315
NGNG0317デフォルトの名無しさん
NGNGおれ知らんから、教えてくれ。
0318317
NGNG0319うそつき
NGNGK&Rの本を読むと載ってます。
共用体がどうのこうのというあたりです。
ようは特定のビットを取り出してcharとかintとかとして使う為のものです。
0320315
NGNG0321デフォルトの名無しさん
NGNGビットフィールドを調べてみろ。
http://www.ncad.co.jp/~komata/c-kouza7.htm
# 俺はあまり使わんが
0322デフォルトの名無しさん
NGNGこともある。
I/O アクセスする時など便利。
xx番地のnビット目を調べるときいちいちビット演算子を使わなくてもすむ。
ただし、その MPU とコンパイラを十分理解しておけ!!
0323デフォルトの名無しさん
NGNGちなみに標準でサポートされるビットフィールドの型はint, signed int,
およびunsigned intの3つだけ。
charや他の型を使えるのは処理系の独自拡張。これらの拡張は処理系ごとに
思いっきり振る舞い方が異なるから要注意ね。
0324デフォルトの名無しさん
NGNGビットフィールドそのものがインプリメント依存だよ。
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGむしろそっちの方がきついかと。
0327デフォルトの名無しさん
NGNG制御系のCコンパイラの場合ビットフィールドの振る舞いを変える
コンパイルオプションがあるから、どちらかと言うとビットフィールド
の方が流用が効くのでは?
0328デフォルトの名無しさん
NGNG結局エンディアンに依存する
0329323
NGNG標準規格の範囲であれば、処理系依存部分はせいぜいビットの順番とintの
場合の符合の有無程度。
それ以外の型を使うと、フィールドの順序までもがバラバラになる可能性が
ある。それに、そうした拡張を持つ処理系には、汎整数拡張を省略するもの
も多いから、なおのこと振る舞い方がバラバラになる。
>>325
同意。つぶしが利くのは論理演算。
ビットフィールドはつぶし云々より便利だから使うだけ。
>>327
コンパイラによる。
組み込みの場合は、いろいろな処理系を使わざるを得ないから、再利用を
考えたコードを書くときはビットフィールドは避けるか、使うにしても
signed intかunsigned intだけにして、ビットオーダを#ifで選択できる
ようにするしかない。
0330デフォルトの名無しさん
NGNGなんでみんな使わないの?
0331デフォルトの名無しさん
NGNG論理演算はエンディアンには依存しない。
0332デフォルトの名無しさん
NGNGintの場合はするだろう?
0333331
NGNG依存しない。
もし依存するというのなら、それは(入出力ポート等の)アクセス方法を
間違えている。
0334デフォルトの名無しさん
NGNGビット操作でビットフィールドが良いか論理演算が良いかなんて結局
宗教みたいなもんだからどっちでもいいんじゃない?
>>331
エンディアン依存するよ。
0335329
NGNGどちらが良いとか悪いとかは言っていない。
つぶしが利くかどうかということ。
用途に応じて使い分けるのが一番。
0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNG68系と86系で論理演算を書き分けたこととか無いよ。
0338デフォルトの名無しさん
NGNG同意。
Cは既に論理演算があるのに、ビットフィールドは余計だったと思う。
0339デフォルトの名無しさん
NGNGunion{
unsigned int m_Pack;
char m_Char[4];//
struct{
unsigned int m_Phase0 : 4;
unsigned int m_Phase1 : 4;
unsigned int m_Phase2 : 4;
unsigned int m_Phase3 : 4;
unsigned int m_Phase4 : 4;
unsigned int m_Phase5 : 4;
unsigned int m_Phase6 : 4;
unsigned int m_Phase7 : 4;
};
};
};
で論理演算の時はm_Packを使って時に応じているが。
0340331
NGNGおそらく、バイトアクセスしないといけないデバイスを無理やりワードアクセス
するような場合を想定していると思う。
アセンブリ言語ではよくやることだけど、C言語でやる場合はエンディアン云々
以上の問題がある。可搬性については論外。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG全フィールドをバイトアクセスできるならな。
32bit単位でしかアクセスできない入出力ポートなんてのもあるのだよ。
>>336
それは経験が足りないか、または君の会社の思想の問題と思われ。
0343デフォルトの名無しさん
NGNGunionの間違った使い方。
m_Packとビットフィールドは対応するとは限らないよ。やばいよ。
0344デフォルトの名無しさん
NGNGそんな難しい話ではなくてもワード単位でアクセスするデバイスに
ワードで書き込んだだけでエンディアン依存してしまうのでは?
0345デフォルトの名無しさん
NGNGまぢ? 根拠求む
(K&R読んだけど大丈夫そうに思える)
0346デフォルトの名無しさん
NGNG構造体のメモリレイアウトは、メンバの順番以外保証されてなかったと思う。
0348デフォルトの名無しさん
NGNGするね。このへん、組込系とかデバドラの経験がある人ならわかると思うが。
CPUと周辺デバイスでエンディアンが違うなんてザラにあるよ。
有名なトコだと、昔のMacに載ってたNu-Bus。
Macは68kだから当然ビッグエンディアンだが、Nu-Busはリトルエンディアンでしか
アクセスできないため、ワード転送しかできないデバイスなんかはメモリから読んで
バイトスワップするか、あらかじめスワップされたイメージを用意してたよ。
0349デフォルトの名無しさん
NGNGoutbとかinbをごりごり改造したり・・・
0350デフォルトの名無しさん
NGNGqsort(void *,size_t,size_t,(*cmp)(const *, const *))
と同じようにしたいので、実際のqsortの中身を見たいのですが
ファイルにもないし、いろいろな本やサイトにもありません
どうすれば分かるのでしょうか?
0351デフォルトの名無しさん
NGNG30円くれたら教えてあげます。
うそ。
アルゴリズム事典とか買ってくると漏れなくついてくるよ!
0353デフォルトの名無しさん
NGNGキャストすればいいじゃん。
0354350
NGNGどうしてもぐちゃぐちゃしたプログラムに
なってしまうので実際どうやっているのかな?
とおもったのです・・・
0355デフォルトの名無しさん
NGNGその辺はセンスよセンス。
うそ。
ここに自作コードを書くと漏れなく採点してあげるよ。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGqsort(void *,size_t,cmp_t cmp);
0358340
NGNGそれはデバイスのリード・ライトがエンディアンに依存するのであって、
論理演算が依存するわけではない。
&=演算子等を使った場合でも理屈は同じ。
0359315
NGNGここで勉強になりました
間違った使い方しないよう十分心がけます。
・・・ていうか先輩のソースの修正なんすけどね
んでもって今日は体調悪いので休ませてもらってる。明日参考にしまーす
0360317
NGNGおかげで一つ賢くなれたので、はりきって逝ってきます
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNG>>361
今は他にいい本があるから、とか。
0363デフォルトの名無しさん
NGNGC言語の規格を知るならJISハンドブックの方が絶対いいからね。
言語の仕様を知るなら処理系のマニュアルだね。
0364デフォルトの名無しさん
NGNGムキになって屁理屈こねてるね。
論理演算には少なくともリードが発生するだろうに。
その結果エンディアン依存するという指摘なんだよ。
0365358
NGNGレジスタフェッチやイミディエイト値のリードは確かに避けられないね?
そんなものはエンディアンに依存するとは言わないよ。
それにデバイスへのアクセスは、エンディアンに依存するというよりメモリ
マップに依存するのであって、普通移植性に対する障害としてあげられる
エンディアンへの依存とはまったく別の問題だと思うけど。
0366あのさあ
NGNGどういもの?
0367デフォルトの名無しさん
NGNGカニチャーハンと富豪
0368デフォルトの名無しさん
NGNG>カニチャーハンと富豪
うーん...濃い内容だ。。。ところで、C言の話とは違うけど、
この中で【Linux】使っている人はいるのだろうか?
もし使っていたらWebサーバとかにしているのだろうか?
0369デフォルトの名無しさん
NGNG何故にそんな話になるのかわからんが使ってるよ。
Webサーバとかにはしてないけど。
0370デフォルトの名無しさん
NGNGKernighanとRichieが書いた「プログラミング言語C」って本。
0371デフォルトの名無しさん
NGNGメモリマップ…??
「下位ビットが上位アドレスにマッピングされる」とかその逆とかを指してるなら
それこそ「移植性に対する障害として挙げられるエンディアンへの依存」に
他ならないんだけど。
ハードウェア知らないならあまり大きな口は叩かない方がいいよ。
0372デフォルトの名無しさん
NGNG論点がずれている。
>>322-328から続く制御系の実装の話をしているんだから外部デバイス
に対して論理演算がエンディアン依存するか否かで語られるべき。
つまりはチップセットを変えずにMPUだけを68系から86系に変えた場合
とかがありがちなシチュエーション。
LCDなんかは簡単には変更効かないしね。
制御/組込み屋がエンディアン依存を気にするのはそういう場合だろう?
0373デフォルトの名無しさん
NGNG泣きそうになるんだけど・・・
0374デフォルトの名無しさん
NGNG効かなくなるという意見には基本的には賛成。
だが、ビットフィールドで記述するとビットロード命令に落ちる
実装系もあるから使わざるを得ない場合が多い。
そもそもそんな場合はvolatileやpragmaが頻発するコードになるのだろう
から、移植性を気にするならばマクロに切り出して毎回見直しを
かけたほうが無難だと思うよ。
0375デフォルトの名無しさん
NGNGエンディアンなど知らん
0376デフォルトの名無しさん
NGNGちゅう事は4bitI/Oか?
4bitマイコンにCは実装されているのだろうか?
晒しage
0377デフォルトの名無しさん
NGNGだから、論理演算はエンディアンに依存する」
これは、「ゼロクリアされたメモリ上の文字列を
足し算によって"1234"に変更するためには
リトルエンディアンは0x34333231、ビッグエンディアンは0x31323334、
を加えなければならない。したがって、足し算はエンディアンに依存する。
同様に、全ての演算はエンディアンに依存する」
と言っているのと同じ。
メモリ(やI/O)から読みこんだ値はエンディアンに依存するが、
(ビッグエンディアンの 10 00)|(1) == 0x1001 == (ビッグエンディアンの 10 01)
(リトルエンディアンの 00 10)|(1) == 0x1001 == (リトルエンディアンの 01 10)
同じ値に対して同じ論理演算をしたら結果は必ず同じになる。
(ビッグエンディアンの 10 00)|(1) != (リトルエンディアンの 10 00)|(1)
なのは、単に「同じバイト列でも演算の対象となる『値』が違うから」のはず。
外部デバイスとエンディアンが違うから、
想定していた値と違う『値』がデバイス(メモリ)から読み出される。
つまり、エンディアンに依存するのは『値』であり、論理演算ではない。
「経験豊富なプログラマ」の頭の中は、俺には理解できないけどね。
0378デフォルトの名無しさん
NGNG組み込み屋はアホばっかり?
0379デフォルトの名無しさん
NGNGこの板にはアホしかいません。
0380デフォルトの名無しさん
NGNG同じように思えるんだけど・・・。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG>>331の
>論理演算はエンディアンには依存しない。
だろ?
それを>>332や>>334がてめーの脳内で
>移植性はエンディアンに依存しない。
と読み替えて電波飛ばしてるんだよ。
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNG動名詞
0386デフォルトの名無しさん
NGNGつーか生きてるの?
0387デフォルトの名無しさん
NGNGあれはYngwey
0388デフォルトの名無しさん
NGNGこと自体無意味ということになってしまうよ。
0389デフォルトの名無しさん
NGNG爆笑。キミ、凄いよ! 新卒?
0390デフォルトの名無しさん
NGNG今日はアンチMFCキティ君が暴れて凄かったけど、明日のヒーローは
ここの380か?
0391デフォルトの名無しさん
NGNG>だいたい、論点はなんだ?
>>>331の
>>論理演算はエンディアンには依存しない。
>だろ?
違うのねん。ビットフィールドの代替手段としての論理演算について論じている
んだから、演算式の書き換えが必要ならやっぱりエンディアンに依存する、と
いう主張なんだけど。
メモリ上はエンディアンとは無関係に01 02 03 04と並んでいて、それをロング
ワードで拾ってきて最下位アドレスの8bitを取り出す論理演算式はエンディアン
によって変わるでしょ?
0392デフォルトの名無しさん
NGNGmath.hでsin関数などが使えるようになりますが、math.hを見てみても中身は#defineとかばっかりで実際の計算部分のソースがありません。
printfなどもそうですが。
一体これらの関数の計算部分の実体は何処にあるのでしょうか?
あと、これらのソースも見てみたいのですが、ちょこっと探した感じでは見つかりませんでした。
0393デフォルトの名無しさん
NGNGライブラリ。(^^;
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG>>393
なんか僕おかしな事書いたんでしょうか?_・)
>>394
UNIX系のオープンソースなやつの配布CDのソース入りのやつなら載ってたりするんでしょうか。
今からちょうどインストールしてみようと思っていたVineのやつを落としてみます。
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNGライブラリ関数の実体は、ライブラリとして提供されています。
(ヘッダにあるのは、関数の宣言とマクロ等で、実体はありません)
自分も昔、同じような事を考えた事がありましたが、
基本的に、純粋なCのみで、一切ライブラリ関数を使用せずに、
printfのような関数を作る事は、出来ません。
(sin関数等は、知識があれば出来ますが…。)
それの意味するところは、自分で考えて見て下さい。
0398397
NGNG0399397
NGNG正しくは、393=397です。
0400デフォルトの名無しさん
NGNG別に自分で実装したいって言っているのではなくて、
どういう処理をしているかを見てみたいと言っているのでは?
0401デフォルトの名無しさん
NGNG>>400
そのとおりです。
工房の時ですが、まだCに触れて間もない頃どんなCの入門書にも画面への自由な図形の描画方法などには触れておらずどうしてだろうと思っていました。
結局は動かすOSによるとかで、そう言うものだと納得しましたが、じゃあ普通に解説してるprintfやscanfなんかはどうなっているんだろう
と思ったのです。
>>397
>純粋なCのみで、一切ライブラリ関数を使用せずに、
>printfのような関数を作る事は、出来ません。
となると一番最初にprintfを作った人はどうしたのか、ということに・・・
ものすごくヴァカなこと聞いてるんでしょうかね・・・とりあえず引き続きライブラリのソースとやらを探してみます。
0402デフォルトの名無しさん
NGNGわかんなかったら検索しろ
0403デフォルトの名無しさん
NGNGC言語の仕様という範疇では語れないということを言いたいんでしょ。
そのための標準ライブラリであるわけだし。
ライブラリを読むのは非常に良いことだと思いますが、
ライブラリが必ずしもよく練られた素晴らしいコードであるという保証も無いし、
実装に依存できるのをいいことに汚いコードが書いてあるかも(藁
0404デフォルトの名無しさん
NGNGびえーん。
0405デフォルトの名無しさん
NGNG作れないのはOS依存の入出力等の部分で、printf等は最終的にシステム
コールを呼ぶ。それ以外の処理のほとんどは大体Cだけで書かれてる。
>>402
glibc
0406デフォルトの名無しさん
NGNG>>404
makefile.vcawin32に名前が変わってました。
うんこっこー。
0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG>>380 以上のドキュソ扱いされてたと思う・・
0409デフォルトの名無しさん
NGNG回答が得られるということだ。ドキュソのみなさんは拳拳服膺するように。
0410デフォルトの名無しさん
NGNGうそつき・・・
0411デフォルトの名無しさん
NGNG自スレッドだけ、一定間隔休止させたい場合、
sleep()関数でいいですか?
0412397
NGNG>最初にprintfを作った人はどうしたのか
今あるコンパイラが全て、それ以前のコンパイラによって、
コンパイルされていると仮定して、1番最初のコンパイラが、
どうやって、作られたのかを考えれば分かりますよ。
Cを勉強する上では、全く意味がありませんが、
ハードウェアに興味があれば、自分で考えてみましょう。(^^;
>>410
どこが?
0413デフォルトの名無しさん
NGNGprintfが作れない ってとこ?
0415397
NGNG日本語が変な(分かり辛い)ので書き直し。
使っているCにバグがなく、
それが、純粋なCであれば、不可能でしょう。
0416デフォルトの名無しさん
NGNG・・・I/O直叩きか。すでにそこから苦労しそうだな。
0417デフォルトの名無しさん
NGNGまた嫌になるあほが出現した。このスレのレベルですか?
0418中途半端くん
NGNGそれで問題ないです。
でも精度が1秒刻みなのでそれ以上細かいことやりたいときは
usleepを使いましょう。
(それでも100ミリくらいでガタがくるけど)
そういえば今月のLinuxJapanだかにそのあたりの話があったね
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNGmain()は、どこから呼ばれるんでしょうか?
gdbで見てもこのあたりよくわかりません・・・
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGprintfのソース見たことある?
必要になるのは文字列操作関数(群)と文字出力。
文字列操作なんてのはただのメモリコピーだから作るのはわけない。
文字出力部分を処理系にあわせて書いてやればいい。
0423デフォルトの名無しさん
NGNG可変引数は、あれはどうなんだよ
実装できねえだろ
0424デフォルトの名無しさん
NGNG実装のしかたが判らないのなら素直に教えてくださいと
頼めば良いのに。
0425デフォルトの名無しさん
NGNGライブラリが無ければ手も足も出ないだろう、
ということを言っているんです。理解できましたか?
0426397
NGNG>printfのソース見たことある?
見たことも何も、自分で作ってます。(^^;
>必要になるのは文字列操作関数(群)と文字出力。
それを提供しているのは、各処理系依存の関数で、
K&RやANSIの定義に、それらはありますか?
自分が知っている限り、何も無い状態のCから
呼び出せる関数はmainのみだったと思うのですが、違いますか?
つまり、不可能と言うのは、そう言うことですね。(^^;
>>423
そう言えば可変引数も標準ライブラリでしたっけ…。
0427397
NGNG先に突っ込ませて頂くと、あれも、処理系依存の、
ライブラリ関数なので、もちろん使えませんよ。
0428デフォルトの名無しさん
NGNGみんなlisp/schemeやんなさい。
0429デフォルトの名無しさん
NGNG>それを提供しているのは、各処理系依存の関数で、
>K&RやANSIの定義に、それらはありますか?
今日のヒーローは君か。
処理系依存の関数作ればいいじゃん。
ANSIに無い関数は作ってはいけないとでも?
君の脳内定義を適用するとANSI標準のコンパイラってのはこの世に
存在できないことになるんだけど。
0430デフォルトの名無しさん
NGNG意味不明意味不明!
処理系依存の関数ってどうやって作るんだ?
可変な引数ですらライブラリ頼みなのに!
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNGな気がするのは気の性?(w
0435デフォルトの名無しさん
NGNGいやむしろ429=430=430=431だろう。(w
0436デフォルトの名無しさん
NGNG小さい人間だな。
0437デフォルトの名無しさん
NGNGごめんよ。あんまり痛いんで口出ししてしまった。
もう黙るから許してくれ。
0438デフォルトの名無しさん
NGNG自分の持ってる処理系のstdarg.hのva_list/va_start/va_endの辺り参照。
おそらく処理系依存コードをマクロで隠蔽している筈です。
わかんなかったら2、3冊本読んだ方が早いかも。
0439デフォルトの名無しさん
NGNG>>423=430に言っても判らないと思うよ。
0440たぶん
NGNG信じたくないが…
0441423
NGNG読んだよ
マクロで隠蔽されているとは言っても、
機種依存だとはいっても、
Cだけでかかれていることにはかわりないから
可変引数はライブラリに頼らず実装可能?
ところでprintfはどうなんだ?
純粋なCだけで文字が出せれば、負けか・・・
0442>>1は
NGNGプログラム技術とC言語の言語とは意味が違うし。
プログラム開発とC言語とも次元が違う、
3年たってもC言語しかやらないとは情けない。
0443デフォルトの名無しさん
NGNGvoid myprintf(const char *f,...) {
va_list vaptr;
va_start(vaptr,f);
vprintf(f, vaptr);
va_end(vaptr);
}
vprintfは書式文字列fとva_listを受け取る関数。
(当然vprintfも自分で作れる)
最終的に、fputcやfwriteなどの低レベル関数を使う段階までは、
ANSI規格内で自分で作れます。
わかんなかったら、やっぱり本読んでね。
0445397
NGNG>ANSI規格内で自分で作れます。
本当に作れるのなら作ってみて下さい。
難しいことは言わないから、
Hello!
を、一切のライブラリ関数使わずに、画面上に表示して下さい。
(勿論、標準ライブラリと、処理系依存のライブラリ全て使わずに)
それが、出来たら、今日のヒーローは自分です。
0447デフォルトの名無しさん
NGNGシステムコールを使わずにprintfを実装できるかって話でいいの?
0448デフォルトの名無しさん
NGNG言語仕様と実装の違いがまるで分かっていないバカタレですな。
ANSI標準だのなんだのってのはあくまで言語仕様の問題で、
その実装のために処理系依存の関数を作ったからとて標準から
外れるわけではない。
>>445
>本当に作れるのなら作ってみて下さい。
たいていのセルフCコンパイラ(とそのライブラリ)は自分で自分を
記述してると思うんだけど。(つまり、既に作られたものは無数に存在する)
0449デフォルトの名無しさん
NGNGそういう話なら早いんだけど…
どうも>>397が言っているのはわけがわからない。
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG>>443はあなたの言ってる事に矛盾してないですよ。
もう一度よく読みましょう。
0452デフォルトの名無しさん
NGNGC標準ってのは上っ面の規定だから実装とは関係無いだろ。
仕様と実装をごっちゃにして話してる奴がいるみたいだ。
0453デフォルトの名無しさん
NGNGごっちゃにしてるのは397ただひとり。
0454デフォルトの名無しさん
NGNGって主張してるように見えるんだけど。俺の目は節穴デスか?
0455デフォルトの名無しさん
NGNGお前かっこいいよ。
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNGさようなら397
0459デフォルトの名無しさん
NGNGおいおい。>>454はどう見ても別人だろ。
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG0462>>460ゴメン
NGNG>>414-415が意味不明。
そして紛糾。
>>397は間違ってはいないが
読解力と自分の思ってることを伝える能力がかなり乏しいのかと。
0463デフォルトの名無しさん
NGNG彡 彡 彡
ブルッ・・・
.∧ ∧
ヾ(,,゚Д゚),) 彡
人つゝ 人,,
Yノ人 ノ ノノゞ⌒〜ゞ
. ノ /ミ|\、 ノノ ( 彡
`⌒ .U~U`ヾ 丿
⌒〜⌒
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG| ̄ ̄( ゚Д゚) ̄ ̄| < >>397、おやすみ!
|\⌒⌒⌒⌒⌒⌒\ \
| \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ |⌒⌒⌒⌒⌒⌒|
\ |_______|
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG了解。
0468397
NGNG>ライブラリ関数の実体は、ライブラリとして提供されています。
>(ヘッダにあるのは、関数の宣言とマクロ等で、実体はありません)
>自分も昔、同じような事を考えた事がありましたが、
>基本的に、純粋なCのみで、一切ライブラリ関数を使用せずに、
>printfのような関数を作る事は、出来ません。
>(sin関数等は、知識があれば出来ますが…。)
>それの意味するところは、自分で考えて見て下さい。
自分の主張は、これだけです。
それでも、出来ると言う方は反論を。
0469デフォルトの名無しさん
NGNGint putchar(intc)
{
*((volatile int*)OUTPORT) = c;
return 0;
}
これは純粋なCでコンパイルできませんか?
0470デフォルトの名無しさん
NGNGバカの相手もほどほどに。
注:あなたがバカだって言ってるわけじゃないわよ。
0471デフォルトの名無しさん
NGNG*純粋*なCだと無理じゃない?
処理系依存のCが純粋ってのはここでは間違ってるんでしょ。
0472デフォルトの名無しさん
NGNG>>469の間違いではなくて?
0473デフォルトの名無しさん
NGNGではないです。
でもバカは言い過ぎでした。
双方がちゃんとスレ読んでないから
こうなっただけだよ。
>>397がバカってわけじゃない。
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNG>でもバカは言い過ぎでした。
ってことです。
ごめんなさい。
0476デフォルトの名無しさん
NGNGコンパイルが通ればコンパイルできるんじゃない。
たいてい意図した通りにはならないけど。
0477441
NGNGCでフルスクラッチで記述して、画面に文字を出力することが
できました。ライブラリは一切使用していません。
よって、頑張ればライブラリ無しでprintfが作れることが
わかりました。(可変引数の件は解決してるし)
海よりも深く反省します。 >>397、おめーのせいで恥かいちゃった
じゃないか!勉強できたからいいけど。
0478デフォルトの名無しさん
NGNG標準出力の実体が何であるかは処理系依存なので、何も画面に表示したりファイルに
出力できる必要などない。
例えば単にどこかのメモリに出力するだけならフルスクラッチで実装できるよ。
0479デフォルトの名無しさん
NGNG標準出力はバッファ、とか言い切れば、すでに完成していたってことか。
0480478
NGNGだいたいそんな感じ。
もっとも、その実用価値とかはまた別の問題だけどね。
0481デフォルトの名無しさん
NGNG0482478
NGNGそうだね。
テキストVRAMとかに直接出力するとか、UARTに出力するとか、マップドファイルに
出力するとかなら実用価値は十分にある。
0483デフォルトの名無しさん
NGNG0484478
NGNG確かに。大昔のコンピュータも結構そんな感じだったりするね。
組み込み処理系(というよりフリースタンディング環境)の場合には、
printfはいわゆる標準関数ではないけど、あると重宝するもんね。
0485デフォルトの名無しさん
NGNG速度やタイミングを問わないのなら標準ライブラリ全てを記述できるぞ。
企業によっては標準ライブラリがグローバルにメモリを確保する事を嫌って、
自前の標準ライブラリに差し替える所もあるしね。
0486デフォルトの名無しさん
NGNGCでもレジスタはどうにかならなかったっけ?
勘違いしてたらごめん
0487コロコロ
NGNG課題 文字列操作
<処理概要>
入力ファイルに入っているランダムな文字列を読み込んで編集する。
入力ファイル名 \public\C言語応用\課題02\input.txt
入力ファイルの内容
io4@5ovgiq@w340 9tn@q0mikanb924 rwijra;o4 aestrawberryut@90
240strawberry9t animikanrja ddg fvbananaxjfringogqworiadf;
amomolkjtcwieroutstrawberry34t7vv
dsgfoiuto sdrgovq@4r q0awitflksjd;f
laumikanwett errgt thhbcvbasf fitu@qo4rfachocolateaaarffvnxdkjfq23
sdfgi oq34itu aqeurgvksjd q9bananau4 tue ggsjdgoiumomoq349tifvk
asrgmomoio uweringoorigporegf
asdmomofg sjd;fmikanligurin@qa94it kwjegfr:bananaa ergtqaegr
dfgi oeoitgu;fldkgj b9wu44tlgkjjlksvdjgfsmikanadfg
oiupqoi34 ta;lkdf j;lakjdfg0987 bjlhbxcvblkj
;lkjchocolateroigeurrgssdmomoffkjahljhringoglar+ j;lkj4rti
<詳細仕様>
入力ファイルの内容は、ランダムな小文字のアルファベット文字列からなり、
1行の文字数は揃っていない。これを1行ずつ読み取り、次の編集を加えて
1行を20文字に揃えて標準出力する。加える編集項目は、以下の通り。
1.文字列"ringo"を発見したら、"APPLE"に変換し、発見回数を数える。
2.文字列"mikan"を発見したら、"ORANGE"に変換し、発見回数を数える。
3.文字列"momo"を発見したら、"PEACH"に変換し、発見回数を数える。
4. 文字列"banana"を発見したら、後ろに"cake"を付ける。
5. 文字列"strawberry"を発見したら、後ろに"cake"を付ける。
6. 文字列"chocolate"を発見したら、後ろに"cake"を付ける。
7. 1〜6以外の文字列の場合は、"."(ピリオド)を出力する。
例えば、入力ファイルの1行目にq0mikanb924という文字列があるが、
この"mikan"の部分が"ORANGE"に変わる。他の文字はピリオドになる。
【結果の表示例】
.............APPLE..
.....ORANGE.......PE
ACH......bananacake.
.....
ringoの出現回数は、1回
mikanの出現回数は、1回
momoの出現回数は、 1回
bananaの出現回数は、1回
以上が課題の内容です。ご託宣お願い致します。
0488デフォルトの名無しさん
NGNGレジスタがメモリマップ上にある処理系では出来る可能性はある。
ただし、レジスタ上の振る舞いは気にしなくて良いように
コーディングするほうが良いかと。
0489デフォルトの名無しさん
NGNGまず何を教えて欲しいのか教えてくれ。
「課題を代わりにやって欲しい」と言うのであればもう来るな。
0490お願いします
NGNGchar *p,*q;
int num = 0;
printf("input data : ");fflush(stdin);
fgets(p);
q = p;
for(q != '\0') {
if(*q >= '0' && *q <= '9')
num = num * 10 + q - '0';
else
break;
}
printf("%u\n",p);
0491デフォルトの名無しさん
NGNGっていうかコンパイル時に警告が出るはずだが。
「識別子pは初期化される前に使用されている」
0493デフォルトの名無しさん
NGNGポインタの勉強をやり直せ。
宣言と初期化は別だ。
pはどこを指している?
0495デフォルトの名無しさん
NGNG>うまく動きません。何が悪いんでしょうか
おまえの頭だ
0496デフォルトの名無しさん
NGNGよく見ると
>for(q != '\0') {
これもおかしいな。(ここで構文エラーが出ないか?)
>num = num * 10 + q - '0';
これもな。
だからポインタの勉強をやり直せ。
0498デフォルトの名無しさん
NGNG>宣言と初期化はどう違うのでしょうか
宣言:変数を使うことを高らかに宣言する
初期化:変数に初期値を与える
>pはどこを指しているのでしょうか?
知りません。実行するまで誰にもわかりません。
0499デフォルトの名無しさん
NGNGここまで書いてもわからないなら出ていくのはお前の方だ。
495はかなり正しいことを書いているよ。
むしろこっちが聞きたいくらいだね。
「なんでこれしきのことがわからないのか」がわからないよ。
0501デフォルトの名無しさん
NGNG正しいと思えないのはやっぱり勉強が足りないから。
自分で勉強が足りないと思えないのは頭が悪いから。
どう見てもちゃんと勉強してるようには見えないんだよ。
K&Rよく読め。
0502デフォルトの名無しさん
NGNG掲示板をアプリケーションウィザードだと勘違いしてる偽学生諸君、君らは
何のために親のスネをかじって学校に行ってるのか?
課題を丸投げして「動くようにしてください」なんてやってると君らの頭には
何も残らない。考える必要がないから。
そーやって単位を取得して「●●大学情報工学部卒」なんて履歴書もって
入ってこられると、困るのは俺達現場の人間だ。
頼むから向学心がないならさっさと単位をあきらめて別の道を選べ。
0503デフォルトの名無しさん
NGNGK&Rとかそういうこと以前だぞ
0505デフォルトの名無しさん
NGNGあれがごまかそうとしてるように見えるなら、やっぱり悪いのは君の頭だ(w
0506デフォルトの名無しさん
NGNG課題ができなくて逆ギレするのは結構だが、笑いものにされるだけだよ。
この板の住人は、向学心があって自助努力に欠かない学生には優しいが
君のようなまるで勉強しない掲示板ウィザード頼みの偽学生には思いきり
厳しいんだよ。理由は>>502を読んでね。
0508デフォルトの名無しさん
NGNG本当に分からなかったら、馬鹿を通り越してる
0509デフォルトの名無しさん
NGNGもう進むべき道は示されてるんだよ。>>496-498あたりで。
あとは自分で勉強しなさいって事。
まあ、勉強もしないでリロードしては恨み言を書いてるような奴は
やっぱり頭が悪いと言わざるを得ないけど。
0510デフォルトの名無しさん
NGNGネタですか?
0512デフォルトの名無しさん
NGNG少なくとも今ほど気軽に他人に迷惑をかけられる時代に生まれた奴は
この板にはそう多くはいないよ。
(平日の)この板の住人が君のような勉強をしていた時分には2ちゃんはおろか
パソ通すら一般的ではなかった。
日本語のnetnewsだってほとんどなかったんだよ。
だから、他人に迷惑かけようと思ってもできない。だからみんな自分で勉強して
たんだね。
ジジ臭いと思うかも知れないが、心構えの問題だ。
0513デフォルトの名無しさん
NGNGそれいいな。コピペ用にもらっとこう(藁
0514就職活動中ぼう
NGNG#include <malloc.h>
#define BUF_SIZE 1000
void main()
{
char *p,*q;
int num = 0;
printf("input data :");
fflush(stdin);
p=(char *)malloc(BUF_SIZE);
fgets(p, BUF_SIZE, stdin);
q = p;
while(*q != '\0'){
if(*q >= '0' && *q <= '9')
num = num * 10 + *q - '0';
else
break;
q++;
}
printf("%d\n",num);
}
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG0521493他多数
NGNG0522デフォルトの名無しさん
NGNGいないいない、いてもはづかしすぎて、
消えたほうがいいな
0523デフォルトの名無しさん
NGNG課題を提出する490。先生がどんなコメントをするか楽しみだね....
0524デフォルトの名無しさん
NGNGいられない厨房PGの三つ巴が楽しいスレ。
0525デフォルトの名無しさん
NGNGここんとこ毎日ヒーローが出るね。
0526デフォルトの名無しさん
NGNGバグはいってるの?
0527デフォルトの名無しさん
NGNG情報工学部ってのは、あまり見かけないので、コピペのときは「○○大学
工学部情報工学科卒」にした方が良いかと。
0528アレンジしてみたYO
NGNG何のために親のスネをかじって学校に行ってるのか? 将来就きたい職業
に向けて職能を身につけるためではないのか?
課題を丸投げして「動くようにしてください」なんてやってると君らの頭には
何も残らない。職能なんか身に付かない。考える必要がないから。
それでは君らのためにならない。いや、この際君らのことはどうでもいい。
何も知らずに高い学費を払っている親御さんが不憫だし、なによりも
そーやって単位を取得して「●●大学工学部情報工学科卒」なんて履歴書
もって 入ってこられると、俺達現場の人間が非常に困る。
頼むから向学心がないならさっさと単位をあきらめて別の道を選べ。
それでも課題をやって欲しかったら学校名と学籍番号を書いてくれ。
早急に人事に連絡しておくよ。「こいつが来ても追い返せ」とね。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGオーバーライドされてる模様。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGsetjmpとlongjmpの実装方法を是非教えてください。
0534デフォルトの名無しさん
NGNGある処理系ではプログラムカウンタやスタックポインタなどのレジスタが
メモリ上にマップされていま(以下略
0535デフォルトの名無しさん
NGNG自分ではバグがあるのかないのか確認できないので、名無しさんのふりをして
教えてもらおうと必死です。
学校を卒業してからも、そうやって周囲に迷惑をかけながら仕事をするんでしょうね。
0536デフォルトの名無しさん
NGNG君のような奴にはマジかネタか区別の付かないようにレスをするのがこの板の
暗黙のルールなんだよ。あ、言っちゃった(w
0537533
NGNGレスありがとうございます。
関数の戻り先番地やフレームポインタはスタックに積まれますから、setjmp
の引数(jmp_buf型)からの相対アドレスで操作できますね。
ほとんどの場合、関数内で破壊してはならないレジスタがいくつかあると思う
のですが、安全にjmp_buf型のオブジェクトに退避する方法がわかりません。
レジスタファイルがメモリマップ上に配置されているプロセッサの場合はとも
かく、それ以外のプロセッサの場合はやはりCだけでは実装できないのでしょ
うか?
0538アンギラ
NGNG無視しとけばいいのに
0539デフォルトの名無しさん
NGNG単純に与えられたポインタをスタックに積まれた戻り先ポインタに
差し替えてreturnすればOK。
0540533
NGNGそれだと、setjmpの後で呼び出された関数からlongjmpしたときに、正しく
レジスタが復帰しないと思うのですが。
変数を全部volatileにしても、この問題は解決しないように思います。
0541デフォルトの名無しさん
NGNG初期化したら強制終了されるし・・・
if文の中にif文ってできないんですか?
どなたか教えてください。
お願いします。
aの値がおかしいから「ここから」〜「ここまで」って所が無視される。
http://www.geocities.co.jp/HeartLand-Oak/5706/5.txt
0542デフォルトの名無しさん
NGNGきみきみ、これどう思う?
http://piza.2ch.net/test/read.cgi?bbs=tech&key=991483568&ls=50
http://piza.2ch.net/test/read.cgi?bbs=tech&key=991482853&ls=50
0543デフォルトの名無しさん
NGNGif文の中のif文とかの問題ではない。
答えを言ってもいいけど、それだともっと根深い問題に気づかないままに
なってしまうから控えておくよ。
悪いことは言わないから、全部捨てて書き直した方がいい。
0544デフォルトの名無しさん
NGNG他人にデバッグさせるのね。
困った人だわ。
0545541
NGNGと言うことは,何だろう・・・?
書き直したの2度目なんだけどね・・・
とりあえず何を勉強したらよいのか教えてもらえませんか?
何も思いつかないもんで・・・
すいません・・・
0546541
NGNGでも結果的にそうなっているのね・・・
申し訳ないです・・・
ここでは何を聞いたらいいんでしょうか?
0547デフォルトの名無しさん
NGNGだれも指摘しないけど、mainが長すぎて読む気がしない。
(それが仕事なら別)
0548デフォルトの名無しさん
NGNGsetjmp()の処理としてはスタックに積まれているレジスタ退避値や戻り先ポインタ、
呼ばれた時点でのスタックオフセットをグローバルに取られたjmp_buf ma構造体変数
に退避する。
longjump()関数内ではjmp_buf maの情報を元にスタックを辻褄合わて
リターンすれば完了。
詳細はコンパイラの実装の本を読む事をお勧めするよ。
0549デフォルトの名無しさん
NGNG何に教わったんだ?
0550デフォルトの名無しさん
NGNGとりあえず{}で全部囲め!
0551540
NGNGしつこいようですが、コンパイラの種類によっては、関数の呼び出し時に
退避されないレジスタ群とかも結構あって、それらのレジスタを関数内で
破壊する場合は、リターン時に元に戻す必要があります。
longjmpを呼び出す前に、これらのレジスタが破壊されていた場合には、
setjmp以前の値に戻す必要があるわけですが、それらの値はスタックに
積まれているわけでもなく、レジスタを直接操作する以外には確実に退避
する方法が思いつきません。
教えていただいた方法は、関数呼び出し時に呼び出し側で保存されるレジ
スタについてはうまく退避できます(もっともこの場合はjmp_buf型に
格納する必要もないでしょう)。しかし、それ以外のレジスタについては
どうしようもありません。
それから、フレームポインタを使用しない処理系の場合にも、スタックポ
インタを元に戻す方法が思いつきません。
0552デフォルトの名無しさん
NGNG単純なミスです。
それより君のもってる入門書とかで
「これはあまりおすめしない」とか
「一般的にこういうときはこうしてます」
とか簡単な初心者のための定石みたいなもの書いてない?
0553543
NGNGとりあえず、自分なりに納得がいくまで全部書き直してみて。
550の意見は聞く耳もたなくていいから注意して。
0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNG>しつこいようですが、コンパイラの種類によっては、関数の呼び出し時に
>退避されないレジスタ群とかも結構あって、それらのレジスタを関数内で
>破壊する場合は、リターン時に元に戻す必要があります。
そのコンパイラってバグってるんでないかい?具体的な処理系を教えてちょ。
0556デフォルトの名無しさん
NGNG>550の意見は聞く耳もたなくていいから注意して。
俺は>>550じゃないけど別におかしなことを
言ってるわけではないと思うが?
よーするにif文等は全部{}つけとけって言いたいのでは?
0557デフォルトの名無しさん
NGNGa=0;
0558ドキュ学生
NGNG0559デフォルトの名無しさん
NGNGそれは>>557のことか?
0560デフォルトの名無しさん
NGNG元のソースをよく読め。…いや、やっぱりいい。
見なくて済むなら見ない方が…
>>541
scanfのプロトタイプ宣言を良く見直すように。
それとポインタの勉強をやり直せ。
あと、「構造化プログラミング」ってのを勉強しておけ。
0561ドキュ学生
NGNGあ、ごめんね。541のこと。
プログラム初心者の友達が似たようなもの書いてたが、
200行も行けば破綻するでしょ、普通。
デキる奴だから、ここまでのが書けるのかなと思った。
0562デフォルトの名無しさん
NGNGどう見ても >>541 は破綻してると思われ。
0563デフォルトの名無しさん
NGNG話がずれてる気がする。>>551 が問題にしてるのは
- アセンブラを使わずC言語の範囲だけで setjmp(), longjmp() が書けるのか?
だと思われ (>>485 を受けての発言)。これに対する答えは
- No, 場合によってはアセンブラで書かないとダメだ
で良いかい?
0564デフォルトの名無しさん
NGNGに便乗して、return(0) はカッコ悪い??
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG括弧は無実です。悪くありません。
0567デフォルトの名無しさん
NGNG「純粋なCだけで標準関数を実装できるかどうか」という問い自体が処理系依存だって。
0568441
NGNGもともとは、「ライブラリを使わなきゃ何も出来ないんだよーだ」
といいだした人がいて、その人いわく、
「Cでライブラリは書けないんだよ。printf作れるか?オラ」
とのことなので純粋なCでライブラリが書けるか論争になってます。
(オラも最初は書けないと思ってただ)
とりあえず、prinfは純粋なCのみで実装できることが一応証明された
ので、めでたしめでたしとなってます。たぶん。
0569デフォルトの名無しさん
NGNGそれでlongjump?longjump自体がメチャメチャ処理系依存じゃん。
振る舞いも実装も処理系に任せられてるから云々しても無意味なんでは?
0570441
NGNG処理系に依存してる っつーのは百も承知だったり。
とにもかくにも Cだけ(アセンブラでのライブラリとかはナシ)
で書けるかというのが論点だったんで、まーそんなもんです。
おかげで処理系をそんなに気にせずに済むライブラリの存在が
急にすごいものに思えたりして結構面白かったような。
0571デフォルトの名無しさん
NGNGじゃあ>>469とか>>534で結論出てんじゃん。
「処理系によってはアセンブラもライブラリも使わずに実装可能」
0573デフォルトの名無しさん
NGNG>>555の質問俺も聞きたい。退避してないレジスタを呼び出し先で
ぶち壊しておいて、呼び出し元で値を期待するCコンパイラなんて
あるのか?K&R以前のC?
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG誰にも何にも言えないね。
0576ゴルァ
NGNGゴルァ
0577デフォルトの名無しさん
NGNGCで//でコメントがかけるいま、両者は私にとり同じものです(泣
0578デフォルトの名無しさん
NGNG一度クラスというやりかたに触れると、
そうでないスタイルに戻れなくなります。
javaでもいいから触れておくべし。
0579551
NGNG結構いろいろな処理系がそうした実装になっています。
例えば、三菱のM16C/80用の純正コンパイラNC308の場合、すべての汎用レジスタは
呼び出された側で退避しなければなりません。また、R4000系用のIRIX CやexeGCCの
場合は、v0,v1やa0〜a3, t0〜t7レジスタは自由に破壊できますが、s0〜s7(またはs8)
は値を関数内で退避しないといけません。
if (setjmp(env) == foo())
{
hoge();
}
のような処理を想定してみてください。前後で使用する変数がすべてvolatileであった
としても、等価演算子のオペランドであるfoo()の返却値はレジスタに格納されている
場合が十分ありえます。
そして、hogeの中でそのレジスタを破壊する場合、通常であればhogeからのリターン時
にそのレジスタを元に戻すのですが、途中でlongjmpした場合にはそうした動作を期待
できません。
この場合、当然jmp_buf型の変数にそれらのレジスタの値を格納しておいて、longjmpで
元に戻す必要がありますが、レジスタを直接触れない限り、それらを確実にjmp_buf変数
に格納する方法は思いつかないのです。
0580579
NGNGようは、setjmpを呼び出す前のレジスタの状態をlongjmpで同じ位置に戻って
くる際に元の値に戻すには、setjmp関数内で何とかしてスタックに積まれて
いないレジスタを退避する必要があるということです。
setjmpは規格上はマクロですが、関数として実装する以外にCだけで実装する
ことはできないでしょうね。
0581デフォルトの名無しさん
NGNG結局何が言いたいの?setjmpを関数として実装することに何か問題でも?
0582デフォルトの名無しさん
NGNGなんか、俺の今やってる仕事のソースに似てるな。構造が。
gotoの使い方とかmainの中で全部ってのが特に。
みんな電車の中では電源切れよな。
0583デフォルトの名無しさん
NGNG自分でも認めているようだが、それ以上にわけ判らんぞ。
0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGいたらヒントだけでも教えてください
お願いします
0586デフォルトの名無しさん
NGNG0587585
NGNG実際に内部でどんなことやっているのかわからなくて
文字コードについて書かれた本がほとんど本屋においてなくて
何かいい本があったら教えてください。
内容がわからないと通販でも買うのも躊躇してしまうし
0588初心者プログラマ
NGNGその演算結果を表示する電卓プログラムを作成せよ。
ただしswitch分を使い演算子は*,/,-,+などにも対応できるようにせよ。」
これ、教えてください。よろしく願いします。
0589デフォルトの名無しさん
NGNGフローチャートをかいてやる
入力
↓
構文解析
↓
実行
↓
(゚д゚)ウマー
0590初心者プログラマ
NGNGC言語始めたばっかしなので、よくわかんないです。
無能ですいません。
0591デフォルトの名無しさん
NGNG入力は scanf でいいだろ。
使い方は調べろ。
0592初心者プログラマ
NGNG後、よろしくお願いします。
0593デフォルトの名無しさん
NGNG-6.0*-2
をサポートするのか?
整数のみなのか? 負のサポートは? かっこは?
それによって手の抜き方がかわってくるからな
0594初心者プログラマ
NGNG習ってないので、なしです。
お手数かけます。
0595デフォルトの名無しさん
NGNGどっかの2ショットチャットでやれ。うざい。
0596七氏
NGNG0597デフォルトの名無しさん
NGNG了解。めんどうだったし、もう帰るわ。がんばれよ
0598初心者プログラマ
NGNG0599ど素人
NGNG打ち切るといった使い方が分かりません。
0600デフォルトの名無しさん
NGNGランダムでqui2に1から16の数字をいれ
その2桁の数字パターンから
複数のswitch文で8×16の処理の中から1つを選び処理します
32回繰り返しつつ1度出た数字パターンは2度と繰り返さないようにする
プログラムを作っていますがうまくいきません
ランダムで出た数字を一度qui1とqui2にいれ
繰り返し回数をcouでカウントしながら
その数字をac1[cou]とac2[cou]にいれました
それをdo〜while文とfor文で
for(cou=0;cou<33;cou=cou+1){
do{
qui1=rand()%8;
qui2=rand()%16;
}
while(((qui1==ac1[0])||(qui2==ac1[7]))&&((qui2==ac2[0])||(qui2==ac2[16])));
(qui1とqui2の数字に対する処理)
}
while文の中は異常に長いので掲示板では略して書きました
もちろん変数宣言やsrand(clock());などはしています
ac1[32]ac2[32]はすべて-1をいれています
うまくいきませんどうか力をかしてください
0601デフォルトの名無しさん
NGNG要は同じ組み合わせが出なければいいんでしょ?
検証してないから動くかはしらない
int flag[8*16]={0};
int i,qui1,qui2;
for(i=0;i<32;i++)
{
do{
qui1=rand()%8;
qui2=rand()%16;
}
while( flag[qui1*16+qui2] );
flagflag[qui1*16+qui2]=1;
/* ここでqui1とqui2が得られてる */
}
0602デフォルトの名無しさん
NGNG組み合わせの数は 8x16 有る訳だし…
ac[8][16]とかで持てば十分だけろうけど…
32回繰り返すという時点で、1〜8 の qui1 は4回くらい
同じ数が出てくるでしょ?
0603デフォルトの名無しさん
NGNG>>601のやり方でいいと思われ。
ただ、
int flagflag[8*16]={0};
が抜けてるので注意。
うまく動かないうちは、srand(clock());はやらない方がいいぞ。
毎回違う乱数が出るよりはデバッグしやすいから。
srand( 2 );とかで決め打ちすれば、毎回必ず同じ乱数でるからね。
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNGどっちのほうで呼んでますか?
0608デフォルトの名無しさん
NGNG601〜604のプロフェッショナルの方々ありがとうございました
while( flag[qui1*16+qui2] );
flag[qui1*16+qui2]=1;
こんな動作はまだ2ヶ月の俺には思いつかなかったです
皆さんさすがですね
0609601
NGNGちなみに、flag[qui1*16+qui2] となっているのは、
flag[qui1][qui2] のときの宣言時の初期化方法を
ど忘れしたからにすぎない。 わははのはーだ。
0610605
NGNGflag[qui1][qui2]={
{0},{0}
}
もしかしたらこれで合ってますか?
0611605
NGNGflag[8][16]={
{0},{0}
}
もしかしたらこうですか?
0612デフォルトの名無しさん
NGNGにしておかないと、初心者と名乗る努力しない君がいっぱい来るぞ
0613603
NGNGうわ!!めっちゃ恥ずかしい!!
顔から屁が出そーだ!!
ごめん、ちゃんと理解して中田よ。
>>611
int a[2][3]={ {1,2,3}, {4,5,6} };
てな感じなので、それでも一応あってるのかな?
{0}は一つでいいのでは?
>>612
だな。
0614shige
NGNGこれは報復なのだ・・・
0615shige
NGNGありがとうございます。
試してみますね。
06160x264
NGNG0617今更397
NGNG自分が書いた事を、ちゃんと読まずに、レスを入れる人も多いけど、
自分も、人の書いた事をちゃんと読んでない事が分かりますね。
それにしても、標準出力先が、メモリ上と言う発想は、面白かったです。
(煽っている訳ではなく、本当に。)
ですが、自分が出来ないと言っているのは、
K&RやANSI準拠のソースで出来た、大多数の処理系で動くCであって、
処理系依存で出来れば良いと言う話ではありません。
純粋なCという書き方で分かると思って書いたのですが、
それを、大多数の処理系で動くCとは、とって貰えなかったようですね。
尚、この話題を、今更引っ張るつもりはありませんので、あしからず。
0618デフォルトの名無しさん
NGNG>それにしても、標準出力先が、メモリ上と言う発想は、面白かったです。
ANSIもK&Rでも標準出力先が画面表示である必要を規定していない。
実際にあるんだよ。そう言う処理系が。
だいたい何をもって「大多数の処理系」に当てはまるかどうか判断する気か?
標準出力画面表示で標準入力がキーボードって、普及してる総数は多いが
処理系の種別としてはレアな方だぞ。
組込用の処理系なんてCPUとペリフェラルの構成ごとに実装が分かれるからな。
それこそ星の数ほどあるよ。
ちなみにメモリマップトI/Oは組込では好んで使われる。
つまり、大多数の処理系では「純粋なCだけで標準ライブラリを実装できる」事に
なるが?
0619デフォルトの名無しさん
NGNG418さん、421さん、レスありがとう。
sleepだとプロセス全体が休止するんじゃないかと不安でした。
LinuxJapanも見てみます。
0620デフォルトの名無しさん
NGNGそんなに偉そうに言うもんじゃないよ。
617の言っていることは、表現のまずさはともかく、特に間違ってはいない。
組み込み処理系はフリースタンディング環境だから、そもそも標準関数など規格上存在
しない。
標準関数について語る場合、特に指定しなくてもホスト環境のことに決まっている。
printfなどは純粋なCだけでスクラッチできるけど、既出のsetjmpやlongjmpはプロセ
ッサによってはやはり実装できない。戻り先番地が専用のスタックに詰まれる場合もある
からね。この場合、アセンブリ言語でないとどうしようもない。
もっとも、アセンブリ言語でしか実装できそうにないものでも、最悪の場合、機械語の
サブルーチンを配列に格納して、それを関数のポインタにキャストして無理やりコール
すれば実現できる。ところが、プログラムとデータが同一のメモリマップ上にない場合
にはこの方法は無理。
これが理由でsetjmpとlongjmpが実装できない場合が有り得る。
それにexit関数も(おそらくatexitも)無理。なぜなら、最初のmainの呼び出しから
リターンするときexitの呼び出しと等価でないといけないから。スタートアップを
書き直せばよいというかも知れないけど、ホスト環境のエントリ関数はmainであると
決まっているので、スタートアップに手を出した時点で規格合致処理系ではなくなって
しまうからね。
0621デフォルトの名無しさん
NGNGCで標準出力に出力する場合は、stdoutを使いなさい。
直接メモリ上に書き込んでしまうと、意味のある標準出力になりません。
その上で、あなたが言ってる事にどれほどの意味があるか考えて下さい。
0622コロコロ 487です
NGNG0623デフォルトの名無しさん
NGNGstdout の出力先がメモリだ、と言っておるのだ。
0624デフォルトの名無しさん
NGNGmalloc,free,time,setjmp,longjmp,exit
足りない(余分な)ものもあるかもしれないが、効率を無視すれば、
これだけあれば、ほとんどの標準関数は作れるはず。
0625デフォルトの名無しさん
NGNGアホ?
0626デフォルトの名無しさん
NGNGつまり、それらは全部ライブラリってわけだ。
0627デフォルトの名無しさん
NGNG>>617=>>397は、結論は正しい可能性があるんだけど、途中で論理破綻
したり逆切れしたりで全然信用されていないんだよ。
結局良く考えないで発言した>>397が否定されたせいで、どうしても
自分の考えが正しいと認めさせたいだけ。
凄く幼児的だから正しい間違っている以前に相手しない方が良いよ。
スレが汚れるだけ。
0628デフォルトの名無しさん
NGNG僕も初心者だけど、君の為に一生懸命サンプル作ったよん。
ゲーム仕立てになっているからあそんでねん。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <time.h>
#include <stddef.h>
int GetKey(void){int i;if(kbhit())i=getch();else i=0;return i;}
int GetChar(char *p,double d){int i,j;time_t t;t = time(NULL);
for(j=0;i!='\r';){if(i=GetKey()){if(i!='\r')printf("%c",p[j++]=(char)i);
else {printf("\r\n");p[j++]='\0';return 1;}}
if (difftime(time(NULL),t) > d)return 0;}return 0;}
int main(int argc,char *argv[])
{
char c[]="NamaMugi Namagome Namatamago.";
char p[100];/*tekitou*/
printf("ねぇねぇ。「%s」って入力して。はやくはやくー!\r\n",c);
if (GetChar(p,4)){
if(strcmp(c,p))printf("ちげーよ。ダホ!");
else printf("なに真剣になってんの?バカじゃない?%s\r",p);
}else printf("遅いんじゃい!このノロマが!");
return 0;
}
0629デフォルトの名無しさん
NGNG勉強中の者としては役に立ったです。
他にも違うテクつかったのキボーン
0630デフォルトの名無しさん
NGNG>ので、めでたしめでたしとなってます。たぶん。
とありましたが、ではいざ
main()
{}
だけでhello worldを表示するとなると{}内にはどのような記述が考えられますか?
環境はWindows上でVC++6を使うとした場合で・・・
0631デフォルトの名無しさん
NGNG”画面に表示” というのは全く議論の対象になってなかったからね。
ライブラリのソースを見てみないとにんともかんとも
0632デフォルトの名無しさん
NGNGとても初心者とは思えません。凄いです。
このやりかたでは、キー単発しか取得できなくて、連続押しは
出来ませんよね?連続押しできる方法はあるのでしょうか?
簡単なゲームを作りたいんですけれも挫折してたんです。
でも感謝です。テトリスとかできそうですね。
0633デフォルトの名無しさん
NGNGよろしいでしょうか?
0634デフォルトの名無しさん
NGNG>Windows上でVC++6を使うとした場合で・・・
自分もVC++の処理方法は知らないので、
もしかしたら、何をやっても、出来ないかもしれませんが、
stdoutのメンバに必要な処理をしてやれば多分OK。
バッファがフラッシュ出来ないので、あふれた場合や、
バッファリングされていない場合はNGですが、
そうでなければ、プログラム終了時に、勝手に出力されます。
他の方法は、VC++に詳しい人に期待。
0635デフォルトの名無しさん
NGNG#include "stdio.h"
main()
{
fputs("Hello World\n", stdout);
}
じゃないの?
それから、ライブラリが無いと何もできないというのは、まあ
普通に OS 提供の API やシステムコール等使うという意味では
そうなんだけど、8bit パソコンの時代や Wonder Swan みたいな
シンプルなゲーム機だったりすると、C で直接ハード叩いてあれこれ、
ってこともそれほど珍しくないと思う。Win32にしても、突き詰めると
結構多くの(OS側の)コードもCで書いてあったりするし。
0636デフォルトの名無しさん
NGNGHANDLE GetStdHandle( DWORD nStdHandle );
int WriteConsoleA( HANDLE hConsoleOutput, void *lpBuffer,
DWORD len , DWORD *written, void *reserved );
int main() {
DWORD written; HANDLE hStdout = GetStdHandle(-11);
WriteConsoleA(hStdout,"Hello World!\n", 13, &written, 0);
return 0;
}
_stdcallを宣言に入れると不純と言われる気がしたんで、 コンパイルは下のように。
cl /Gz hello.c /link /nodefaultlib kernel32.lib /entry:main /opt:nowin98
0637デフォルトの名無しさん
NGNGそういえばMSXのCならライブラリなんていらないな
0638デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNG1命令のローテートシフト
コンパイラが賢いと、ここぞって所で使ってくれるんだろうか?
cpu依存の命令を使う時、MMX、SIMD、3DNowとか。
0641デフォルトの名無しさん
NGNG自慢
0642く
NGNG成田空港の駐車料金は以下のようになっています。最初の一時間は500円、一時間を
越えて6時間までは30分ごとに250円ずつ加算、6時間を越えて72時間までは30分ごと
に30円ずつ加算、ただし、6300円が上限、72時間を越えると12時間ごとに900円ずつ
加算されます。たとえば11時間駐車すると500+2500+300円になります。年月日つき
の入庫時刻と現在時刻を入力して駐車料金を表示するプログラムを書きなさい。
これって月や年が変わると以上に面倒なんですが、誰か教えてくれませんかね?
0643デフォルトの名無しさん
NGNG出題した先生にバットで殴る蹴るの暴行を加えれば、非常に楽になりますよ
0645デフォルトの名無しさん
NGNGそれって核心に近すぎてギャグになっていないような
俺なら適当な基準点からの分単位の時間に変換して差をとる。
基準点は駐車開始年の1月1日とかにするかな?
すなおに引き算で年月日の差を求めてもいいけど、面倒。
どっちにしろ、月ごとの日数はテーブルかなんかで持ってないといけないね。
あとうるう年の計算に気をつけな。
0647デフォルトの名無しさん
NGNG月や年が買わったら「早く取りに行きましょう」と表示して終了。
0648デフォルトの名無しさん
NGNGそういえば、ちょっと前まで銀行のATMって、記帳しないでログがたまっていくと
「そろそろ記帳しませんか?」みたいメッセージ出てたよな・・・
最近はあふれた分だけ別に郵送されてくるけど。
0650デフォルトの名無しさん
NGNGその仕様では、駐車の上限、下限、使用される暦、出力通貨は何かが記載
されていなので、たとえばBC4004/1/1からユダヤ歴9010年Thischri月5日までの
駐車料金をインドネシアルピーで出力しないかんかもしれません。よって、
・各種暦からユリウス日への変換ルーチン
・無制限長の四則計算ルーチン
・ネットワークを利用して通貨変換するプログラム
などを利用するのがよいと思われます。
0651デフォルトの名無しさん
NGNG何はともあれ、「成田空港の駐車場」が作られるより
昔の暦は考えないでいいと思いますがどうか。
0652デフォルトの名無しさん
NGNGしかしlongを超える期間の処理には気を配った方が良いな。
0653デフォルトの名無しさん
NGNG未来に関しては五十億年後ぐらいまで見ておいた方がいいのかな?
0654デフォルトの名無しさん
NGNG0655コロコロ
NGNG課題 文字列操作
<処理概要>
入力ファイルに入っているランダムな文字列を読み込んで編集する。
入力ファイル名 \public\C言語応用\課題02\input.txt
入力ファイルの内容
io4@5ovgiq@w340 9tn@q0mikanb924 rwijra;o4 aestrawberryut@90
240strawberry9t animikanrja ddg fvbananaxjfringogqworiadf;
amomolkjtcwieroutstrawberry34t7vv
dsgfoiuto sdrgovq@4r q0awitflksjd;f
laumikanwett errgt thhbcvbasf fitu@qo4rfachocolateaaarffvnxdkjfq23
sdfgi oq34itu aqeurgvksjd q9bananau4 tue ggsjdgoiumomoq349tifvk
asrgmomoio uweringoorigporegf
asdmomofg sjd;fmikanligurin@qa94it kwjegfr:bananaa ergtqaegr
dfgi oeoitgu;fldkgj b9wu44tlgkjjlksvdjgfsmikanadfg
oiupqoi34 ta;lkdf j;lakjdfg0987 bjlhbxcvblkj
;lkjchocolateroigeurrgssdmomoffkjahljhringoglar+ j;lkj4rti
<詳細仕様>
入力ファイルの内容は、ランダムな小文字のアルファベット文字列からなり、
1行の文字数は揃っていない。これを1行ずつ読み取り、次の編集を加えて
1行を20文字に揃えて標準出力する。加える編集項目は、以下の通り。
1.文字列"ringo"を発見したら、"APPLE"に変換し、発見回数を数える。
2.文字列"mikan"を発見したら、"ORANGE"に変換し、発見回数を数える。
3.文字列"momo"を発見したら、"PEACH"に変換し、発見回数を数える。
4. 文字列"banana"を発見したら、後ろに"cake"を付ける。
5. 文字列"strawberry"を発見したら、後ろに"cake"を付ける。
6. 文字列"chocolate"を発見したら、後ろに"cake"を付ける。
7. 1〜6以外の文字列の場合は、"."(ピリオド)を出力する。
例えば、入力ファイルの1行目にq0mikanb924という文字列があるが、
この"mikan"の部分が"ORANGE"に変わる。他の文字はピリオドになる。
【結果の表示例】
・・・・・・・・・・・・・APPLE・・
・・・・・ORANGE・・・・・・・PE
ACH・・・・・・bananacake・
・・・・・
ringoの出現回数は、1回
mikanの出現回数は、1回
momoの出現回数は、 1回
bananaの出現回数は、1回
以上が課題の内容です。ご託宣お願い致します。
再度顔出してすみません。かなり切羽詰まってます。
私は低レベルなのでそれに即したプログラムでお教え願えないでしょうか。
また、fgetsなんかを使うのでしょうか?
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG>>643 の解答にかなり納得している。
>>642 よ>643の解答通りにやったらいいのでは。そうすれば悩む必要はないね!
memmoveを用いたプロトタイプ宣言これってmemcpyと比べてどっちが便利(扱い易い)
ex)void *memcpy(void *dest,const void *src size_t n);
void *memmove(void *dest,const void *src,size_t n);
まぁ、memmoveは重複しても性格にコピー去れるみたいだけど…
もしよかったら扱い易い方の貴方の使い道ちょっこだけで書いてみて…
0659コロコロ
NGNG1行読み込みはどのようにするのでしょうか?
また、リダイレクトとはどのようにするのでしょうか?
0660デフォルトの名無しさん
NGNGプログラムを組む以前の部分すら分かっていないようだが、
学校でいったい何をやってるの?
0661デフォルトの名無しさん
NGNG偽者でも本物でもどっちだっていいんだよ。
キミさ、プログラミング全く向いてないから止めちまえ。
0662デフォルトの名無しさん
NGNGと同一人物ですよね♪ nanndekokodemo同じ質問、氏点の?
ほんとに和姦ないの?
0663おしえてくん
NGNGprintf(" i=%d \n ++i=%d",i,++i);
がどうしておなじすうじになるんでしょう?
0664デフォルトの名無しさん
NGNGttp://green.jbbs.net/shop/80/uramono.html
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGり税制が変わったりと言った、高度に政治的な仕様変更に対応するのが
大変です。以下のように仕様を書き換えて提出すると評価が上がります。
成田空港の駐車料金は以下のようになっています。最初のn時間はp円、n時間を
越えてm時間まではn/2分ごとにp/2円ずつ加算、m時間を越えてo時間まではn/2分ごと
にq円ずつ加算、ただし、r円が上限、o時間を越えるとl時間ごとにs円ずつ
加算されます。
0667デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=989929288&nofirst=true&st=528&to=528
>>663
http://piza.2ch.net/test/read.cgi?bbs=tech&key=989929288&nofirst=true&st=528&to=528
よく読め。
0668デフォルトの名無しさん
NGNGてめーみてーな奴はC FAQ読めって言ってるだろ。ヴォケ。
キーワードは「引数の評価順」だ。
0669 うんこMEN
NGNG一体どういったところで数学の知識が必要とされるのですか?
股、どのくらいのレベルまでが必要とされるのですか?
中学生とか高校生の数�Uとかあるじゃないですか。
あと、アルゴリズムについての知識があまり無いのですが
どうすれば増やす事が出来ますか?
それとここのプログラマーサンたちは今までどういう勉強法で取り組んでいたのか
教えていただけませんか?
股一日何時間くらいかとか、出来るだけ詳しくお願いします。
私はかれこれ2年ほどCを触っているのですが、どうもうまく出来ません。
お願いします。
0670久保晶彦
NGNG0671デフォルトの名無しさん
NGNG最低限必要なのは論理学。知らないとプログラム書けない。
あとは業務によって千差万別。
たとえば波形データを扱うような場合は代数学、解析学が必要。
波形データの測定の場合にはさらに統計学も必要。
勘定系とかだと統計学とか。3Dゲームとかだと代数幾何解析全部必要。
アルゴリズムは専門の本があるから読む。
自分でアルゴリズムを開発するなら数論の勉強をしておくといろいろと
役に立つ。
0672デフォルトの名無しさん
NGNGなんの役にも立たないレスありがとう。
0673 うんこMEN
NGNGすごい・・・。
論理学ってどういうものですか!?
数論というのも今 初めて聞きましました!!
ヤバイですね・・・。
本とかあればいいんですけど・・・。
あと、代数学とか統計学とか、「必ず」必要なのでしょうか?
知識が無くてもある程度なら組めるといった甘い考えでは通用しないんですかねぇ・・・。
やっぱ・・・。
アルゴリズムの本ですか〜。
わかりました!!
今度買ってきて色々読んでみることにしますです。
ああ・・・。
難しそう・・・。
あ、わざわざご丁寧にありがとうございました!!
おかげで助かります!!
0674デフォルトの名無しさん
NGNG論理学ってのは命題に対して対偶・逆を導出したり…
要は「pならばq」は真だけど「qならばp」はかならずしも真ならず、
といったことを系統立てた学問。
「必要条件」とか「十分条件」て言葉くらいは聞いたことあるだろ。
数論てのは、ぶっちゃけた話、数パズル。
フェルマーの最終定理もこれに含まれる。
知識が無くてもある程度できなくもないけど、当然の事ながら
原理が理解できてないとコピペ以上のことはできない。
チューニングや仕様変更にはまるで対応不可。
0675ドモルガン
NGNG0676デフォルトの名無しさん
NGNGド・モルガンの定理、ベン図、カルノウ図を駆使して論理演算を最適化。
コンパイラ作ったりするには必須。
コンパイラがこれをやってくれないことが明らかな場合とか、アセンブラ
でコーディングするときは知ってた方がいいな。
0677デフォルトの名無しさん
NGNGと
if(!(a!=b || c!=d))
が
同じことを意味してるって位はわかる程度の論理学は必要なんでは?
∪とか∩はAAのための記号じゃないってことですよ。
0678デフォルトの名無しさん
NGNGif(foo() && bar())
と
if(!(foo() || bar()))
の結果は同じにならないよね
0679デフォルトの名無しさん
NGNG結果って何?
0680デフォルトの名無しさん
NGNGお前バカか?
ぜんぜん結果違うじゃん
0681デフォルトの名無しさん
NGNGif(!(!foo() || !bar()))
って書きたかったんじゃないのか?
結局if(foo() && bar())とかいうときにはfoo()が偽ならbar()は評価
すらされないって事を言いたかったんだと思うが、
もうちょっと落ち着いて書け。
0682デフォルトの名無しさん
NGNGBorland C++ Compiler 5.5でコンパイルしてみたのですが、
なぜかコメントの入っている行のprintf()が実行されません。
ちなみに、LSI C-86 Ver.3.30 試食版では正常に動作しました。
#include <stdio.h>
main()
{
char c;
long n;
n = 0;
c = getchar();
while (c != EOF) {
++n;
c = getchar();
}
printf("%ld\n", n); // 問題はこの行
return 0;
}
これについて何か知っている方は、ぜひ教えてください。
0683デフォルトの名無しさん
NGNGそれはC++なら規定されていたかもしれないけど、
Cだと処理系依存じゃねーのか?
0684中途半端くん
NGNGif( ! ( ! foo() || ! bar() ) ) じゃないかな(あってる?)
それよりも、Cで評価式の中に関数を入れるのは
わかってないとバグの元だから注意しよう。
0685デフォルトの名無しさん
NGNGopen .. or die
で積極的に利用していますよね。
0686デフォルトの名無しさん
NGNGc = getchar();
while (c != EOF) {
++n;
c = getchar();
}
この行、無駄ねぇか・・・?
whileの()内に条件書きたがる人って、この手の無駄多いよなぁ
0687中途半端くん
NGNG0688デフォルトの名無しさん
NGNGK&Rには
「左から右に評価され真偽が判明した時点で打ち切る」
って書いてあるから、多分規定されてるんだと思う。
0689デフォルトの名無しさん
NGNG++n;
0691デフォルトの名無しさん
NGNG「多分」っていうか規定されています。
基本的な演算子の機能くらいみんな覚えようよ〜。
5つも10個もの言語を使わなくちゃならなくって
大変、って人はともかくとしてさ。
0692デフォルトの名無しさん
NGNG1から6までの乱数作りたいんですけど。
randだけではむりですよね。
VBだとわかるんですけど。
0693デフォルトの名無しさん
NGNGかけろ!われ!あまれ!
0694デフォルトの名無しさん
NGNG数式的には算数レベルだけど、意外と思いつかないtipsなのかもね。
0697デフォルトの名無しさん
NGNGこれくらいでどうだろう(藁
うーんと、バッファがフラッシュされていない可能性はどうでしょう?
fflush(stdout);
を入れてみるとか。
0699デフォルトの名無しさん
NGNG条件が違うんだから結果が違うのは当たり前、という話だな。
0700デフォルトの名無しさん
NGNGとでもして、printf自体が実行されてるかを確認しよう。
0701デフォルトの名無しさん
NGNGfprintf(stderr,"%ld\n",n);
にしてみるとか。
よくわからんがBolandCにもコンソールってあるの?
0703デフォルトの名無しさん
NGNG> 実行されません。
無限ループしてないか?プロンプトは返ってきているのか?
だとしたら
> char c;
int c;
にしてみろ。
0705デフォルトの名無しさん
NGNGもしくは
Ctrl+Z
で終了させてみろ>>682
0706デフォルトの名無しさん
NGNGMS-DOSで図形を表示したいのですが
エスケープシーケンスでスクリーンの制御をするためのライブラリって
なんかいいのあるかな?
図形って言うか サインカーブの曲線とかのグラフ表示したい
どうなんでしょみなさん?
0707デフォルトの名無しさん
NGNGpc-98なら、やったことあるけど。。
0708デフォルトの名無しさん
NGNG>printf("%ld\n",n);
を
printf("\n%ld\n",n);
って改行入れてみればいいんでない?
0709682
NGNGすべて試してみたのですが、やはりうまくいかないようです。
↓もうひとつ試したのですが
>>682のwhile(){}の後
printf("%ld\n", n); //表示されない
printf("Hello, world!"); //表示される
return 0;
}
また、条件をEOFの代わりに別の文字 (例えば 'q' ) にした場合は、
正常な結果が出ました。
なぞは深まるばかりです。
0711デフォルトの名無しさん
NGNGコンパイラ:Borland C++ 5.5.1
OS :NT4.0 SP5
で>>682のソースを実行したけどうまくいくぞ?
そっちの環境を教えてくれ
0713デフォルトの名無しさん
NGNG例えば1800年1月1日から2001年1月1日の日数計算だったら
閏年も考慮できるんですが、それが
1800年1月1日から2001年12月31日とかになると、
正確な数字が出せません。月によって日数が違うのはどう考えたら
いいんでしょうか?
0714デフォルトの名無しさん
NGNGそんなもの言うまでもないと思うが。
本当に思いつかないのなら、脳味噌スカスカだぞ。
0715デフォルトの名無しさん
NGNG脳みそスカスカでいいからどういうソース書いたらいいのか教えて。
0716デフォルトの名無しさん
NGNG「閏年の判定」
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/l/leapYear.html
「その月が何日あるか」
http://alfin.mine.utsunomiya-u.ac.jp/~niy/algo/d/daysOfMonth.html
0717デフォルトの名無しさん
NGNGchar c ; long n ; getchar () ;
上を、全て下のように変えて、駄目だったら、
int c ; size_t n ; fgetc(stdin) ;
次の結果がどうなるか報告するように。
printf("Hello, world!\n%ld\nHello, world!",n) ;
0718デフォルトの名無しさん
NGNGdouble c = 128.555;
a = c;
printf("%d\n",a);
結果 : 128
どうしてこうなるのでしょうか?
四捨五入がされないんですがコンパイラに問題があるのでしょうか?
教えてください。
0720デフォルトの名無しさん
NGNG切り捨てが基本。
0722デフォルトの名無しさん
NGNG0.5を足してキャスト
0723デフォルトの名無しさん
NGNG+0.5
0724デフォルトの名無しさん
NGNG0.5を足しても、やっぱり1人以上だな
0725デフォルトの名無しさん
NGNG浮動少数→整数の変換は、小数点以下が単に無視されるだけだそうです。
123.456→123ってことですね。四捨五入したかったら予め0.5を足しましょう。
負数の場合はこれじゃダメだけど。
0726デフォルトの名無しさん
NGNG怖くて使えないと思わないのかなあ >>722
0727デフォルトの名無しさん
NGNGchar *buff = new char[10];
// 中略
1) delete [] buff;
2) delete buff;
1)が正しいと思うのですが、2)でもメモリーリークしない
とベテランの人に言われました。本当でしょうか?
0728sage
NGNGベテランの使ってるコンパイラは親切なのでリークしないのでしょう。
あなたが将来使うコンパイラでリークしない保証はありません
0729デフォルトの名無しさん
NGNGの時に例えば、DEFだけを取り出す処理ってどういった流れになるんでしょうか?
0730デフォルトの名無しさん
NGNGそのものズバリのコードを書いたほうがいい?
ヒントだけの方がいい?
0731デフォルトの名無しさん
NGNGunsigned char *bb = &aa[8];
0732デフォルトの名無しさん
NGNGやりたい事によります。
"DEF"を探したいだけなら、strstrで十分だし、
"|"をデミリタにして、区切ってから探したいのなら、
strtokと、memcmp(strcmp)を使う。
0733デフォルトの名無しさん
NGNG笑えた。(^^;
0734デフォルトの名無しさん
NGNGwhile(*p!=NULL){
pからの文字列とターゲット文字列"DEF"を比較
一致した?
ポインタを返す
pを進める
}
エラー;
|を区切りとして扱うなら、NULLと同格にみなしてくれる比較関数を書こう
その場合pの進み先は次の|かヌルになる。
0735デフォルトの名無しさん
NGNGありがとうございました。発見次第delete[]に直します。
0736デフォルトの名無しさん
NGNGint argc;
char **argv;
{
inst( argc, argv );
}
この「int argc;」「 char **argv;」は、なぜmainの{}の外に記述
してあるのですか? {}の中に書いてはダメなのでしょうか?
0738デフォルトの名無しさん
NGNGANSIでは
int main(int argc, char* argv[])
と書きます。
ていうか{}の中に書くのはローカル変数だ。
0739デフォルトの名無しさん
NGNGGetTickCount()%6+1では、どうだろう?
0740K&R先生
NGNG0741デフォルトの名無しさん
NGNGそれだと1/1000秒以内に数回読み出すような場合に不都合が。
2回振った合計を求める場合とか。
0742デフォルトの名無しさん
NGNG俺も少し前までやってたけど
NULLと比較しないでNULL文字'\0'と比較するものじゃないのですか?
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNGそうですね。
鬱なのでもう一度K&Rを頭から読みます。
0745682
NGNG報告します.
一番最初の”Hello, world!\n”だけ無視されました。
何が起こっているかは少しわかりました。
どうやら、初めの改行までが表示されないようです。
もう少し調べてみます。
0746682
NGNGいろいろと騒がせてすいませんでした
ほんとにバカなミスをしていたのにきずいていなかっただけでした。
ありがとうございました >> all
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGていうか掲示板に質問投げて自力解決したらフィードバックするのがルールだぞ。
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG壮大なネタ?
それから、中途半端くんは、もしそれがネタなら書き込みを控えるように。
ここはネタすれじゃないよ。
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNG>はやくて見えないだけです。
>一番最後に sleep(10); でもはさめばprintfは実行されます。
これをネタと言わずして何と言おう。
本気でこれを書いたのか?
0756デフォルトの名無しさん
NGNGうまく動かないんですが何がわるいんでしょうか
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGそんな問題か?
0759デフォルトの名無しさん
NGNGどうしたらいいのでしか?
0760デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG↓ではなぜ while の中に埋め込んであるのですか?
read(STDIN_FILENO, buf, sizeof(buf));だけでは
どこがだめなんでしょうか。
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>
#include <stdio.h>
#define BUFSIZE 1024
main(int argc, char *argv[])
{
char buf[BUFSIZE], *p;
ssize_t len, l;
size_t n;
while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
p = buf;
n = len;
while (n > 0) {
l = write(STDOUT_FILENO, p, n);
if (l < 0) {
fprintf(stderr, "%s: write error\n", argv[0]);
return 2;
}
p += l;
n -= l;
}
}
if (len < 0) {
fprintf(stderr, "%s: read error\n", argv[0]);
return 1;
}
return 0;
}
0763デフォルトの名無しさん
NGNGreadの使い方を調べよ。
0764デフォルトの名無しさん
NGNGエラー処理のかわりにしてるんじゃないか?
0766デフォルトの名無しさん
NGNG0767682
NGNG出力先をファイルに切り替えた場合は、正常に出力されました。
これまでわかったことをまとめてみます。
getchar()で入力されたEOFが、画面上に表示される(?)と、
そこからは文字を「画面」に表示することが不可能になります。
ただし、改行が出力されてからは表示可能になります。
0768ヒントをやろう
NGNG0769中途半端くん
NGNG改行が押されるまで入力ストリームに文字は入っていかないから
取り出せない。こともある。ような気がする。
たとえば、
123<ctrl+d>
と入力しても終わらないでしょ?(このあと<enter>後に<ctrl+d>なら終わる)
123<enter>
<ctrl+d>
ならきちんと4文字入力したと出ます。(<ctrl+d>のみ なら取れる)
で、これは標準入力の問題なんで、bashだかttyだかの設定を
変更すると出来たような気がするけどその辺はよくわかんない。
0772デフォルトの名無しさん
NGNG>実行中の標準出力が別ウィンドウになってるようなのならそういうことあるし。
なんの話をしているのかさっぱり解らないよ。
それに、>>682の質問は「実行されないが何故か?」だろ。
それに対して、
>はやくて見えないだけです。
と書いたということは、「実行されているが*見えない*」と答えたんだろ。
そして、
>一番最後に sleep(10); でもはさめばprintfは実行されます。
などと意味不明なことを書く。
どこが「半分本気」なんだよ、馬鹿ものが。
つまらんエクスキューズをしないで、ちゃんと答えるか、ネタスレにでも
行きやがれ。
0773デフォルトの名無しさん
NGNG>>>682の環境はDOSだったね。bashもttyもあんま関係なかったね。
お前本当に名前どおりの奴だな。
>Linuxなら stty -icanon で解決するんだけどねぇ。
知らないなら口出しするなよ。
0776デフォルトの名無しさん
NGNGあーそうかい。
お前の*ちゃんと*のレベルがわかったよ。
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNGゾロ番おめでとう
0779777
NGNG何気にここ初書きこみでした。
なんか知り合いがゲーム作るのはC言語がイイ!!
って言ってたんだけど実際どうなんですか?
後、もしC言語を勉強したかったら
どこのサイトに行けばよくわかるですか?
0780デフォルトの名無しさん
NGNGネタはsageでやってくれ。
マジなら書き込むな。
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNG作ったんですが、実行するとすこし反応しなくなります。
どうすればいいのでしょうか。
0783デフォルトの名無しさん
NGNGてきとーなところでメッセージループを回せ。
0784デフォルトの名無しさん
NGNG何で682で、EOFが表示されるの?
どこか、プログラムを端折ってませんか?
もしかして、682のままなら、表示されませんか?
だったら笑うけど…。
0785デフォルトの名無しさん
NGNG>>実行中の標準出力が別ウィンドウになってるようなのならそういうことあるし。
>なんの話をしているのかさっぱり解らないよ。
>>一番最後に sleep(10); でもはさめばprintfは実行されます。
>などと意味不明なことを書く。
Windows環境でDOSプログラムを実行すると、DOS窓が立ち上がってプログラムが実行されて、プログラムが終了すると窓が消えることがあるけど、761はそれが言いたいのでは?
プログラムの最後にSleep()を突っ込めば、一旦停止されるからprintf()の出力が見えるってこと。
761が説明不足なのはわかるが、おまえの理解力も足りない。
0786宿題です
NGNGといわれました。まったくわかりません。
ビットマップがどういうデータ構造をしているかも知りません
どなたか暖かい手を差し伸べてください。お願いします。
0787デフォルトの名無しさん
NGNG宿題は、スレ違い。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=982853418
0788デフォルトの名無しさん
NGNGやる気があるなら、BMPのデータ構造くらい自分で調べろ。
簡単に分かることさえやらないようなヤツには答える気はしない。
0789デフォルトの名無しさん
NGNGしかし見栄え良く24色に減色するにはかなり高度なアルゴリズムが
必要とされると思われ。君らできる?(w
0790デフォルトの名無しさん
NGNG0791デフォルトの名無しさん
NGNGもしかしてsetargv.objってMS-Cにしか付いてきませんか?
Quick-Cを使ってます。ネタじゃないです。
0792デフォルトの名無しさん
NGNGR3階調G4階調B2階調で24ビットBMPのまま単純近似じゃだめかな?
0793デフォルトの名無しさん
NGNGここまで極端な減色だと、元画像の特性がどんなだろうと見栄えのある
画像にはなりにくいので、思い切った減色が必要。
モノクロにしてから256→24に減階とか、輪郭抽出して2値にしちゃうとか
前処理として強烈なフィルターかけるとか。
0794デフォルトの名無しさん
NGNGそう思う。俺がこの問題を解くのならモノクロ化するね。
たぶん印象は一番良いはず。
0796デフォルトの名無しさん
NGNG画像サイズが大きくなって良いなら、CMYKの単/複合色の10色と
白黒2色の計12色を使用し、砂網で網点化すりゃ再現できる範囲で
写真画質も可能だが、そんな答えを期待している?
0798デフォルトの名無しさん
NGNGIndexColorのBMPファイルだと思われ
0799デフォルトの名無しさん
NGNG>IndexColor
上が良く分からないのですが、24色に何か意味があると言う事?
普通は16か256。百歩譲って32だと思うのですが…。
0800デフォルトの名無しさん
NGNG意味は無い
あえてあげるとBMPにしたとき256、32よりサイズが小さくなることのみ
0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGここで言うBMPとは、BMPフォーマットを指しているのではなく、
ベタなフォーマットの事を指しているのだと思う。
だから、使えるかは別として、考え方は正しい。…多分。
0803へたれ
NGNG確かものによっては
printf( "test1\n" );
getch();
とか
getch();
printf( "test2\n" );
って書いたら printf の表示がおかしくなったと思う。理由しらね。
Windows2000評価版 + VC++6 SE で
printf( "test\n" );
getch();
なら問題なかったけど。
0804へたれ
NGNG何の意味もないプログラムですが、
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
long test( void )
{
static long st = 0;
st += ( st >> 4 );
return ++st;
}
int main( void )
{
int i;
int hairetu[1000];
clock_t start, end;
for ( i=0 ; i<10 ; i++ )
hairetu[i]=0;
start = clock();
printf( "start = %d\n", start );
for( i=0 ; i<10000 ; i++ )
hairetu[ test() % 2 ]++;
end = clock();
printf( "start = %d\n", start );
printf( "end = %d\n", end );
return getch();
}
#if 0
===== 実行結果 =====
start = 50
start = 2530
end = 50
#endif
Windows2000評価版 VC++6 SE SP1での実行結果です。
俺には何が間違っているのかわかりません。
バグですか?それとも何か間違ってるのでしょうか?
0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNGコメントのいれかたが渋い。
0807デフォルトの名無しさん
NGNG一応、フォーマットを厳密に解釈するなら、5bitIndexColorで最大24色
というBMPファイルを作ることは可能。
1ラインごとにロングワードアラインのためのパディングが入る。
0808デフォルトの名無しさん
NGNGstartの値を変えてないのに、なんで50と2530になるの?
って質問だよね?
test()を10000回も呼び出すとstがオーバーフローしますよね。
stはunsigned型じゃないのでオーバーフローして値がマイナスになることがあります。
そんなときに hairetu[test()%2] が hairetu[-1] になることがあります。
で、たまたまhairetu-1はstartのアドレスだったって話です。
# うちの環境だと違ったけど。
ループを抜けた時点で
hairetu[0] + hairetu[1] + start - startの最初の値 = 10000になるでしょ?
startとendの値が同じなのは大して処理に時間がかからないからです。
0809デフォルトの名無しさん
NGNGJIS,SJIS,EUCの判別はできるのですが、UTF-16,UTF-8の
判別法がわかりません。何かよい本、またはホームページが
あったら教えていただけないでしょうか?
よろしくお願いします。
0810デフォルトの名無しさん
NGNG無いんじゃない?
0811デフォルトの名無しさん
NGNGヴァカか?
test()が返す値は常に1だぞ?
0812デフォルトの名無しさん
NGNG逝ってくる
0813中途半端くん
NGNGhttp://www3.cds.ne.jp/~marimo/data/rfc/rfc2279-jp.txt
ここに日本語訳あるよ
0814デフォルトの名無しさん
NGNG無いと思うよ
ただ判別法ならバイト並びで、0の後に0x7f以下の値が頻出するならUTF-16とし、
UTF-8はマルチオクテット後のASCIIが正しくデコードできること、でいいんじゃない?
0815デフォルトの名無しさん
NGNGレオにしたそうだ。
0816デフォルトの名無しさん
NGNG知ったかぶり厨房は氏ね!
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG偶然出来たから、シチューと名づけられたそうだ
0820デフォルトの名無しさん
NGNGありがとうございました
0821デフォルトの名無しさん
NGNG食べ物だから、カレーライスと名付けられたそうだ。
0822宿題です
NGNGのですが方法がまったくわかりません。
どなたか暖かい手を差し伸べてください。
0823デフォルトの名無しさん
NGNGなんか、課題をかわりにやってくれっていっているようにしか
読めないが気のせい?
# それは自分の為にも他人の為にもならないよ
0824デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=991726421&nofirst=true&st=16&to=16
0825デフォルトの名無しさん
NGNG自分の言葉で語れや
0826デフォルトの名無しさん
NGNG自分の言葉で語れや
0827824
NGNG0828デフォルトの名無しさん
NGNG違うぞ。そんな間違った知識どこでおぼえてきたんだ。
カレーライスは、始め立ち食いメインの名もない飯の一種だった。
彼らは、そのうち立って食することは行儀の悪いことだと悟り始めた。
そして、彼らは、椅子に座った。
つまり、そういうことだ・
0829デフォルトの名無しさん
NGNG4次方程式を解くプログラムを作れといわれたのですが
ヒントだけでももらえませんか
言語はCです
お願いします
0831デフォルトの名無しさん
NGNGフェラしてくだちい。
0832デフォルトの名無しさん
NGNG0833宿題なんですが
NGNGプログラムを作れといわれました。
なにかヒントをください
お願いします
0834デフォルトの名無しさん
NGNG皆さんはどのようにやっていますか?
よろしかったらおしえてください。
0835デフォルトの名無しさん
NGNG皆さんはどのようにやっていますか?
よろしかったらおしえてください。
0836デフォルトの名無しさん
NGNGすげー高度な宿題だな
0837デフォルトの名無しさん
NGNG格情報を含む単語辞書と文型辞書を用意してパターンマッチング。
0838デフォルトの名無しさん
NGNG>>831はネタと見せかけて実はマジレス。
0839834
NGNG単語の数を限定(1000語)してありますが
それでもむずかしいです。
なにかヒントをください。
0840デフォルトの名無しさん
NGNG次の宿題だ。
5次方程式を代数的に解くプログラムを作れ。
0841デフォルトの名無しさん
NGNG文法の木を作って、それを文章に対して再帰的に当てはめる。
自然言語だと複数の解釈が出来上がるかもね。
0842デフォルトの名無しさん
NGNG自分にできないことを宿題に出すのもどうかと思うぞ
0843839
NGNG名詞ー述語ー目的語 見たいなパターンをたくさん作って
当てはめていくという意味でしょうか?
0844840
NGNG確かにオレにはムリだ。頼む、教えてくれ。
0845デフォルトの名無しさん
NGNG文 := 〜 | 〜 名詞
(文は〜または 〜 または名詞から出来ている)
名詞 := 〜 | 〜
(名詞は〜または 〜から出来ている)
こんな風に、どんどん〜の部分を細分化していって、
最終的に終端記号(この場合、実際の単語)までこの
定義を行なう。
0846デフォルトの名無しさん
NGNGn個の整数の順列生成はできるんですが、n個からr個選び出す
ところで行き詰まっています。何かヒント頂けませんか?
0847デフォルトの名無しさん
NGNGr個選び出す条件って何よ?ランダム?
つーか自分で問題の意味判ってる?
0848デフォルトの名無しさん
NGNG例えば、n=4,r=2なら、生成する順列は、
12,13,14,21,23,24,31,32,34,41,42,43
です。どうやったらこの順列を作れるのだろうかと・・・。
0849デフォルトの名無しさん
NGNG「拡大」のみってのがミソだ。
つーことは、やっぱそっち系の学科だろう。
む、バイキューブリック補完とガンマ補正を組み合わせた拡大で「可」が拾えるはず。
単純線形補完なんかやると赤をもらうので注意。
0850デフォルトの名無しさん
NGNG拡大のみってどこ系の学科なの?
0852デフォルトの名無しさん
NGNGしようとして下記のPGの8〜9目を4つコピって、3の部分を1〜4の数字に変えましたが、
どうしても、最初のABCしか出力されないので、その後所々にprintf(…)で物理チェックを
かまして見た所、startとlengが変化しないのが原因みたいなのですが、どこら辺を直せばいいか
ご指導お願いします。
インクルード省略
void kou(unsigned char *rec, unsigned char *buf, int Cnt);
main(void)
{
unsigned char aa[128]="ABC|012|DEF|345";
unsigned char bb[128];
bb[0]=0x00;
kou(rec,bb,3); |→ここの二行を後3つコピーして3を1〜4に変更。
printf("%s\n",bb); |
}
void kou(unsigned char *rec, unsigned char *buf, int Cnt)
{
int i,s,start,leng,count;
start=leng=0;
for(i=s=0;rec[i];i++,s++){
if(rec[i]==0x7c){
count++;
if(Cnt==count){
s=s-1;
leng=s;
break;
}else{
start=i+1;
s=0;
}
}
}
if(rec[i]==0x00 && Cnt==(count+1)){
leng=s;
count++;
}
if(Cnt==count){
memcpy(buf,rec+start,leng);
buf[leng]=0x00;
}
0853デフォルトの名無しさん
NGNGこれはschemeでの例。
C言語には自分で直してね。(比較用にr個分の配列が必要)
もっといい方法があるかもしれないけど。
(define (disp-rev l)
(cond ((pair? l)
(disp-rev (cdr l)) (display (car l)) )))
(define (example0 n r p)
(let loop ((i 1))
(cond ((<= i n)
(cond ((< 0 r) (if (not (memv i p))
(example0 n (- r 1) (cons i p)))
(loop (+ i 1)))
(else (disp-rev p) (display " ") ))))))
(define (example n r) (example0 n r '()))
(example 4 2)
---|12 13 14 21 23 24 31 32 34 41 42 43
=>()
(example 4 3)
---|123 124 132 134 142 143 213 214 231 234 241 243
312 314 321 324 341 342 412 413 421 423 431 432
=>()
0854ゲイツ
NGNG本当ですか?
0855デフォルトの名無しさん
NGNGうそです
0856デフォルトの名無しさん
NGNGY
八 ヽ
( __//. ヽ,, ,)
丶1 八. !/
ζ, 八. j
i 丿 、 j
| 八 |
| ! i 、 |
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
| | ‖
/ ● ● ヾ
0857デフォルトの名無しさん
NGNGワラタ
0858デフォルトの名無しさん
NGNGまずその謎の言葉の定義からなんとかしろ。
普通、「整数」と言ったら「0」を含む。
普通、「順列」と言ったら「nPr」の事を指す。
普通、
>12,13,14,21,23,24,31,32,34,41,42,43
のような集合は「数列」と呼ばれる。
で、そのサンプルの数列見て集合の特性が思いつかないなら
お前は理系に向いてないからさっさとやめろ。
0859853
NGNG(define (example10 from to r p)
(let loop ((i from))
(cond ((<= i to)
(cond ((< 0 r) (if (not (memv i p))
(example10 from to (- r 1) (cons i p)))
(loop (+ i 1)))
(else (disp-rev p) (display " ") ))))))
(define (example1 from to r) (example10 from to r '()))
(example1 0 3 2)
---|01 02 03 10 12 13 20 21 23 30 31 32
(example1 1 4 2)
---|12 13 14 21 23 24 31 32 34 41 42 43
わかるかなあ・・
0860デフォルトの名無しさん
NGNG何気に意地悪だねあんた(w
0861デフォルトの名無しさん
NGNGmainのrecとkouのcountを、異次元から召還してます。
また、kouは{}の数すら対応していません。
通しで考えた訳ではないので、どうか分かりませんが、
rec=aa、count=0、最後に}を追加で上手くいくかも…。
でも、個人的には最初から考え直す事を勧める。
0862超初心者です。
NGNGサンプルプログラムがコンパイルできません。以下のようなものです。
#include <stdio.h>
#include <math.h>
main()
{
int year,
double amout, principal = 1000.0, rate = .05;
printf("%4%21s", "年数", "預金残高");
for (year = 1; year <= 10; year++) {
amout = principal * pow(1.0 + rate, year);
printf("%4d%21.2f\n", year, amout);
}
return 0;
}
というものなのですが、gccでコンパイルすると
/tmp/ccA0Xbkx.o: In function `main':
/tmp/ccA0Xbkx.o(.text+0x5f): undefined reference to `pow'
collect2: ld returned 1 exit status
というエラーメッセージが出て、コンパイルしてくれません。
ちなみにccでコンパイルしても同様のメッセージがでました。
一体どうすれば上手くいくのでしょうか。どなたかご教授ください。
ちなみに環境はTurboLinuxのWS6.0です。
0864超初心者です。
NGNGできました。ありがとうございます。
でもどうして、"-lm"で上手くいくのでしょうか。
あとで、/usr/include/math.h を見たのですが、
powという文字列を検索しても見つかりませんでした。
どういう仕組みになってるのかすごく気になります。
gccのマニュアルを読もうとしたのですが、英語ですごく
長い文章が延々とあるもんですから、ちょっと・・・。
日本語のgccの簡単な使い方とかFAQとかってないものでしょうか。
0865デフォルトの名無しさん
NGNG>>863のような引数を付けてgccすることにより、
算術関係の関数がリンクされるようになります。
確か
0866デフォルトの名無しさん
NGNG-lxxx は libxxx.a をリンクしろ!というオプションです。
X-Window を使う時は -lX や -lX11 とかしますよね。
アレと同じです。
0867デフォルトの名無しさん
NGNG確かにman powとかしてもどのライブラリが要るとか書いてないね。
0868中途半端くん
NGNG-l オプションは、libなんとか.a というライブラリを読むためにつかう。
-lm なら libm.a を読み込む。
libm.a にはたしかmath.hで使えるようになる関数が詰まってる。
どこにあるかというと、普通は /usr/lib/ の下。
gcc の日本語のマニュアルは ↓
http://www.linux.or.jp/JM/html/GNU_gcc/man1/gcc.1.html
って感じ
0869超初心者です。
NGNGなるほど、そういう風になっていたんですねえ。
どうやら道はまだまだ遠いようですが、最初の一歩で
挫折しなくて済みました。これからも精進してまいります。
0870デフォルトの名無しさん
NGNGmanにも書いてなかった。linux.or.jpにある日本語マニュアルにも書いてなかった。
そうなると、未知の関数があった場合、どのライブラリをリンクすればいいかは、
どうやって調べたら良いんだろう。
manだけでは調べられないものなのか?
0871デフォルトの名無しさん
NGNG% cd /usr/lib
% foreach i (lib?*)
? echo $i
? nm $i | grep pow | grep -v UNDEF
? end
0872デフォルトの名無しさん
NGNG関数名が既知でリンクするライブラリが未知の場合はgrepすればいいのでは?
そもそも完全に未知の関数は調べる事もないだろうし…。
0873デフォルトの名無しさん
NGNG0874へたれ
NGNG鬱だ・・・寝よう・・・
回答有難うございました。
0875デフォルトの名無しさん
NGNGに、一応やり方は書いてある。
この文書、Linuxプログラミング初心者向け。JFで探して。
すでに、disk上にあるかもね。
ただ、man(3)にリンクすべきライブラリなり、コンパイルオプションなりが
書いてあると、幸せになれる人は多いよね。
Solarisのmanには、たしか書いてあって、「ウマ〜」と思った
記憶がある。
0876デフォルトの名無しさん
NGNG32ビットマシンでもコンパイラのスイッチ次第で16ビット扱いに
なったりするものなのでしょうか?
それとも、コンパイラでは制御しようのないものなのでしょうか?
0877デフォルトの名無しさん
NGNGコンパイラを設計する人が作ってればあるし、作ってなければ無い。
0878デフォルトの名無しさん
NGNGそういやVCってスモールモデルとかまだ作れるの?
Ver4以降触ってなくてすっかり忘れてるや。
0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNG24bitとかの処理系だって有りうる。見たことは無いが。
でも昔は12bitCPUって結構あったし。
0881デフォルトの名無しさん
NGNG>24bitとかの処理系だって有りうる
ねーだろ
0882デフォルトの名無しさん
NGNG>24bitとかの処理系だって有りうる
ねーだろ
0883デフォルトの名無しさん
NGNG>24bitとかの処理系だって有りうる
ねーだろ
0884デフォルトの名無しさん
NGNG>24bitとかの処理系だって有りうる
ねーだろ
0885デフォルトの名無しさん
NGNG>24bitとかの処理系だって有りうる
ねーだろ
0886デフォルトの名無しさん
NGNG0887名無しさん
NGNGIBM製の24ビットのはず。
ただし加算器の巾かアドレスバスの巾かは不明。
08881
NGNG環境なーに?
0889デフォルトの名無しさん
NGNG1byteが9bitだったマシンもあったのだよ。
0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG汎整数拡張というものを知ってるか?
0893デフォルトの名無しさん
NGNGなーんでーすかー?
0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNGstruct point
{
int x;
int y;
};
struct point p;
void function(struct point p)
{
p.x = p.x + 2;
p.y = p.y + 2;
};
main()
{
p.x = 1; p.y = 2;
function(p);
printf("%d %d\n",p.x,p.y);
}
↑で3 4が返されないのがどうしてもわかりません。
ドキュソですいませんが誰か教えて…。
0897sage
NGNG0898デフォルトの名無しさん
NGNGでも、pを*pとしてp.xなどをp->xとしたら、
今度はDOS画面で「不正な処理うんぬん」とでてしまいした。
0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG関数 void function(struct point p) の中での構造体 p は、
関数の前で宣言した外部変数の p ではなく、
関数内で宣言された自動変数だから。
例えば...
#include <stdio.h>
main()
{
int i;
i = 4;
if (i == 4) {
int i;
i = 5;
}
printf("%d\n", i);
}
↑で 5 が表示されないのと同じ理由
0902sage
NGNG0903デフォルトの名無しさん
NGNGvoid function(struct point *p)
{
p->x = p->x + 2;
p->y = p->y + 2;
};
main()
{
p.x = 1; p.y = 2;
function(&p);
きちんと学べ。あてずっぽうでコードを書くな。
0904デフォルトの名無しさん
NGNGやっとわかりました。
本当にありがとうございました。
0905デフォルトの名無しさん
NGNGint a = 0xdo3322ff;
a = (char)a;
と
a = (0x000000ff) & a;
とするのとどっちがいいのですか?
0906デフォルトの名無しさん
NGNG0907905
NGNGwhy
0908デフォルトの名無しさん
NGNG0909906
NGNG0910905
NGNGそれはただの入力ミス
どっちがいいか知りたかったの
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG下
わかりやすい。
キャストしてない。
0914屁理屈
NGNG共用体使うか、アドレスとってポインタをキャストして逆参照しなきゃだめじゃん。
まあ、"最下位バイト"を取得したいんだろうけどさ。
0915デフォルトの名無しさん
NGNGint->charのキャストにインデイアンが関係あるの?
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNG君と同じ過ちを犯したやつが過去何人いた事か…
0918デフォルトの名無しさん
NGNG関係レスを全部読んでないだろ
0919デフォルトの名無しさん
NGNGint→charへのキャスト にはインディアンは関係ない。
ただ、第1バイト っていう表現をしてるから
インディアンがしゃしゃりでてくるのだよ。アンダスタン?
0920デフォルトの名無しさん
NGNGその手の言い換えは全然かっこよくないぞ。
0921デフォルトの名無しさん
NGNGprintf("a = %x\n",(char)a); → a = fffffffe
printf("a = %x\n",(unsigned char)a); → a = fe
どうしてー
0922デフォルトの名無しさん
NGNGそこで”OpenGL”というやつをやっていますが、
よくわかりません(教授は毎週1000行近いプログラムの課題
を出します。つらい・・・)詳しいサイトや本は知りませんか?
0923デフォルトの名無しさん
NGNGOpenGL完全マスター
朝日出版
0924922
NGNG0925デフォルトの名無しさん
NGNGし、あまりのショボさにCGを見比べると絶望する。でも
CGの根本を学にはいい材料。
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG符号拡張
0928デフォルトの名無しさん
NGNGって浮動小数点数bを整数に近似丸めさせるときの
式としてあってますか?
0929デフォルトの名無しさん
NGNGあってるよ
0930デフォルトの名無しさん
NGNGやってわかるOpenGL
東和出版社
0931922
NGNG最後は努力と要領の問題でしょうが・・・・
そころでOpenGLはどうなんでしょうやって損はないでしょうか?
CG論の教授は将来性抜群と絶賛していて、卒論でやってもいいとか
言っていますが。
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNGほんとかよ?
卒論なら自分でグラフィックライブラリ作るぐらいやったほうが
いいんじゃない。力もつくしサー
0934デフォルトの名無しさん
NGNGって浮動小数点数bを整数に近似丸めさせるときの
式としてあってますか?
0935デフォルトの名無しさん
NGNG0936デフォルトの名無しさん
NGNG正の整数で四捨五入ってことならあってるよ
0937デフォルトの名無しさん
NGNG違うよ。四捨五入なら、小数部が0.5のとき整数部が偶数になるように丸めない
といけないのに、>>934ではそうなっていない。
round関数が使えればそれが一番手っ取り早いけど、そうでなければ、もう少し
処理が複雑になる。
0938デフォルトの名無しさん
NGNG整数部が偶数になるように? なぜ?方言?
0939デフォルトの名無しさん
NGNG違いません。方法の一つです。
>四捨五入なら、小数部が0.5のとき整数部が偶数になるように丸めない
>といけない
それはいわゆる「銀行丸め」だね。そういう四捨五入の方法もあるが、
一般的なじゃないよ。
0940デフォルトの名無しさん
NGNG> それはいわゆる「銀行丸め」だね。
ほぇー。こんな流儀があったのか。知らんかった。
0941937
NGNGJISでもISOでもそうなっているよ。
少なくともまともなエンジニアの間では常識。
0942デフォルトの名無しさん
NGNGいいよ。オレは社会で通用する常識の方をとるよ。
0943デフォルトの名無しさん
NGNGそれはC言語から足を洗うという意味と見た。
0944デフォルトの名無しさん
NGNGこれか。でも、生理的に受け付けん・・・
0945デフォルトの名無しさん
NGNGつーか、
四捨五入は四捨五入、JIS丸めはJIS丸めで別物だろ?
0946デフォルトの名無しさん
NGNGJIS丸めなどという言い方は正式には存在しない。
正式な言い方はあくまでも「四捨五入」。
0947デフォルトの名無しさん
NGNGデジタル信号処理で同じ事やったら誤差が累積していくだろう?
少なくとも制御系では常識ではないよ。
0948デフォルトの名無しさん
NGNG2数の中間値を偶数方向に丸めるのは、誤差の累積を最小限に収める意図も
含まれている。
通常、浮動小数点数の端数処理は四捨五入(ここでいうJIS丸め)を採用して
入り場合がほとんど。math.hの中のFLT_ROUNDSが1になっていれば、そうだ
よ。
これは工学全体で常識だから、相手の無知が発覚しない限り、敢えて説明する
人は誰もいないだけ。制御系は工学の色彩が強いので、当然常識だよ。
というか、ほとんどの場合、何も考えなくてもこの方式で四捨五入されている。
精度に収まらない端数処理然り、printf等で文字列に変換する場合然り。
0949デフォルトの名無しさん
NGNGmath.hではなくfloat.hの中のFLT_ROUNDSだった。
0950デフォルトの名無しさん
NGNG正式な言い方は「JIS Z8401 数値の丸め方」だろ
お前が四捨五入って言ってるからって、自分用語を勝手に常識にするのはやめれ
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=992357382&ls=50
0954デフォルトの名無しさん
NGNGhttp://piza.2ch.net/test/read.cgi?bbs=tech&key=992357382
レス数が950を超えています。1000を超えると書き込みができなくなります。