トップページ⇒tech
1001コメント270KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
スレ立ててやるからPart87には構わないでくれ
0002v(^o^i)d○v(^o^i)d○v(^o^i)dNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

各種リンク、関連スレは>>2-13あたり

C言語なら俺に聞け! Part 94
http://pc5.2ch.net/test/read.cgi/tech/1099212476/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0003デフォルトの名無しさんNGNG
これはもうだめかもわからんね
0004デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【Win32用の開発環境のみ。】
gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
Visual C++ Developer Center: Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/

【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
0005デフォルトの名無しさんNGNG
またネタスレが立ったのか
0006デフォルトの名無しさんNGNG
ギニアで体重798�sの男性発見!!!

赤道直下のパプアニューギニアのサレント市でおそらく人類史上最重量
の男性の存在がわかった。
フルージャ・ナトレスさん31歳 牧畜業を家族9人で営んでいる。
フルージャさんは身長174センチで体重が798kg!!!
ウェストは244センチで皮下脂肪率が77%であると公表している。

詳細http://tmp4.2ch.net/test/read.cgi/tubo/1100789674/l50
0007デフォルトの名無しさんNGNG
%pってポインタの中身を見る時に使うのかい?
0008デフォルトの名無しさんNGNG
それはIntel64bitアーキテクチャで推奨された書き方やね
0009デフォルトの名無しさんNGNG
>>7-8
ANSI/ISOでポインタ値の表示と決められている。
0010デフォルトの名無しさんNGNG
>>8-9
int x;
printf("%p", &x);

これでxのアドレスが表示されてるっぽいんだけど、
%pはポインタ限定ってわけではない?
xの前に&をつけてるからokって事になってるの?
ここんとこがよく理解できないんで助けてー
0011デフォルトの名無しさんNGNG
int -> int 型
int* -> (int への)ポインタ型
0012デフォルトの名無しさんNGNG
ポインタ以外入れても動くんだけどね
0013デフォルトの名無しさんNGNG
書式とパラメータの整合性なんて見てないからな

そういう意味では
>>%pはポインタ限定ってわけではない?
は正しい

でもそういう使い方や理解はするな
0014デフォルトの名無しさんNGNG
wp = (unt *)calloc(YOUSOSUU, sizeof(unt));
if(wp == NULL){
printf("メモリ借りれませんでした。 けちんぼ!1\n");
exit(1);
}
wp_adr = wp;
こんなコードがとある関数に書いてあります。
この関数を何回か呼び出すと
segmentation faultと出て異常終了します。
原因として考えれることを紹介しているサイトはありますか?
または、ぐぐ語を教えてもらえませんか?
001514NGNG
最後に
wp=wp_adr;
free(wp);
この二文が抜けてました。
すいませんでした。
001614NGNG
たびたび何度もすいません。

puts("koko0");
wp = (unt *)calloc(YOUSOSUU, sizeof(unt));
puts("koko1");

こんな風に書いてて
koko0は表示されてその後に
segmentation fault
と出るのです。
0017デフォルトの名無しさんNGNG
untとYOUSOSUUを晒せ
001814NGNG
typedef unsigned int unt;
define YOUSOSUU 8;

YOUSOSUUというのは
unt ary[YOUSOSUU];
という風に
unsigned int型の配列をいくつ用意するかを指定しています。
0019デフォルトの名無しさんNGNG
malloc系で鼻から悪魔が出るケースは、
まず間違いなく、ポインタ絡みのエラー。
特に、
・mallocした以外の領域をfreeしていないか
・確保したサイズ以上の領域を書き換えていないか
を確認すべし。
00207 = 10NGNG
>>11-13
レスthx
こういう使い方はやめときます
0021デフォルトの名無しさんNGNG
>>14
calloc を malloc に変えろ
0022デフォルトの名無しさんNGNG
callocしたポインタとfreeするポインタは等しいのかしら
002314NGNG
wp = (unt *)calloc(YOUSOSUU, sizeof(unt));
if(wp == NULL){
printf("メモリ借りれませんでした。 けちんぼ!1\n");
exit(1);
}
wp_adr = wp;

・・・処理・・・

wp=wp_adr;
free(wp);

こんな風に書いているので
callocする場所とfreeする場所は等しいと思いますが・・・
処理中にwp_adrは使っていません。
0024デフォルトの名無しさんNGNG
wpでなんか壊してるな
0025デフォルトの名無しさんNGNG
とにかく、callocで落ちるなら、>19に書いた通り
ヒープの管理ブロックを壊してるのは間違いないと思う。
callocの呼び出し前と呼び出し後にprintfでも入れて確かめる。

で、callocで得たアドレスとfreeしているアドレスが同じかも確かめる。
それでもおかしいなら、領域オーバーを疑う。
0026デフォルトの名無しさんNGNG
こんばんは。基本的なことで恐縮なんですが、
このようにプログラムを書いて

#include <stdio.h>

main( ){
int* x;
int* y;
scanf("%d %d",x,y);
printf("%d %d\n",*x,*y);
}


%./a.out
1 2

と入力すると、

1 2
セグメンテーション違反です

と表示される理由がわかりません。
一体なんのせいでセグメンテーション違反と怒られてるのでしょうか。
0027デフォルトの名無しさんNGNG
メモリをちゃんと確保してないから
0028デフォルトの名無しさんNGNG
>>26
アクセス権が無いところにアクセスしようとしたから。
0029デフォルトの名無しさんNGNG
初めint x;って書いてたけどコンパイラに「int*じゃ( ゚Д゚)ゴルァ!!」と怒られて
変数宣言を書き換えたに一票
0030デフォルトの名無しさんNGNG
int x[1];
int y[1];
で全て解決、万々歳。

・・・・本人の理解が進まない点を除いて。
0031デフォルトの名無しさんNGNG
int x;
int y;
scanf("%d",&x,&y);

にしましょう。

int *x;
int *y;
では、ポインタを格納する変数があるだけです。

イメージ的には(※理解するだけにとどめて、これで覚えないで下さい)
[               ]
[               ]
とアドレス(住所)を書ける欄(変数)が2つあります。これは使い回されるものとします。

[東京都品川区〜〜〜〜]
[東京都新宿区〜〜〜〜]
と、前の人が書いたままなので、勝手に何か使えば問題が発生します。

[神奈川県横浜市〜〜〜]
[千葉県千葉市〜〜〜〜]
と、自分で正しいアドレス(住所)に書き換えてあげなければなりません。
あるいは、紙(変数)に書いたりせずに口頭(&x,&y)でアドレス(住所)を教えてあげなければなりません。



これを見て将来ダメになっても私は知りません
0032デフォルトの名無しさんNGNG
俺の経験上、居丈高に教えてるのは初心者に2,3本毛が生えたやつらだよ。
多少分かるようになった初心者は、お前こんなのも分からないのかよと馬鹿にしつつ自分の知識をひけらかしたくなる。
もう少しすると興味が無くなるのでROMるかスレ自体からいったん離れる。
さらにもう少しすると煽りに徹するようになる。答えは書かない。ピンポイントでヒントだけ教えてやる。
安易に答えを教えてしまうと質問者のためにならないから。
さらにもう少しすると再びROMる。
すっかり古参と化した彼らはスレと住人たちのの成長を生温かく見守るようになる。
0033デフォルトの名無しさんNGNG
そんな気持ち悪いのになりたくないです
0034デフォルトの名無しさんNGNG
>>32
で 943 さんよ、934 は何のアドレスを返しているんだい?
0035デフォルトの名無しさんNGNG
誤爆?
0036デフォルトの名無しさんNGNG
934 :デフォルトの名無しさん :04/11/20 11:55:31
>>933 スレ違い

struct string{ char mojiretu[256]; };
struct string fusianasan(void)
{
struct string kusosure = { "sine" };
return kusosure;
}

941 :デフォルトの名無しさん :04/11/20 15:22:04
ローカル変数を(ry
Cで文字列を返したいときに
初心者が陥りやすい例を示しているのかと思ってスルーしてたんだが。

942 :デフォルトの名無しさん :04/11/20 15:54:17
>>941 ry しないで続きをどうぞ
何が起こると言い出すか見物の悪寒

943 :デフォルトの名無しさん :04/11/20 16:24:12
>>942
「ローカル変数だ」と言えばこれ以上のくだくだしい説明はいらんと思うが。
こんな当然のことで高みの見物を決め込んでるとすれば、
それがおまえの技量ということだな。 プッ
では わかっていないリアル厨房のおまえのために書いてやろう。
           ~~~~~~~~~~~~~~~~~~
ローカル変数のアドレスを返しているが、関数から出てしまえばその領域は破棄される。
したがって親ルーチンがそれを受け取っても、この領域へのアクセスは違法となる。
ただし、偶然にも文字列が残ったままになっている可能性もあるので、
結果だけを見れば正常に動作することもある。が、違法行為だ。
わかったか、坊や。
0037デフォルトの名無しさんNGNG
哀れな>>943
0038デフォルトの名無しさんNGNG
教えたがりにロクな香具師はいないという好例だな
0039デフォルトの名無しさんNGNG
俺は

友達とか相手の場合はヒント程度にとどめる(その瞬間だけ解っても意味無いし)
赤の他人(こういうとこ)には完全に教える(別に相手はどうでもいいし)
0040デフォルトの名無しさんNGNG
>>39
お前の事なんて知ったこっちゃない
0041デフォルトの名無しさんNGNG
俺は 適度に煽りつつ新しいネタを見つけるのが楽しいんじゃないかと。。
0042デフォルトの名無しさんNGNG
ちょっとお聞きしたいのですが、
木構造において子の数が一定ではない場合のデータ定義はどのようにすればいいのでしょうか?
2分木であれば

struct node {
 int data;
 struct node *left;
 struct node *right;
}

上のように、左の子と右の子、2つへのポインタを定義するのですが、ここで不定数の子へのポインタを定義したいのです。

struct node {
 int data;
 struct node *leaf[100];
};

このようにポインタ配列を使うことを考えたのですが、これでは子の数が制限されてしまいます。
可能であれば、その時における子の数だけのポインタを確保したいのですが、
なにか良い方法があるようでしたら教えていただけないでしょうか?
0043デフォルトの名無しさんNGNG
ポインタのポインタを使ってポインタ配列を動的確保する
って安直な案はだめですか
0044デフォルトの名無しさんNGNG
struct node {
int data;
struct node *child; /* 一番左の子ノード */
struct node *brother; /* 兄弟(右のノード) */
};
とか?
0045デフォルトの名無しさんNGNG
>>42
http://seclan.dll.jp/c99d/c99d04.htm#dt19990726
0046デフォルトの名無しさんNGNG
>>43
ありがとうございます。

struct node {
 int data;
 struct node **leaf;
};

このように定義して、状況に応じてポインタ配列を動的確保することでうまくできました。
実は一度 struct node *leaf; と定義し、leaf にポインタ配列の動的確保を試みたのですが、
失敗したため、この方法は敬遠していました。 ですが、考えてみればうまくいかないのは至極当然の事ですね。
手を掛けていただき、ありがとうございました。
0047デフォルトの名無しさんNGNG
struct node {
 int data;
 struct node *leaf[];
};

mallocで確保するときにサイズ調節
0048デフォルトの名無しさんNGNG
おはようございます。>>26です。
みなさんのアドバイスを参考に考えてみたんですが、よくわかりませんでした。

どこがわからないのかと言いいますと、*演算子と&演算子の違いがわかりません。
みなさんの御指摘もその周辺についてで、>>31さんは特にそこを指摘していると思うのですが、
もう少しアドバイスを頂けないでしょうか。

自分の理解では次のようにプログラムを書けば動くはずと考えていましたが
実際にはコンパイル出来ません。

#include <stdio.h>

int main(void){
int* x;
int y;
*x = 10;
&y = x;
printf("%d\n",y);
return 0;
}

&y=x がおかしいとコンパイラにはねられるわけなんですが、
これはどうしてダメなんでしょうか。
int *x と int y の宣言はどのように処理されているのでしょうか。
よろしくお願いします。
0049デフォルトの名無しさんNGNG
>&y=x がおかしいとコンパイラにはねられるわけなんですが、
>これはどうしてダメなんでしょうか。
と思うのは
>どこがわからないのかと言いいますと、*演算子と&演算子の違いがわかりません。
というより、そもそも左辺値と右辺値がわかっていないと思われる。

あと、
&y=x;じゃなくて、x=&y;がやりたいことじゃない?
005026NGNG
>>49
>&y=x;じゃなくて、x=&y;がやりたいことじゃない?

レスありがとうございます。
この場合は &y=x がやりたいことで、
なぜこれだとコンパイルに失敗するかがわからないのです。

*xのアドレスxを、yのアドレス&yに入れてやれば
&yは"10"の入っているアドレスを指すことになるはずだと考えて
このように書いているのですが、どうしてダメなのかがわからないのです。
0051デフォルトの名無しさんNGNG
>>50
&yに代入することはできないから。
int a = 3;
50 = a;
がコンパイルできないのと同じ。
0052デフォルトの名無しさんNGNG
>というより、そもそも左辺値と右辺値がわかっていないと思われる。
と答が書いてあるのに>>50は馬鹿か?
0053デフォルトの名無しさんNGNG
>>52
だから左辺値と右辺値がわかってないんだって。
0054デフォルトの名無しさんNGNG
こっちがネタスレか?(゚д゚ ≡ ゚д゚)
0055デフォルトの名無しさんNGNG
行末の改行コードを削除する関数にかっこいい名前を
付けてやってください。ちなみに私のださいセンスだと


void Chomp(char *szTarget);

Perlか!!
0056デフォルトの名無しさんNGNG
TrimReturnCodeとか
0057デフォルトの名無しさんNGNG
>>55
そういうのは大抵stripと命名してる。
0058デフォルトの名無しさんNGNG
void Kiri!(char *szTarget);
005926NGNG
左辺値と右辺値について調べてみました。
どこがいけなかったか理解できました。
scanfの疑問も解けました。
どうもありがとうございました。
0060デフォルトの名無しさんNGNG
const char *argv[]
と
char *const argv[]
の違いってなんですか?
0061デフォルトの名無しさんNGNG
>>26
おまえ偽者だろ。わざとやってるだろ。
0062デフォルトの名無しさんNGNG
知鷹X42
0063デフォルトの名無しさんNGNG
26のやりたい事はyのアドレスにxの内容を書き込みたい、ということだよな。
&yには代入できない。&yはたとえば「10000」とかいうアドレスを表す「値」であって、
値に代入は出来ない。10 = aできないのと同じ。
ただし当然ながら、別の方法でアドレスに値を書き込むことはできる。
0064デフォルトの名無しさんNGNG
>>63
うるせー馬鹿。
0065停止しますた。。。NGNG
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ

ここは削除依頼出てます
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************

本スレ誘導

C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100956766/
0066デフォルトの名無しさんNGNG
てすと
0067デフォルトの名無しさんNGNG
こっちが本スレだろ?
0068デフォルトの名無しさんNGNG
そう思いたいのですか?
0069デフォルトの名無しさんNGNG
voidごっこはあっち逝け
0070デフォルトの名無しさんNGNG
ほんものかもよ!
0071デフォルトの名無しさんNGNG
ほんものはもっと慇懃御無礼
0072デフォルトの名無しさんNGNG
void情報があるときいて見に来たんですがー
どこ?
0073デフォルトの名無しさんNGNG
劣化コピーもしくは耄碌した本人ならこのスレのクローンにいるようです
0074デフォルトの名無しさんNGNG
こっちが削除?
0075デフォルトの名無しさんNGNG
この板の削除人は空気の読める奴だから、あまり無茶なことはしないよ。
両方継続してhttp://pc5.2ch.net/test/read.cgi/tech/1100956766/が
終わったらこっちを再利用するんじゃないかね。
0076デフォルトの名無しさんNGNG
>>75
ばっさり消さないと
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
のようにいつまでも残るじゃないか
0077デフォルトの名無しさんNGNG
>>76あそこの空気も、あれはあれで生きてていいんじゃないかね。
0078デフォルトの名無しさんNGNG
>>77
ネタがやりたいならマ板でやれよ
0079デフォルトの名無しさんNGNG
age
0080デフォルトの名無しさんNGNG
ママに聞けってのもあるよな。
0081デフォルトの名無しさんNGNG
> こっちが削除?

そそ。こっちが削除されます。
0082デフォルトの名無しさんNGNG
なんでそう消したがるの?
0083デフォルトの名無しさんNGNG
>>82
ネタがやりたいならマ板でやれよ
0084デフォルトの名無しさんNGNG
は?何言ってんだ?
0085デフォルトの名無しさんNGNG
まあ、こっちは内容なかったもんな。
ちょうどいいのでは?
0086デフォルトの名無しさんNGNG
あっちの自演厨に負けたな
0087デフォルトの名無しさんNGNG
ということにしたいのですね?
(負け惜しみすぎー)
0088デフォルトの名無しさんNGNG
負けを認めてるのは負け惜しみとは言わんが?
0089デフォルトの名無しさんNGNG
ということにしたいのですね?
  ヘ_ヘ
 ミ ・ ・ ミ
  (  ° )〜
0090デフォルトの名無しさんNGNG
  ヘ_ ヘ
 ミ `∀´,ミ
  (  ° )〜
0091_∧______NGNG
ということにしたいのてすにだー
0092デフォルトの名無しさんNGNG
向こうで日下部ごっこがはじまってるよ
0093停止しますた。。。NGNG
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ

ここは削除依頼出てます
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************
**************** 糸冬 了 ****************

本スレ誘導

C言語なら俺に聞け! Part 95
http://pc5.2ch.net/test/read.cgi/tech/1100956766/
0094デフォルトの名無しさんNGNG
Test
0095デフォルトの名無しさんNGNG
文字列コピーをしようと思ったんですが、うまくいきません。
どうすればうまくいきますか?
char *copy(char *dest, char *src)
{
 char *tmp;

 tmp = dst;
 while ((*src++ = *dst++ ) != NULL);

 return tmp;
}


...'dst'
(さらにsrcとdstを逆に扱っていると思われ)
0096sammyNGNG
教えてください。
標準入力からテキストファイルを読み込み、
行を短い順に出力しなさい。 但し、行は
最大 80 文字とし、 80 文字以上の行は先
頭 80 文字だけの行として取扱い 出力し、
空行は出力しないで下さい。 また、同じ
長さの行は入力した順番に出しなさい。
なお、取り扱える行数は実行時のコン
ピュータのメモリーのサイズのみに依
存 しなければなりません。 勝手な上
限を設けてはいけません。
0097デフォルトの名無しさんNGNG
宿題スレへ
009897NGNG
とは言ったものの、簡単なのでパッパと済ますか。簡単な方法は以下の2つ。

1) 構造体を作って各行の文字数を予め構造体内に書き込んでおき、全行を読み終わった時点で
  文字数をキーにしてqsort()に放り込む

2) 各行をとにかく配列に取り込み、全行を読み終わったら以下のような比較関数をqsort()に適用する
sort_func(char* c_1, char* c_2) {
 return strlen(c_1) - strlen(c_2);
}

2)ではstrlen()の呼び出し回数が増えるので速度は低下するが、より単純である。
1)のほうがスマート。
009997NGNG
っと、そう単純じゃなかった。

> 空行は出力しないで下さい。 また、同じ
> 長さの行は入力した順番に出しなさい。
これを忘れてたorz
空行無視は、最終表示部分でstrcmp(target, "\0")とやってふるい落とすか、
もしくは入力時点で判定して配列に代入しない。
同じ長さの行を入力順に出力するには、第2キーによるソートをする必要がある。
よって、>>98の1)の構造体を使った方法を取る事になる。
更に、
> なお、取り扱える行数は実行時のコン
> ピュータのメモリーのサイズのみに依
> 存 しなければなりません。 勝手な上
> 限を設けてはいけません。
この条件はリスト構造の使用を示唆している。
typedef struct s_in_str {
 char str[81],
 short len,
 unsigned index,
 struct s_in_str next
} in_str;

ここまで書いて非配列なリストをどうやってqsort()に渡すかという所で詰まったのでgive up(´∀`;)
realloc()で誤魔化すか?
0100デフォルトの名無しさんNGNG
- struct s_in_str next
+ struct s_in_str* next
0101sammyNGNG
<<99
詳しく書くとどのようなプログラムになりますか?
0102デフォルトの名無しさんNGNG
>>96
マルチ、繰り返し、いい加減にしろ
答える奴はぼけ
0103デフォルトの名無しさんNGNG
教えてください。
標準入力からテキストファイルを読み込み、
行を短い順に出力しなさい。 但し、行は
最大 80 文字とし、 80 文字以上の行は先
頭 80 文字だけの行として取扱い 出力し、
空行は出力しないで下さい。 また、同じ
長さの行は入力した順番に出しなさい。
なお、取り扱える行数は実行時のコン
ピュータのメモリーのサイズのみに依
存 しなければなりません。 勝手な上
限を設けてはいけません。
0104デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
0105デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
0106デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
0107デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

できれば、夜の7時までにお願いします。その後遊びに行きたいので。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0108デフォルトの名無しさんNGNG
>>99
非配列なリスト用のqsort書けばいいだけ
0109デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

できれば、夜の7時までにお願いします。その後遊びに行きたいので。
0110デフォルトの名無しさんNGNG
関数で関数名の前に戻り値以外に何か書いている場合それは何ですか?
私は出会ったことが無いのですが、他のスレッドで、見ました。
0111デフォルトの名無しさんNGNG
呼び出し形式(例えばfastcall)を指示してたりとか。コンパイラ依存
0112デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

