C言語なら俺に聞け! Part 75

このエントリーをはてなブックマークに追加
866デフォルトの名無しさん:04/04/06 10:26
850=865
867デフォルトの名無しさん:04/04/06 10:58
>>850
みたいに毎日少しずつ継続的にって考え方する人はある意味立派だと思うがね。
まあ>>862の言うことも一理あって、プログラムやる人ってのは基本的に
凝り性なんだよ。プラモ作るのに、ずっと完成するまで時間を気にしない
のと一緒。
個人的には、SYCOM辺りのショップブランドで安いの適当に買えばいいと思う。
しかし、学校とかへ持っていったり、空き時間にちょこちょこいじりたい
というのならば、やはり、普通のノートだろうね。
>>856の言うように、それなりの作業をするので、画面は広いのにこした
ことはない。ポケットPCとパームは駄目だと思うな。
ノートはメーカーのもののほうがいいので、中古でなるべく新しい予算に
あったものを買うといいと思う。それなりにいいのあるよ。
868デフォルトの名無しさん:04/04/06 12:07
すいません、今からデカイ本屋行ってきます
何かオススメのC/C++基礎勉強の本がありましたら、教えて下さい
と思ったら別スレあるんでしたね。ごめんなさい本屋行く前に吊ってきます
ファイルの行を読み込む際に改行までのバイト数をあらかじめ
取得する方法はありますか?
871デフォルトの名無しさん:04/04/06 15:49
>>861
2chのいいろころは、漏れがいるということ。
>>870
付加的な情報を別に用意するのでなければ、ない
873835:04/04/06 19:53
皆さん回答ありがとうございます

>>843 さん うまくできました

>>844 さん
そのまま関数に組み込んで利用してみたのですがうまくいきませんでした。
101d という入力ファイルに対して 0 が帰ってきてしまいました。
まだまだ、改良の余地がありますのでいじってみます。
874844:04/04/06 23:58
>>873
すまん、1バイト一桁と勘違いしていた頃の名残で
ループの終端条件がおかしい。
適当に直してくれ。
875貧乏紙:04/04/07 00:26
>>870
こういうの作ってみました。。。

#include <stdio.h>
#include <string.h>

void main(){
FILE *fp;
char *ch;
long int f_size[128];
int i=0,k=0,j=0;

fread(&ch,sizeof(ch),1,fp);
while(sizeof(ch)>i++,k++,ch++){
if(*ch == '\n'){
f_size[j] = k*sizeof(char);
k=0;
j++;
}
}
}
ネタはよそでやってくれ(-_-;)
c++でgotoxy()のような動作をする命令はないですか?
878デフォルトの名無しさん:04/04/07 01:56
>>877
ここはCのスレだぞ。
そのgotoxy()がCの関数ならC++からでも呼び出せるだろ。
>>860
>>865
>>867
結構かかるもんですね。
腰を据えてじっくりがんばっていきます。
凝り性っていうのには気づきませんでした。考えてみればそうですね。

どうもありがとうございました。将来、フリーソフトで恩返ししたいと思います。
ttp://www.kumei.ne.jp/c_lang/intro/no_26.htm
win2kでエスケープ・シーケンスってできますか?
>>880
すれ違い、かつ、日本語がおかしい
882デフォルトの名無しさん:04/04/07 14:57
うまく作動しません。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

main(){
int coin;
int head;
int tail;
int i;

srand(time(NULL));

printf("コイン投げ\n");

for(i=0;i<3;i++){
coin=rand()%2+1;
if(coin==1){printf("コインは表\n");head++;}
else{printf("コインは裏\n");tail++;}
}
printf("表が%d回・裏が%d回\n",head,tail);

return;
}
int head = 0;
int tail = 0;
return 0;
リスト操作はどういう事に使うんですか
会社に愛想が尽きたとき
>>885
リスト操作をリストの操作以外に使えるなら教えてホスィ。

質問の意味が曖昧だとかいう前にスレ違いクサイが。
888デフォルトの名無しさん:04/04/07 22:18
>>875
つっこみどころ満載
889デフォルトの名無しさん:04/04/08 06:13
うまく作動しません。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