夜の7時までにお願いします。今コンパ中なんで、帰ったらできてるようにな。
0113デフォルトの名無しさんNGNG
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

夜の7時までにお願いします。あと30分だ。怠けているんじゃないぞ。
0114デフォルトの名無しさんNGNG
>標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。

・行番号と文字列長、標準入力のファイルポインタ、をテーブルとしてメモリに展開。
・テーブルを文字列長→行番号でソート。
・標準入力をfseek()で先頭に。
・標準入力をテーブルのファイルポインタへfseek()して表示。
 文字列長が0になるかテーブル最後まで繰り返し。

って漢字仮名。
0115デフォルトの名無しさんNGNG
>関数で関数名の前に戻り値以外に何か書いている場合それは何ですか?
static とか?
0116デフォルトの名無しさんNGNG
>>114
プログラム晒せや、蛸!!!!!!!!
0117デフォルトの名無しさんNGNG
>>99
>非配列なリストをどうやってqsort()に渡すかという

リストからもう一つ配列に作り直せばよかろうに...
0118デフォルトの名無しさんNGNG
文字数を順に格納する場所を示すポインターでも持って、
また、何文字の行があるのか0と1で表す配列でも持って(領域80個)、
1文字のときから追って、行数の少ないところから、ファイルの最初から、
順に該当するものを出力するだけ?
0119デフォルトの名無しさんNGNG
課題
『標準入力からストファイルを読み込み、順に出しなさい。
但し、行は最大 8番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/ihtml のホームページのソースをた果を頭 5 、
最後行を示しない。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズ
0120デフォルトの名無しさんNGNG
>>117
そうすると巨大ファイルを食わされてメモリ不足に陥ったら何も出来ずにメモリ確保エラーで止まるかと。
0121デフォルトの名無しさんNGNG
なんでqsortにこだわるんだよ。
自力でマージソートしろ。
0122デフォルトの名無しさんNGNG
何でもかんでも自力実装って、本人は満足するだろうけど周りから見ると見苦しいだけじゃん
0123デフォルトの名無しさんNGNG
>120

どのみち
>実行時のコンピュータのメモリーのサイズのみに依存
0124デフォルトの名無しさんNGNG
>>122
見苦しいのはリンクリストを無理やりqsortする馬鹿だろ
0125デフォルトの名無しさんNGNG
ソート部分にまでバグ混入の余地を増やすよりはマシ
0126デフォルトの名無しさんNGNG
>>112
awkが簡単な気がする。
0127デフォルトの名無しさんNGNG
リンクリストくらいテンプレート使えよ。
0128デフォルトの名無しさんNGNG
Cしか分からない低脳にテンプレートなどという高度なものを期待するのは愚かしい
0129デフォルトの名無しさんNGNG
>>120
実行時のコンピュータのメモリーのサイズには依存していいんじゃなかったのか?
0130デフォルトの名無しさんNGNG
>>129
リンクリスト作成が終わった後で必要数の配列メモリを確保する方式だと、リンクリスト作成時点で
メモリ割り当てが限界まで来てる場合に身動きが取れず、結果としてソートも出力も出来ないってことです。
0131デフォルトの名無しさんNGNG
とにかく巨大なメモリを確保して
「このプログラムは実行するコンピュータのメモリサイズの制限により動作しません」
と言い張れば解決だな。
0132デフォルトの名無しさんNGNG
>131

それだ!
0133デフォルトの名無しさんNGNG
>>130
そのリンクリストには処理すべきデータは洩れなく入っているのか?
つまり最後のデータを入力し終えた時点でメモリをちょうどぴったり使い切った状態とどうして言えるのかって意味だ。
奇跡に近い確率だぞ。
0134デフォルトの名無しさんNGNG
テンプレートって何か説明しろ。
0135デフォルトの名無しさんNGNG
>>125
無理いってすまんかったな・・・
0136デフォルトの名無しさんNGNG
>>133
いえ。処理すべきデータが収まりきらなかった場合を考えてます。
例えば5GBのテキストを食わされて処理していったものの、3.8GBを処理した時点でメモリ割り当て限界に
達したとか。その場合、リンクリストの配列化に必要な更なるメモリを割り当てることが出来ませんよね。
3.8GBのテキストならば配列化にも数十MBのメモリが必要でしょう。
0137デフォルトの名無しさんNGNG
地球は地殻と地表のプレートからなっているのは知っているか?
10枚のプレートだよ。
0138デフォルトの名無しさんNGNG
>137
マンヘル...マントルが抜けてたOTZ
0139デフォルトの名無しさんNGNG
>>137
メガトン級の馬鹿だなぁ。
0140デフォルトの名無しさんNGNG
>136
>リンクリストの配列化に必要な更なるメモリを割り当てることが出来ません

この後、どうしろと言うのだ?
0141デフォルトの名無しさんNGNG
>>136
何が何でもオンメモリで処理しないといけないのか?
5GBとか言ってる時点で32bitOSでは処理しきれないぞ。
0142140NGNG
引用が不適切だったな

>5GBのテキストを食わされて処理していったものの、3.8GBを処理した時点で
>メモリ割り当て限界に達したとか。その場合、

その場合どうしろと?
0143デフォルトの名無しさんNGNG
>>142
その場合はハードディスクをフォーマットして、初めから何もなかった事に
して構いません。
0144デフォルトの名無しさんNGNG
>>140
だから、リンクリストの配列化は大変だー、という話をしてるんです。
解法としては、いくつかの行の処理を諦め、配列化に必要なメモリを
割り当てられるまで最終行から順番に領域を開放していくことでしょうかね。

または、配列化用のインデックスをファイル読み取り時点で100個ぐらいずつ
確保し、reallocで配列を広げていくことでしょうか。
0145140NGNG
>143
了解した。
0146デフォルトの名無しさんNGNG
>>144
>いくつかの行の処理を諦め

次のルールに抵触
>勝手な上限を設けてはいけません。

データこぼすのは単なる制限より悪質だぞ
0147デフォルトの名無しさんNGNG
>>146
何も出力されないよりはマシかと。この対策は"勝手な上限を設けるもの"ではなく、
"メモリサイズのみに依存"でしょう。
0148デフォルトの名無しさんNGNG
頑迷で無知で馬鹿な人間は救いがないな。
0149デフォルトの名無しさんNGNG
「シーケンスAの要素を整列せよ」という要求に対して、
「シーケンスBという部分集合を勝手に定義して整列しました」と納品に行ったら
がくがくぶるぶる
0150デフォルトの名無しさんNGNG
>>149 は >>147 宛てな
0151デフォルトの名無しさんNGNG
>146

でたらめな出力するくらいなら、何もしないのが常識だぞ(w
0152151NGNG
失礼、 147 宛てね。
0153デフォルトの名無しさんNGNG
>>149
うーん、フェイルセーフは考えないのが普通なんでしょうか?
仕様書が与えられているならまだしも、「こんな感じで作って〜」と
言われたら細かい仕様は作る側に任されると思うんですが。

この課題の場合、"勝手な上限を設けるもの"というのは、
#define MAX_NUM 100000
struct s_table str_table[MAX_NUM];
といった上限決め打ちを規制するものだと思いましたが。
0154デフォルトの名無しさんNGNG
>「シーケンスBという部分集合を勝手に定義して整列しました」
「えぇ、もちろんバグでは有りません。仕様です。」
0155デフォルトの名無しさんNGNG
>フェイルセーフ

もまい、もう一回学習しなおせ(w
0156デフォルトの名無しさんNGNG
>>153
誰も要求してないことをしてるだけ
マシもへったくれもねえんだよ

>>151 を500回、声に出して朗読しろ
0157デフォルトの名無しさんNGNG
>146
>146
>146
 :
0158デフォルトの名無しさんNGNG
>>155
あー、フェイルソフトですね。すいません。

>>156
全てを読みきれなかったら何もしないんですか?
読みきれた分までで処理というのはおかしい?
0159デフォルトの名無しさんNGNG
>>98
全く余計なことを・・・
0160デフォルトの名無しさんNGNG
>158
あのね、読みきれなかった文が短かったら出てこないでしょ?
それは、

154 :デフォルトの名無しさん :04/11/23 19:21:09
>「シーケンスBという部分集合を勝手に定義して整列しました」
「えぇ、もちろんバグでは有りません。仕様です。」

って事なんだよ、わかる?
0161デフォルトの名無しさんNGNG
まずいですか?まずいんですね。すいません。
0162デフォルトの名無しさんNGNG
>>160
アンマン買ってきてと言われて売り切れていたから手ぶらで買えるというのは正しくないですよね。
そこで肉まんを買って最大限要求を満たすのが正しいとお思いますが違いますか?
0163デフォルトの名無しさんNGNG
>>158
>全てを読みきれなかったら何もしないんですか?

だから、そうだよ。くどい。


>読みきれた分までで処理というのはおかしい?

処理そのものじゃない。
注文どおりならおかしくない。

注文と違うことを勝手に(←ここ重要)やることが
技術以前のところで間違ってるといっているんだ。

あんたのコードの出力が何に使われるのかも勝手に決めてるよな。
技術以前のところで間違ってるぞ。
0164デフォルトの名無しさんNGNG
>>162
アンマンを10個買ってきてと言われたけど7個しか無かった、というのがこの場合の例だと思うんですが


もしそうなら当然7個買って帰るから反例として都合が悪いんでしょうか(笑)
0165デフォルトの名無しさんNGNG
>アンマン買ってきてと言われて売り切れていたから手ぶらで買えるというのは正しくないですよね。
>そこで肉まんを買って最大限要求を満たすのが正しいとお思いますが違いますか?

しゅーきょー上の理由により、肉まんが食えんのだよ。よって最低最悪。金返せ(w
0166デフォルトの名無しさんNGNG
>164
ちょっと違うだろ。
買えなかった3個は買えた7個と違わないから、10個→7個でもOK。
10人がバラバラの要求で、7人分しか買って帰らなかった、問題だろ?
0167デフォルトの名無しさんNGNG
手ぶらで帰るよりは問題じゃないでしょう
0168デフォルトの名無しさんNGNG
>手ぶらで帰る

争いがなければ、ね。
0169デフォルトの名無しさんNGNG
>>167
「手ぶらで帰る」←これも要求にない

自分の責任範囲にない障害で要求を完了できないとき、
要求元への相談がないことが問題。これは技術以前。
0170デフォルトの名無しさんNGNG
つーわけで質問者は出題者を問い詰めて来い
0171デフォルトの名無しさんNGNG
>170

131 :デフォルトの名無しさん :04/11/23 18:54:37
とにかく巨大なメモリを確保して
「このプログラムは実行するコンピュータのメモリサイズの制限により動作しません」
と言い張れば解決だな。
0172デフォルトの名無しさんNGNG
>>169
引きこもり2ちゃんねらは知らないかもしれないけれど
そういうのは一般社会では融通のきかないおばかさんと蔑まれます。
0173デフォルトの名無しさんNGNG
>>170
腐ってもここはム板
「要求元への相談」がプログラムで言うと何かがわからない者ば黙ってろ
0174デフォルトの名無しさんNGNG
仕様で「途中まででも処理する」と決まってればそうする。
決まってなければ、処理未完了は仕様を満たさないから、何もしない。
でいいだろうが
0175デフォルトの名無しさんNGNG
>>173
コマンドライン引数でも勝手に増やすか?
0176デフォルトの名無しさんNGNG
>172

一般社会では、融通をきかせたつもりの「余計なお世話」がまかり通るのか(w
0177デフォルトの名無しさんNGNG
>>172
引きこもりはお前らしいな。
3つ足りないことの影響範囲に責任を負わない者が判断すべきことではない。
責任範囲の感覚が備わっておらず大変な決断を勝手にやってのけた人は「おばかさん」程度では済まされないよ。
0178デフォルトの名無しさんNGNG
あんまんの買出しに出かけたアルバイトのお茶くみに
ずいぶん大きな責任が負わされてるんだなw
0179デフォルトの名無しさんNGNG
まぁ、一般では目的のものが買えなかった場合の代替品を
頼む側、頼まれる側が考慮するけどね。

プログラムでは要求に無いものは作ってはダメだよ。
それこそ、
>ハードディスクをフォーマットして、初めから何もなかった事に
してもOKと言い出しかねん(w
0180デフォルトの名無しさんNGNG
エラー処理とあんまんのお使いでは喩えとして不釣合いだろう。
0181デフォルトの名無しさんNGNG
>あんまんのお使い

ぢゃ、アンパンマンのお使い
0182デフォルトの名無しさんNGNG
正しいアプリケーションとは(上にあるものほど優先順位が高い)
1. 有限時間内に終わること
2. 正しく処理を行うこと
3. 2.が不可能な場合、処理を中断し不可能だと通知すること
4. それなりにスケーラブルであること(なるべくソフトには制限を設けず、OSやPCの限界に依存)
5. それなりに効率的であること(高速に動作し、メモリを使いすぎない)
0183デフォルトの名無しさんNGNG
>>182
1.
1.
3.
4.
5.
0184デフォルトの名無しさんNGNG
>正しいアプリ
>正しく処理を行うこと

プ
0185デフォルトの名無しさんNGNG
>>178
そのバイトの勝手な判断が、接客中の失礼につながり、
億単位の取引を逃したら、アルバイト君は身銭でも切れるんだろうか。

ここで「接客」を持ち出したのは私だが、あなたもそれを否定できない。
自分の仕事の成果が何に使われるのかは、あなたの責任範囲ではないからだ。
取引先との交渉を持ち直させるのに必要な技能も資源も持たないよな。
それを責任と権限がないというんだよ。

wとか書いているが、本気でわからないとしたら笑い事じゃないぞ
0186デフォルトの名無しさんNGNG
そうか、最近の企業は取引相手をアンマンで接待するのか。メモっとこう。
0187デフォルトの名無しさんNGNG
ぢゃ、アンパンマン
0188デフォルトの名無しさんNGNG
くだらない話はもうやめ。
0189デフォルトの名無しさんNGNG
>>186
お前、何の話がしたいんだ?
障害に対する処理のあり方の話はもうしたくなくなったのかw
0190デフォルトの名無しさんNGNG
>億単位の取引を逃したら、アルバイト君は身銭でも切れるんだろうか。
そいういうのは法律で禁じられてるわけだが。
0191デフォルトの名無しさんNGNG
くだらない話はもうやめ。
0192デフォルトの名無しさんNGNG
>>180
いや、こいつの場合はあんまんのお使いまで戻って話す必要がある。
責任範囲に対する考え方が、ふざけているのではなく大真面目で間違っている。
0193デフォルトの名無しさんNGNG
最近クリマンっていうのがコンビニで売っているね。
0194デフォルトの名無しさんNGNG
問題の核心はあんまんの代替としてにくまんが許容されるか否かということだろう。
0195デフォルトの名無しさんNGNG
>障害に対する処理のあり方

だから、間違ったことするくらいなら何もしない方がマシだって
余計なことするなって
下手な考え休むに似たり、って昔からいうだろ(w
0196デフォルトの名無しさんNGNG
いやそうじゃない。企業の接待としてアンパンとカレーパンのどちらが伝統的かどうかだ。
0197デフォルトの名無しさんNGNG
>>190
会社の金を無断で流用することも禁じられている

お前、何の話がしたいんだ?
障害に対する処理のあり方の話はもうしたくなくなったのか?
0198デフォルトの名無しさんNGNG
>>197
ニュー速に帰れよ
0199デフォルトの名無しさんNGNG
むしろ、障害時における小泉首相の対応が一国の首相としてふさわしいものであったかどうかだ。
0200デフォルトの名無しさんNGNG
話そらすのに必死だな (プ
0201デフォルトの名無しさんNGNG
くだらない話に必死だな (オナラプー
0202デフォルトの名無しさんNGNG
くだらなくねえよ、メモリ枯渇の話はな
0203デフォルトの名無しさんNGNG
とりあえず今日はそこまでにしたら?
荒れてるわけだし。
0204デフォルトの名無しさんNGNG
何気ない引き篭もりの一言でここまでスレ荒らさなくてもいいのにな。
0205デフォルトの名無しさんNGNG
メモリが無い時に、おまえらがいくらがんばっても意味ねーよ
0206デフォルトの名無しさんNGNG
だな。喧嘩両成敗だ。
0207デフォルトの名無しさんNGNG
Ruby!!!!!!!!!!>>>>>>>>>>>>>>>>>>>>
0208デフォルトの名無しさんNGNG
つか「入力ファイルの大きさは1GBまで(ただし100万行以内)」とか
仕様上に上限を設けるのがふつう。
それ以上超えた使いかたしたら、何起こってもしらね。
0209デフォルトの名無しさんNGNG
>取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
>依存 しなければなりません。 勝手な上限を設けてはいけません。
0210デフォルトの名無しさんNGNG
>>209
そんな仕様を受け入れるプログラマは馬鹿だということだ。
0211デフォルトの名無しさんNGNG
この親にしてこの子あり
男児の人格障害はほとんどの症例で母親に問題がある
0212デフォルトの名無しさんNGNG
Rubyしあこうこう!!!!!!!!!
Ribuy!!!!!!!!!!!!んむhっばにRubytukaouy!!!!!!!
0213デフォルトの名無しさんNGNG
Rubynotmaetnarashimeru!!!!!!!!!!!!!!
0214デフォルトの名無しさんNGNG
RRRRRRRRRRUYBBBBBBBBYYYYYYYYYYYYYYYY 意s難波rおね!
0215デフォルトの名無しさんNGNG
Rubyhasauikougenngo!
0216デフォルトの名無しさんNGNG
undefinedなのかunspecifiedなのかをはっきりしろ。
0217デフォルトの名無しさんNGNG
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
Ruby!!!!!!!!!!!!!!!!!!!!!!!!
0218デフォルトの名無しさんNGNG
くだらないことで喧嘩するから>>217みたいなのが発生してしまったではないk
0219デフォルトの名無しさんNGNG
>>281111111111111855



Rubyyyyyyyyyyyyyyyyyyyy!!!!!!!!!!!!!!!!!!!WE}っdq3t







Rbuyodasiakpoyui!!!!!!!!!RRRRRRRRRRRいう゛っypd@sdp
Rviupsdoufo;q2k,e4k,qd
Ryuby8o2i40w9dpfispw
0220デフォルトの名無しさんNGNG
このスレからまた一人発狂者が生まれました。ザーメン。
0221デフォルトの名無しさんNGNG
Ruby is nanbar one!
Ruby is the most best better good language than any other languages.
Enjoy Ruby!
0222デフォルトの名無しさんNGNG
>118
ちょと解読&考えてみた。

・作業用に最大80個のファイルを作成する
・文字の数によって、1〜80の作業ファイルのいずれかに追記する。
 何文字の行があるのか0と1で表す配列で持つ(領域80個)
・行数の少ないところから、作業用ファイルの最初から、順に出力する

これ、メモリほとんど使わないYo!
0223デフォルトの名無しさんNGNG
小さいテキストのとき無駄だから却下
0224デフォルトの名無しさんNGNG
>>222
フェイールソォフトの問題点はそこじゃあない。
それでも1000テラバイトのファイルを入力したら
空き容量が足りなくて失敗することもあるだろう。

つまりディスク容量が足りなくなったらプログラムが自動的に
ショップまでハードディスクを買出してくるように作るべきだと。
0225デフォルトの名無しさんNGNG
ひどい状況だな(w
0226デフォルトの名無しさんNGNG
>>224
予算が足りなかったら自動的にアイフルと契約してお金を借りるように
なってるとなおいいね。w
0227デフォルトの名無しさんNGNG
>>224
その前には、容量が逼迫してきたら自動的にアップローダーを起動して、画像ファイルに変換にしたものをネットにアップロードするとかか?
0228デフォルトの名無しさんNGNG
マジレスするとそれは運用レベルの話。
0229デフォルトの名無しさんNGNG
>>227
それともzipの蓮に「萌え」と入れてうpするか?
0230デフォルトの名無しさんNGNG
>222
ちょと解読&考えてみた。

・何文字の行があるのか0と1で表す配列exist[]で持つ(領域80個)
・for(i=1; i<=80; ++i){
  if(exist[i])
   入力の先頭からi文字に一致する行を表示
 }

これ、メモリほとんど使わないYo!
0231デフォルトの名無しさんNGNG
関数へのアドレス渡しなんですが構造体などを関数で飛ばしたい場合
アドレスにすればより効率よく早いと思いますが
それはint型やfloat型にもいえることなんでしょうか?
0232デフォルトの名無しさんNGNG
>>231
いいえ。
0233デフォルトの名無しさんNGNG
>>231
組み込み型は値渡しの方が一般的。
0234デフォルトの名無しさんNGNG
>>231
100バイトの構造体を飛ばす代わりに4バイトのポインタ渡すのは効率的だけど
intもfloatも4バイトだから効果なし(サイズは一例)。
それどころかデリファレンスでむしろ遅くなる。
0235デフォルトの名無しさんNGNG
定数を渡せないしな。
0236デフォルトの名無しさんNGNG
>>231
実測せずに効率を語ろうとする怠け者に話すことはない
0237デフォルトの名無しさんNGNG
>>236
お前には聞いてません。黙っててください。
0238デフォルトの名無しさんNGNG
>>237
礼儀知らず
0239デフォルトの名無しさんNGNG
実測より理屈が先だろ
0240デフォルトの名無しさんNGNG
仕様できちんと決められているならば理屈も出せるんだがな
0241デフォルトの名無しさんNGNG
数値計算をしていて、構造体の配列が非常に大きいのが必要になりmallocなどを用いることで
解決しました。
なぜ、ふつうに配列を定義したときにはある程度の配列数しか定義できなくて
mallocなどで動的にメモリを確保すると、より多くの配列を定義できるようになるのでしょうか。
(ポインター型のサイズなどと関係があるのでしょうか?)
どういう仕組みでなっているのか興味を持ち質問しました。
すいませんが教えてください。
0242デフォルトの名無しさんNGNG
通常の配列は領域をスタックに確保するから
0243デフォルトの名無しさんNGNG
一般に
ヒープの領域のサイズ>>>>>>>>>>>>>>スタックのサイズ
だから
0244デフォルトの名無しさんNGNG
>>241
ざっくり言うと、普通に配列を定義しようとするとスタック領域というメモリ領域にそれを作ろうとする。
このスタックにはサイズの制限があることがあって、制限がある場合は、それ以下の大きさのものしか作れない。
(そのサイズって64KBとかそんな感じ)
このサイズを超えるような操作をしてしまうと「スタックオーバーフロー」とかいうエラーになったりする。
一方、mallocはヒープ領域というメモリ領域にそれを作ろうとして、まぁ大体は、実メモリ一杯まで取れたり
するので、巨大な配列でも作れる。

詳しくは、スタック領域、ヒープ領域、mallocでググれ。
0245デフォルトの名無しさんNGNG
VCだとデフォルトでスタック領域は1MB、ヒープ領域は4GB弱。実メモリを超えても使えるよ。
0246デフォルトの名無しさんNGNG
32bit環境では、リニアに使えるのが4GBまでってだけでOSさえちゃんと対応していて
メモリ量が十分(物理・仮想あわせて)だったら1GBのメモリを10個確保することも可能。
0247デフォルトの名無しさんNGNG
どうもありがとうございます。
ヒントをいただいたので、そこからググってみます。
(グーグルで調べろってことですよね?)
0248デフォルトの名無しさんNGNG
ほむほむ。
0249デフォルトの名無しさんNGNG
double MIN = 0.0;
double MAX = 10.0;
double dt = 0.01;
euler(MIN, MAX, dt) //積分結果の最後の値を返す
0から10.0まで積分計算をし、積分結果の最後の値を返す関数eulerがあるのですが、
途中の計算過程も出力するようにするにはどうすればいいのですか?
0250デフォルトの名無しさんNGNG
ここは親切なインターネッツですね。
0251デフォルトの名無しさんNGNG
>>249
計算途中にprintfを入れまくる
0252デフォルトの名無しさんNGNG
>>249
printf("%f\n", euler(MIN, 0.01, dt));
printf("%f\n", euler(MIN, 0.02, dt));
...
0253デフォルトの名無しさんNGNG
241,247です。

ヒープ領域とはスタック領域とは基本的に全然違うのですね。
ヒープ領域は関数の外側にあるという感覚でいいのでしょうか?
となると、ヒープ領域にあるデータを参照するのには、関数の内部にある
スタック領域のポインターのようなものを用いてヒープ領域のデータを
読み取ってそれをスタック領域に持ってきて計算する、というようなことを
行っていると考えていいでしょうか?

こうやって考えてみると、ヒープ領域のデータを参照することと
スタック領域のデータを参照するときとやること自体は変わらず、
計算時間としては変わりないと考えればいいのでしょうか?
それともデータ構造を調整(すいません、どのように表現すればいいのか
わかりませんでした。)することがヒープ領域を参照するには余分に必要で、
計算時間はより長くかかると考えてよいのでしょうか?
0254デフォルトの名無しさんNGNG
【えっと・・・】ググれ。
0255デフォルトの名無しさんNGNG
>>253
スタック領域も関数の外側にあるわけだが・・・
だから間接的な再帰ができる
0256デフォルトの名無しさんNGNG
>>253
プロセスの空間はOSによって割り当てられます。コードはこのへん、スタックはこのへん、ヒープはこのへん、というように
領域ごとに役割が与えられます。で、プロセスから見ると


って、説明難!勉強が足りないな。
プロセスから見たメモリ空間と実際のメモリ空間は違うもの、と認識しとけばいいかな。
はじめて読む486とか読めば結構詳しく書いてある。
0257デフォルトの名無しさんNGNG
>>245
32ビット Windows でのユーザプロセス空間は最大2GBですよ?
(とある設定変更しても3GBまで)
0258デフォルトの名無しさんNGNG
スタック…LIFOのデータ構造を持つ自動変数用、関数呼び出し用領域。

ヒープ…sbrkなどのシステムコールによってメモリの一部が割り当てられ、
    クライアントにポインタを返す。サーバアプリケーションなどの
    場合、確保したメモリはちゃんと解放してやらないとメモリが
    枯渇し、新たなメモリを確保することができなくなり、最悪
    サーバが落ちる。これをメモリリークと言う。
0259デフォルトの名無しさんNGNG
>> 255

あ、そうでした。スタック領域も関数の外側でしたね。すいません。
じゃあ、やること自体は一緒で実行速度も一緒ですね。
(registerとかは関係なしで)

うーんと関数って呼び出すたびに、関数内で定義した変数のために
スタック領域をいじくると考えるとすごく計算時間がそんな感じがしました。
単にデータを参照するという計算時間時間だけでなく、このようなところにも
関数を使うことで計算時間が長くなってしまうのですね。
(すいません、間違ってたら教えてください)
やっぱ、プロファイラを使うとき意外はインライン展開するようにしたほうが
いいな、と思いました。

もうちょっとググってみます。
0260デフォルトの名無しさんNGNG
>> 256

どうもありがとうございます。
"はじめて読む486"、読みます^^。
0261デフォルトの名無しさんNGNG
>>259
そろそろ寝るぞ
スタック領域をいじくらない関数つーとレジスタでも使うってことか
そのレジスタの中身はどこにバックアップされると思う
それとプロファイラを使うときだけインラインを抑止したら意味ねえぞ
0262デフォルトの名無しさんNGNG
>>253
今は
・ローカル変数はスタックに取られるからサイズに注意しないといけない
・それより大きな変数を使いたければ、mallocを使う。んで、それはヒープという所に取られる
・static変数、グローバル変数は、それらとはまた別の場所に取られる
・それらは、場所が違うだけで、使う方法は一緒だし、計算時間もほぼ一緒
と思っておけばいいよ。
0263デフォルトの名無しさんNGNG
この本がお勧め。
エキスパートCプログラミング―知られざるCの深層
http://www.amazon.co.jp/exec/obidos/ASIN/4756116396/249-8849878-3464321
0264デフォルトの名無しさんNGNG
どうもありがとうございます。

そのレジスタの中身はどこにバックアップされると思う

レジスターの中身のバックアップを取っているとは知りませんでした。
うーんと、スタックでしょうか?

 "エキスパートCプログラミング―知られざるCの深層"

これも読んでみます。
0265デフォルトの名無しさんNGNG
>>263の本は読んでないけどかなり評判いいな。
Cの下でどんな事が起きてるのかを理解するにはアセンブラに触れる必要があるからね。

レジスタの中身はスタックにバックアップされる。コンパイラは、それによる
スタックポインタ位置移動も計算してローカル変数の偏移値を求め、
辻褄を合わせてアセンブルする。コンパイラのソースを読め、なんて無茶な人も居るけど、
そんなのムリムリカタツm(ry
0266デフォルトの名無しさんNGNG
> それとプロファイラを使うときだけインラインを抑止したら意味ねえぞ

てっきり、プロファイラーを使うときにはインラインしたらだめだと思っていました。
今、やってみて気づきました。すいません、どうもありがとうございました。
0267デフォルトの名無しさんNGNG
釣りなのか
それとも
マジで低レベルの話なのか
0268デフォルトの名無しさんNGNG
double MIN = 0.0;
double MAX = 10.0;
double dt = 0.01;
euler(MIN, MAX, dt) //積分結果の最後の値を返す
0から10.0まで積分計算をし、積分結果の最後の値を返す関数eulerがあるが、
途中の計算過程も出力しろや!!

0269デフォルトの名無しさんNGNG
>>265
あんまし、勉強にはならないと思うよ ・・・面白いけど
0270デフォルトの名無しさんNGNG
>>268
http://doraneco.pos.to/physics/column/eular.html
http://www12.plala.or.jp/ksp/math/euler/euler.html
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Euler.html
0271デフォルトの名無しさんNGNG
今まで、利用していただけだから気づかなかったけど、

FFFTPの作者って、ソースを見る限り
凄いプログラマーなんだな〜っと思ったよ。
0272デフォルトの名無しさんNGNG
コピペばかりだけどな
0273デフォルトの名無しさんNGNG
すごい数のグローバル変数だな。
0274デフォルトの名無しさんNGNG
有り得ないよな。ハンドルすらロクに使ってないからな
0275デフォルトの名無しさんNGNG
FFFTPなんて使えないソフトの代表例
0276デフォルトの名無しさんNGNG
最高ソフトFTP!!!!!!!
FFFTP>>>>>>>>>>>>>>>>>>>>>C
0277デフォルトの名無しさんNGNG
↓RubyとFFFTPの比較
0278デフォルトの名無しさんNGNG
>>277
りんご>>貯金箱
0279デフォルトの名無しさんNGNG
>>278
C++のストリームに見えてしまう…orz
0280デフォルトの名無しさんNGNG
たわし > お前ら
0281デフォルトの名無しさんNGNG
たわしは海外旅行。
0282デフォルトの名無しさんNGNG
なんだ、女の三助さんかと思った
0283デフォルトの名無しさんNGNG
やっぱりその……FFFTPのコードはある意味凄いって事でいいの?
漏れ、あのコードはなかなか読めなくて……。
自信なくしてんだ……。
0284デフォルトの名無しさんNGNG
う〜ん・・・いわゆる「駄目」なプログラムの代表例ですね。
0285デフォルトの名無しさんNGNG
これくらい読めないと、仕事でプログラム読むのは無理だろ。
0286デフォルトの名無しさんNGNG
まあ、たしかに。仕事なら酷いプログラムなんていくらでも
読まなくちゃならんし。
0287デフォルトの名無しさんNGNG
どこにそーすあんの?
0288デフォルトの名無しさんNGNG
>>287
http://www2.biglobe.ne.jp/~sota/ffftp.html
0289デフォルトの名無しさんNGNG
http://www.jisc.go.jp/ X3010
これ落とせないの?
0290デフォルトの名無しさんNGNG
全部読み込んだあとキャッシュフォルダからコピー
0291デフォルトの名無しさんNGNG
>>290
ダメでした。
「文書のプロパティ」を見る限り
コピーできないセキュリティになってるから
Adobe Reader がそれを許さないみたい
0292デフォルトの名無しさんNGNG
>>291
うちはAdobe Readerをインストールしていないから閲覧ページを開くと自動的にダウンロードのダイアログが出る。
もしかしたらAdobe Readerを一度アンインストールすればダウンロードできるかも。
0293デフォルトの名無したんNGNG
>>292
6.0.1でブラウザのアドオンリストから削除したらできました。
thxです。

でも6.0.2ではそれもAdobe Readerが
許さないようなのでバグかと
0294デフォルトの名無しさんNGNG
httpリクエストをプログラムから発行するくらい君らには簡単でしょ?
0295デフォルトの名無しさんNGNG
va_list に対して規格が要求している意味づけが理解できていません。

va_list は、使用前に va_start() 、使用後に va_end() を呼ぶ決まりになっていますが、
その使用中に、対象となる va_list の複写が行われ、その後
各々の va_list に対して別々の va_arg() が呼ばれた場合、
複写元の va_list についてだけ va_end() を呼べばよいのでしょうか?
それとも複写先の va_list についても va_end を
呼ばなくてはならないのでしょうか?
それとも va_list は、そのような使用法を認めていないのでしょうか?
0296デフォルトの名無しさんNGNG
>>295
いっぺん void* で書いてみればわかるよ
0297295NGNG
>>296
処理系依存の話ではなく、
「規格が要求している意味」の話です。
処理系によっては va_end() は、何も動作しないという
定義がされていることもあります。
0298デフォルトの名無しさんNGNG
>>295
後者。
va_start()とva_copy()を呼び出したらそれに対応するように同じ関数内でva_end()を呼び出さなければならないと書いてある。
0299295NGNG
>>298
ああ、C99 で va_copy() なんてものが出来たんですね。
ありがとう。

でも、それ以前はこの手の問題は曖昧だったのかな?

それと、vprintf 等の関数の引数として"複写"された va_list も
同じように(vprintf 内の終了処理として)va_end() を
呼ばなくてはいけないとか?
ますます訳が分からなくなってきたかも。
0300デフォルトの名無しさんNGNG
char str[256];
のように、サイズを 2 のべきにするのには何か理由があるのでしょうか?
0301デフォルトの名無しさんNGNG
>>300
無い
0302デフォルトの名無しさんNGNG
>>300
ただ単に2進数にすると256は100000000、その他2のべき数はいずれも2進数にするとキリがいいように見える。
0303デフォルトの名無しさんNGNG
>300
2のべきというより、アドレスビット幅でないの?
32bit=8バイトのxx倍
0304デフォルトの名無しさんNGNG
>>300
アラインメントの関係でプロセッサのビット幅に合わせた方が
無駄が出ない可能性が高いから。
0305デフォルトの名無しさんNGNG
>>300
仕様で決ってるから。
0306デフォルトの名無しさんNGNG
>>305 うそでしょ?
0307デフォルトの名無しさんNGNG
>>306
そういう仕様はよくあるよ?
0308デフォルトの名無しさんNGNG
>>307
たとえば何というコンパイラ?
0309デフォルトの名無しさんNGNG
>>308
コンパイラじゃなくて、仕様の話。
0310デフォルトの名無しさんNGNG
すいません 質問させていただきます
./a.out 256
等と 引き数?をとっているんですが
これを 数字(10進)かどうか判断するのはどうすればいいのでしょうか?
今は、頭から1つずつ数字を取っていき それが0以上9以下ならと言う理由で
全ての桁をチェックしています
それと、11-22等のように記号付で取ったさいにその記号までをコピーするとか
言うのは どのようにできるのでしょうか?
すいませんが教えてくださいお願いします
0311デフォルトの名無しさんNGNG
>>310
> 今は、頭から1つずつ数字を取っていき それが0以上9以下ならと言う理由で
> 全ての桁をチェックしています
isdisitでチェックしたほうが効率がいいだろう。

> それと、11-22等のように記号付で取ったさいにその記号までをコピーするとか
記号が現れたところまでをこぴーすればいい。
0312デフォルトの名無しさんNGNG
>>311
どんな理由で効率がいいんですか?
0313デフォルトの名無しさんNGNG
>0以上9以下
が 1つの条件で判断できるから
0314デフォルトの名無しさんNGNG
なんだ、ソース上の効率か。
0315デフォルトの名無しさんNGNG
>>311
記号が現れたところまでこぴーとはどうやるんですか?
0316デフォルトの名無しさんNGNG
>>314
バイナリ上でも一回の条件判断である可能性は高いけど。
0317デフォルトの名無しさんNGNG
>>316
見た目だけでしょ?
0318デフォルトの名無しさんNGNG
>ソース上の効率

プ
0319デフォルトの名無しさんNGNG
>>315
記号が現れたところで処理を中断すればいい。
0320デフォルトの名無しさんNGNG
>見た目だけ

pu
0321デフォルトの名無しさんNGNG
>>320
ちゃんと説明してくれませんか?
0322デフォルトの名無しさんNGNG
isdigit系がどう実装されてると思ってるんだろう?
0323デフォルトの名無しさんNGNG
一般的なライブラリではテーブルを使って1度判定するだけ
0324310NGNG
>>311
ありがとうございます
isdisitと言うものを検索して見たのですが出ませんでした
すいませんが どのようなものか説明していただけないでしょうか?
すいませんがお願いします
>記号が現れたところまでをこぴーすればいい。
と なると私はこれも頭から1文字ずつ読んでいき記号が出るまでと言う風に
してしまうのですが こういう風なことを言っていられるのでしょうか?
すいませんが教えてください
0325デフォルトの名無しさんNGNG
>>323
な、なんだってぇぇ
いわゆる全角も対応しているやつも考えたらすごいテーブルだ
0326デフォルトの名無しさんNGNG
>>324
isdigit()
'0'から'9'までなら1、そうでなければ0を返す
0327デフォルトの名無しさんNGNG
>>325
これって、判定する文字はunsigned charかEOFでなければならないらしいけど、
どうやって全角に対応しているんだろう。
0328デフォルトの名無しさんNGNG
#define isdigit(c) ((unsigned)((unsigned char)(c) - '0') < 9)
こうすりゃテーブル不要。
0329デフォルトの名無しさんNGNG
>328
ヴァカハケーン

符号なしはマイナスにはなりませーんw
0330デフォルトの名無しさんNGNG
>329

...かわいそうに
0331310NGNG
ありがとうございました
if(!(isdigit(c))) { exit(1);}
で 今までと同じことができました
でも今までの方が自分なりにわかりやすかったかも・・
0332デフォルトの名無しさんNGNG
>>328
ヴァカでした。OTL
#define isdigit(c) ((unsigned)((unsigned char)(c) - '0') < 10)
0333デフォルトの名無しさんNGNG
isdigitってアスキーコードで計算すんの?
0334デフォルトの名無しさんNGNG
>>328
引き算が使われちゃってるね。
0335デフォルトの名無しさんNGNG
文字コードが連続しているからいいんだけどね。。。
0336デフォルトの名無しさんNGNG
>>331
strtolなんかも使ってみたらどう?
0337310NGNG
>>333
わかんないです
今までは(c > '9')とかでやっていたのでそれの代替になったということは
そうなっているのではないでしょうか?
すいません わからないです  わかるかたいましたらすいませんがお願いします

>>336
すいません プログラムをはじめたばかりなので全然わからないんですよ
できれば それも説明していただければ嬉しいです
0338デフォルトの名無しさんNGNG
>>335
それ以外にも、効率的に条件判断二回とほぼ同等になっちゃいそうだ。
0339デフォルトの名無しさんNGNG
>>337
char *hoge;
long n = strtol("16-256", &hoge, 0);
とするとnには16、hogeには"-256"が入っている。
0340デフォルトの名無しさんNGNG
>>339
そんなんはじめてみた
もっと詳しく
0341デフォルトの名無しさんNGNG
long int
strtol(const char *nptr, char **endptr, int base);

説明
strtol() 関数は nptr の文字列の最初の部分を、 base を基数としてlong int に変換する。
この base は 2 から 36 までの値あるいは特別な意味を持つ値 0 (後述)でなければならない。
文字列の先頭には、任意の数の空白があってもよく、また数字の直前には `+' か `-' があってもよい。
base が 0 または 16 の場合には、 `0x' ではじまる文字列は 16 進数として扱われる。
これ以外の文字列に対して base が 0 の場合は、 `0' で始まる文字列は 8 進数として、それ以外の文字列は 10 進数として扱われる。
数字を表す文字列は long int に変換されるが、基数に対して有効でない数字が現れた時点で変換は終了する。
(11 進数以上では `A' は大文字・小文字に関わらず 10 を表し、 `B' は 11 を表現し、以下同様に、 `Z' は 35 を表す。)
endptr がヌル値 (NULL) でない場合は、最初に現れた不正な文字が strtol() によって *endptr に保存されている。
文字列に有効な数字がひとつもなければ、 strtol() は nptr の元の値を *endptr に代入する(そして 0 を返す)。
特に、*nptr が `\0' 以外で、戻された **endptr が `\0' ならば、文字列全体が有効だったことになる。
0342デフォルトの名無しさんNGNG
int *p;とやった場合はアドレスを入れる宣言になって
式中に*pと出てきた場合はなにになるんでしたっけ?
0343デフォルトの名無しさんNGNG
>>342
int 型になる。
0344342NGNG
>>343
どういういみでしょうか?
私が読んでる本に書いてあった気がするんですが朝から探しているのですが
見つけられませんでした
確かその本には 全然意味が違うみたいなことを書いてあったんですが
0345デフォルトの名無しさんNGNG
int n=100;
int *p=&n;

*p は int の 100
0346デフォルトの名無しさんNGNG
>>344
ちなみに、何の本読んでるの?
0347デフォルトの名無しさんNGNG
俺もポインタの事で質問だが

int *pの

pと&pはどう違うの?
0348デフォルトの名無しさんNGNG
int *p の &p は int **
0349デフォルトの名無しさんNGNG
>>344
どう書いてあるの?
0350349NGNG
ああ、スマソ。見つけられないて書いてあるなw
0351342NGNG
>>345
すいません ちょっと意味がわからないです

>>346
C言語によるプログラミング」って本です
0352デフォルトの名無しさんNGNG
>>348
おーなるほど
サンクスm(_)m
0353デフォルトの名無しさんNGNG
>すいません ちょっと意味がわからないです

int n=100;
int *p=&n;

printf("n は int の %d\n", n);
printf("*p は int の %d\n", *p);
0354デフォルトの名無しさんNGNG
int *p; という変数の宣言は式の中で*pと書くとint型の値を得られるということ。
0355デフォルトの名無しさんNGNG
atoiしたものをsprintfしてstrcmpすればいい
0356デフォルトの名無しさんNGNG
int i = xxx("16-256");
これで i が -240 になるような関数xxxはありますか?
0357デフォルトの名無しさんNGNG
>>356
作ればあるだろうけど、標準にはない。
Perl とか Python なら eval でできるんだろうけど。
0358デフォルトの名無しさんNGNG
こっちのスレから消費しようよ。
http://pc5.2ch.net/test/read.cgi/tech/1100956766/
0359デフォルトの名無しさんNGNG
>>357
単に引いてそれが0より小さかったら符号消したら言いだけじゃね?
次の方 実際にCで書いてください

↓
0360デフォルトの名無しさんNGNG
>>356
探索範囲を指定せよ
0361デフォルトの名無しさんNGNG
define xxx("16-256"); -240
0362359NGNG
ごめん
俺読み間違えてた
0363359NGNG
んなもん 普通に引いてもなるじゃん
0364デフォルトの名無しさんNGNG
int xxx(const char* str)
{
return -240;
}
0365デフォルトの名無しさんNGNG
>>356
1番近いのはstrtolを繰り返し呼ぶことだな。
char *p;
int i = strtol("16-256", &p, 10);
int j = strtol(p, NULL, 10);
i += j;
0366デフォルトの名無しさんNGNG
>>356
int xxx(const char * str)
{
FILE *fp;
char buf[200];
sprintf(buf, "awk 'END {print %.170s;}' /dev/null", str);
fp = popen(buf, "r");
fgets(buf, sizeof(buf), fp);
return atoi(buf);
}
0367デフォルトの名無しさんNGNG
>366ならawkで許される演算なら何でもOK。
ex.: xxx("1+2*3/6");
0368デフォルトの名無しさんNGNG
まじめにやるならパーサ作るだな
0369デフォルトの名無しさんNGNG
>>366
Windows で動かないだろ。
0370デフォルトの名無しさんNGNG
>>369
UxToolsぐらい入れとけよ
0371デフォルトの名無しさんNGNG
>>370 なんすかそれ。
0372デフォルトの名無しさんNGNG
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>C
0373デフォルトの名無しさんNGNG
RubyがCに進化する
0374デフォルトの名無しさんNGNG
Cで複素数の計算をしたいのですが、どういう方法でするのが一般的ですか?
0375デフォルトの名無しさんNGNG
とりあえずコンドームしろ
0376デフォルトの名無しさんNGNG
complex
0377デフォルトの名無しさんNGNG
>>374
実部と虚部にわけて計算すればよい。
たとえば、(2+3i)+(3+4i)という計算は、
実部として2+3の計算結果と
虚部として3+4の計算結果を別々に保存すれば良い。
それをわかりやすくするには構造体として
struct complex {
double re;
double im;
};
のようなものを定義しておけばよい。
0378デフォルトの名無しさんNGNG
激しくスレ違いだが、C++なら標準で複素数クラスがある。一応。
0379デフォルトの名無しさんNGNG
C99で複素数型ってのが追加になったんでなかったっけ?
記憶違いならスマソ
0380デフォルトの名無しさんNGNG
なってる。_Complexとかcomplexとか。
0381デフォルトの名無しさんNGNG
>>377
eのi乗はどうしたらいいですか?
0382デフォルトの名無しさんNGNG
>>381
e^iはそのままe^iというものを定義して扱う。
それって分解できないでしょ。
0383デフォルトの名無しさんNGNG
xor
0384デフォルトの名無しさんNGNG
nor
0385デフォルトの名無しさんNGNG
すいません、全部のソースはのせられないのですが、
ファイルに計算した数値を書きこむプログラムを作っているのですが、

printf("%f",S);
strcpy( aa , "文字・・・" );
strcpy( bbb , "文字・・・" );
fprintf( fp , "%s\n" , aa );
fprintf( fp , "%f %f %f",x,y,z);
fprintf( fp , "%s\n" , bbb );
fprintf( fp , "%f\n" ,S);
printf("%f",S);
printf("書き込みました。\n");
fclose(fp);
return 0;

としたときに、初めのSとあとのSの値が変わってしまうのですが、どうしてでしょうか?
0386デフォルトの名無しさんNGNG
aa か bbb がバッファオーバーランして S に上書き
0387デフォルトの名無しさんNGNG
具体的にはどうすればいいのでしょうか?
0388デフォルトの名無しさんNGNG
aa と bbb の定義部分を載せる
0389デフォルトの名無しさんNGNG
>>388
とりあえず解決しました。ありがとうございました。
0390デフォルトの名無しさんNGNG
>>381
オイラーの公式で分解できるだろ。
0391デフォルトの名無しさんNGNG
>>375
巨根ですが。
0392デフォルトの名無しさんNGNG
mallocでメモリを確保するの意味が分かりません。
char t[5];
と
char *t=malloc(5*sizeof(char));
はいったいどういう違いがあるんでしょうか。
0393デフォルトの名無しさんNGNG
マルチすんなボケカス
0394デフォルトの名無しさんNGNG
マルチですか、すいません。
もしご存じでしたら私と同じ質問に対する回答へのリンクを貼ってください。
0395デフォルトの名無しさんNGNG
>>392
ANSI Cでは配列のサイズは定数でなければならないことになってる。

配列のサイズが初めからわかっているのならそれでいいが、
必要なサイズがわからない場合は動的確保せざるをえまい。
0396デフォルトの名無しさんNGNG
>>392
失せRuby!!!!!!!!!!!!
0397デフォルトの名無しさんNGNG
C99はできますね。
0398デフォルトの名無しさんNGNG
isspaceとisblank(どちらも標準)の違いを説明できるやつは
ここにはいなさそうだな。
0399デフォルトの名無しさんNGNG
↑ぷRuby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0400デフォルトの名無しさんNGNG
>>398
isspaceは改行文字に対して真を返すが、isblankでは偽を返す。
0401デフォルトの名無しさんNGNG
>>392
char t[5];
関数から出たら解放される。

char *t=malloc(5*sizeof(char));
関数から出ても解放されない。
0402デフォルトの名無しさんNGNG
>mallocでメモリを確保する

・でかい領域を確保したいとき
・あとからサイズを拡張とかしたいとき
0403デフォルトの名無しさんNGNG
それはわかるんですけど、
char t[5];
をグローバル変数としてしまえば
プログラムを終了するまで保持するわけですよね?

で、関数から出ても解放されないと言うことは
解放しなければ恒久的にそのアドレスのデータは残るというわけですよね?
と言うことはそのアドレスをテキストに落として
別のプログラムからそのアドレスにアクセスするという事も可能なのでしょうか?
0404デフォルトの名無しさんNGNG
>>403
OSによる。
0405デフォルトの名無しさんNGNG
Winは出来るの?
0406デフォルトの名無しさんNGNG
>>405
OSによる。
0407デフォルトの名無しさんNGNG
WinXPは出来るの?
0408デフォルトの名無しさんNGNG
>>403
int main() {
  char *p = hoge("foo");
  char *q = hoge("bar");
  puts(p);
  puts(q);
  return 0;
}

上のようなときにグローバル変数を使うか動的に確保するかで挙動が違う。
char t[5];
char *hoge(char *p) {
  return strcpy(t, p);
}

char *hoge(char *p) {
  char *q = malloc(strlen(p) + 1);
  return strcpy(q, p);
}
0409デフォルトの名無しさんNGNG
>>406
出来るOSを挙げてみそ
0410デフォルトの名無しさんNGNG
このスレは次スレになるらしいからこっちから消費してくれ。
http://pc5.2ch.net/test/read.cgi/tech/1100956766/
0411デフォルトの名無しさんNGNG
やだ
0412デフォルトの名無しさんNGNG
C99って仕様変更多すぎでコンパイラベンダにスルーされそうな予感。
C++との互換性もなくなっちゃったわけで、C++への対応度が高まってきている
昨今、各コンパイラベンダがわざわざC99用のコンパイラを整備するだろうか。
0413デフォルトの名無しさんNGNG
// stdint stdboolだけあれば十分
0414デフォルトの名無しさんNGNG
>>412
gccはするに違いない
0415デフォルトの名無しさんNGNG
> 昨今、各コンパイラベンダがわざわざC99用のコンパイラを整備するだろうか。

こいつぼけ。逆だろ? 今後でてくるCのコンパイラーがあったら、C99に対応していない
やつはあり得ない。
0416デフォルトの名無しさんNGNG
> gccはするに違いない

gccはむしろC99寄り。現状でC99のほとんどの機能満たしているんだし、
わざわざへそまがりなことはしない。
0417デフォルトの名無しさんNGNG
VS.NETは普通に対応してないだろ。
0418デフォルトの名無しさんNGNG
>>409
組み込み系のOS
0419デフォルトの名無しさんNGNG
Win3.1はできそうだな
0420デフォルトの名無しさんNGNG
この板のコテハンとか口調に特徴もたせる奴って馬鹿ばっか
0421デフォルトの名無しさんNGNG
ということにしたいのですね?
(負け惜しみすぎー)
0422デフォルトの名無しさんNGNG
>>410
このスレを消費する速度より遥かに速い速度でそっちを埋めてしまえばいい
0423デフォルトの名無しさんNGNG
まだVC vs gccを続けるんですか?
0424デフォルトの名無しさんNGNG
>>418
いいかげん、組み込み至上主義は捨てろよ。
組み込みとそれ以外でどっちが特殊なのか考えてみろ
0425デフォルトの名無しさんNGNG
>>424
特殊の基準による
稼働数かい?
0426デフォルトの名無しさんNGNG
前スレの末路を見ると、キチガイが3人居ればスレなんかいとも簡単に埋まるということを実感するな。
0427デフォルトの名無しさんNGNG
日曜日は基地外もひまなんだな
0428デフォルトの名無しさんNGNG
キチガイは void 一人だけだろ?
0429デフォルトの名無しさんNGNG
>>428
劣化コピーが暴れてただけだよ
0430デフォルトの名無しさんNGNG
ということにしたいのですね?
0431デフォルトの名無しさんNGNG
本人は絶対に全角"?"とか使わない品
0432デフォルトの名無しさんNGNG
上げ厨は2人と見た
0433デフォルトの名無しさんNGNG
>>420
そんなこといわないでよー にゃんにゃん
0434デフォルトの名無しさんNGNG
age
0435デフォルトの名無しさんNGNG
indentコマンドは-gnuで使ってますか? それとも-kr?
うちの会社は8割ぐらいが-kr派なんですが、
残り2割りに6通りぐらいの小さい派閥があって
まとまらない。
0436デフォルトの名無しさんNGNG
bsd
0437デフォルトの名無しさんNGNG
まとまらないってまとめるなら派閥の意見聞いたってしょうがないだろ。
0438デフォルトの名無しさんNGNG
ある問題集で
「符号ありの整数型データをシフトするときは
常に算術シフトであると見なされるため、
符号ビットは不変である」
の答えが「×」なんです。

「○」になるものだとばかり思っていたのですが、
こういうものなのでしょうか
0439デフォルトの名無しさんNGNG
>>438
補足です
記述が正しいものには「○」、
正しくないものには「×」をつけろ
という問題でした。
0440デフォルトの名無しさんNGNG
そういうものです
0441デフォルトの名無しさんNGNG
>>438
そういうもんです。論理シフトとはビット列を何も考えずにシフトするため符号付整数型のデータは
思い通りにシフトできません。簡単のために8bitで説明すると、こうなります。
00010000(10進値: 16)を右に2ビット論理シフトすると
00000100(10進値: 4)となり、4で割った状態となります。しかし
11110000(10進値: -16)を右に2ビット論理シフトすると
00111100(10進値: 60)となり、これは整数値に対する演算として望む結果ではないでしょう。算術シフトすると
11111100(10進値: 4)となり、-16に4をかけたものとなります。
0442デフォルトの名無しさんNGNG
そもそも、符号ビットなんて存在するの?
0443441NGNG
>>441
こいつぼけ。
> -16に4をかけたものとなります。
-16を4で割ったものとなります。

自虐的です
0444デフォルトの名無しさんNGNG
>>440-443
ありがとうございます.

>>441
> 11110000(10進値: -16)を右に2ビット論理シフトすると
> 00111100(10進値: 60)となり、これは整数値に対する演算として望む結果ではないでしょう。算術シフトすると
> 11111100(10進値: -4)となり、-16を4で割ったものとなります。
こうなるんですよね? これは私が期待していた結果です.

なので問題の記述
> 「符号ありの整数型データをシフトするときは
> 常に算術シフトであると見なされるため、
> 符号ビットは不変である」
^^^^^^^^^^^^^^^^

は正しいと思うのですが
もしかして「常に算術シフトになる,とは限らない」ので「×」なんでしょうか?
0445デフォルトの名無しさんNGNG
>>444
>もしかして「常に算術シフトになる,とは限らない」ので「×」なんでしょうか?

そうですね。
0446デフォルトの名無しさんNGNG
左シフト
0447デフォルトの名無しさんNGNG
絶対ググったほうが圧倒的に早いのになんでググらねぇの?
謎だ
0448デフォルトの名無しさんNGNG
>>447
すみません。でも、私の代わりに調べたりしてくれるから、便利だなーって・・・
0449438,439,444NGNG
>>447
誰?

>>446
tnx.
理解できました.

#include <stdio.h>
#include <stdint.h>

int
main(void)
{
signed int i = INT32_MAX;

printf("INT32_MAX = %d\n", i);
printf("INT32_MAX << 1 = %d\n", i << 1);

return 0;
}


0450デフォルトの名無しさんNGNG
01000000 <<1はどうなる?
0451デフォルトの名無しさんNGNG
>>449は>>447じゃなくて>>448ですね.
すみませんでした.
0452デフォルトの名無しさんNGNG
>>450
>>446
0453デフォルトの名無しさんNGNG
三重婚ぐらいか
0454デフォルトの名無しさんNGNG
>もしかして「常に算術シフトになる,とは限らない」ので「×」なんでしょうか?

「算術シフトするとは、言語の規格で決められていない」ので「×」
0455デフォルトの名無しさんNGNG
分かったつもりで分からなくなった…

#include <stdio.h>
#include <stdint.h>

int main(void)
{
signed int i;
i = INT32_MAX; printf("%x\n", i);
i = i >> 1; printf("%x\n", i);
i = i << 1; printf("%x\n", i);
i = i << 1; printf("%x\n", i);
i = i >> 1; printf("%x\n", i);
return 0;
}

実行結果は
7fffffff
3fffffff
7ffffffe
fffffffc
fffffffe

右シフトは算術シフトで左シフトは論理シフト?
0456デフォルトの名無しさんNGNG
左シフトに算術も論理もない。あるのはオーバーフローを考慮しないでシフトすると言う事実だけ。
0457デフォルトの名無しさんNGNG
>>456
ttp://sinzo.web.infoseek.co.jp/joho/kodogozen/01kagaku/004/point004.htm
だと思っていたんだが違うのか。
0458デフォルトの名無しさんNGNG
>>457

こんなこと書いてる奴のサイトなんか参考にするなよ

>小数点以下を取り扱わないのですから当然の結果ですね。
>難しいことは分かりませんが、普通のシフト演算は整数の
>範囲ということになりそうです。
>勿論、コンピュータはこのシフト演算で計算をしているの
>ですから、少数点以下も取り使えるはずですが、今はよく
>わかりません。
0459455NGNG
スパイラルしてきた…

#include <stdio.h>
#include <stdint.h>

int main(void)
{
unsigned int i;
i = 0x10000000; printf("%08x : %d\n", i, i);
i = i << 1; printf("%08x : %d\n", i, i);
i = i << 1; printf("%08x : %d\n", i, i);
i = i << 1; printf("%08x : %d\n", i, i);
i = i >> 1; printf("%08x : %d\n", i, i);
i = i >> 1; printf("%08x : %d\n", i, i);
i = i >> 1; printf("%08x : %d\n", i, i);
return 0;
}

実行結果
10000000 : 268435456
20000000 : 536870912
40000000 : 1073741824
80000000 : -2147483648
40000000 : 1073741824
20000000 : 536870912
10000000 : 268435456

unsigned int なのに負? ヤバい, 分からん….
0460デフォルトの名無しさんNGNG
>>459
printfにunsignedであることを教えてやらなきゃ
0461デフォルトの名無しさんNGNG
こういうのは本読めば書いてあるだろ
考えることじゃない
仕様を調べるだけだ
0462デフォルトの名無しさんNGNG
>>460, >>461
> d,i int 引数を符号付き 10 進表記に変換する。
か….
ちゃんとした本買わんといかんな….

すまんかったです….
そしてありがとうございました.

0463デフォルトの名無しさんNGNG
すげー
http://vipper.info/index.php?%C7%B4%C5%DA%A4%C7%A5%C1%A5%F3%A5%B3%BA%EE%A4%C3%A4%BF%A3%F7%A3%F7%A3%F7
0464デフォルトの名無しさんNGNG
↑ブラクラ
0465デフォルトの名無しさんNGNG
>>463
アホだwすげぇ
0466デフォルトの名無しさんNGNG
>>457
そのページだけでも間違いがいくつもある。
記憶違いに基づくものはまだしも、そのページ内に書かれている情報だけでも矛盾が発生している。
0467デフォルトの名無しさんNGNG
(・∀・)
0468デフォルトの名無しさんNGNG
Part 96 がバトル状態です。
0469デフォルトの名無しさんNGNG
>>468
必死っぷりがキモいね。
0470デフォルトの名無しさんNGNG
なんつーかあれだな。
開発がHEADでどんどん進んでたまにstableにマージされるような感じだな。
Debianで言えば
87: woody
95: sarge
96: sid
こんな感じか。
0471デフォルトの名無しさんNGNG
こっちはマターリいきましょう。
0472デフォルトの名無しさんNGNG
>>470
デビーンキタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0473デフォルトの名無しさんNGNG
長寿スレの割に結構人がいなくてマターリなのに、いきなり勃発して
数分の内にすさまじい量のレスがつくんだよな。
同じ内容で煽りあう上にぜんぶageだし。不思議不思議。
0474デフォルトの名無しさんNGNG
分散するとログとるのが('A`)マンドクセ
0475デフォルトの名無しさんNGNG
こっちは削除だろ
0476デフォルトの名無しさんNGNG
おまいら!96に抜かれるぞ
0477デフォルトの名無しさんNGNG
96は、とっとと世界の果ての断崖絶壁から落ちてしまえ
0478デフォルトの名無しさんNGNG
読むのめんどくせえから、しばらく読むのよすよ。
何度もああいうの現れたけど、その度にこれで自衛してきた。
あんなのでスレ消費されてつきあってる暇なんかねえよ。
0479デフォルトの名無しさんNGNG
>>478
どうせ自演なんだから、あっちは隔離スレでこっちが本物でOK
0480デフォルトの名無しさんNGNG
> あっちは隔離スレでこっちが本物でOK

いっしょうけんめいそうおもいこみたがってますね? ;-)
0481デフォルトの名無しさんNGNG
>>480
こっち来ちゃダメ
0482デフォルトの名無しさんNGNG
って、おれはこっちしか書いてないぞ。
0483デフォルトの名無しさんNGNG
学校の授業課題でCとJavaの文法上の違いと意味上の違いを書けという
課題が出たんですが教えて下さい。紛らわしいガセネタは勘弁願います。
0484483NGNG
ちなみに
1. C→手続き型 Java→オブジェクト指向
2.Javaにはポインタがない。(ホントはある)
上記以外のことでお願いします。

あと、意味上の違いとは記述内容は同じでも実行内容が違うという意味です。
0485デフォルトの名無しさんNGNG
>>2
> ソース丸投げ、「宿題」、書籍 は専門の別スレがあるのでそこへさようなら。
0486デフォルトの名無しさんNGNG
>>484
>1. C→手続き型 Java→オブジェクト指向
>2.Javaにはポインタがない。(ホントはある)

これ、2つともガセネタだろ?
0487デフォルトの名無しさんNGNG
それと

文法⊃意味

だろ。

「構文上の違いと意味上の違い」なら、話の筋が通るけど。
0488デフォルトの名無しさんNGNG
寝ろよぼけ
0489デフォルトの名無しさんNGNG
つーか、Javaと比較させるならC++が普通なのに
わざわざCと比較させてるあたりJava厨丸出しですね
0490デフォルトの名無しさんNGNG
いまいち問題が不明瞭だな
0491デフォルトの名無しさんNGNG
unsigned char を scanf で入力するときって
どうかけばいいんですか?
scanf("%c", uc);
でも大丈夫?
0492デフォルトの名無しさんNGNG
ダメダメ
0493デフォルトの名無しさんNGNG
>>491
文字を入力したいのか数値を入力したいのかはっきり汁。
0494デフォルトの名無しさんNGNG
>>493
数字です。。
0495デフォルトの名無しさんNGNG
>>491
ucの値渡しなら落ちる
0496デフォルトの名無しさんNGNG
>>495
&un の間違いでした。
0497デフォルトの名無しさんNGNG
じゃなくて &uc の間違いでした。
書式変換はどうしていすればいいのでしょうか?
ググってもでてこないんですが…
%cu とかでしょうか?
0498デフォルトの名無しさんNGNG
int型の変数aに (19786^2)%30000 を代入してはいけないのですか?
コンパイルは出来るのですが、結果がおかしなことになりました。 
0499デフォルトの名無しさんNGNG
>>498
まさか、(19786 * 19786) % 30000 と同じ結果になるなんて思ってないよね?
0500デフォルトの名無しさんNGNG
>>498
別にいけないことはないっすけど、やりたいことと書いたことが一致してます?
その式って、

19786と2のxorをとって、それを30000で割った余りを求めてることになりますが。
0501デフォルトの名無しさんNGNG
>>497
アスキーコードは正だから "c"でオケーかとおもう。
0502デフォルトの名無しさんNGNG
>>499-500
すみませんでした・・。
0503デフォルトの名無しさんNGNG
Basicあがり?
0504デフォルトの名無しさんNGNG
>>501
おいおい、文字じゃなく数字だといってるじゃないか。

>>491
int(or short)で入力してからcastして切り詰めるしかないと思われ。
つーか、やりたいことをもう少し詳しくかけないか?
0505デフォルトの名無しさんNGNG
>>491
"%hhu"
0506デフォルトの名無しさんNGNG
>>504
0-255までの整数を入力して欲しいんです
0507デフォルトの名無しさんNGNG
(;´Д`)
0508デフォルトの名無しさんNGNG
unsigned int で値を受け取っといてから
0x000000ffで論理積とれ
0509デフォルトの名無しさんNGNG
http://www.iis.u-tokyo.ac.jp/~susaki/c/func1.html
ここの問題全てなんですが・・・・
全部分かりません(丸投げ状態です(x_x)
どなたか解いて頂きたいのですが・・・・

よろしくお願いしますm(_ _)m
0510デフォルトの名無しさんNGNG
ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/l50

宿題は宿題スレへ。
0511デフォルトの名無しさんNGNG
int* とか、char* って何型なんですか?
int 型や char 型ではないことは分かるんですが…
ポインタ型とでもいうのでしょうか…?
0512デフォルトの名無しさんNGNG
そう。
ポインタ型というやつ。
0513デフォルトの名無しさんNGNG
>>508
ありがとうございます。
おとなしくそうすることにするです。。
0514デフォルトの名無しさんNGNG
IPv4用の、マスク幅を指定するとマスクビットを作ってくれる
かっこいいトリッキーなマクロありますか?

「24ビット」と指定すると 0xFFFFFF00 を吐いてくれるような。
0515デフォルトの名無しさんNGNG
Cでプログラミングしてるとき、「あー、アルゴリズムの意味的にはdo-whileかなぁ。。」
と一瞬匂っても、まいいかとforで書いてしまいます。
やっぱり、使い分けた方がいいですか?
僕は、プログラマでもなく、趣味でC言語をやっているわけでもないです。
数値計算に使うだけの、単純なのCユーザーです。
今のところ自分のコードは自分しか見ませんが、将来他人と共有する可能性もあります。
僕自身は読むときに違和感ありませんが、一般的な読む側の意見はどうなんでしょうか?
0516デフォルトの名無しさんNGNG
unsigned ipmask(unsigned addr, int num) {
  return addr & (~0 << (32 - num));
}

result = ipmask(0x10203040U, 24);

こんな感じでいい?
0517デフォルトの名無しさんNGNG
>>515
直感的に意味がわかりやすい方を使うのがベストです。
そうでない場合は使用する構文に一貫性を持たせるのが良いでしょう。
0518516NGNG
あくまでマスクが欲しいんだね、それじゃ
#define ipmask(num) (~0 << (32 - num))
でどう?
0519デフォルトの名無しさんNGNG
>>518
トリッキーなのが欲しいって言ってるんだから、
そういう正攻法なのはどうなんだろう。
0520デフォルトの名無しさんNGNG
>>517
慣れるまではバグを覚悟し、使うように心がけます。
良いソースコードをネットで手に入れることは簡単で、なるべく読むように心がけているのですが、
達者な人に自分のコードを見られたことが無いというのはだめですね。。。。orz
(でも僕的には研究機密だったり)
ありがとうございました。
0521デフォルトの名無しさんNGNG
http://www.cmagazine.jp/src/kinjite/c/variable.html#index15
って書いてあるんですが、コマンドライン引数の文字列を書き換えるのは大丈夫なんでしょうか…
例えば argv[1][0] = 'A' のようにです。
0522デフォルトの名無しさんNGNG
あんまり大丈夫じゃないです
0523デフォルトの名無しさんNGNG
大丈夫であることが保証されている。
ISO/IEC 9899:1999
5.1.2.2.1 Program startup -2
The parameters argc and argv and the strings pointed to by the argv array shall
be modifiable by the program, and retain their last-stored values between program
startup and program termination.
要は、argvによって指されている文字列はプログラムから変更可能でなければならない。
0524デフォルトの名無しさんNGNG
全然大丈夫
constついてないんだから
0525デフォルトの名無しさんNGNG
>>523-5524
ありがとうございます!!!
にしても規格から持ってくるなんて凄いですね。自分も次から見習います
0526デフォルトの名無しさんNGNG
#include<time.h>を宣言して現在時刻を
ファイルに記録したいのですがどうしたら良いでしょうか?
現在時刻の表示だけなら出来るのですが、
ファイルへ書き込みが出来なくて困ってます。
どなたかご教授ください。
0527デフォルトの名無しさんNGNG
strftime
0528デフォルトの名無しさんNGNG
>>526
どんな関数があるか調べてみてください。
そしてその関数の使い方を良く読んで、どうすれば良いか考えてください。
http://cham.ne.jp/piro/p_stdfunc.html#time-header
0529デフォルトの名無しさんNGNG
表示ができて書き込みができないって、どういうこった
0530大原ゆきNGNG
>>526
もしかして、ファイルに書き込み許可を与えていないという落ちではありません?
ファイルに読み込み許可しかないファイルを扱おうとしていません?
良く調べて。
0531デフォルトの名無しさんNGNG
もしかしてprintfは知ってるのにfprintfは知りませんという落ちだったりして
0532デフォルトの名無しさんNGNG
大原ゆきが言うと、説得力がー10000マンコ
0533デフォルトの名無しさんNGNG
>>526です。
えっとsystimeを文中に記述して、年月日・時分秒をDOS画面にprintfで表示しました。
この表示した年月日・時分秒を.txtや.datに、書き出したいと思っているのですが…。
>>527さんが教えてくれた「strftime」で書式化して.txtや.datに書き込む文を書けば良いでしょうか?

fprintfは知ってますが、最適なものを探してまして。説明不足ですみませんorz
0534デフォルトの名無しさんNGNG
スレ違いだったらすみません。
音声処理で、ある音声データから特定の単語を認識したい(ワードスポッティングしたい)場合についてなんですが、DPマッチングはともかくとして連続DPマッチングがよくわからないです|||orz
出来ればプログラム例などをのせていただければ幸いですが、よければどんなアルゴリズムかだけでも教えてほしいです;
0535デフォルトの名無しさんNGNG
このスレのレベルを考えて質問しなよ
0536デフォルトの名無しさんNGNG
>>534
Juliusのソースを参考にしなさい
0537デフォルトの名無しさんNGNG
どっちみち、ここがアルゴリズムを聞く場じゃないことも分からない奴に出来るようには思えないな
0538デフォルトの名無しさんNGNG
自作自演がバレバレだよ。
0539デフォルトの名無しさんNGNG
李 晃伸 (り あきのぶ)
こいつか。在日、京大だめだな
0540デフォルトの名無しさんNGNG
もしやそれが大原?
0541デフォルトの名無しさんNGNG
>>512
おお、偶然当たった

なんか手持ちの本でint*をint型のポインタってかいてあるのが
あるんですけど、これって誤りですよね?
0542デフォルトの名無しさんNGNG
>>541
間違っていない。
無理やり誤りを挙げるとしたら「int型のポインタ」より「int型へのポインタ」と呼ぶ人の方が多いという程度。
0543デフォルトの名無しさんNGNG
間違えた。「int(型)へのポインタ型」だ。どうでもいいことだけど。
0544534NGNG
>>536
レスありがとうございます^^
Juliusのソースが参考できるのか。。。Julius = HMM の認識が強く、音響モデルをいじったりするときにしか使えないと思っていました。
さっそくみてみます。
0545デフォルトの名無しさんNGNG
>>534
http://pc5.2ch.net/test/read.cgi/tech/1091054082/
0546デフォルトの名無しさんNGNG
C++ だとNULLを使わずに0を使うのが普通なんですが、これはCにもあてはまるんでしょうか?
0547デフォルトの名無しさんNGNG
ぬるぽ
0548デフォルトの名無しさんNGNG
32ビットの整数のなかに何個のビットが立ってるか
調べるマクロって無かったっけ?
0549デフォルトの名無しさんNGNG
>>548
ループ回さんといかんから単純なマクロじゃできねぇべ。
素直に関数作った方がいいんでない?
#いや、マクロでもいいけど。
0550デフォルトの名無しさんNGNG
>548
つーか、使用目的が思い浮かばん。
それは本当に必要なの?
0551デフォルトの名無しさんNGNG
トリッキースレで見つけた
ありがとう
ループは好きじゃないし
0552デフォルトの名無しさんNGNG
>>550
Java のクラス BitSet の中に cardinality() という
メソッドがある。

必要だと思ったから作ったんだろう。
0553デフォルトの名無しさんNGNG
#define COUNT_BIT(v) ((v)==0? 0: "いくつか")
0554デフォルトの名無しさんNGNG
>>548
x ^= -x & x
でリセットしていくのがかっこいい。
0555デフォルトの名無しさんNGNG
質問させてください。
些細なことなのですが、
関数中に複数の return を使うのと、
あくまで return は一箇所に集めるのとでは
具体的にはどのような違いが出てくるのですか?
僕自身はなんとなく、関数を追うのが楽な気がして
できるだけ複数の return は使わないようにしているのですが・・・
よろしくお願いします。
0556デフォルトの名無しさんNGNG
>>546
CはNULL使わないとダメ。
0557デフォルトの名無しさんNGNG
>>555
好みの問題。
0558デフォルトの名無しさんNGNG
>>555
リソースの開放が絡むなら一箇所にまとめた方が重複コードを省けるし
特にそれがないならその場でreturnした方がすっきりする。
基本的に>>557の言うとおり。よくあるパターンとしてはこんなのがある。

if(init1()){
 if(init2()){
  if(init3()){
   ...
   exit3();
  }
  exit2();
 }
 exit1();
}
return;

if(!init1()) return;
if(!init2()) { exit1(); return;}
if(!init3()) { exit2(); exit1(); return; }
...
exit3(); exit2(); exit1();
return;

if(!init()) goto err1;
if(!init2()) goto err2;
if(!init3()) goto err3;
...
err3: exit2();
err2: exit1();
err1:
return;
0559デフォルトの名無しさんNGNG
int hoge() …(a)
{ hogefunc1(); hogefunc2(); }
と、
int hoge() …(b)
{
    hogefunc1();
    hogefunc2();
}
のどちらが見やすいと思いますか?

hoge() が hogefunc1() しか呼ばないんだったら(a)の方が縦長くならないので
大体は(a)のようにしてるんですが、二個以上命令があるなら(b)のように
書いた方が見やすいですかね?
0560デフォルトの名無しさんNGNG
>>559
下のほう。初期化を1行に連ねるならまだ許せるけど、関数呼び出しを1行に複数置かれたくない
引数を取る場合が多いから普段から複数行に分けるため、たまに(a)のような書き方をされると気持ち悪い
0561デフォルトの名無しさんNGNG
構造化を0初期化するにはメンバを1つずつ0初期化するしか方法はないでしょうか?
例えば、
struct s {
    int a;
    int b;
};
普通はこのように0初期化しますが、
struct s a = {
0,0
};
struct s a = (struct s)0;
こんなかんじでまとめて0にできないでしょうか?

定義時に初期化したいので、memsetなどは使えません。
0562デフォルトの名無しさんNGNG
無理
0563デフォルトの名無しさんNGNG
>>546>>556
http://www.kouno.jp/home/c_faq/c5.html#2
0564デフォルトの名無しさんNGNG
>>561
struct s a = {0};
これで省略されたメンバは全て0で初期化される。
0565561NGNG
>>564
ありがとうございます。
gccの-Wで警告が出ますが、気にしないことにします。
0566デフォルトの名無しさんNGNG
argv[1] = "/a/b/c/d/"; argv[2] = "dir/";
char *p1, *p2;
if ((p1 = (char *) malloc(strlen(argv[1]) + 1)) == NULL) exit(1);
if ((p2 = (char *) malloc(strlen(argv[2]) + 1)) == NULL) exit(1);
strcpy(p1, argv[1]);strcpy(p2, argv[2]);
if (realloc(p1, strlen(p1) + strlen(p2) + 2) == NULL) exit(1);
strcat(p1, p2);

相対アドレスから絶対アドレスを作るプログラムの中に
上記のようなソースがあってp1が/a/b/d/dir/とならずにdir/になることがあります。
それでreallocの後に

for (i=0; i<20; i++)
p1[i] == '\0' ? printf("\\0") : printf("%c", p1[i]);

といれると

$ ./a.out /a/b/c/d/ dir/
\0\0\0\0/c/d/\0\0\0\0\0\0dir/
dir/
$ ./a.out /a/b/c/d/ a/
/a/b/c/d/\0\0\0\0\0\0a/\0\0
/a/b/c/d/a/
$ ./a.out /a/b/c/d/ aa/
\0\0\0\0/c/d/\0\0\0\0\0\0aa/\0
aa/
$ ./a.out /a/b/c/d/ aaa/
\0\0\0\0/c/d/\0\0\0\0\0\0aa/\0
aaa/

とp2が2文字を越えるとreallocでp1ぐちゃぐちゃになるんです。
何がおかしいんでしょうか?
0567デフォルトの名無しさんNGNG
お尋ねしたいんですが、このプログラムを実行するとstrの代入した値が使われていない
と出ます。 どうしたらいいのか教えてください?

#include <stdio.h>

main() {
char *str[] = {"a", "b", "c"};
int e;
printf("選択 \n");
printf(" 1;a 2;b 3;c");
scanf("%d", &e);

printf("%s, str[e]");

return 0;
}
0568デフォルトの名無しさんNGNG
>>567
使ってないから使ってないって出るだけだ。
そのソースは書いた通りに正しく動くはず。
0569デフォルトの名無しさんNGNG
>>566
realloc()したら、その戻り値を使わないといけない。引き数として渡したp1は最早、使ってはいけない。
0570デフォルトの名無しさんNGNG
>>561
static にしゅる。
0571デフォルトの名無しさんNGNG
>>567
最後のprintf()を正しく書けば、未使用警告も綺麗に消えるぞ。
0572デフォルトの名無しさんNGNG
はい、動くことは動くんですが数字を押しても反応がないんです
0573デフォルトの名無しさんNGNG
エンター押せよ
0574デフォルトの名無しさんNGNG
ここが新しいネタスレですよね?
0575デフォルトの名無しさんNGNG
>>574
お前みたいな香具師はまとめてこっちへ行けよ↓
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0576デフォルトの名無しさんNGNG
>>559
>二個以上命令があるなら
>命令があるなら
>命令
>命令
0577デフォルトの名無しさんNGNG
( ´_ゝ`)ブーン
0578デフォルトの名無しさんNGNG
>566、>567はどうしたんだろうw
0579デフォルトの名無しさんNGNG
週末の人がなんとかしてくれるんじゃない?
0580デフォルトの名無しさんNGNG
週末までにこのスレ無くなる悪寒
0581デフォルトの名無しさんNGNG
こうなったら大原ゆきに頼むしかないな
0582デフォルトの名無しさんNGNG
#include <stdio.h>

void main()
{
   int *a,*b;

   *b = 1;
   *a = *b;

   printf("a = %p,b = %p",a, b);
}

これを実行したら、不正な処理で終了してしまうんですが、
一体何が悪いのでしょうか?
0583デフォルトの名無しさんNGNG
>>582
a と b の領域がとられているだけで
*a と *b の領域はとられていない
0584デフォルトの名無しさんNGNG
aかbのどちらかもしくは両方が不正である可能性が高い。
0585デフォルトの名無しさんNGNG
void main()
この辺に原因がある可能性もあるな。
0586デフォルトの名無しさんNGNG
>>583
本当だ・・・orz
知らなかったよ。int型の領域取られてるものだと思ってた。
a = malloc(sizeof(int)); b = malloc(sizeof(int));
を追加したら、きちんと動くようになった。thanx.
0587デフォルトの名無しさんNGNG
>>585
知ったかぶり
0588デフォルトの名無しさんNGNG
不正な処理ってなんだ?
0589デフォルトの名無しさんNGNG
よくあるWindowsのダイアログ
0590デフォルトの名無しさんNGNG
初めてC言語やります
猫でも分かるWindowsプログラミングというものをかってみました
P10くらいにある以下のようなものをやりました(長いので略)
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);


リンク中...
libc.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Release/123.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

たぶん最初の設定の問題だと思うのです。どうしたらよいのでしょうか
0591デフォルトの名無しさんNGNG
コンソールの設定になってる。
0592デフォルトの名無しさんNGNG
>>590
【漏れは】猫でもわかる質問スレ【猫以下です】
http://pc5.2ch.net/test/read.cgi/tech/1054813207/

猫でも〜専用のスレが有るとは思わなんだ
0593デフォルトの名無しさんNGNG
つーか基礎を飛ばすにもほどがあるな
0594マルチ(*´Д`)ハァハァNGNG
C言語なら俺に聞け! Part 96
http://pc5.2ch.net/test/read.cgi/tech/1101615970/503

503 名前:デフォルトの名無しさん[sage 2日目] 投稿日:04/12/02(木) 18:19:44
#include "resource.h"
これがあるときどう実行するんですか
LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/memo01.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
0595デフォルトの名無しさんNGNG
>>590
-W
0596デフォルトの名無しさんNGNG
-W-
0597デフォルトの名無しさんNGNG
(-W-)zZ乙・・・



Σ (0w0) ンドゥル!?
0598デフォルトの名無しさんNGNG
アホかw
0599デフォルトの名無しさんNGNG
素の突っ込みに新鮮味を覚えた
0600デフォルトの名無しさんNGNG
_ATL_MIN_CRT を消す
http://pc5.2ch.net/test/read.cgi/tech/1095442366/
0601ほんたまNGNG
プログラマーのみなさん、教えてください。
ひとつのオブジェクトを2つに分裂させるコードを書きたいのですが、どう書けばいいのですか?
擬似的に2つに分裂したように見えるのではなくて、実際に2つに分裂するコードを書きたいのです。
つまり1つから2つのオブジェクトが同時に発生し、2つのオブジェクトの発生にはほんの少しの時間差もないという、事実上の分裂を書きたいのですが…
0602デフォルトの名無しさんNGNG
CPUを二個載せる。
0603デフォルトの名無しさんNGNG
時間止めればいいじゃん。
0604デフォルトの名無しさんNGNG
ザ・ワールド
0605デフォルトの名無しさんNGNG
なるほど
0606デフォルトの名無しさんNGNG
allocでメモリ確保した後、
freeで解放しなきゃならんのはわかっているのだが
エラー時にある人は
「そのプロセスが途中で落ちた時にエラーコードを実行しない場合がある為、
 メモリリークやポートを掴んで離さない事がある。
 危険だ。」
と言い、またある人は
「そんな事は無い。エラーコードを実行する。」
と言っている。

危惧しているエラーは
「途中で電源を無理矢理落とした時」等です

どっちが本当なんだよ先輩ドモ!
どう作ればいいんだ_| ̄|○
0607デフォルトの名無しさんNGNG
対象OSのACPI仕様見ろよ
0608デフォルトの名無しさんNGNG
>>606
エラーコードてのはプロセス異常終了前のコード?
どんな場合でも必ず実行される訳ではないでしょ。
> メモリリークやポートを掴んで離さない事がある。
> 危険だ。」
メモリやポートをまともに管理できない OS を使うのなら
どの道、常に危険と隣り合わせの日々よ。
0609デフォルトの名無しさんNGNG
>「そんな事は無い。エラーコードを実行する。」

そんな事は無い。
0610606NGNG
>>607 >>608 >>609
レスありが�d

まとめると、
・対象OSによっては異常終了側のコードが走ってfreeされる
・走るかどうかは対象OSのACPI仕様参照
・走らない場合は「危険と隣り合わせの日々」

こんな感じでしょか?
ACPI仕様って始めて聞いた言葉なのでググってみるッス

       〜誰も頼りに出来ない新米PGより〜
0611デフォルトの名無しさんNGNG
誰もお前のことは頼りにしてないから安心しる
0612openGL初心者NGNG
openGLを使ったプログラム作成を助けてください。Visual Cプログラムの関数void 図形(void)の部分なのですが、問題は以下の通りです。
「表面の座標(x,y,z)が下の左式、その点における法線nが下の右式で表される立体を描け。
ここで、θおよびφはそれぞれ0<=θ<=2πおよび-π/2<=φ<=π/2の範囲をとる媒介変数であって、定数hは0<=θ<πにおいて0.3、π<=θ<=2πにおいて2とする。
なお、法線ベクトルnは正規化されてないことに注意せよ。」という問題です。また描画要素としてGL_QUADS_STRIP(隣接四辺形)を使うことが条件です。
どなたか教えてくださいお願いします。尚、初心者なのでコードの説明をしていただけると幸いです。
0613デフォルトの名無しさんNGNG
>>612
マルチすんなやボゲ
質問以前の問題だ
0614デフォルトの名無しさんNGNG
>>612
マルチは別に構わんが
代行なら宿題スレで頼んでみたら?

このスレでは質問点を明確にしないと場違いだよ
0615デフォルトの名無しさんNGNG
614 の続き

「構わん」て、俺べつに許可/禁止の権利があって言ってるわけじゃないからね
あなたの例えば聞き込み調査のような行動についてストーカーしてるほどヒマじゃないし
だいいち動機がそもそもないよってだけさ
0616デフォルトの名無しさんNGNG
BolandC++でコンパイルしよとしたら、
Fatal:ファイルHELLO.OBJが開けません
と、でました。
他のプログラムはちゃんとできたのにこれだけできません。
なにが原因なのでしょうか?
0617デフォルトの名無しさんNGNG
C言語で、EUC→Sift JISの文字コード変換のやり方教えてください。
0618デフォルトの名無しさんNGNG
>>617
原理的に、できない。
0619デフォルトの名無しさんNGNG
ウソ教えるなw
変換ライブラリを拾ってきて文字列を突っ込めば出来るよ
0620デフォルトの名無しさんNGNG
こんなにヒットして良いものなのか
http://www.google.co.jp/search?hl=ja&q=EUC+Sift+JIS+%E5%A4%89%E6%8F%9B&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0621デフォルトの名無しさんNGNG
>>617
マザーボードが対応していないと無理です。
0622デフォルトの名無しさんNGNG
>>606
他のリソースはともかくメモリはプログラム終了時に全部解放される。
0623デフォルトの名無しさんNGNG
>>622
とは限らないんだって、何度言ったらわかるんだ。
過去ログ読め。
0624617 NGNG
どうもです。ICUってライブラリがあるとわかったので使い方教えてください。
EUC→Sift JISだけでいいので。
0625デフォルトの名無しさんNGNG
>>624
ICU 使うにはデュアルCPU が必須です。
0626デフォルトの名無しさんNGNG
「途中で電源を無理矢理落とした時」には、メモリとかポートは解放されると見なして
いいんじゃないかなぁ。
0627デフォルトの名無しさんNGNG
>「途中で電源を無理矢理落とした時」等です

「等」が気になる。
「飲みかけのコーヒーをマザーボードにこぼした時」とか
「ゴジラにマシンごと踏み潰された時」とかだろうか?
0628デフォルトの名無しさんNGNG
その無理矢理って表現は、
コンセントからプラグ引っこ抜くようなことをイメージしてしまうんだけど違うよね?

電源ボタン長押しとかでACPIに管理任せる的なことを指してるんだよね?
0629デフォルトの名無しさんNGNG
Sift JISってtypoじゃなくて本気で書いてるんだ。
「円周率はおよそ3」になるわけだ。
0630デフォルトの名無しさんNGNG
>>627
その例のときは気にしても意味がないんじゃないのか?
0631デフォルトの名無しさんNGNG
「途中で電源を無理矢理落とした時」はポートが開いたままになるので
外付けのハードが壊れる時がある
0632デフォルトの名無しさんNGNG
はぁ?
0633デフォルトの名無しさんNGNG
ど
0634デフォルトの名無しさんNGNG
[PR] 2chカレンダー2005仮予約受付中 [PR]
http://chbox.com/goods/
0635デフォルトの名無しさんNGNG
2つの論理式が同じ値をもつかどうかを調べるにはどうしたらよいでしょうか?
↓こういう方法しかないですか?
bool x, y;
bool z = (x && y) || (! x && ! y);
0636デフォルトの名無しさんNGNG
>>635
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0637デフォルトの名無しさんNGNG
>>635
適当に展開すればいいんじゃ?
0638デフォルトの名無しさんNGNG
>>635
==
0639デフォルトの名無しさんNGNG
#include<stdio.h>

int main(void){
  char *str[5];

  for(int i = 0; i < 5; i++){
     printf("input : \n");
     gets(str[i]);
  }
}

これを実行したら、3つ目の文字列を入力したときに、終了してしまうのですが
5つ全部入力するにはどうしたらよいのでしょうか。
0640デフォルトの名無しさんNGNG
bool z = !(!x ^ !y)
0641デフォルトの名無しさんNGNG
>>639
main()
{
char *str;
gets(str);
}
↑
こーやってるのと同じ
0642デフォルトの名無しさんNGNG
>>639
str[0]からstr[4]の指してる先は確保してるかい? ブラザー
0643デフォルトの名無しさんNGNG
>>638 >>640 ありがとうございます。勉強になりました。
0644デフォルトの名無しさんNGNG
>>641-642
すみません、お二方どうもありがとうございます。
0645デフォルトの名無しさんNGNG
char buf1[20] , buf2[20];
があったとして、buf1に改行コードが入ってるの。
これをbuf2にコピーしたいんだけど、改行コードは除去したいのよ。
なんか簡単な方法ない?
0646デフォルトの名無しさんNGNG
int i, j = 0;
for (i = 0; i < 20; i++)
  if (buf1[i] != '\n')
    buf2[j++] = buf1[i];
0647デフォルトの名無しさんNGNG
int i, j = 0;
for (i = 0; i < 20; i++)
if (buf1[i] != 0x0D && buf1[i] != 0x0A)
buf2[j++] = buf1[i];
0648デフォルトの名無しさんNGNG
>>647
'\r'と'\n'にしろ。
0649デフォルトの名無しさんNGNG
はじめまして,Linux初心者です.タコなので何も分かりません.

X−Windowsがうごきません.この前,某雑誌の付録CD−ROMで,Linuxをインストールして,
X−Windowsをうごかそうと,いろいろやってから,startxをしたんですけど,フォントが
ないって怒られてだめでした.

タコなので,分かりやすく教えて下さい.
0650デフォルトの名無しさんNGNG
Linux板
http://pc5.2ch.net/linux/
0651デフォルトの名無しさんNGNG
どっかのコピペか?
0652デフォルトの名無しさんNGNG
バッファの先頭から12ビット連続1かどうか調べるのに
if(*(unsigned short *)buf & 0xf0ff != 0xf0ff) return 0;
を
unsigned short us = (buf[0]<<8) + buf[1];
if((us & 0xfff0) != 0xfff0) return 0;
に書きか変えると異常終了してしまうのですが
下は何所が変でしょうか?
0653デフォルトの名無しさんNGNG
>>652
転置注意
0654デフォルトの名無しさんNGNG
>>652
そもそもbufの型は何?
0655デフォルトの名無しさんNGNG
分かっているくせに
0656652NGNG
>>654
char *です
0657デフォルトの名無しさんNGNG
>>601
オブジェクトというのがよくわからんが、
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/fork.2.html
0658デフォルトの名無しさんNGNG
unsigned char *にするとか?
0659652NGNG
>>658
ありがとう!!治ったみたいです
0660デフォルトの名無しさんNGNG
>>546
> C++ だとNULLを使わずに0を使うのが普通なんですが
C++のコードあまり呼んだことが無いのですが、それは本当?

> これはCにもあてはまるんでしょうか?
0とNULLを同一視することがよくあるんでしょうか、という質問なら、

if(!p) // pはポインタ型

とか書くのは普通なので、Cでも当てはまる、のかな。
(自分は上の書き方好きじゃないけど。)
0661デフォルトの名無しさんNGNG
>>660
C FAQ読んどけ。
0662デフォルトの名無しさんNGNG
>>661
そもそも>>546はC言語の仕様を聞いているのではないでしょう。

少なくとも漏れは
int *n = 0;
なんてやってる奴見たらぬっころしますし、
そもそもCでは普通ではないと思います。
C++ではこれが普通だと言うのであれば、Cには当てはまらないです。>>546
0663デフォルトの名無しさんNGNG
> 少なくとも漏れは
> int *n = 0;
> なんてやってる奴見たらぬっころしますし、

こいつぼけ。協調性のかけらも無い
0664デフォルトの名無しさんNGNG
>if(!p) // pはポインタ型

好きです。
0665デフォルトの名無しさんNGNG
>>662
C FAQ読んどけ。
0666デフォルトの名無しさんNGNG
C FAQ がある限り存在意義のない厨が粘着しているようだな
0667デフォルトの名無しさんNGNG
C++相談室 part37から引っ張り出してみる

>216 名前:デフォルトの名無しさん[sage] 投稿日:04/11/03 15:23:38
>漏れの手元の本には
>プラットフォームに応じてNULLの定義方法が異なっていたことにより
>プログラムが暴走する危険があった、と書かれてる
>
>例えば
>#define NULL ((char *)0)
>#define NULL ((void *)0)
>など。で、これを代入するとエラーがでる可能性がある
>C *cp = NULL; //エラー?
>ちなみにC++では数値の0は任意の型のポインタ値に変換できることが保証されている
>よって、0が一般的に使われている
>
>けど、現在のC++の標準には(void *)0のような定義は許可されていないので
>その標準にのっとった環境であればNULLを使用しても問題ない
>
>ただ、やっぱり今のC++プログラマはNULLではなく、0を利用するのが一般的、らしい

あとC++の関数などへ渡す引数のあいまい性を
(char *)0, (void *)0 とかで解決できなかった「過去」があったからってのもある
んで現在は習慣に乗っ取り、理由も知らずに NULL ではなく 0 を使うC++ユーザーが増えたわけだ
0668デフォルトの名無しさんNGNG
>>662
NULLが定義されない場合を考えとけ。
0669デフォルトの名無しさんNGNG
そんな環境捨てちまえ
0670デフォルトの名無しさんNGNG
プリプロセッサ+キャストなんて気持ちわるくて使ってられん
Cでも0でいいだろ
0671デフォルトの名無しさんNGNG
ちょっと試してみた。

int func(){
int* n = NULL;
return 0;
}
$ gcc -Wall -C null.c
null.c: In function `func':
null.c:2: `NULL' undeclared (first use in this function)

つまり、gccは捨てろということだ。
0672デフォルトの名無しさんNGNG
とりあえず>>671はスルーで
0673デフォルトの名無しさんNGNG
谷の嫁w
0674662NGNG
>>665
いや、私は別にQuestionを投げているわけではないので…

で、CでもNULLを使わずに0を使うのが普通なの?>>663-665
0675デフォルトの名無しさんNGNG
わざわざNULLと書く意味がわからない。
0676デフォルトの名無しさんNGNG
そりゃぬるぽであることを"人間に"わかりやすく示すためでしょ
0677デフォルトの名無しさんNGNG
>>674
NULLを使う人の方が多い(と俺は思っている)。
但し、0を使っても規格上は問題ない。
それにif (p)やif (!p)の書き方も(俺含め)それなりに使われている。
0678660NGNG
>>667
なるほど。C++にはそんな歴史があったのですね。
勉強になりました。
0679デフォルトの名無しさんNGNG
>>675
ハンガリアンさんならそういう主張もありでしょうね。
0680デフォルトの名無しさんNGNG
零の表記法

int なら 0
float なら 0.f
double なら 0.
char* なら NULL
では
int* は?
void* は??
const int * volatile * volatile const は???
・・・つまり char* の時点で間違えていた

char* なら (char*)0
int * なら (int*)0
void* なら (void*)0
const int * volatile * volatile const なら (const int * volatile *)0

0681デフォルトの名無しさんNGNG
NULLはマクロなんだから標準ヘッダを一つもインクルードしないと
エラーになるわけか。
0682デフォルトの名無しさんNGNG
>676
ガッ
0683デフォルトの名無しさんNGNG
> ・・・つまり char* の時点で間違えていた
どっちかというと0 == NULLとした時点かと。
0684デフォルトの名無しさんNGNG
ていうかポインタ変数がnullかどうかのテストで、if (p)とかif (!p)と
書くのは全然普通だと思ってたが違うの?
0685デフォルトの名無しさんNGNG
>>684
ANSI-Cで保障されているから普通でしょう
0686デフォルトの名無しさんNGNG
ハンガリアンも今や絶滅種だし、これからは0で決まりだね
0687デフォルトの名無しさんNGNG
言語仕様策定時にnullを予約語にするって解もあっただろうが、
現状はそうはなってないな。
0688デフォルトの名無しさんNGNG
いまどきANSI...
0689デフォルトの名無しさんNGNG
>>684
そういう書き方以外で0とNULLを同一視するところってあまり無いですよね?
たとえば、>>662に書いてある
int *p=0;
は
int *p=NULL;
って書くし、if文も
if(p!=0)
じゃなくて
if(p!=NULL)
って書かれるのが普通かと思ってるのですが
(規格上では問題ないのは知っていたとしても)。
0690デフォルトの名無しさんNGNG
Cと言うよりUNIXなのですが、
よろしいでしょうか。

dup2(fd, STDIN_FILENO);
dup2(fd, STDOUT_FILENO);
close(fd);
execlp("cat", "cat", NULL);

としたのですが、
fdに何か書き込んでも、
fdから何も出てきません。
何がいけないんでしょうか。
0691デフォルトの名無しさんNGNG
>>689
普通
if (!p){;}
0692デフォルトの名無しさんNGNG
>>689
たしかにそうだが、>>681の問題もある。
俺なら、Cの場合NULLを使い、C++の場合0を使う。
0693デフォルトの名無しさんNGNG
>>689
どちらも「普通に」見るけど?
0694デフォルトの名無しさんNGNG
>>690
UNIXプログラミング質問すれ Part4
http://pc5.2ch.net/test/read.cgi/tech/1095843584/l50#tag704
0695689NGNG
>>691
いやいや、
if(!p) と if(p!=NULL) のどっちが普通か、という話ではなく、
if(!p) っていう書き方以外では、あまりNULLと0を同一視しないですよね、
ということを言いたかったわけなんです。
0696デフォルトの名無しさんNGNG
漏れは

NULLを使う
 比較や代入などをみて、
 その変数がポインタ型であることがわかりやすい他者(自身を含む)への考慮
0を使う
 (作成時の)自分がわかればそれで良し

って解釈。文句は受け付けません。
0697デフォルトの名無しさんNGNG
どうしてもポインタに0をつかってはいけないという風潮を作りたいらしい。
0698デフォルトの名無しさんNGNG
まあ、0の代入先がポインタ変数であることぐらいプログラマは
よく知ってるんだろうから、わざわざNULLを使う必要はないな。
アドレス即値をポインタ変数に代入することなんてほとんどないんだし。
0699デフォルトの名無しさんNGNG
ちょっと疑問に思ったんだけど、
int i = NULL;
ってOKなんだっけ?
0700デフォルトの名無しさんNGNG
>>699
コンパイルは通るけど、ぼけ確定
0701デフォルトの名無しさんNGNG
>694
ありがとうございます。
0702デフォルトの名無しさんNGNG
>>698
> アドレス即値をポインタ変数に代入することなんてほとんどないんだし。
じゃあ0のときもNULLでいいじゃん、と思えるのだが…

漏れは>>696の意見にほぼ同意だが、必ず自分しか使用しない、ということが
分かってるプログラムを書くことが無いので、
事実上NULLしか使わない。
0703デフォルトの名無しさんNGNG
NULL使うにはヘッダをインクルードしなきゃいけないし。
ポインタを対象としていることを分かりやすくするためなんて良く聞くけど、
ハンガリー記法と同じでそんなの全然訳に立たない気がする
0704デフォルトの名無しさんNGNG
>>699-700
これだな
http://www.kouno.jp/home/c_faq/c5.html#9
0705デフォルトの名無しさんNGNG
>>687
> 言語仕様策定時にnullを予約語にするって解もあっただろうが、
> 現状はそうはなってないな。
初版でそうしなかったからもう歯止めが利かないんだろうね。
現状、NULL(null)を勝手に#defineし直してるソースもよく見るから、そういうソースが軒並み通らなくなっちゃう
0706デフォルトの名無しさんNGNG
>>704
なるほど。つまり、
コードを書く際には
馬鹿な奴のために、ポインタにはNULLを代入し、
コードを読む際には、NULLに頼らず判定を行うべきである、と。

>>703
> 全然訳に立たない気がする
まあ、平常時に役に立たないのは同意。仕様上全く問題ないコードだし。
0707デフォルトの名無しさんNGNG
NULLに頼って判定する馬鹿がいるのか?
0708デフォルトの名無しさんNGNG
>>707
いるからこんなことが書いてあるのだろう。
http://www.kouno.jp/home/c_faq/c5.html#9
0709デフォルトの名無しさんNGNG
>>706
事実上役に立たないけれど書いとくと理解の助けになるという点では
冗長な括弧追加とさほど変わらないね。読む人のことを考える、と。
0710デフォルトの名無しさんNGNG
if(!strcmp("nullpo", "ぬるぽ")){ ... }
このとき strcmp() == NULL を期待する?
0711デフォルトの名無しさんNGNG
>>710
期待しない。>>708を読んだら充分理解した。
0712デフォルトの名無しさんNGNG
>>710
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strcmp.3.html
0713デフォルトの名無しさんNGNG
>>710は
0714デフォルトの名無しさんNGNG
0 にすらならない
0715デフォルトの名無しさんNGNG
はい次の方〜。
0716デフォルトの名無しさんNGNG
NULLでも0でも良いって言っている奴は存在意義無いね。
そんなことコンパイラでも分かるし。

他人が読んだり編集したりするときのことも考えなきゃ。
0717デフォルトの名無しさんNGNG
他人が読むときのこと考えてるならその話はもうやめれ
0718デフォルトの名無しさんNGNG
>>717
どちらでもいいと言っているのは、多分他人に読まれる事のない
汚いソースでもおおかた書いている香具師だろう。
0719デフォルトの名無しさんNGNG
綺麗な日本語書けよ。
0720デフォルトの名無しさんNGNG
声に出して読みたいソースコード
0721デフォルトの名無しさんNGNG
ようするにNULLってのは
if ((a == 0) || (a == 1))
の冗長な括弧のようにプログラムを分かりやすくはするが、
そのかわりに見やすさを多少犠牲にし、マクロと
キャストによりほんのわずかながら危険性がうpし、
ヘッダをインクルードしなきゃ使えないのでウザイってこと
0722デフォルトの名無しさんNGNG
>>721
> 見やすさを多少犠牲にし、
逆。可読性を向上させるために用いる。

> マクロとキャストによりほんのわずかながら危険性がうpし、
するわけない、と思っているが、どんな危険性が?
0723デフォルトの名無しさんNGNG
学校ではSunOSでvi使ってプログラミングしているのですが、自分のPCはWinXPなので
viとかないわけですが、Windowsで使えるvi互換エディタを教えてください。
0724デフォルトの名無しさんNGNG
>>723
cygwinがいいんじゃないか?
0725デフォルトの名無しさんNGNG
めどー
0726デフォルトの名無しさんNGNG
>>723
gVim
0727723NGNG
>>724
軽く調べて見たのですが、Dos窓でUNIXコマンドが使えるようになるんですか?
コマンドってもcpとかrm、lsくらいしか知りませんが・・・
0728デフォルトの名無しさんNGNG
めどーはEmacs互換か(^o^;)
0729デフォルトの名無しさんNGNG
grepとか使えるとプログラミングにも役立つかと
0730デフォルトの名無しさんNGNG
1個1個コンパイルしてパス通せば何とか
0731デフォルトの名無しさんNGNG
>>727
そんくらいなら使える

つーても、あくまで「UNIXごっこ」には違いないからな・・・
本当にUNIX系のOSをちゃんと憶えるつもりなら
エミュじゃないUNIX系OSしかないと思う

おまえさんの経済状況を知らんのだが
本音を言わせてもらうと、もう1台Linux機を用意して
LANでゲイツ機とつなぐのがベストと考える
0732デフォルトの名無しさんNGNG
VMwareの中にLinux入れてしまえば良い
0733723NGNG
>>731
そうですか。まあ実際にUNIX使ってても、まだ「ごっこレベル」なんで一応それでOKですね。
やっぱりLinux機あったほうがいいですか・・・勉強で組む程度のプログラムならマシンパワーも
いらないですよね。安い中古ノートでも探すかな・・・
0734助けてくださいNGNG
エラー文で
jikken.c:150: error: parse error before ';' token
jikken.c:150: error: parse error before ')' token
って出るんですが・・・。tokenのないエラー文なら対処できるんですけど
これって何を意味してるんでしょうか??

ちなみに150行目前後は
148|}
149|else{
150|if(j=0;j<count2;j++){
151|if(strcmp(keep,M1[j].tsuduri)==0){
ってカンジになってます
0735デフォルトの名無しさんNGNG
150はifじゃなくてforでは?
0736デフォルトの名無しさんNGNG
ほう。
0737助けてくださいNGNG
>>735
・・・_| ̄|○・・・はうぅ・・
 ほんとですね、2時間くらいなやんでました・・・

 ありがとうございます
0738デフォルトの名無しさんNGNG
>>734じゃないけど、俺の脳内コンパイル通ってたよ。
0739デフォルトの名無しさんNGNG
/*add.c*/
int add(int a, int b)
{
return a+b;
}

/*sub.c*/
int sub(int a, int b)
{
return a-b;
}

/*mul.c*/
int mul(int a, int b)
{
return a*b;
}

/*div.c*/
int div(int a, int b)
{
return a/b;
}

ヘッダファイルを使って
この4つのファイルをリンクするにはどうしたらいいですか?
0740デフォルトの名無しさんNGNG
プロトタイプ宣言でぐぐる
0741デフォルトの名無しさんNGNG
>>739
意味がわからん。
4つをリンクしてどういう出力がほしいんだ?
0742デフォルトの名無しさんNGNG
>>737
ごめん。ワロタ
0743デフォルトの名無しさんNGNG
==header.h==
int add(int a, int b);
int sub(int a, int b);
int mul(int a, int b);
int div(int a, int b);

==main.c==
#include<stdio.h>
#include"header.h"

int main(void)
{
int i;
i=add(1,1);
printf("result = %d\n",i);
return 0;
}
0744デフォルトの名無しさんNGNG
warning: no newline at end of file
ってエラーは何を意味するんでしょう?
0745デフォルトの名無しさんNGNG
>>744
ファイルの最後に改行がない
無視しても構わない
0746デフォルトの名無しさんNGNG
最終行で改行しよう。
…そのwarningって何を警戒するための警告なんだろう?
0747デフォルトの名無しさんNGNG
>>702
> じゃあ0のときもNULLでいいじゃん、と思えるのだが…

0はアドレスでなく、ヌルポインタであるという印のような
ものなので、わざわざNULLというマクロを使用するのは
冗長に思えるわけ。つまり0という定数でそのポインタが
ヌルポインタであることは明らかってこと。
0748デフォルトの名無しさんNGNG
>>745
 問題はないんですね。ありがとうございます。
0749デフォルトの名無しさんNGNG
> ヌルポインタであるという印のようなもの
ますますNULLの方がふさわしい気が…

上の方では
0だと定数なのかヌルポインタか一目で分からない、
(代入先の変数がポインタなのか違うのか分からない)
って理由でNULLを使おう、と行っているように見えるのですが。

> そのポインタがヌルポインタであることは明らかってこと。
ポインタかどうかっていうのが一目で分からないよね、ということでは。
ポインタであると知ってれば、ヌルポインタであることは明らかだと
思いますが。
0750デフォルトの名無しさんNGNG
putcについて質問なんですが、

int c='a';
putc(c,fp);

だったらちゃんとファイルにaが出力されますが

int c=10;
putc(c,fp);

では10が出力されません。数字は出力できないのでしょうか?
0751デフォルトの名無しさんNGNG
putcのcはcharのc
0752デフォルトの名無しさんNGNG
>>698はそういうことは書いてないと思うぞ。
0753デフォルトの名無しさんNGNG
>>746
改行までを1行としてパーズするヘボヘボコンパイラに当たったら
最終行がコンパイルされないという危惧からじゃないか?
0754デフォルトの名無しさんNGNG
int c='1';
putc(c,fp);
c='0';
putc(c,fp);
0755デフォルトの名無しさんNGNG
>>750
文字コード10の文字が出力される。
0756デフォルトの名無しさんNGNG
だからfprintfがあるんじゃねーか。
0757デフォルトの名無しさんNGNG
UNIX系のアプリにはファイルの最後に改行があるものとして扱うものが
多いからね。
0758756NGNG
もちろん>>750へのレス
0759デフォルトの名無しさんNGNG
>>745-476 >>748
確か規格ではソースコードが改行で終わっていない場合の動作は未定義だったはず。
例え鼻から悪魔が(ry
0760デフォルトの名無しさんNGNG
>>750
fputc() は、キャラクタ c を unsigned char にキャストし、 stream に書き込む。

両方で
printf("%d\n",c);
をやってみると何かわかるかも。
0761デフォルトの名無しさんNGNG
>>744-746 >>748
文字列が終端していない。
"の閉じ忘れ。
0762デフォルトの名無しさんNGNG
>>751
厳密には正しくない。
0763デフォルトの名無しさんNGNG
>>761
違う。
0764デフォルトの名無しさんNGNG
>>761
そういう場合>>744のようなメッセージになるの?
warningでなくerrorになりそうだが。
0765デフォルトの名無しさんNGNG
>>761
gcc使ったことないだろ
0766744NGNG
>>746
 確かにソースファイルの最後を改行したら消えました
 ありがとうございます
0767デフォルトの名無しさんNGNG
Mozillaのガイドラインにも最後は改行しろって書いてあったような。
0768デフォルトの名無しさんNGNG
Mozillaのガイドラインによると1行コメントは外道らしい
0769750NGNG
>>756
 fprintf使うとやりたいのがうまくいきそうです、ありがとうございます
0770デフォルトの名無しさんNGNG
Mozillaのコーディング規約は、いろんな環境で
開発されることを想定してるからねぇ。

古いCの仕様では 1行コメント駄目だし、
そういうコンパイラは今でもいっぱいあるのは確か。
0771デフォルトの名無しさんNGNG
GNUの規約によるとスペースでインデントをするのは外道らしい。TABを使え!だそうだ
0772デフォルトの名無しさんNGNG
C言語のソフトってどこで手に入れることができますか?

馬鹿みたいな質問すいません
0773デフォルトの名無しさんNGNG
Vectorに行ってください
0774デフォルトの名無しさんNGNG
gnuのコーディング規約って、
int func(i,j)
int i,int j
{
...
}
じゃ無かった?
(使ったこと無いので↑で本当に正しいのか自信が無いが、こんな感じの奴)

もしかしたらMozillaもそうだったかも。
0775デフォルトの名無しさんNGNG
GNUは2文字スペース字下げやってるのにTAB使えとはね。
字下げが8文字以上になったらTABに変換しろってことなんだろうけど。
実際Emacsもそのような挙動をするし。
0776デフォルトの名無しさんNGNG
ぶっちゃけGNUのコードフォーマットは
変態的。
0777デフォルトの名無しさんNGNG
返値の型と関数名の間に改行を入れろってのもある

というかスレ違い
0778デフォルトの名無しさんNGNG
>>777
777を取っておきながらその発言! shame on you!!!
0779デフォルトの名無しさんNGNG
スタイルなんかは T-1000 のように変身潜行する能力がすべてさ
0780デフォルトの名無しさんNGNG
777なんて要らないから1024を目指そうぜ
0781デフォルトの名無しさんNGNG
int型をchar型に変換する関数ってあります?
0782デフォルトの名無しさんNGNG
にゃーがね
0783デフォルトの名無しさんNGNG
実際、LSI-Cはコンパイラオプションによっては最終行に改行がないと誤動作する。
0784デフォルトの名無しさんNGNG
>>781
ムーリ!o(゚Д゚)っ
0785デフォルトの名無しさんNGNG
>>781
32bit環境と仮定
typedef struct _int2char {
char c1;
char c2;
char c3;
char c4;
} int2char;

使い方は
int2char i2c;

忘れた。教えて偉い人
0786デフォルトの名無しさんNGNG
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!
0787Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!NGNG
union
0788781NGNG
int c;
c=getc(file);

↑のカンジで読み出したcをchar型の配列に1文字ずつ入れたいんですが
何か方法ありませんか?
0789デフォルトの名無しさんNGNG
>>788
castして代入。警告を恐れない猛者なら単に代入でもよい。
0790デフォルトの名無しさんNGNG
scあんf
0791デフォルトの名無しさんNGNG
>>788
そのまま代入でおk

ある特定の処理系で警告が出ないように書かなければならないとしたら世界中飛んで回らねばならない
そんなこと言ってる香具師で本当にやってる者は俺の知る限りいない
0792788NGNG
>>791
 そのまま代入するとSegmentation fault (core dumped)になるんで
gdbで調べるとその代入文がでてくるんで困ってるんです
0793デフォルトの名無しさんNGNG
fileはちゃんと開かれてるのか?
0794デフォルトの名無しさんNGNG
>>792
添え字に使ってる変数が不定または範囲外は?
0795792NGNG
>>793
 なぜか代入する配列の宣言を変えたら解決しました

 ありがとうございました
0796デフォルトの名無しさんNGNG
>>795
char *unko;
↓
char *unko[300];
じゃねーだろなw
0797デフォルトの名無しさんNGNG
>>796
間違い
char unko[300];

(´・ω・`)・・・・
0798デフォルトの名無しさんNGNG
>>796
  。゜(゚´Д`゚)ノウンコ-
0799デフォルトの名無しさんNGNG
>>798
野糞?
0800デフォルトの名無しさんNGNG
下劣な奴が本当に劣っている例だな
0801デフォルトの名無しさんNGNG
ポインタにcを代入したんだろうな。<Segmentation fault
0802デフォルトの名無しさんNGNG
>>789
警告出る処理系なんてあるの?
0803デフォルトの名無しさんNGNG
>>788
カンジって…
もしかして漢字か
0804デフォルトの名無しさんNGNG
>>802
791 だが、あるよ。
学生でも知っていそうな、そこいらへんのやつとか。
0805デフォルトの名無しさんNGNG
VCの病的なWallとか
0806デフォルトの名無しさんNGNG
>>804
どういう警告が?
getcて戻り値intだよなぁ…
0807デフォルトの名無しさんNGNG
intからcharに入れるんだから、警告出すコンパイラもありそうじゃない?
0808デフォルトの名無しさんNGNG
お前らアホ?馬鹿?Ruby?
0809806NGNG
>>807
ごめん。>>788を読み間違えてた。
0810デフォルトの名無しさんNGNG
>>808
ばか!!ばか!!まRuby!!!
0811デフォルトの名無しさんNGNG
mRuby(みさくらRuby)の実装を希望します
0812デフォルトの名無しさんNGNG
>>810
まRubyとtalbyって似てるよね。
http://www.talby.jp/
0813デフォルトの名無しさんNGNG
まRunaby
0814デフォルトの名無しさんNGNG
まRubyル。
ちなみに東京の丸ビルは丸くない。

東京:
http://minami.typepad.com/photos/moblog/040308_09040001.html

大阪:
http://www1.linkclub.or.jp/~spanky/YH001/osaka/10marubill.html
0815デフォルトの名無しさんNGNG

ちょっとお聞きしたいんですが、
void Hoge( void )
{
: //(略
return ;
}
の return ; って必要ですか?
自分は書かないほうなんですけど、他人のソース見ててふと思ったので書き込みました。
0816デフォルトの名無しさんNGNG
書け
0817デフォルトの名無しさんNGNG
はい  
0818デフォルトの名無しさんNGNG
>>815
可読性のために書いておけ。

そこでreturnしない変態的な関数
作る奴もいるしな。
0819デフォルトの名無しさんNGNG
処理のテーブル化、というのはどういうことでしょうか?

関数ポインタを配列に入れて、ループで処理すること、
と勝手に想像してみたのですが、あってます?
0820デフォルトの名無しさんNGNG
あってるよ
0821デフォルトの名無しさんNGNG
ループで処理、じゃなく
配列のindexで処理選択って感じかな。
0822デフォルトの名無しさんNGNG
BORLAND C++ COMPILER使ってるんですが、これって画像の取り込みなどは可能なのでしょうか?
もしよろしかったら教えて下さいませm(_ _)m
0823デフォルトの名無しさんNGNG
>>822
画像の取り込みと言っても色々あるだろ
何がやりたいんだ
0824デフォルトの名無しさんNGNG
IDEの背景色変えたいだけじゃない?
0825デフォルトの名無しさんNGNG
googleの画像検索結果から画像を取り込んで
ふたばに貼り付ける……とかをしたいのでは?
0826デフォルトの名無しさんNGNG
あんたがやりたいだけだろ
0827デフォルトの名無しさんNGNG
じゃあさ,じゃあさ,
FAXからTIFF画像を取り込んで
ある程度ノイズを消してから,任意のプリンタで出力したい
ってのは?
0828デフォルトの名無しさんNGNG
かってにやってろよ
0829デフォルトの名無しさんNGNG
>822
可能です。
>827
可能です。

最近、師走ですえn。
0830デフォルトの名無しさんNGNG
Delphiじゃなきゃ無理だろ
0831デフォルトの名無しさんNGNG
fortranが熱い!
0832デフォルトの名無しさんNGNG
名前がカコいいふぉーみゅらとらんすれーしょん
0833デフォルトの名無しさんNGNG
コンパイルに成功してプログラムが実行できない場合、確認する方法はないですか?
ちなみに実行すると何もでず、終了もしない状態になります
0834デフォルトの名無しさんNGNG
何も出ず、終了もしないことは確認できてるんじゃないのか?
0835833NGNG
>>834
すみません、確認するっていうのはプログラムが終了しない原因を確認する方法です。
ソースのどこがおかしいのか・・・
0836デフォルトの名無しさんNGNG
デバッガも無いのか?
0837デフォルトの名無しさんNGNG
シングルモルトだな
0838833NGNG
>>836
 何も出ません、暴走状態です
0839デフォルトの名無しさんNGNG
もう一度問う
デバッガも無いのか?
0840デフォルトの名無しさんNGNG
プログラムが暴走するなんてよくあることだしな。
ループにprintfでも突っ込んどけば。
カウンタで何回かしたら強制的にループを終えるように
してもいいし。
0841833NGNG
>>839
gdbならありますが
0842デフォルトの名無しさんNGNG
使えよ
0843833NGNG
>>842
 gdbで走らせても走り続けて何も出ず、暴走するだけなんですが・・・
0844デフォルトの名無しさんNGNG
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。
0845デフォルトの名無しさんNGNG
いわゆる周期境界条件の処理をしたいのですが、これをコンパイルすると
エラーがでるのですが、どこがいけないのか教えていただけませんか?

double isincell(double p)
{
 if ( p > L ) {
   return p-L;
 } else if ( p < 0 ) {
   return p+L;
 } else {
   return p;
 }
}
Lはセルの1辺の長さで#defineで定義済み。コンパイラ(BCC)のエラーは

エラー E2188 kadai.c 139: 式の構文エラー(関数 isincell )
警告 W8070 kadai.c 146: 関数は値を返すべき(関数 isincell )
警告 W8057 kadai.c 146: パラメータ 'p' は一度も使用されない(関数 isincell )

139行目が最初のifの行です。

お願いします。
0846デフォルトの名無しさんNGNG
>>845
エラーまたは警告はそれだけ?
0847デフォルトの名無しさんNGNG
>>845
Lの定義は浮動小数点になってる?
0848デフォルトの名無しさんNGNG
>>844
マルチ氏ね
0849845NGNG
>>846
>>847
申し訳ありません、>>847見て気づきました。
#define L (・・・空欄)
になってました・・・orz

どんな値入れればいいかわからんから空欄にしたままだった・・・

お騒がせしました。
0850デフォルトの名無しさんNGNG
>>844
include <stdio.h>

void main()
{
int i;
printf("スロットマシーン\n");
printf("コインを入れてください\n");
scanf("%d",&i);

printf("oxo\n");
printf("777\n");
printf("oox\n");

printf("おめでとう");
}
0851デフォルトの名無しさんNGNG
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。
0852デフォルトの名無しさんNGNG
>>851

#include <stdio.h>

void main()
{
struct {
int i;
}slot;
printf("スロットマシーン\n");
printf("コインを入れてください\n");
scanf("%d",&slot.i);

printf("oxo\n");
printf("777\n");
printf("oox\n");

printf("おめでとう");
}
0853デフォルトの名無しさんNGNG
こんなでどおかな?
ttp://v.isp.2ch.net/up/42b06453a023.txt
0854デフォルトの名無しさんNGNG
>>853
ダイレクトエックスを使ってお願いします
0855デフォルトの名無しさんNGNG
>>853
できれば効果音もつけて下さい。お願いします。
0856デフォルトの名無しさんNGNG
仕様にないのでついかりょうきんになります。
10年後ぐらいにたぶんできます。
0857デフォルトの名無しさんNGNG
>>853
できれば(;´Д`)ハァハァなおねーちゃんも表示して下さい。お願いします。
0858デフォルトの名無しさんNGNG
Cでこの課題のプログラム作ってください
お願いしますm(__)m
英語の文章に出現する単語の中で、文字数が最も多い単語を出力して終了するプログラムを作成せよ。
入力データには英文字、スペースのみが含まれているものとし、単語とはスペースで区切られた連続する英文字の列とする。
文章の文字数は80文字以下で、一つの単語の文字数は32文字以下とする。
最長の文字数を持つ単語は文中にただ一つだけ存在するものとする。
よろしくお願いしますm(__)m
0859デフォルトの名無しさんNGNG
>>858
ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/l50
0860デフォルトの名無しさんNGNG
バニーガールどうぞ

printf("∩_∩\n");
printf("(*^o^)<いらっしゃいませ"\n);
0861デフォルトの名無しさんNGNG
>>858
この板見てるとこういう宿題をよく見かけるが、データのフォーマットが不明なものが多いよな。
いきなり文字配列なのか、ファイルIOも視野に入れた課題なのか、とか。
0862デフォルトの名無しさんNGNG
>ファイルIOも視野に入れ

そんな些細なことは気にするな(w
>文章の文字数は80文字以下で、一つの単語の文字数は32文字以下
だぜ?
0863デフォルトの名無しさんNGNG
だいれくとえっくす使えにワロタ
0864デフォルトの名無しさんNGNG
ゲー専の課題なのか?

0865デフォルトの名無しさんNGNG
ここはゲームなインターネッコですね
0866デフォルトの名無しさんNGNG
MS Word からある文字列がある行を出力したいのですが、どうやればいいんでしょう?
よろしくお願いします。
0867デフォルトの名無しさんNGNG
C言語は独学でも十分学べますか?
あと他のプログラム全般についても独学でも学べるんでしょうか?
0868デフォルトの名無しさんNGNG
独学で学べないものを挙げてみよ
0869867NGNG
セックスは独学では学べないと思います
0870デフォルトの名無しさんNGNG
アホだ。アホが居るよママ
0871デフォルトの名無しさんNGNG
>>870

C言語ならママに聞け
http://pc5.2ch.net/test/read.cgi/tech/1087648569/
0872デフォルトの名無しさんNGNG
はじめてのC
0873デフォルトの名無しさんNGNG
('A`*)
0874デフォルトの名無しさんNGNG
質問ですunsorted list(ソートされないリスト)で
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると

┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃  ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??

また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)
0875デフォルトの名無しさんNGNG
>>874
マルチ氏ね
0876デフォルトの名無しさんNGNG

クズは放置
0877デフォルトの名無しさんNGNG
すいません C言語初心者ですが投稿させていただきます。

C言語で、ある処理でログ出力する際に同時刻に複数プロセスが出力すると、片方のプロセスがログ出力できないということがあるでしょうか??

もしある場合は、対処方法はありますか??
0878デフォルトの名無しさんNGNG
>>877
環境によっては複数のプロセスが同時にファイルを開くことができる。
ログ出力と言うと通常追加で開くと思うが、例えばこんな現象が生じる。

プロセスAがストリームポインタを末尾(仮に100行目)に移動する。
プロセスBが(以下略
プロセスAが(100行目に)ログ出力する。
プロセスBが(以下略

これにより、プロセスAが出力した内容は消えてしまう。

OSによってはansi標準関数を使わないでOSが用意した関数を使用することで
排他的にファイルを開くことができるので避けることができる。
そういった手段が用意されていない場合は、ファイルパーミッションを落とすか
ファイル名を変えてしまうことによって回避するように工夫することになる。
0879デフォルトの名無しさんNGNG
>>877
シェアードオープン
ミューテックスまたはセマフォ

このあたりを習得すれば、有る程度好きに出来る。
0880デフォルトの名無しさんNGNG
こんばんは。リナックスのC言語を使っているのですが、
立方体を描いてそれを回転させるようなアニメーションはどうしたら良いのでしょうか?
立方体を描くところまではできたのですが動かすことができません。
やりかたの方法、載ってるサイト。またはそのような書籍があればお教え下さい。
よろしくお願いします。
0881デフォルトの名無しさんNGNG
>>880
OpenGLスレにでも行け
0882デフォルトの名無しさんNGNG
>>881
(多分)自前でレンダリングしてるんだろうから、それじゃスレ違い
0883880NGNG
>>881
OpenGLってのでいけそうです。
ありがとうございました。
0884882NGNG
orz
0885デフォルトの名無しさんNGNG
>>884
ホームラン級の馬鹿だな
0886デフォルトの名無しさんNGNG
LinuxnoCgengottenanndesuka?
0887880NGNG
いえいえ
882さんもレスありがとうございました
0888デフォルトの名無しさんNGNG
強いシンボル、弱いシンボルというものはどういうものでしょうか?
またそれらは実行時のパフォーマンスにどう影響するものでしょうか?
0889デフォルトの名無しさんNGNG
電卓プログラムを作ってください!

出だしは

#include <stdio.h>

main()
{

ではじまって、switch文、while文,if文、break文、for文のみを使って、

1
+3

と入力すると

4

続けて

+sin30 
と入力すると

4.5
と出て、

Q
で終了できるようにお願いします!
0890デフォルトの名無しさんNGNG
>>2の5行目に答えが
0891デフォルトの名無しさんNGNG
スレ違いだしmain()が気にくわないし題意がわかんないしもうこんな時間だし
0892デフォルトの名無しさんNGNG
>>888
強い: シンボリクリスエス
弱い: ニッポージャガー
0893デフォルトの名無しさんNGNG
>>889
return 0 ぐらい入れろよ。
0894893NGNG
ミス、return 0; な
0895デフォルトの名無しさんNGNG
>>889
不可能。
0896デフォルトの名無しさんNGNG
>>889
入力手段は? 念力?
0897デフォルトの名無しさんNGNG
>>896
超魔術
0898デフォルトの名無しさんNGNG
おまえら使えねーよ
マジ死んでいいから^^
0899デフォルトの名無しさんNGNG
+sin30 が 4.5 になるところ以外はできた
0900デフォルトの名無しさんNGNG
あぁ, 1+3+sin30 で 4.5 ってコトか.
ちょっと待っててね.
0901デフォルトの名無しさんNGNG
円の三点が分かっていて、そこから中心点(cx,cy)と半径(r)を求める計算のプログラムを作ってみたのですが、
簡単な計算はできるのですが、複雑になると-1.#IND000000000という文字が出てしまいます。複雑な計算でもできるようにするにはどこを改良すればよいかどなたか教えていただけないでしょうか?

/* 始点 */
arcx[0] = arc[z][0].sx; arcy[0] = arc[z][0].sy; arcz[0] = arc[z][0].sz;

/* 中間点 */
arcx[1] = arc[z][1].sx; arcy[1] = arc[z][1].sy; arcz[1] = arc[z][1].sz;

/* 終点 */
arcx[2] = arc[z][2].sx; arcy[2] = arc[z][2].sy; arcz[2] = arc[z][2].sz;

for(i=0; i<3; i++) {
a[i][0] = arcx[i]; a[i][1] = arcy[i]; a[i][2] = 1.0;
a[i][3] = (arcx[i]*arcx[i] + arcy[i]*arcy[i]);
}
for(i=0; i<3; i++) {
tyu = a[i][i];
for(j=0; j<4; j++) {
a[i][j] /= tyu;
}
for(k=0; k<3; k++) {
erase=a[k][i];
for(j=i; j<4; j++){
if(k!=i) a[k][j] -= erase*a[i][j];
} } }
for(i=0; i<3; i++){
cx = a[0][3]/2; cy = a[1][3]/2;
r = sqrt((arcx[t]-cx)*(arcx[t]-cx)) + ((arcy[t]-cy)*(arcy[t]-cy));
}
0902デフォルトの名無しさんNGNG
strcpyはつかっちゃだめよ
strcpyにつかっちゃうと、抜け出せなくなるから。
0903デフォルトの名無しさんNGNG
>902
strcpyって何ですか?
0904デフォルトの名無しさんNGNG
>>903
http://www.bohyoh.com/CandCPP/C/Library/strcpy.html
0905デフォルトの名無しさんNGNG
>>904
どうしたらよいのでしょうか?
0906デフォルトの名無しさんNGNG
>>905
>902を無視してstrcpy()を注意深く使う。
間違ってもstrlcpy()にしただけで安心してはいけない。
また、文字列の加工はstrcpy()やstrcat()を駆使するよりも
sprintf()一発ですむことが多い。sprintf()の書式をよく調べてみるといい。
0907デフォルトの名無しさんNGNG
>>901
一見して何をしているプログラムか判らん。
最後のループは不要に見えるし、arcx[t]の tは何だ?

怪しいのは、
tyu = a[i][i];
for(j=0; j<4; j++) {
a[i][j] /= tyu;
の部分。a[i][i]が 0だとゼロ除算になってしまうし、極端に小さいと正しい
結果は出ない。「行列 ピポット 選択」でgoogleするとヒントが見つかると思う。

いちど手計算(電卓)で計算してみることを勧める。プログラムの中にprintf()を
入れて途中経過を表示するようにして、それが手計算と合っているか確認する
デバッグ手法が有効だ。
0908デフォルトの名無しさんNGNG
>>907 arcx[t]のtはiの書き間違いです。アドバイスありがとうございます。
0909907NGNG
ゴメン、typoした。
×ピポット
○ピボット (pivot)

//ピポットで検索しても結構ひっかかるようだがw
0910デフォルトの名無しさんNGNG
先生方お願いします。

ファイルサイズが500MB近くのファイルがあります。
この中からあるキーワードが含まれている行を抽出しなければなりません。
あるキーワードは複数存在します。

上記で私が考えたのは、
ファイルを1行ずつ読み込み、その1行の中にキーワードが存在するか
調べるかアルゴリズムを考えたのですが、これだと非常に遅いです。
もっと早く調べる方法はありますか?

ファイルのバッファを全て落とし込むのはメモリ的に無理となっています。
0911デフォルトの名無しさんNGNG
while(gets(line))
 for(i=0;i<word_count;i++)
  if(strstr(words[i], line)
  {
   見つかった;
   break;
  }
というようなコードをたぶん書いてるんだろうけど
>while(gets(line))
の部分をある程度まとめた行を同時に読み込んで処理する。
改行に関係なく100kbまとめてとかね。
> for(i=0;i<word_count;i++)
>  if(strstr(words[i], line)
の部分も高速化できるかもしれない
if(multi_str_str(words, word_count, line)
のように複数の単語を同時に検索するアルゴリズムを自分で実装する。
実際にやったことないからどの程度高速化するかは分からないけど。まあ腕次第。
0912デフォルトの名無しさんNGNG
単純に1つの単語を調べるなら、BM法にすればいいんだけど
複数だと工夫がいるね。

で、I/Oの最速はメモリマップドファイルだけど、OSに依存する。
それに、実際に遅いのは物理ディスクにアクセスする部分であって、
メモリ上のコピーはそれほどでもない場合も多いから
stdioの関数を使って、setvbufするだけでも充分になる場合が多い。
0913デフォルトの名無しさんNGNG
キーワード検索に"foo|bar|baz"な正規表現使うのはどのくらい速いんだろう。
自前でやるのと比べるとあんま速くないかな。
0914デフォルトの名無しさんNGNG
時間制限みたいなのはあるんかい?
ないとしたら、お前さんの希望する検索時間ってのは
どれくらいなんだい?
0915デフォルトの名無しさんNGNG
そうそう。
正規表現みたいな状態遷移での決定を
BM法みたいに末尾から行うのが
最速じゃないかと思うんだ。
(最大文字列長にあわせて、不足する末尾は?で埋めて)

ただ、500Mともなると
I/Oの割合の方が大きいんじゃないかと。
0916デフォルトの名無しさんNGNG
>ただ、500Mともなると
>I/Oの割合の方が大きいんじゃないかと。
単に500Mのファイル読むだけならそんなに時間かからないからボトルネックは検索の方だよ。
CPUのキャッシュサイズに合わせて処理していくのがいいんじゃないの。
0917デフォルトの名無しさんNGNG
500Mのファイルって、最近のディスク使っていて、データが最外周部にあっても
全部読むのに10秒近くかかるよ。

力任せ法での検索(先頭文字の検索だけ工夫をして)が
それ以上に時間がかかりそうなら、仕方ないけど。
0918デフォルトの名無しさんNGNG
CPUのキャッシュを意識しなきゃいけないのは
基本的に、オンメモリのデータを複数回処理する時だけだね。

外部からデータを読んで、
それを一回読むだけで次へ移るような、ストリーム系の使い方だと
「キャッシュに収まるサイズで」というのはあまり意味がない。
0919デフォルトの名無しさんNGNG
>>918
> for(i=0;i<word_count;i++)
>  if(strstr(words[i], line)
ここで複数回処理してるわけで。
複数キーワード同時検索って結局インデックスも複数持たざるを得ないから効果は薄い気がする。
0920デフォルトの名無しさんNGNG
だからね、
先頭文字の一致だけ、ctype.hにあるようなテーブルを作って判定するのよ。
そして、
一致しなければ次の文字へ進む
一致したら(一回switchを挟んで)各文字列をmemcmpでチェック
という形にするだけで
全体の内の殆どは1回スキャンするだけになるし
複数スキャンする部分は充分小さいから
キャッシュサイズなんて意識する必要が無くなるの。

もちろん、OSのバッファ -> stdioのバッファ -> fgetsのバッファ
へのコピーが発生するけど、これが
ディスクへのアクセスと比べてどれほど実行時間を左右するのか、って話。
0921デフォルトの名無しさんNGNG
だからね、
>先頭文字の一致だけ、ctype.hにあるようなテーブルを作って判定するのよ。
>そして、
>一致しなければ次の文字へ進む
>一致したら(一回switchを挟んで)各文字列をmemcmpでチェック
なんてベタ検索で効果が出るのかって話をしてるんだけど。
まあ検証するつもりはないからこれ以上はやめとくけど。
0922デフォルトの名無しさんNGNG
最近C言語始めだしたて「C言語プログラミング検定3級」なるものを
受けようかと思っています。何かいい勉強方法などありましたらご教授
願えないでしょうか?宜しくお願いしますm(__)m
0923デフォルトの名無しさんNGNG
>>922
そんな検定あるんだ…知らなかった。
0924デフォルトの名無しさんNGNG
>なんてベタ検索で効果が出るのかって話をしてるんだけど。

あれ、「CPUのキャッシュ」の話じゃなかったの?
だったら、最初の方で書いたように
BM法を応用した末尾からの判定を、複数文字列に対応させたものを
メモリマップドファイルを用いて探索したものが最速だと、
俺は最初からずっと思っているよ。
そして、それはCPUのキャッシュサイズなんか関係ないし。

で、>>920程度ならすぐに実装できるけど
これ以上の工夫は結構手間がかかる。

そして、探索アルゴリズムの工夫による効果が
ディスクI/Oにかかる時間にと比べてどれほどの効果をもつのか
(実装にかかる手間が「充分意味のあるもの」と思えるほどなのか)
ディスクI/Oに比べてCPUのキャッシュの速度がどれほど実行時間に影響するのか
という話だと思ったんだけどね。
0925デフォルトの名無しさんNGNG
まぁ取り敢えずgrepで速度的に問題ないか確認するところからだな。
場合によっちゃ、自前で書くより速いかも知らん。
0926910NGNG
お前ら( ゚Д゚)⊃旦 チャノメヤ
質問者のレベルを・・・
0927デフォルトの名無しさんNGNG
一応、試してみたよ。
手元にあった19M程のテキストファイル(MSHTML_TLB.h)から、"foo","bar","zot"の3つを探索。
探索するだけで、「見つかったから何かする」というのは無し。
これを30回繰り返すけど、
サイズが小さいから、全てOSのキャッシュにのっているはず。
fopen()は、"rb"で。
bccだから、memcmpすらインライン展開はされてない。

ベタなfgets()+strstr()x3 およそ8.2秒
これにsetvbuf() およそ8.0秒 
>>920 およそ3.0秒

もちろん、境界条件等は無視したから、実際にはもう少し変わってくるけど。
さて、これ以上のアルゴリズムの工夫で3.0秒がどの程度減らせるのか、
CPUのキャッシュやアセンブラを意識した最適化でどの程度になるのか。

実際に500Mのファイルから探索するなら、
ディスクからの読み込みで、約10秒かかる。
0928デフォルトの名無しさんNGNG
初心者です。
使用月と月々の諸料金を入力して、その合計と平均を出そうというプログラムを組みました。

#include <stdio.h>
int main(void)
{
int i;
int a[10],l,x,s;
float avg;
s=0;
printf("使用何ヶ月目か入力>>\n");
scanf("%d\n",&l);
printf("請求金額を入力>>\n");
for(i=0;i<=l-1;i++){
scanf("%d\n",&x);
a[i]=x;
s=a[i]+s;
printf("合計 %d\n",s);
}
avg=0;
avg=s/i;
printf("月額平均 %f\n",avg);
return 0;
}

しかし、一回目に0以外の数値を代入しても(例えば10)一番初めの合計が「合計 0」と表示されしまいます。
これを一回目の入力をiとしたら、一番初めの合計を「合計 i」と表示させるにはどうしたらいいんでしょうか?
また、このプログラムを簡潔にするにはどこを改良すればよいかどなたか教えていただけないでしょうか?
ちなみに環境はMicrosoft Visual C++ 5.0で、エラー・警告等はありません。
0929デフォルトの名無しさんNGNG
まず、
× scanf("%d\n",&l);
○ scanf("%d",&l);

scanf("%d\n",&x);も同様。
0930デフォルトの名無しさんNGNG
scanfは面倒くさいからfgetsとatoi使え。
あとavg = 0;は直後でs/iを代入しているんだから無駄。
そのs/iはsもiも整数だから結果も整数になる。((double)s) / iにでもしろ。
どうせだからavgはdoubleにしろ。
0931デフォルトの名無しさんNGNG
>>930
スレ違い
こっちでやれ↓
http://pc5.2ch.net/test/read.cgi/tech/1101931660/
0932デフォルトの名無しさんNGNG
>>929-930
ありがとうございます。
言われた通りに入力したらちゃんと実行出来ました。

scanfの代わりにfgetsとatoiですか。調べてみます。
ありがとうございました。
0933初心者ANGNG
#include<stdio.h>
int main(void){
int a;
a = 1;
printf("number%d\n , 0");
} return 0;

参考書見ずに書いてみました。もしかしたらどこか違うカモ…
まず1歩目です!
0934デフォルトの名無しさんNGNG
>>932
騙されるな
結構有名なアフォ議論だぞ
0935デフォルトの名無しさんNGNG
>>403
http://homepage2.nifty.com/DSS/WinSys/Win/FileMapping.htm

Windows固有の機能。

まあほかのOSにも似たような機能はあるのかもしれんが。
0936デフォルトの名無しさんNGNG
>>935
君は単一仮想記憶を知らないな?
0937デフォルトの名無しさんNGNG
>>935
君は空気を読めないな?
0938デフォルトの名無しさんNGNG
________.  |  ・・・「からけ」?
|||          | \____ __
|||          |  )\       ∨
|||    空  気.   <⌒ヽ ヽ
|||         \ ( ´ー`)    ∧∧
|||_________V(   丿V^  ●Д゚,,)
|,,|          |,,| ヽ (      と  ,)
              ノ )     |  |〜
            ∧          .し`J,,.
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄\
0939900NGNG
>>889
三角関数対応の電卓だよ.
こっちに書いたから使ってね.

七行プログラミング part4
http://pc5.2ch.net/test/read.cgi/tech/1051703369/814
0940デフォルトの名無しさんNGNG
>>933
int a;
a = 1;
は int a = 1;
とまとめられる。
のはいいんだがaは何に使ってるんだ?
0941デフォルトの名無しさんNGNG
>printf("number%d\n , 0");

そもそも number%d\n , 0 って表示させてどうするw
0942デフォルトの名無しさんNGNG
>%d

...何が表示されるんだろう
0943デフォルトの名無しさんNGNG
>>941
「returnの場所がおかしい」と、一番の餌で釣れない933て一体。。。
0944デフォルトの名無しさんNGNG
なるほど!おもろいな
0945デフォルトの名無しさんNGNG
>>941
いや、%dは不定値に置き換わるから。
0946デフォルトの名無しさんNGNG
そろそろ埋め立てる方針らしいのでなんか荒れるネタきぼんぬ。scanf類以外で
0947デフォルトの名無しさんNGNG
freeしろ。必ず。
0948デフォルトの名無しさんNGNG
>>947
前橋召喚の呪文?
0949デフォルトの名無しさんNGNG
初心者です。

参考書によって
void main() と書いてあるものと
int main() と書いてあるものの2種類ありますよね。
intにしてreturnしても、どこにも使われてないし
プログラムも問題なく動くので
全部voidでいいと思うんですが。

voidにしてはいけない理由でもあるのでしょうか。
0950デフォルトの名無しさんNGNG
仕様でintにしろと決められてるから
0951デフォルトの名無しさんNGNG
mainの戻り値はシステムに使われてる品
0952デフォルトの名無しさんNGNG
>>949
例えば、このスクリプト内ではプログラムの返り値を使います。

#!/bin/sh
i=100
while [ $i -lt 253 ]
do
a=`ssh 192.168.0.$i who 2> /dev/null`
if [ $? == 0 ]
then
echo "192.168.0.$i" $a
fi
i=`expr $i + 1`
done
0953デフォルトの名無しさんNGNG
>>952
「このプログラムは返り値を提供しません。標準出力の結果を勝手に解析してください」
でもいい気がするんだけど。実際リターンコードは結構適当だし。
0954デフォルトの名無しさんNGNG
すみません。先輩から「最近のCの規格で、voidは大文字でも良くなったよ」と聞きました。
試しに
int main(VOID)
{
 printf("VOID(・∀・)\n");
 return 0;
}
を実行してみると、ちゃんと動きました。

この規格は、いつ決まったのでしょうか?
参考になるURL等ありましたら教えてください。
0955デフォルトの名無しさんNGNG
>>953
返り値はUNIXツールの習慣なんだけど、実際返り値があるとシェルプログラムから
扱うときに非常に便利なんだ。
返り値にもメタファがあって、習慣どおりにしないと不便になる。
0956954NGNG
すみません。ちょっと間違えました。
0957デフォルトの名無しさんNGNG
>>951
その「システム」を ISO/IEC9899 は定義せずに shall とか言ってるわけだ
0958デフォルトの名無しさんNGNG
>>950
そんな決まりはない
0959デフォルトの名無しさんNGNG
>>955
&&で繋いで処理する時なんかかな?
./configure && makeとか
0960デフォルトの名無しさんNGNG
>>958
馬鹿
0961デフォルトの名無しさんNGNG
>>958
無知
0962デフォルトの名無しさんNGNG
>>960
よく読めよ
返却値の型が int の main を受理できなければならないだけで
それ以外を implementation-defined としているだろ
ちゃんと文書化してあれば合法なんだよ
0963デフォルトの名無しさんNGNG
>>954
windows.hなんかをインクルードするとそうなる。
windows.hの中でインクルードされているwindef.hかどっかに#define VOID voidと書かれているから。
0964デフォルトの名無しさんNGNG
>>954
その先輩アホだから見限った方が良いよ
0965デフォルトの名無しさんNGNG
DWORDとかVOIDとか、使いたくないんだけど。。
0966デフォルトの名無しさんNGNG
どうせならVoidやTrueも通るようにすればいいのに
0967デフォルトの名無しさんNGNG
>>966
Pascalプログラマ?
0968デフォルトの名無しさんNGNG
HTMLを手書きしてる人で
<Html>
<Head><Title>hoge</Title>
</Head>
</Html>
ってやってるのがいたな
0969954NGNG
>>963
windows.hなんて全然使ってません。
#includeしているのは、<stdio.h>だけです。

gccとbccとvctkの全てで動作を確認しました。
嘘だと思うなら、試してみてください。
0970デフォルトの名無しさんNGNG
>>962
「ちゃんと文書化してあれば」って何のことだ?
社内規定?
0971954NGNG
あと、
int main(Void) { ... }
でも動きました。
0972デフォルトの名無しさんNGNG
教えてください。
入力した文字列を格納した配列のポインタを戻したいんですけど、警告がでました。
警告1:プロトタイプ宣言のない関数'input'の呼び出し。(関数 main)
警告2:コードは効果をもたない。(関数 main)
警告3:問題のあるポインタの変換。(関数 input)
ソース↓
#include <stdio.h>
#define MAX 256

char *input();

void main()
{
*input();
}

char *input()
{
char s[MAX];

printf("COMMAND:");
scanf("%s", s);

return s;
}
0973デフォルトの名無しさんNGNG
>>972
つ、釣られないぞ…
0974デフォルトの名無しさんNGNG
>>972
マルチポストするな消えろ
0975デフォルトの名無しさんNGNG
>>972
char *input()はですねー、char*型の返り値を返す、inputという関数の定義なんですよー にゃんにゃん
0976デフォルトの名無しさんNGNG
>>960-961
規格を読んだことのない半可通
0977973NGNG
>>972
お前が言いたいだろうことを最大限考慮してやった↓。
これがしたいんだろ?

#include <stdio.h>
#define MAX 256

char *input();

void main()
{
  char* p;
  p = input();
  printf("%s\n", p);
}

char *input()
{
  static char s[MAX];

  printf("COMMAND:");
  scanf("%s", s);

  return s;
}
0978デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1101615970/976
http://pc5.2ch.net/test/read.cgi/tech/1100951565/972
http://pc5.2ch.net/test/read.cgi/tech/1102749965/19
http://pc5.2ch.net/test/read.cgi/tech/1090652323/610

んー、トレビアン
0979デフォルトの名無しさんNGNG
>>976
環境依存のコード書く馬鹿?
0980デフォルトの名無しさんNGNG
>>979
>>976は揚げ足取りたいだけの馬鹿
0981デフォルトの名無しさんNGNG
バカって言われて悔しかったんだろ
もうほっとけ
0982デフォルトの名無しさんNGNG
K&Rでvoid mainに関する記述があるのはどのあたり?
0983デフォルトの名無しさんNGNG
>>979
環境依存?覚えた言葉をすぐ使っちゃダメってママに言われたろ?
0984デフォルトの名無しさんNGNG
*char input()
で駄目?
0985!=976NGNG
>>980
揚げ足を取っているわけではなくて、まれではないと思うよ。
0986デフォルトの名無しさんNGNG
>>983
・・・しょぼい煽りだな。
狭い世界で生きててくださいねw
0987デフォルトの名無しさんNGNG
>>985
希ではないから良いコードだというわけではないだろう。
0988デフォルトの名無しさんNGNG
  /■\
  (´Д`iill) 
  (⊃ ⊂)
 (⌒(⌒_.ノ
0989デフォルトの名無しさんNGNG
で、K&Rにvoid mainに関する記述はないの?
0990デフォルトの名無しさんNGNG
ごめん、誤爆。
0991デフォルトの名無しさんNGNG
>>987
良いか悪いかじゃない。規格に定まっているかのような嘘をつくな
0992デフォルトの名無しさんNGNG
>>958=>>962=>>976=>>983はトリップ付けてね
0993949=954NGNG
>>949はこれほど好意的に受け止めてもらったのに
>>954の
int main(VOID, argv)
int VOID;
char **argv;
{ ... }
は相手にしてもらえませんでした。
ちょっと悲しいです。

でも、>>946さんなどには満足していただけたかと思います。
0994デフォルトの名無しさんNGNG
次はPart96だな
0995!=976NGNG
>>987
例えば、組み込み。
ヘッダは自分で書くことが非常に多い。
0996デフォルトの名無しさんNGNG
>>991
頭悪いなぁ…
0997デフォルトの名無しさんNGNG
>>995
(;´Д`)だから?
0998デフォルトの名無しさんNGNG
1000下と
続きはこっちで

C言語なら俺に聞け! Part 96
http://pc5.2ch.net/test/read.cgi/tech/1101615970/
0999デフォルトの名無しさんNGNG
(・∀・)イイ!!
1000デフォルトの名無しさんNGNG
続きはこっちで

C言語なら俺に聞け! Part 96
http://pc5.2ch.net/test/read.cgi/tech/1101615970/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。