main(){
int coin;
int head=0;
int tail=0;
int kou[6];
int i;

int n;

srand(time(NULL));

for(n=0;n<6;n++){
for(i=0;i<3;i++){
coin=rand()%2+1;
if(coin==1){head++;}
else{tail++;}
}

kou[n]=(head*2)+(tail*3);
if(kou[n]==6||kou[n]==8){printf("陰コウ== ==\n");}
else{printf("陽コウ=====\n");}
}
return 0;
}
for(n=0;n<6;n++){
head=0; tail=0; //ここ追加
for(i=0;i<3;i++){
>>882==>>889
質問になってない。
892デフォルトの名無しさん:04/04/08 07:58
>>891
質問ではなく独り言なんですが。
893デフォルトの名無しさん:04/04/08 09:06
質問です。次のような構造体と関数があったとします。
typedef struct _POINT {
  int x;
  int y;
} POINT;
void SetPoint(const POINT point);

この関数を呼び出すとき、引数の構造体を即値で記述する方法はないでしょうか。
  SetPoint((const POINT*)(&POINT(4,5)));// ※イメージです、コンパイルは通りません

値をスタック領域にコピーするようなCPUコストが発生しないように、
以下のコードと同様のコンパイル結果が得られるようにしたいと考えています。
(1) static const POINT point = {4,5};
  SetPoint(&point);
(2) SetPoint((const POINT*)"\x04\x00\x00\x00\x05\x00\x00\x00");// ※Win32環境用
894デフォルトの名無しさん:04/04/08 09:10
>>893
定数といえ定数と。
C99に準拠しているコンパイラを使っているのなら可能だが、そうでないなら不可能。
http://seclan.dll.jp/c99d/c99d07.htm#dt19991101
895デフォルトの名無しさん:04/04/08 09:19
>>883>>884>>890
ありがとうございました。
896893:04/04/08 09:50
>>894
複合リテラルという機能ですね。
VisualC++6.0をコンソールで使っていましたが、対応していようです。
コンパイルオプションを変えれば使えるのかもしれませんが・・・

C言語に手をつけて5年ほどになりますが、その場で必要なことしか覚えてきませんでした。
まじめな本で基本的な用語から勉強しなおした方がよさそうです。
ありがとうございました。
まだC99に準拠したコンパイラというのは少数派だからな。
フリーコンパイラとか、みんな準拠していないから、C99の新しい仕様は
コンパイラのヴァージョンを確認したうえで使わないと。
>>893
>値をスタック領域にコピーするようなCPUコストが発生しないように、

定数だとスタックに積まれない、と思っているのか?
>>898
コンパイラの最適化で詰まれなくなる可能性が上がる
ってことじゃない?
「呼ぶ側」のローカル変数領域とそのコピーコストを節約したいってことだろ
901X:04/04/08 17:27
Cで電卓のプログラムを作ってください。
902デフォルトの名無しさん:04/04/08 17:28
ソースコードがたくさんあるサイトってありませんか?
sourceforgeとかは嫌です。
何が嫌なのか分からんとお勧めしようが無いが。
www.gnu.org


……に行ったらストライキしてるしw
906デフォルトの名無しさん:04/04/08 19:16
>>905
はぁ?主張してるだけでしょ。 www.gnu.org/home.html
Join the web strike from April 5 -> April 14, 2004!
908デフォルトの名無しさん:04/04/08 20:50
>>893
そもそも
SetPoint((const POINT*)"\x04\x00\x00\x00\x05\x00\x00\x00");
みたいなひどい処理をせざるを得ない時点で設計が下手くそなんだと思うよ。
そんなわけの分からん新機能使う前に設計を考え直したほうがよくね?
5年もやってるとは思えない
#include <stdio,h>

void main() {
char arra[1];

gets(arra + 2);

return 1.2;
}
>>908
たまにいるよな、一時変数確保のCPU負荷がどうこう言うヤシ。
でもってそういうヤシに限って他のことが高負荷な処理になってたりする。
可読性を低くすることで請負の仕事の独占を図ってたりするわけだが。
プロマネは、そういう輩を見抜かないとねw
911デフォルトの名無しさん:04/04/08 21:26
>>899
>コンパイラの最適化で詰まれなくなる可能性が上がる
>ってことじゃない?

最適化でスタックに積まれなくなるわけないじゃんw
処理系によってはスタックに積まずに渡すこともある。
大抵__fastcallみたいなものつきで関数を宣言しとかんとならんけど。

こういうのがついたら可能な限りレジスタで渡すようにする処理系はある。

最適化オプションによってすべての関数にこういった物がついてると
仮定してコンパイルさせることも可能なため、「最適化オプションによって」は
スタックに積まれなくなることもある。

「最適化で」積まなくなることもありうる。static関数の場合ですな。
あと、inline関数なんかの場合もね
SH-Cコンパイラはデフォルトでレジスタ渡しだし。
915sage
> (1) static const POINT point = {4,5};
>   SetPoint(&point);
これなら{4,5}は実行初期化時からメモリに常駐され
スタックに詰まれることもないと思うが
関数側にもconst付いてるし