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

このエントリーをはてなブックマークに追加
1v(^o^i)d
まず問題を冷静に吟味して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 86
http://pc5.2ch.net/test/read.cgi/tech/1089863973/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
2デフォルトの名無しさん:04/07/24 16:35
【コンパイラ】
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
3推奨NGワード:04/07/24 16:35
第一群
「頭悪すぎ」「池沼」「バカ」「馬鹿」「ばか」「アホ」「あほ」「まぬけ」「間抜け」
「アフォ」「くず」「クズ」「アフォ」「キモイ」「低脳」「タコ」「クソ」「死ね」
「餓鬼」「バッカ」「香ばしい」「ゲラゲラ」「(プ」「プゲラッチョ」
「莫迦」「逝け」「キモい」「キモイ」「消えろ」「失せろ」「晒し上げ」

第二群
「函数」「scanf」「gets」「goto」「コーディングスタイル」
「コメント」「セキュア」「セキュリティ」

第三群
「空白あけろ」「空白あけるな」「空白のあけかた」「空白の空け方」「空白空けるな」
「空白入れろ」「空白入れない」
「ボ○ケ」「ぼけぇ」「ヴぉけ」「ぼけ」「ボケ」「自己解決しました」

第四群
「;-)」 「;)」「すぎー」「初歩的な質問」「初心者です」「初心者」
「;-;」「異端」「脳内変換」「UNIX厨」「M$」「初心者的な質問」「のー?」
「日下部陽一」「勝利」「敗北」「妄想」「素人」


第一群:言葉自体の有害度が大きい。
第二群:言葉自体は有害ではないものの、使う人の技量や目的によってはフレームの原因になる。
第三群:荒らしが好んで使う言葉。
第四群:その他。主観で分類してください。
真スレ乙
assert(0 && "重複だぼけ");
Cでインクリメンコしたときにキャリーフグリの変化を調べる方法はありますか?
7デフォルトの名無しさん:04/07/24 16:42
>>6
ポータブルな方法で?
if (_iscarry)
scanfを使った書き方が分かりません。
教えてください。
・数値を一つ入力してそれを表示する。書式は"n=数字\n"
・数値以外のものが入力された場合
  ・"quit"が入力されたら終了する。
  ・それ以外の文字列の場合はエラーとその文字列を表示する。
・終了しなかった場合は最初に戻る。
>>9は定番コピペ。スルーシル
>>9
www.pg-source.net/c/bin/shukudai-wa-zibunde-yare/
12デフォルトの名無しさん:04/07/24 16:47
9に対するレスも定番化すると良いね。C++スレのあれみたいに。
>>8
error C2065: '_iscarry' : 定義されていない識別子です。
>>9に応えられないこのスレはレベルが低いですね。
>>14も定番コピペ。スルーでよろ
>>6-8, 11
`_iscarry' undeclared (first use in this function)
どうしたらいいんでしょうか?
17デフォルトの名無しさん:04/07/24 19:03
定義してください
文章を比較するソフトを作りたいのですが、いろいろやってみたものの
どうもうまくいきません。
例えばこんな感じです。
[問題文]
掲示板へはIDだけが表示され匿名で投稿することができますが、この匿名性は個人の行為、
[自分が打った文]
掲示板へはいdだけがひょうじされ匿名で投稿することができますが、この匿名性は個人行為、

この間違った部分

○ID ×いd
○表示 ×ひょうじ
○(個人)の(行為) ×の(がない)
を抜き出して、元の問題文の長さ - 間違えの数 = 正解した文字数
みたいなソフトを作ろうとしていますが、何かよい方法はありますか?
>>18
awkやperlにデータ渡して受け取る。
>>19
Cだけで作ることは出来ますかね?
21デフォルトの名無しさん:04/07/24 19:35
>>前スレ956
charが8bitの処理系では

unsigned char c = 255;
c = c + 1; //undefined

c = 255;
c++; //0

c = 256; //undefined

何でそうなるのかは自分で考えろ
>>20
普通にできる。
>>6
直後にインラインアセンブリで書けばいいみたい
http://www.coara.or.jp/~tkuri/D/026.htm
24デフォルトの名無しさん:04/07/24 21:08
>>20

Cでできないことは何を使ってもできない。

>>21
もう解決したのでいいです。
25デフォルトの名無しさん:04/07/24 21:36
>>24
おまえは過去ログを全部読んで
解決済みでないことを毎回確認してから発言してろ

それから自分さえ解決してればいいって考えは改めろ
26デフォルトの名無しさん:04/07/24 21:39
>>25
大変ですね、ボケさんも。
数値計算でiで回したとき(N:適当な変数)
(1+(9999/N)*i)/1000 と 0.01+99.99/N*i だとどっちが小数点の精度
がいいですか? あとどっちが計算早く終りますか?
>>18
その仕様の通りに作ればいいだけだろ。
なにが問題なんだ?
>>27
試せよ
>>27
つか、値が違うのはいいのか?
31デフォルトの名無しさん:04/07/24 22:18
実測しない香具師: アフォ
考察できない香具師: 低脳

どっちにも該当するな
>>27
そんなことやる前にさ、俺に女子高生を紹介してくれ。
>>32
>>27の同級生なら幼女にならないか?
>>31
喪前は後者ということだな。
3527:04/07/24 22:55
私は女子高生です。
私は好蕎生です
私は死兆星です。
私はぬるぽです。
39デフォルトの名無しさん:04/07/25 11:36
> c = c + 1; //undefined
> c++; //0

これはウソ。

ヒント:
では c += 1; だとどうなるでしょう?
40デフォルトの名無しさん:04/07/25 12:05
>>39
誰もそんなこと言ってねえじゃん
自分で言いだしたことをウソと言うのを止めはしないが
ギャグとしては三流だよ つまんねー
>>39
ぼけ先生ウザイよ

>>40
ぼけ先生をバカにするな!
>>41
バカにしてるのはお前だ、ぼ­け。
抽象データ型とはどういったものを指すかおしえて。
>>21
charが8bitじゃない処理系なんかあるんですか?
>>44
探せばあるだろ
コンピュータの歴史をなめるなよ?
ANSI Cではsizeof(char)=1ということになってなかったっけ
CHAR_BIT
>>46
で、ANSI-Cの話を持ってきて何が言いたかったん?
49デフォルトの名無しさん:04/07/25 17:17
/*
  チョンを殺すプログラム
*/

#include <stdio.h>

int main(void)
{
int a;
int i;

do{
printf("何回殺るか入力してください"); scanf("%d",&i);
}while(a <= 0);

for(i = 0, i < a. i++)
printf("テポドンの攻撃!チョンは死んでしまった!\n");

return(0);
}
50デフォルトの名無しさん:04/07/25 17:17
>>49
14行目にエラー
>>44
16ビットならそう珍しくない。(いや、今となっては珍しいか。)
9ビットもあるらしいが、俺は知らない。

>>46
確かにsizof(char) は1だが、それとcharが何ビットかは関係ない。
43にレスがつかないあたりにこのスレのレベルの低さがよく表れているな
>>52
そう思うなら自分が答えてあげなよ
どーでもいいんだけど、コメントはどうつけてる?

1.
/*
ふー
ふー
ふー
*/

2.
/* ばー
  ばー
  ばー */

3.
/*
 * ほげ
 * ほげ
 * ぼげ
*/

4.
// ふが
// ふが
// ふが
適材適所
4はエラーが出る
C99ならでない。にしても質問下らなさ杉だな。
>>56
C99でなくとも、大半のコンパイラで通る
ハァ?C99とか大半とか関係無い。俺のコンパイラはエラーが出る。
参考までに、どこのヘタレコンパイラを使ってるのか教えてくれ
>>60
当時の仕様に正しく対応したコンパイラをヘタレと呼ばれる筋合いは無い。
62デフォルトの名無しさん:04/07/25 18:02
C99 準拠と謳ってない製品、特に 99 年以前の製品で通ったら
それは例え C99 で認められていてもあくまで非標準拡張
なぜなら、その処理系を C99 として使うことなどないからだ
C99に対応してたら動くはずだが?
>>61
で、何?
LSI Cとかそうだよな
66デフォルトの名無しさん:04/07/25 18:44
GNU C Library の stdio.h ヘッダファイルを覗いてみての疑問。

変数の前にアンダーライン(_) が1つついてたり2つついてたりするんだが
これってどういう意味があるの?
ユーザーが使うものと被らないように
>>66
だからお前は
真似して付けるなよ。
エラーを直してください。
#include<stdio.h>

main(){

int i,j; /*配列の宣言*/
double result[1000][1000];
double a1,a2;
/*a1とa2を掛ける*/
for(i=1;i<=9;i++){
a1 = 3 + 0.1*i;
for(j=1;j<=9;j++){
a2 = 2 + 0.2*j;
result[i][j]=a1*a2;
}
}

/*表示処理*/
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
printf("%2d ",result[i][j]);
}
printf("\n");
}

}
>>69
どあほ。エラーメッセージくらい見れ。
7169:04/07/25 19:05
アプリケーションエラーなのです。
- double result[1000][1000];
+ double* result;
+ result = (double*)malloc(sizeof(double)*1000*1000);

- result[i][j]=a1*a2;
+ *(result + i * 1000 + j)=a1*a2;

- printf("%2d ",result[i][j]);
+ printf("%2d ",*(result + i* 1000 + j));

343597385 1546188226 1374389535 -171798692 -1717986918 1030792152 -515396076 -2061584302 687194768 
-1030792150 -343597384 171798692 515396075 858993460 1202590844 1546188227 1889785611 -2061584301 
1889785610 2061584301 -1030792151 1202590842 -858993460 1374389535 -687194768 1546188226 -515396075 
515396076 -2061584302 2061584302 1889785610 1717986918 1546188227 1374389534 1202590843 1030792151 
-858993458 -858993459 858993459 -1717986919  0 1717986919 -858993459 858993459 -1717986918 
2061584303 343597384 -343597383 -1030792151 -1717986918 1889785611 1202590843 515396076 -171798691 
343597384 1546188227 -1546188226 -343597384 858993460 2061584303 -1030792151 171798692 1374389536 
-343597384 -1546188227 1546188226 343597383 -858993460 -2061584302 1030792151 -171798692 -1374389535 
-1030792151 -343597384 343597384 1030792151 1717986918 -1889785610 -1202590843 -515396076 171798692 

こんなのでいいの?
教えて君が来た
7472:04/07/25 19:10
よくみると
- double result[10][10];
+ double result[1000][1000];
だけで良い気もする。
7572:04/07/25 19:10
逆だ。
- double result[1000][1000];
+ double result[10][10];
7666:04/07/25 19:21
>>67-68
レスありがとうです。しかし、分かったような分からないような・・・


もう一回変数名のスコープ(有効範囲)についてきちんと勉強してみるよ
>72
resultをちぇっくしないと69とどっこいどっこいでわ
>>77
スタック溢れで落ちてるから、そこを直しただけ。アルゴリズムの問題は知らない
7966:04/07/25 19:25
>>67-68
レスありがとうです。しかし、分かったような分からないような・・・


もう一回変数名のデータ長(バイト数)についてきちんと勉強してみるよ
>72
ぬるぽをちぇっくしないと69とどっこいどっこいでわ
じゃ、こんなとこで。
- result = (double*)malloc(sizeof(double)*1000*1000);
+ if (!(result = (double*)malloc(sizeof(double)*1000*1000)))exit(1);
>81
ぐっじょぶ
- if (!(result = (double*)malloc(sizeof(double)*1000*1000)))exit(1);
+ ファイル始め→#define NULLPO NULL
  if ((result = (double*)malloc(sizeof(double)*1000*1000)) == NULLPO)exit(1);
>83
べりぐっじょぶ
8566=81:04/07/25 19:40
>>81を書いてから考えてたんだけど、main関数内ではexit(1)とreturn 1のどっちが
いいんだろう。manによるとexitは引数&0377を親に返す、となってる。returnでも
同じ結果になるのかいまいち分からない。
#そういえば、exitのmanを調べてみるとstdlibになってるな。
return文にしておけば、コピペして使えるから吉
動作が予期できないエラーに対処するにはexit()
>>81,83,72
キヤストすんな ぼ○け
スタックオーバーフローは直ったものの、意図するものは九九の表示であるため
自力解決を諦め、http://pc5.2ch.net/test/read.cgi/tech/1089974839/926 (ようかんマンがC/C++の宿題を片付けて見せます 28棹)
に行った>>69が居”た”スレはここですね。
>>87
今の仕様ではキャスト不要になってるけど、個人的にはあったほうが見通し良いと思う。
メモリ割当先ポインタの型が何だったかのちょっとしたリマインダになるし。
90デフォルトの名無しさん:04/07/25 20:43
環境にも夜と思うのですが、一般的には、メモリ確保って負荷は大きいものなのでしょうか。
(なるべく一度mallocしたものは必要なくなってもプールしておいて、使い回したほうがいいのでしょうか。)

いや、なんかmallocの負荷を気にしすぎて、ヘンテコなコードになっているものを見かけてしまったので、
普通にmalloc&freeすれば良いのになぁ、と思ったもので。
確かに昔はmallocはコストが高い処理だ、ということをよく聞いた気がするのですが…

Javaのものなのですが、こんな記事を見かけました。
http://www-6.ibm.com/jp/developerworks/java/040312/j_j-jtp01274.html

できれば(mallocはコストがかかる、といったような)実装に依存したことより、
実際の処理の流れに即したコーディングがやりたいなぁ、と思っています。
>>59
> ハァ?C99とか大半とか関係無い。俺のコンパイラはエラーが出る。

世界の圧倒的多数の C コンパイラではサポートされていません。
だそうですが。
http://jt.mozilla.gr.jp/hacking/portable-cpp.html#no_cpp_comments_in_c
>>91
テンプレートを使わない事を薦めるようなヘボガイドを信じちゃいけない。

つーか、古いんだよソレ。98年じゃん
>>90
環境にもよるが、一度mallocしたものは、freeしてもOSには返さないないため、
次回のmallocが高速、ということは実際にある。
自前でプールして使いまわすのは、管理が複雑になるだけ。
それでもそのほうが速い環境で、そうしないと使い物にならないアプリなら、そうすればいい。
9491:04/07/25 20:51
すみません。上のは誤りです(引用文もつけてしまいましたが…)
下のものに訂正させてください。

======

>>58
> >>56
> C99でなくとも、大半のコンパイラで通る

世界の圧倒的多数の C コンパイラではサポートされていません。
だそうですが。
http://jt.mozilla.gr.jp/hacking/portable-cpp.html#no_cpp_comments_in_c

>>84
「大半」とか「世界の圧倒的多数」なんて単語で議論するな。
嵐か?
>メモリ確保
スタックから取る場合は気にしないが、ヒープから取る場合は早い者勝ち。
一回取れても二回目に失敗する可能性有り。
世界の圧倒的多数のコンパイラの合計シェアを聞きたい物だが。
>>96
根拠は?
>>90
仮想メモリが存在しなかったりメモリの量がよほど制限されていない限りは
最初から小細工に走るべきではないよ。
>>91
おかしな挙動をするコンパイラの例としてMicrosoft Visual C++ 1.5が数回引き合いに出されてるんだが、
こいつらは永遠にWin3.1をサポートしていく気なんだろうか。あまりに古い物、あまりに挙動なおかしなものを
切り捨てず、プログラマ側をおかしな挙動にも対応出来るようにするといくら時間があっても足りないのは
自明だろうに。
10196:04/07/25 21:10
>98
どんなスレッドがどれだけ走ってるか把握できるならおけ。
把握できないなら、失敗してもいいものと失敗しては困るものを区別する。
>100
だからこそ、オープンソース化後ほとんどのコードが書き直され、それでもまた
どうしようも無くなって(Phoenix->Firebird->)Firefoxが分離した、と。
> Mac では boolean 式での代入について問題がある。
> Mac でウォーニングを引き起こすまた一つのコードの例を示します:
> ウォーニングを出す例:
>
>  if ((a = b) == c) ...

              n                 n.   
              (ヨ )    /\___/ヽ  ( E) 
              | |   /    ::::::::::::::::\||
           三\ ⌒  ,,-‐‐   ‐‐-、 .::|/,,/
.                 ̄|  、_(o)_,:  _(o)_, :::|/
            三     |    ::<      .::|  うわあああああああああああああああ
(省略されました。続きを読むにはここを押さないでください)
                      ̄ ̄
>>101
Thx
105デフォルトの名無しさん:04/07/25 22:40
ちなみに、C99にかぎらず、
C99対応していない古いコンパイラーでも大概さぽーとされてるよ > //
89年ごろから規格外の拡張としてサポートする処理系が増えた。
1000以下の完全数を求めるプログラムなのですが、うまくいかないです。
ご教授お願いします。
#include<stdio.h>
int main(void){
int x,y,wa;

for(x=0;0<=x && x<=1000;x=x+1){
for(y=1;0<=y && y<=x;y=y+1) {

if(x%y==0)
wa=wa+y;
if(x*2==wa)
printf("kanzensuu:%d",wa);
return(0);
}
}
}
えーと、宿題スレ行き?
完全数がわからない厨はどうすれば?
とりあえずぐぐってみる
宿題スレで解決しといた。完全数とは・・・ぐぐってトップに出るから説明いらないな
>>109
ぐぐって二番目と三番目のが読みやすかった
完全数の問題ですが、スレ違いだと思い宿題スレのほうで
おしえていただきました。
112デフォルトの名無しさん:04/07/25 23:23
113デフォルトの名無しさん:04/07/26 06:37
っていうか

> それは例え C99 で

漢字ぐらいちゃんと書けよ ぼけ
っていうか

> ぼけ

漢字ぐらいちゃんと書けよ 呆け
ボケは兎も角、「喩え」は「例え」じゃないな。
木瓜
僕毛
棒毛
( ゚Д゚)ポケー       納期))))
>>119
志村、納期納期!
121デフォルトの名無しさん:04/07/26 15:23
すみません、fopen を使ってローカルにあるファイルを開くことは
できたのですが、ネット上に存在するファイル(http://〜)は開けない
のでしょうか?稚拙な質問ですみません。えらい人教えて下さい。
>>121
もちろん、開けません。
URL で指されたリソースを取ってくる手段はプラットフォームによって
イロイロなので、キミが使っているOSや環境のスレで再質問どぞ。
URL/URIを指定してストリームを開ける実装なら出来るんでは?
そんな環境は聞いた事無いけど。
124デフォルトの名無しさん:04/07/26 15:36
ファイルの変わりにソケットを開いてください
fopenがいわゆるディスク上のファイルを開く、と規定されているわけではないと思う。
だからどうした
C言語をやり始めようと思ってる工房ですが
とりあえずコンパイラって事で探してるんですが
どれがオススメでしょうか
OSはXPhomeです
将来はネトゲで使えるtoolでも作ろうと思ってます(まぁ慣れる頃には恐らくゲームやめてますが
>>128
無償のBorland C++ Compiler使うことにします
>>129
激安で買えるVisual Studio.NET theSpoke Disc.6
http://pc5.2ch.net/test/read.cgi/tech/1090683053/
無償>>>>>>>>激安
時間無駄にするくらいなら、はじめから激安買っといたほうがいいぞ。
133デフォルトの名無しさん:04/07/26 19:44
無償=初心者サポート極小
文字列比較の関数が返す論理値って明らかに逆なような気がするんですがあれは問題ないのですか?
>>133
サポートなんかいらんだろ
>>134
負 string1 が string2 より小さい
0 string1 と string2 は等しい
正 string1 が string2 より大きい
だから問題なし
>>135
ここで聞くもんな・・・はぁ。
>>137
便利な世の中になったことに感謝しよう
0って偽を意味するのが普通でしょ?

等しければ0を返す→偽

ってどう考えてもヘンだろ?
「等しいか」ではなく、「大小」を比較するんだからしょうがない。
>>139
a,bが等しい文字列の場合、

(strcmp(a,b) == 0)

は真ですが?
>>139
あのさ
mainがreturn 0;を返す事が多いけど、これは偽を返してんの?
return 0を返す→0を返す
真なら0を返すのが自然?1を返すのが自然?
>>144
場合による、つーかプログラマの勝手。
>>145 プログラマの社会的地位が低い理由がわかったような気がします。
1を偽、0を真とする論理を負論理と言う
>>146
君の、その超飛躍ロジックを解明したい気もする。
MSDNでも読んでみろ。成功時に0を返す関数なんぞいくらでもある。
ついでに言えばBOOLのくせに複数の値を返すものだってある。
結局は、ドキュメントを読んでそれに従えってことだよ。
お上には絶対服従
論理・理論など入り込む余地もない
奴隷の思考様式そのものだなw

従順な奴隷が多いほど搾取層は嬉しいw
おまいらヘンに知恵をつけるなよwww
何時の間にここにはこんなにガキが増えたの?
>>150
無職が言っても全く説得力無い。
成功時に0返さないと返り値では失敗要因を区別できないと思うんだが…
155150:04/07/26 21:33
コーダを使う立場なんですが・・・

思考を放棄した奴隷の奇妙な生き様に驚愕の毎日です・・・
>>154
こんな池沼がプログラミング出来る時代なのか・・・。
>>155
お前の脳内部下はきっとお前のあまりの無能っぷりにうんざりしてるぞ
>>157
脳内上司のアナルでも舐めてろよw
>>156
「返り値で」どうやって区別するのか教えてくれ。
#define TRUE 0
#define FALSE 0
#define SLAVE me
>>159
switch (fuck_off()) {
case 0:
printf("bar");
break;
case 1:
...
...
case 9999:
printf("OK");
}
とか、いくらでも方法はあるだろ
脳内に虫が沸いてる奴隷が書いたコードに虫が沸かないわけがない
if(func()) /*成功時*/
または if(!func()) /*成功時*/
はさせてくれないのね
#ifdef _WINBASE_
#define remove(FileName) (!DeleteFileA(FileName))
#define rename(OldName, NewName) (!MoveFileA(OldName, NewName))
#endif
165デフォルトの名無しさん:04/07/26 21:48
>>122-125
>>121です。お返事ありがとうございました。
必死で別の方法を探してみようと思います。
“時と場合によって”真偽値が反転するって素敵やん?w
167デフォルトの名無しさん:04/07/26 21:49
>>139
お前の望み通り
等しい → 非0
等しくない → 0
だったとしたら、
等しくないと判ったときに
どうするの? 何ができるの?

脳内管理職が荒らしてますが無職童貞君ですのでほうっておいてあげてください。
>>167
キミの自由だよwww
キミならなんでもできるさwww
あーあ・・・返せなくなったからって・・・・
まあちなみに
“等しい → 非0”
こういうことを恥ずかしげも無く書いちゃうところが香ばしさ満点なんだけどね
ふむ。ここまでの議論をまとめると、

>文字列比較の関数が返す論理値は逆だが問題ないのか?
↑文字列比較関数は「論理値」を返さない。

ということで、発端が間違っているわけです。
スルメを見てイカが解るか

議論の内容がズレてるのに正しい答えが出るはずがない
174デフォルトの名無しさん:04/07/26 21:57
イカにも・・・
>>171
真偽判定ってのは
hoge == TRUE
ではなく
hoge != FALSE
ですべきものなんだけど、その辺分かってる?
>>175
それは171の意図を読み取ってないね。
>>175
違いをもう少し詳しく説明してくれ
>>176
どこもおかしくないと思うんで、どこがおかしいか指摘して
奴隷カコワルイ
>>178
んー?なんだろうな、と思ったんだが、
等しいということに、非0をあてると決めつけている事を指摘してるのかなあ?
よくわからん。
>>180
等しくない時に0を返すなら、等しい時に非零以外の何を返せばいいのよ
等しくない時に0を返すと大小関係が分からなくならん?
素人ばっかだなここ
結局 strcmp ってさ、 qsort のためにある関数でしょ?
>>183
是非、上級者らしい発言をよろしく。
186デフォルトの名無しさん:04/07/26 22:26
改めて言うこともあるまい
>>182
そういうのは今ごろ脳漿ブチまけて死んでるであろう>>139に言ってやってくれ。
>>134
おみゃーはこれつことけ。

#define strequ(x,y) !strcmp(x,y)
189デフォルトの名無しさん:04/07/26 22:36
言語仕様はそのユーザーの思考を規定する。
boolも例外もないからCゲンガーの戻り値に関する認識は恐ろしくでたらめだな。
そういうことは、でたらめの意味を調べてから書けよ。
136は理解できないのか、意図的にスルーしてるのか。
おまいらネタが好きだな。
戻り値に関する認識は恐ろしく場当たり的

ならいい?

136「を」
上を向〜〜いて歩こ〜〜〜〜う
ってお上りさん?
でたらめ【出たら目】
T  事実に合わないことや首尾一貫しないことを出まかせに言ったり したり すること。
用例・作例
―を言う
U ―な ―に いいかげんで、信用の出来ない様子。
用例・作例
―な男

Shin Meikai Kokugo Dictionary, 5th edition (C) Sanseido Co., Ltd. 1972,1974,1981,1989,1997
しまった。誤爆った。
197デフォルトの名無しさん:04/07/26 23:04
>>154

かえりち!
198デフォルトの名無しさん:04/07/26 23:07
> 0って偽を意味するのが普通でしょ?
> 等しければ0を返す→偽
> ってどう考えてもヘンだろ?

strcmpは「等しくない」ことを調べる関数なんだから、
「等しくない」が偽になるとき(つまり等しいとき)に0になっても
ちっともふしぎではなかろう
strcmpの仕様がおかしいんだよ。かなり変態的。
しかしどんなにおかしかろうがCを使う以上受け入れざるを得ない。
CMP R0, R1
R0=R1のとき、R0<R1のとき、R0>R1のとき、
それぞれについてZフラグとCフラグの挙動について述べよ
変態的って、等しいかを見るためだけの関数じゃないんだから。
ここは何が変態的で何が変態的でないかの
区別すらつかなくなった変態的な>>200がいるスレですね。
203デフォルトの名無しさん:04/07/26 23:14
strcmp というか、 cmp(comp) ってのは要するに「引き算」だからな。
a-b=0
なら、
a=b ってのと同じだよ。
それの文字列版ってだけだ。
音読してみよう。
「C言語なら俺に聞け!」
もう一度。
「C言語なら俺に聞け!」
はい、その調子で100回音読。
Compareの意味がわからない池沼がいるのは
このスレですか?
int cmpfunc(a, b)
{
  return(a - b);
}

これだけのことでしょ?
207デフォルトの名無しさん:04/07/26 23:22
>>206
偽レトロ
208デフォルトの名無しさん:04/07/26 23:27
equal()って名前の関数だったらきっと等しいときにtrueだろうけど、
cmpなんだから等しかったらfalseでしょう
>>206
値によっては結果が逆になるのがわからない低脳?
0とfalseは意味合いが違うだろ
お前らってほんと馬鹿だな
ぼけ先生登場
いつまでネタやってんだ?秋までか?
いつまでやってんだ
おちついて >>136 見ろ
>>136自演うざい
このネタだけで100もいくとは異常だ
216デフォルトの名無しさん:04/07/27 00:12
コンペアと聞いて工場でものを運ぶあれを思い浮かべた人は俺だけではないはず。
217デフォルトの名無しさん:04/07/27 00:19
再帰関数で塗りつぶし(迷路探索)プログラムを作るとすぐにstack over flowになるのですが、
いい方法はありますか?

#include <stdio.h>

int array[10000][10000]; /* 0:空白、1:障害物、2:塗りつぶし */

void set_array(void)
{
  /* arrayに0と1の迷路パターンをセット、スタートが(0,0)、ゴールが(9999, 9999) */
}

void fill(int x, int y)
{
  if (x<0 || x>=10000 || y<0 || y>=10000 || array[y][x]!=0)
    return;
  array[y][x] = 2;
  fill(x-1, y); fill(x+1, y); fill(x, y-1); fill(x, y+1);
}

int main(int argc, char** argv)
{
  set_array();
  fill(0, 0);/* スタックがあぼ〜ん */
  if (array[9999][9999] = 2) printf("解けます。\n"); else printf("解けません。\n");

  return 0;
}
>>209
例を挙げてください。
>>217
> int array[10000][10000]; /* 0:空白、1:障害物、2:塗りつぶし */
まずはmallocに
>>219
ヤバいよ! コイツヤバいよ。
>>218
cmpfunc(INT_MIN,INT_MAX);
>>219
#include <stdio.h>
#include <malloc.h>

int* array;

/* 中略 */

int main(int argc, char** argv)
{
  array = (int*)malloc(sizeof(int)*100000000);
  set_array();
  fill(0, 0);/* スタックがあぼ〜ん */
  if (*(array+99999999) = 2) printf("解けます。\n"); else printf("解けません。\n");

  return 0;
}

で、array[y][x]を*(array+10000*y+x) に変える、という感じですか?
それにしてもスタックが・・・。
>>217
再帰すんな。
224217=222:04/07/27 00:30
>>223
再帰しないで書くと複雑すぎで死亡しますけど・・・。
225223:04/07/27 00:31
これじゃ不親切すぎるかな?

状態を保存する変数を確保しておいて、ループで処理進めろ。
それで少なくともスタック消費は無くなっからよ。それでだめ
ならまた考えるべし。
>>218
a=2147483647
b=-50000000

※1byte=8bit、sizeof(int)==4の環境を想定
>>226
それが評価される段階まで行く時点でバグ入り
228224:04/07/27 00:36
>>225
再帰関数で自動的に行われているスタック処理を手書きで行うということですね。
その説明で分かりました。ありがとうございました。
>>222
キャストすんなっつってんだろ ぼけ
230222:04/07/27 00:51
>>229
キャストしないとWarningが出るんですけど
今、他のスレでvoidのレスを見てて思ったんだが

ここに来てるぼけ先生はひょっとすると本物のvoidじゃないのかと


こんな書き口が
120 名前: Kusakabe Youichi 投稿日: 02/01/17 08:16

In article >>107, ぱくぱく名無しさん/107 wrote:

> 今朝9時頃にメンテナンスがあったみたいだ
> アクセス制限かかったのかな?

こわがりすぎー
>>231
あなたは本当のvoidを知らなすぎです。
>>230
どんな警告レベルにしてんだよ。
デフォルトレベルで
void * → int *
の変換にいちいち警告出すようなコンバイラなんて棄てちまえ。
>>232
しばらく前BeckyのMLで暴れて排除されたって話きいたなー
236230:04/07/27 01:27
>>233
その警告を無視したらハードディスクの内容があぼ〜んした苦い経験があるので、
キャストは今でも付けてます。
付けない方が見やすいのかも知れませんけど・・・。
237デフォルトの名無しさん:04/07/27 01:40
>>231
「こわがりすぎー」は
すでに「2ch用語辞典」にも載ってるぞ!
>>236
見やすいとか見やすくないの問題じゃない。
藻前はプログラムングにはむいてないのかもしれないな。
239236:04/07/27 01:51
>>238
これでも一応専門なんですけど・・・。

それにしても何故そこまでキャストを禿しく嫌うんですか?
240デフォルトの名無しさん:04/07/27 01:52
無駄なキャストはするな。

キャストしたせいで、エラーでなくなってバグがかくれることもある
241デフォルトの名無しさん:04/07/27 01:54
>>240
キャストで隠れてしまうバグもありますけど、キャストしなければバグを防げるんですか?
243デフォルトの名無しさん:04/07/27 02:06
> キャストしなければバグを防げるんですか?

はい。
そうですか・・・・・・。
キャストは警告を消すためのものではない。
246デフォルトの名無しさん:04/07/27 02:14
キャストしないで
cl -Wx hoge.c
すれば、エラーとなりコンパイルできないので、
「バグを防げる」
247デフォルトの名無しさん:04/07/27 02:15
248デフォルトの名無しさん:04/07/27 03:15
この人のプログラムは参考になったってのある?
ちと聞きたいのですが、for文で条件を変えて繰り返しの数値計算をしててcsvでファイルを保存してるのですが、条件を変えたときごとにcsvのファイル名を変えて保存することは可能ですかね?
例えばfor(i=0;i<10;i++) としたとき'ファイル名 1.csv','ファイル名 2.csv','ファイル名 3.csv'・・・のように。
もしご存知ならお願いします。
可能です。
>>251
ぬぉ、まじですか?!
もうちょいがんばって方法探して見ます〜
ありがとうございます♪
#include <stdio.h>
int main()
{
char filename[100];
char name[]="ファイル名";
int i;
for(i=0; i<10; i++)
{
sprintf(filename,"%s %d.csv",name,i);
printf("%s\n",filename);
}
return 0;
}
#include <stdio.h>

#define NUMBER_OF_FILES 10

int main()
{
char filename[100];
char name[]="ファイル名";
FILE *fp[NUMBER_OF_FILES];
int i, openfiles;

openfiles = 0;
for(i=0; i<NUMBER_OF_FILES; i++){
sprintf(filename,"%s%d.csv",name,i);
if((fp[i] = fopen(filename, "wb")) != NULL) openfiles++;
}

if(openfiles == NUMBER_OF_FILES){
for(i=0; i<NUMBER_OF_FILES; i++){
fprintf(fp, "a,b,c,d,e,f,g\n");
}
}

for(i=0; i<NUMBER_OF_FILES; i++){
if(fp[i] != NULL) fclose(fp[i]);
}
return 0;
}
fprintf(fp, "a,b,c,d,e,f,g\n");

fprintf(fp[i], "a,b,c,d,e,f,g\n");

orz
おぉぉぉ(ノ´ω`)ノ
↑のプログラムを実行して見たら見事にやりたかったことができましたー
253〜255の方は全員同一の方とみていいんですかね?もし違ってたらごめんなさい。
おかげさまで助かりました〜
まさかこんなすぐに方法まで教えてくださるとは。。。
ほんとありがとうございました〜
参考にさせてもらいます♪
>>217
単にオーバーフローを回避したいだけなら独自のスタックを用意する。
高速化したいなら上下左右に点単位でスタックに積むんじゃなくて
横方向の線単位で積んでいく。

void fill(int x, int y)
{
 int i, x1, x2;  
 get_fill_area(x, y, &x1, &x2); // 塗りつぶせる領域を左右方向に走査する。x1<=x<=x2
 for(i=x1; i<=x2; i++)
  fill_dot(i,y); // 実際の塗りつぶし処理
 for(i=x1; i<=x2; i++){ // 上下の隣接する線を走査してfillを呼ぶ
  if(need_to_fill(i, y-1)) fill(i, y-1);
  if(need_to_fill(i, y+1)) fill(i, y+1);
 }
}
>>217
コンパイラ・リンカのマニュアル読め
どこかでスタックサイズを調整できるはず
http://pc5.2ch.net/test/read.cgi/prog/1066236251/
今、このスレの141がちょっとした人気者になってます
>>258
10000^2=100Mピクセルの迷路は調整しても積めないだろ
261デフォルトの名無しさん:04/07/27 11:22
>>258
9x系のWindowsならそれでできるが、
NT系Windowsや最近のUnix系OSは、
足りなくなりゃ自動で制限値までは拡大するだろ。
だからやるならコンパイラオプションじゃなく、
システムの設定で使えるメモリを拡大しろ。
>>261
しないよ
263C初心者:04/07/27 11:41
Cの何かいい書籍はありませんか。

基本から載っていて、詳しく書いてあるもの。

いい物を知っていましたら、ぜひ教えてください。おねがいします
>>263
>>1の過去ログ置き場に書籍サイトへのリンクあるよ。
つくってわかるC:D
266C初心者:04/07/27 11:43
>>264 ありがとうございます
無知な>>262が居るスレはここですか?
>>267
デフォルトで1MB以上取れるコンパイラなんて知らないけど
どんなOSとコンパイラならできるの?
ろくな理由も書かず無知認定をしてしまう馬鹿な>267ならいます。
>>267
exe に埋め込んだ最大スタックサイズよりスタックが増えることなんて
あったっけ? 初期スタックサイズじゃないよ?

はげしく突っ込まれる >>267 の明日はどっちだ。

>>268
Windows だったら、リンカで指定できる。VC++ の LINK.EXE とか、GNU
ld とか。

どっちみちスタックサイズは関係ないんだけどな
>>272
いや >>217 は再帰してるから。
cl /F10000000
とか
>>268
スタックサイズの上限変えて実行すればいいだけでそ。
デフォルトで1Mとか決ってるのかどうか知らんけど。
現在C言語の勉強をしているのですが、一つ疑問点が出てきました。

まず、前提条件として、ソースファイルが複数あります。 
その中のメイン関数の書かれているソースに構造体を宣言し、
他のソースファイルにある関数へ参照渡しをしたいんですが
うまくいきませんでした。
そこで、そのファイルにも構造体を宣言したところうまくいったんですが、
もしソースファイルがたくさんあったら非常に面倒なことになると思います。
そこで質問なんですが、メイン関数にのみ構造体を宣言し、
他のソースファイルでもその構造体が使用できるようには出来ないんでしょうか?
>>276
ヘッダという便利なものがある。
posix のプロセス間のデータ共有に使える関数は shmget -> shmat 系以外に、
何かありますか?
int A[10][20][30], B[10][20][30];
3次元配列でAからBへのコピーはどのようにやれば良いのでしょうか?
280デフォルトの名無しさん:04/07/27 13:53
>>279
memcpy(B,A,6000*sizeof(int));
memcpy(B, A, 10 * 20 * 30 * sizeof(int));
282280:04/07/27 13:54
#include <string.h>を忘れずに。
>>279
memcopy()
284279:04/07/27 13:54
>>280
素早い回答サンクスです!
最悪、構造体にしようかとも思ってました・・・
サスガ!
285276:04/07/27 14:13
>>277
どうもありがとうございます。
ヘッダに宣言してしまえばよかったんですね。
287デフォルトの名無しさん:04/07/27 14:58
>>268
手元のメモリ128MB+512MBのマシンでスタック領域500MBくらいまでいけたんで、
がんばればなんとかなるんじゃない?
特定のアルゴリズムの為だけにむやみに
スタックサイズを増やすという発想はどうにも馴染めないな
289287:04/07/27 15:40
処理系によってはできないことはないというだけで、
スタック食いつぶすやり方を勧めるわけじゃない。
290デフォルトの名無しさん:04/07/27 16:07
DLLの使い方や作り方の書いてあるHPを教えてください。
291デフォルトの名無しさん:04/07/27 16:08
292デフォルトの名無しさん:04/07/27 18:01
加減の+、-じゃなくて、単項式の+、-
ってなんですか?
突然ですが、C言語の欠点てなんですかねぇ・・・
利点としては汎用性や可読性の高さをあげられるんですが、
どうしも欠点っていうものが見えてきません。
まだ、C言語を習ってからあまり時間がたってないからかもしれませんが、
心当たりのある方、宜しくお願いします。
領域破壊を容易に引き起こす
プログラマの技量によってとんでもない被害を引き起こす
>よってとんでもない被害
屋根が吹っ飛ぶとか?
アホみたいに1行に詰めたがる奴とか居るからな。
>>292
a = -3;
b = +3;
の+、-。
>>293
・利用者によるばらつきがおおきすぎ。
・あまり金にならない。
>>295
鼻から悪魔が出る事も。
>>293
・多くの宗教論争を引き起こす
・ぬるぽ
302デフォルトの名無しさん:04/07/27 19:52
>>293
汎用性も可読性も使い手次第で正反対にもなる(現にそれが起きている)
それをあえて「Cの長所」にこじつけるなら自由度の高さってとこだ

俺に言わせればUNIXかぶれの勘違い野郎が跋扈しててC使うたびにうぜー奴とご対面なところか
いまだにインターネットは軍用だから軍の常識が優先だとか叫んでるようなド右翼の相手に無駄なエネルギー使わされるからな
すみません
ようかんマン先生のスレはどこにありますでしょうか?
304デフォルトの名無しさん:04/07/27 20:06
union ABC{
char c;
int i;
};

main(){
union ABC data;
data.c=10;

この時、data.iは不定ですか?
未定義だったと思う。
>>304
4になったよ。
VCで何回やっても4だった。
307デフォルトの名無しさん:04/07/27 20:12
http://roo.to/antiwmac
当サイトで得た情報、コンテンツにより発生した問題の責任 は一切取りません。
もしあな たが著作権協会などの団体、組合の場合は当サイトに入場することは許されていません。
もし入場した場合はISP、ユーザー、など当サイト管理者、使用者、 関係者を罰することはできません。
これはインタネットプライバシー登録番号431.322.12に違反することになります。
>>304
たとえ初期化済みでも
エンディアンによって違うわな。
初期化なしなら言語道断だが。
>>304
領域は同じなんだから
data.iの1バイト目はdata.cと同じ代入した値
残り3バイトは不定


310デフォルトの名無しさん:04/07/27 20:58
txtファイルを読み込んで配列に格納することって可能でしょうか?
初心者本やってるのですが、

double型の変数にscanfするときは %lf を使うのに、
printfするときは%fなのはなぜですか?
312デフォルトの名無しさん:04/07/27 21:01
>>310
具体的にはどういうことをやりたいんですか?
そのままchar型配列に格納することなら1ステップで出来るし、
タブで区切られたデータをchar型二元配列に格納するんだったら数ステップ必要。
313デフォルトの名無しさん:04/07/27 21:03
>>311
入力の精度が高い方がいいからだと思うけど。

というか、scanfを使わない方がいい。
使うなら、fscanf(stdin, ・・・)を使った方がいい。
314310:04/07/27 21:04
2次元配列に格納したいです

12 aa 34 bb
56 cc 67 dd




↑のような内容のtxtファイルを
a[0][0] a[0][1] a[1][0] a[1][1]
a[2][0] a[2][1] a[3][0] a[3][1]



ってことかな?
変態っぽいテキストですね。
316310:04/07/27 21:23
a[1][0]=12
a[1][1]=aa
a[1][2]=34
a[1][3]=bb
a[2][0]=56
みたいにやりたいんですが無理でしょうか?
scanfとfscanf(stdin, ・・・)とで何が違うのか教えてください。
>>309
>1バイト目は

はい不正解。Macでやってみろっつーの。
319デフォルトの名無しさん:04/07/27 21:31
>>313
>というか、scanfを使わない方がいい。
>使うなら、fscanf(stdin, ・・・)を使った方がいい。

ハライテー
320デフォルトの名無しさん:04/07/27 21:31
>>310
初期化だったら
Type array[][4]={{12, aa, 34, bb}, {56, cc, 67, dd}, ・・・}
と書きましょう。Typeはintとかdoubleとか適当に。
あまり数が多いのなら、テキストファイルにデータを書いて読み込んだ方が楽です。
もちろん>>316でも大丈夫ですが大変です。

>>317
意味は同じですけど、scanfはトラブルの原因になるので避けましょう。
どうしてトラブルが起こるのかは分かりません。
321デフォルトの名無しさん:04/07/27 21:33
fprintf(stdout
ゲラゲラ
322デフォルトの名無しさん:04/07/27 21:33
>>319
fgetsでまとめて読み込んでからstrtokで区切るなりsscanfで読み込むなりでもいいけど。
scanfよりはfscanfの方が問題が起きにくいと思うけど?
323とむ ◆TOM/oiT7jE :04/07/27 21:33
WindowsXPとかWindows2000では、
コマンドプロンプトでエスケープシーケンス(文字の色を変えたりカーソルの位置を変えたりするやつ)
が使えないって本当ですか?
324310:04/07/27 21:33
>>320
あらかじめtxtにあるデータを読み込んで2次元配列に格納したいんです
fopenとか使ってやるのでしょうか?
325デフォルトの名無しさん:04/07/27 21:34
>>322
>strtok
核爆
>>313 が あらわれた!
 
 どうする?
 →釣られる
  煽る
  プ
核爆弾?意味分からない
328デフォルトの名無しさん:04/07/27 21:35
>>321
だから、printfは問題を起こさないけどscanfは問題を起こすからfscanfを勧めたんだってば。
もしかして、Cで大きなプログラム組んだ経験浅いんじゃないの?
329デフォルトの名無しさん:04/07/27 21:35
そうび
→やまびこのぼうし

じゅもん
→ザキ
>>311
可変個引数のパラメータでfloatを渡そうとしても勝手にdoubleへ変換されるから。
(scanfではポインタをパラメータに渡しているので、floatとdoubleの区別がつけられる)
331デフォルトの名無しさん:04/07/27 21:37
どうしてトラブルが起こるのかは分かりません。
どうしてトラブルが起こるのかは分かりません。
どうしてトラブルが起こるのかは分かりません。
どうしてトラブルが起こるのかは分かりません。
>>323
そうだけど、代わりになる関数が用意されている。
333とむ ◆TOM/oiT7jE :04/07/27 21:38
>>332
そうなんですか
ありがとうございました
334デフォルトの名無しさん:04/07/27 21:39
>>323
やってみたら使えなかったです。>prompt $e[33m$p$g

>>324
はい。

>>325
だったらチミは何を使うわけ?

>>326
氏ね。
335とむ ◆TOM/oiT7jE :04/07/27 21:40
>>334
そですか どうも
代わりになる関数探し中
336デフォルトの名無しさん:04/07/27 21:40
>>334
scanf
337デフォルトの名無しさん:04/07/27 21:40
>>331
だったら答えてみ。
338デフォルトの名無しさん:04/07/27 21:42
>>335
GetStdHandle
SetConsoleTextAttribute

スレ違いスマソ
339デフォルトの名無しさん:04/07/27 21:42
>>336
/* 前略 */
int x;
scanf("%d", &x); /* ここで"abc"とか入力したら変にならない? */
340デフォルトの名無しさん:04/07/27 21:42
>>337
scanfが使えないアフォがコード書くから
341とむ ◆TOM/oiT7jE :04/07/27 21:44
>>338
おおサンクス
MSDN見てみます
342デフォルトの名無しさん:04/07/27 21:45
343デフォルトの名無しさん:04/07/27 21:46
>>340
scanfの文法くらい分かるけど、
整数入力をする場面で整数でない文字列を入力したらおかしくなる。
プログラムを使う側の入力は予想できないという前提でコーディングする必要があるから
入力によっては問題を引き起こす可能性のあるscanfは使ってはいけない。
344とむ ◆TOM/oiT7jE :04/07/27 21:46
>>342
うお猫でもにあったのか
ありがとう
345デフォルトの名無しさん:04/07/27 21:51
>>343
>scanfの文法くらい分かるけど、

いーや、分かってない。 その証拠に「原因不明のトラブル」が続出!
s/分/解/
ふつー fgets して sscanf だろ?
347デフォルトの名無しさん:04/07/27 21:53
>>343
>おかしくなる

おかしいのはお前の頭
348デフォルトの名無しさん:04/07/27 21:54
>>346
じゃ、ふつー fgetc だけで書け
349 :04/07/27 21:55
>>345
だから、

/* 前略 */
int x, y;
scanf("%d %d", &x, &y); /* ここで"12"とか"12 ab"とか"12 34 56"とか入力すると
                  動作がおかしくなると言っているんだけど。
                  日本語通じる? */

>>346
禿同。
350デフォルトの名無しさん:04/07/27 21:56
>>349
おかしくなってないっつーの!
マニュアル読め このクレーマーめ
351310:04/07/27 21:57
すみません
さっぱりやりかたがわからないんですがヒントだけでも教えていただけないでしょうか?
352デフォルトの名無しさん:04/07/27 21:57
> おかしくなってないっつーの!

頭おかしすぎー
353デフォルトの名無しさん:04/07/27 21:59
>>347
だったら今すぐこれをコンパイルして実行してみ。

#include <stdio.h>

int main(int argc, char** argv)
{
  int x, y;
  scanf("%d", &x); /* ここで"12 34"と入力する */
  scanf("%d", &x); /* ここで"abc"と入力する */
  scanf("%d %d", &x, &y); /* ここで"12"と入力する */

  printf("%d %d\n", x, y);
  return 0;
}

動作がscanfのところで変になるから。
354デフォルトの名無しさん:04/07/27 21:59
>>352
マニュアル読め
355デフォルトの名無しさん:04/07/27 22:00
>>353
おかしくなってない! 仕様を理解しろ
変とかオカシイとかじゃなくて、期待した動作ではないのだろ。
357デフォルトの名無しさん:04/07/27 22:02
>>353
scanfの返却値を定義してみろ
アフォばっかだな
359デフォルトの名無しさん:04/07/27 22:03
> 頭おかしすぎー

日下部圭子すきー
360デフォルトの名無しさん:04/07/27 22:09
あーあ、切羽詰ると日下部か・・・
コバンザメの相手なんてこんなもんだよな
つまらん
#include <stdio.h>

#define MAXBUF 256
#define MAXWORD 4
#define MAXLINE 1024

int main(void)
{
FILE *fp;
char buf[MAXBUF];
char h[MAXLINE][MAXWORD];
int i;

if((fp = fopen("de-ta.txt", "rb")) != NULL){
for(i = 0; i < MAXLINE; i++){
fgets(buf, MAXBUF, fp);
sscanf("%s %s %s %s", &h[i][0], &h[i][1], &h[i][2], &h[i][3]);
}
close(fp);
}
return 0;
}
362デフォルトの名無しさん:04/07/27 22:12
>>355
動作環境:WindowsXP
使用コンパイラ:lcc
コマンドラインプロンプトが">"で、実行ファイル名はscanf.exe
実行結果:
>scanf
12 34←入力した文字列
abc←入力した文字列
34 4210736←表示された文字列

>

細かい仕様はどうなっているか分からないけど、動作はこうなる。

>>357
int x;
scanf("%d", &x);

の時に&x(xのアドレス)が渡されるが、入力値が整数でない文字列だと返戻値は未定義、
だと思うんだけど。
本来の仕様はぐぐらないと分からない。
363デフォルトの名無しさん:04/07/27 22:13
>>362
>返戻値は未定義

ぼけ
またscanfかよ。
スマソ

sscanf("%s %s %s %s", &h[i][0], &h[i][1], &h[i][2], &h[i][3]);
}
close(fp);



sscanf(buf, "%s %s %s %s", &h[i][0], &h[i][1], &h[i][2], &h[i][3]);
}
fclose(fp);
366デフォルトの名無しさん:04/07/27 22:23
>>363
普段使わないから注意してなかっただけ。
で、本当の仕様は?
367デフォルトの名無しさん:04/07/27 22:23
>>362
>返戻値は未定義

調べろつってんだよ
返戻値なんてどこに書いてあった?
未定義とはどの規格の第何条だ?

# 教えて君の中でも最低ランクだな
368デフォルトの名無しさん:04/07/27 22:26
仕様に従って

int x;
while (scanf("%d", &x) != 1) {printf("Retry.\n");}

と書いて、実行して"abc"を入力したら、

Retry.
Retry.
Retry.
Retry.
Retry.
・・・・

となったんだけど。

結論:
scanfは仕様どおりに作動しない。
>>310
バグだらけだった。でたらめUPスマソ
#include  <stdio.h>

#define  MAXBUF  256
#define  MAXSTR  3
#define  MAXWORD  4
#define  MAXLINE  10

int  main(void)
{
  FILE  *fp;
  char  buf[MAXBUF];
  char  h[MAXLINE][MAXWORD][MAXSTR];
  int  i, j;
  if((fp = fopen("data.txt", "rb")) != NULL){
    for(i = 0; i < MAXLINE; i++){
      h[i][0][0] = h[i][1][0] = h[i][2][0] = h[i][3][0] = '\0';
      fgets(buf, MAXBUF, fp);
      sscanf(buf, "%s %s %s %s", h[i][0], h[i][1], h[i][2], h[i][3]);
      if(feof(fp))
        break;
    }
    fclose(fp);
  }
  for(j = 0; j < i; j++){
    printf("[%s] [%s] [%s] [%s]\n", h[j][0], h[j][1], h[j][2], h[j][3]);
  }
  return 0;
}
370デフォルトの名無しさん:04/07/27 22:27
sscanfって初めてみるからぐぐってみて気になったんだけど
ttp://www.wakhok.ac.jp/CC/subsection3.21.3.htmlのサイトの例10みたいなのを構造体じゃなく2次元配列でできるの
つーか310はこれをやりたいんじゃない?
さあーscanf()に対する鬱憤を晴らすなら今ですよー
372デフォルトの名無しさん:04/07/27 22:29
>>368
おまえには仕様への対処方法と
バグへの対処方法の分別も無いのか
あきれ果てた
>>370
あの例題も結局getsしてからsscanfしてるね
>>368
それが仕様ですが何か
scanfは仕様どおりに作動しない。 =~ s/仕様/素人の期待/g
376デフォルトの名無しさん:04/07/27 22:34
>>375
てめーで作れ
377デフォルトの名無しさん:04/07/27 22:34
>>367
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html

返戻値は正常に入力された引数の数。
渡されたポインタに代入される値の定義など存在しない。

>調べろつってんだよ
調べましたが何か?

>返戻値なんてどこに書いてあった?
関数で返却値と言えば返戻値のことだろ。

>未定義とはどの規格の第何条だ?
そもそも間違った入力に対する返却値の定義自体が存在しないのに、第何条なんて言えるわけがない。

># 教えて君の中でも最低ランクだな
プログラマの中でも最低ランクだな。
技量は知らないが性格と人間性は最悪。氏ね。
いま作ったばかりだが?
379デフォルトの名無しさん:04/07/27 22:35
>>368
仕様に従いEOFが戻り続けてますが
380310:04/07/27 22:37
>>369
それでもなんか動かないです・・・
txtの中身は
aa aa aa aa
bb bb bb bb
でいいんですよね?

>>370
まさにそれです
381デフォルトの名無しさん:04/07/27 22:37
>>374
はぁ?
だとしたらANSIだか何だかの仕様そのものに欠陥があることになるんだけど。
そんな動作を必要とするようなプログラムはこの世に存在しないから。
多分、笑うとこ
>>381
自分の理解力が足りないのを棚に上げて、はぁ?ですかプププ
384デフォルトの名無しさん:04/07/27 22:40
>>377
>調べましたが何か?

まったく不十分


>関数で返却値と言えば返戻値のことだろ。

俺用語で話すなセンズリ小僧


>そもそも間違った入力に対する返却値の定義自体が存在しないのに、第何条なんて言えるわけがない。

まったく不十分と言われる理由から目をそむけている限り明日は無い。


>プログラマの中でも最低ランクだな。

おまえがな
技量以前の大事な資質である調査力に深刻な問題がる
385デフォルトの名無しさん:04/07/27 22:41
仕様の善し悪しは別として、仕様通りですね
386デフォルトの名無しさん:04/07/27 22:42
>定義自体が存在しないのに

(核爆
↑うはっ、核爆だってよw
388デフォルトの名無しさん:04/07/27 22:45
で、どの規格の第何条だ? 答えろ
なんだか NG ワードがいっぱい散りばめられているようですね。
390デフォルトの名無しさん:04/07/27 22:51
>>379
scanfで一度エラーを起こすと二度と使えないというのが仕様ですか?

>>383
仕様に対する理解力の問題じゃなくて、そんな仕様を作った動機が理解に苦しむだけ。

>>384
>まったく不十分
そんな仕様は普段必要ないし、C言語そのものの研究をしているわけじゃないから仕様書を読んだことがなくて当然。
仕様書を見れば誰だって分かるだろハゲ。

>俺用語で話すなセンズリ小僧
もしかしてオナニーしたことないの?
オナニーしないとインポになるよ( ´,_ゝ`)プッ

>まったく不十分と言われる理由から目をそむけている限り明日は無い。
リアルタイムで調べられるわけないだろ、ヴォケ。
391デフォルトの名無しさん:04/07/27 22:52
>>388
今調べるから餅つけ。
rewind(stdin);
void main(){}
(・∀・)イイヨイイヨー
395とむ ◆TOM/oiT7jE :04/07/27 23:02
なんだか大変だね
396デフォルトの名無しさん:04/07/27 23:05
>>390
>そんな仕様は普段必要ないし

なるほど、俺規格の第1条かw


>仕様書を見れば誰だって分かるだろハゲ。

いーや、唯一例外で分からないヴォケがいる。


>オナニーしないとインポになるよ( ´,_ゝ`)プッ

悪かったな、去年の10月にセフレと寝たのが最後だよ


>リアルタイムで調べられるわけないだろ

これがお前の致命傷
397デフォルトの名無しさん:04/07/27 23:06
ttp://www.open-std.org/jtc1/sc22/wg14/www/docs/n843.htm

7.19.6.4 The scanf function

Synopsis

[#1]

#include <stdio.h>
int scanf(const char * restrict format, ...);

Description

[#2] The scanf function is equivalent to fscanf with the
argument stdin interposed before the arguments to scanf.

Returns

[#3] The scanf function returns the value of the macro EOF
if an input failure occurs before any conversion.
Otherwise, the scanf function returns the number of input
items assigned, which can be fewer than provided for, or
even zero, in the event of an early matching failure.

>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
>The scanf function is equivalent to fscanf
嘘つき規格。
h[i][0][0]
↑3次元配列?これってどんな機能があるの?
399デフォルトの名無しさん:04/07/27 23:10
>>397
with the 以後を読めアフォ
>>397
The scanf function is equivalent to fscanfの次の行に
argument stdin interposed before the arguments to scanf.
って書いてあるじゃないか
401デフォルトの名無しさん:04/07/27 23:30
scanfにしろfscanf(stdin, ・・・にしろ、一度でも入力に失敗するとそれ以降の入力は受け付けなくなる。
つまりstdinからの入力が終了してしまう。ファイルで言えばEOFに達してしまう。
入力ミスをした時に再入力を促すようなプログラムには不適。
402デフォルトの名無しさん:04/07/27 23:32
>>401
受け付けさせる方法をしらねーだけのアフォには無理
403デフォルトの名無しさん:04/07/27 23:33
知らない≠知ろうともしない
アフォつーたのは後者な
404デフォルトの名無しさん:04/07/27 23:39
fflush(stdin);
405デフォルトの名無しさん:04/07/27 23:39
>>404
ぶっぶー間違い
そーゆーがさつな性格は嫌われるよ
while(scanf("%*s"));

あえてscanfで
407デフォルトの名無しさん:04/07/27 23:46
>>406
ばーか
何だ、もう終わりか? つまらん。                                                 ぬるぽ
409デフォルトの名無しさん:04/07/27 23:56
strtokはガッしないが・・・
410デフォルトの名無しさん:04/07/28 00:03
>>392 って何でスルーされてるの?
411デフォルトの名無しさん:04/07/28 00:03
>>405
こんなところ?

int x, y;
char str[1000];
while (scanf("%d %d", &x, &y) != 2) {
  scanf("%s", str);
  printf("Invalid: %s\n", str);
}
412デフォルトの名無しさん:04/07/28 00:10
>>398
char h[J][K][L];
文字列の二次元配列と考えればよい。

まあこの場合、 >>370 あたりのように構造体を使った方があとで楽。
しかし >>310>>314 >>316 で二次元配列にして欲しいと言ったため、
>>369 の様なソースが出てきた。

これでも後半の for ループ内で
printf("%d %s %d %s\n", atoi(h[i][0]), h[i][1], atoi(h[i][2]), h[i][3]);
と使えばよいこと。
>>410
stdinに対するrewindは未定義じゃなかったっけ。
414デフォルトの名無しさん:04/07/28 00:21
>>411
これでもいい?

int x, y;
char str[1000];
while(1){
  fgets(str, 1000, stdin);
  if(sscanf(str, "%d %d", &x, &y) == 2) break;
  printf("Invalid: %s\n", str);
}
415デフォルトの名無しさん:04/07/28 00:30
>>414
もちろん正解だけど、scanfを使いつつ問題をどう克服するかという趣旨だと思た。
あえて言うなら
fgets(str, 1000, stdin);

fgets(str, sizeof(str), stdin);
417デフォルトの名無しさん:04/07/28 01:10
> > 可能ですかね?
> > もしご存知ならお願いします。
> 可能です。

お、本当ですかっ!
おしえていただきありがとうございます!

もしよろしければお名前を教えてください。

418デフォルトの名無しさん:04/07/28 01:13
狩野です。
>>417
もしかして >>250-251 のかたですか?
420デフォルトの名無しさん:04/07/28 01:14
> あえて言うなら
f> gets(str, sizeof(str), stdin);

strがextern宣言してあったときにエラーでると思う?
>>323
もう遅いだろうが、2000/XPでもANSI.SYSをCONFIG.NTに組み込めば
エスケープシーケンスを使った物を動かす事ができる。
・・・たしか16ビットコードを吐くコンパイラじゃないとだめだった気はするが。
なに、16bitだと。今こそdjgpp復権の時だな。
423デフォルトの名無しさん:04/07/28 01:29
ふつうnnansi.sysだろ
>>423
それは標準で入ってないから。
425デフォルトの名無しさん:04/07/28 01:44
VC++も標準で入ってないぞ。
同じことだろぼけ
>>3
>>425
JOKEで言ってるんだよね?
そりゃあプログラムの配布にVC++まで配布しないからね。
nnansi.sysを一緒に配布するのは気分わるいし。
428デフォルトの名無しさん:04/07/28 01:58
DLLも同様
429デフォルトの名無しさん:04/07/28 01:59
curses使えよ ぼけ
>>3
推奨NGワード: 「>>3
432デフォルトの名無しさん:04/07/28 07:41
>>411
scanf厨ってどうしてそんなにバッファオーバーフローが好きなの?
近鉄バッファオーバーフロー
>>414,416
>str
なんだそのふざけた名前は?
>>432
初級入門書を手にとれば解るけど
何の問題もないかのようにscanfとprintfを乱用してかかれてるからな
>>421
そんなことしなくても
TeraTermなら普通にエスケープシーケンス使えるだろ。
>>433
近鉄じゃなくて日本ハムだろ ぼけ
単純に書けるからだろう。
本読み終わる前に挫折されても困るからな。
439デフォルトの名無しさん:04/07/28 08:55
printfは使っても問題ないだろ

scanf使ってる本は捨てろ
440デフォルトの名無しさん:04/07/28 08:57
>>439
> printfは使っても問題ないだろ

ネタですか?
fprintf使えって言いたいのか?
442デフォルトの名無しさん:04/07/28 09:01
すまねぇ。頭が混乱していた。
>>439
この世のC入門書がすべて消えました
>>443
そんなことはない
440とかワンパで反応してる奴が粘着してるってが良く分かるな
>>445
まずもちつけ
445とかワンパで荒らしている奴が粘着してるってが良く分かるな
scanf の話題ってほんと間欠泉のような存在だよね
>>443
そこで void セソセイの「つくわか」ですよ。
>>318
Macintosh だろうが1バイト目になると思うけど。
>>309 氏は「下位バイト」とは書いてないことに注意。
451(@u@)ノシ:04/07/28 11:46
今時Cって年寄りと学生しかやってないってことが
このスレ見てると良く分かるよ。
>>452
2chの中の蛙
今時Cって年寄りと学生しかやってないってことが
このスレ見てると良く分かるよ。
455デフォルトの名無しさん:04/07/28 13:07
Borland C++ Compiler 5.5 を「C言語をはじめよう」って補助ソフトを使ってCを動かしてるんですが、
テキストファイルの生成の仕方がわかりません。どうしたらよいのでしょうか?
テキストを単にコンパイルするだけじゃいけないのでしょうか?
君の日本語は分かりにくい
言葉の意味をよく知らないで使ってる予感。
458445:04/07/28 13:17
すいません、書き直します。
簡単なテキストが書いてあるファイルを開いて、それをコピーしたり文字数をカウントしたりっていうことをしてみたいんですが、
そのファイルの生成の仕方がいまいちわかりません。
Borland C++ Compiler 5.5 を「C言語をはじめよう」って補助ソフトを使ってCを学んでいます。
単にテキストをコンパイルするだけだと思っていたらエラーが出てしまって、どうしたらいいか・・・
>>458
メモ帳でテキスト書いてexeと同じディレクトリに保存しろ

って言うかbccスレ池
>>458
メモ帳とかで作ればいいんじゃ?
>>458
それから、プログラムは書いてコンパイルしたのか?
>>458
何よりもまず日本語復習しろ
463445:04/07/28 13:22
>>461
テキストそのまんまコンパイルしました
includeとか全くかいてません
bccスレでやれというのに
>>458
データ用のテキストファイルは、コンパイルはいらんよ。
プログラムのソースもテキストファイルだけど、なんか勘違いしてない?
466445:04/07/28 13:25
>>465
では普通に保存で実行でいいのですね。やってみます。
みなさんありがとうございました。
コンパイルってのは、大雑把に言ってCで書かれたソースファイルを実行フィルにする処理の事だ。
テキストファイルを開いたりコピーしたり文字数をカウントするのは、
コンパイルして出来た実行ファイルで行う事だ。

というか、「テキストをコンパイル」している時点でコンパイル対象のテキストファイルは既に作成しているわけで、
簡単に言うと基礎的な知識が足りなさ過ぎるんで、出直してきなさい。
468デフォルトの名無しさん:04/07/28 13:27
初心者ですいませんもっと勉強します
このスレはいつから初心者の質問を排除して
しかも初心者レベルの奴が回答側にまわるようになったんだ?
>>469
昔から。
>>467
大雑把すぎー
というか、お前それ以上理解してないだろ。
リンクなんて言っても理解不能だと思うけどな。
「テキストをコンパイル〜」と言ってる相手にリンクとか言い出しても仕方ないだろ。
大雑把だと分かる相手には説明するまでもない。
わざわざ「大雑把」と断ってる相手に噛み付いて何がしたいんだ?
テキストファイルってのは
ASCII文字のみで構成された
バイナリファイルのことだ。
日本語は使っちゃダメなのか。
あたりまえだろ
477デフォルトの名無しさん:04/07/28 14:33
>>103
クリックしても開きませんでした
478デフォルトの名無しさん:04/07/28 15:14
ファイルAからデータを読み込んだ後にファイルAを削除したいのですが
remove( "ファイルA" );
で削除しようとしていたのですが
fp = fopen( "ファイルA", "r" );
とファイルを一度開いてしまっていると
削除できないようなのですが何か他に方法ってありますか?
removeを使う前にファイルはクローズしているのですが・・・
>>478
30点
480デフォルトの名無しさん:04/07/28 15:19
>>478
removeのあとに
perror("remove");を追加して実行してみて。
閉じていないというオチじゃなかろうな
>>481
> removeを使う前にファイルはクローズしているのですが・・・
って書いてるけど。
483478:04/07/28 15:30
あ、perror("remove");を実行したところ
remove: No such file or directory
と出たので見直してみたところフォルダへのパスが間違ってました・・・
大変申し訳ないです・・・
ズコー(AA略
              n                 n.   
              (ヨ )    /\___/ヽ  ( E) 
              | |   /    ::::::::::::::::\||
           三\ ⌒  ,,-‐‐   ‐‐-、 .::|/,,/
.                 ̄|  、_(o)_,:  _(o)_, :::|/
            三     |    ::<      .::|  うわあああああああああああああああ
(省略されました。続きを読むにはここを押さないでください)
                      ̄ ̄
バッファオーバーフローするプログラムが蔓延してるのは
入門書にscanfやgetsが頻繁に使われているのが原因?
scanfやgetsで練習していないからだろう。
馬鹿おヴぇrfぉw
>>486
バッファオーバーフローするとして、
何か問題でも?
>>489
 |                 /  _/_
 |     |_l  /\ l l   /    /    \
 |    ̄|  ) /  \    /⌒l  /  __|  ̄
 ヽ_ノ |        \  /  し   ∠ノ\
俺の字より綺麗だ・・・
Cって生産性低いらしいけどVBを100とするとどのくらい?
>>491           ___ 
 ヽ    _|_ ヾ ヽ _|_ |   ヽ  /   ._/__ 〃 / /
ノ|ヽ    |  ヽ  ヽ  |_ |   | /    / ―   / /
  |__、 ノ  ノ  ノ    」 し  ノ //ヽノ /  ―  ● ●
>>492
プログラムする人の力量とターゲットによる。
>>492
Basic:C 100:110
VB:VC 100:75
くらい
>>492
VBが生産性高いってのは都市伝説。
VBしか使えないPGからすると、VBの生産性が最高ってだけの話。
生産性が高いってどういう意味?
「ヤッターデキタヨー」って声の挙がった件数?
>>497
「ヤッターデキタヨー」って声の挙がるまでの工数
「ヤッターデキタヨー」って言う声の高さじゃない。
500デフォルトの名無しさん:04/07/28 18:52
(・∀・)チンポー!!
VB的生産性=本当は出来てないのに出来たように錯覚させる技
502デフォルトの名無しさん:04/07/28 19:55
>>411
isdigit
随分昔のにレスしてるな
504デフォルトの名無しさん:04/07/28 20:58
>>503
日付も変わってねーだろ
無職の常識でもの言うなよw
1. 100レス近く進んでいて、強い今更感。
2. しかも内容は大したことない。つか一文字ずつ調べろってか。

しかし何で strtol() 使う人少ないんだろうな。
文字列パースするには便利なのに。
506デフォルトの名無しさん:04/07/28 21:18
>>505
あー、あの関数を知らないわけねw
またループの悪寒
>502,504,506
つまらんレスで上げてるから同一人物だよな?
あの関数とは、isdigit()なのか?そうなのか?
509デフォルトの名無しさん:04/07/28 21:35
>>508
いーや、isdigit ではない
scanf をちゃんと理解してる香具師は
例外なく知っている「あの関数」だ
ISO/IEC9899にも規定されている
scanf 自体とは別の関数だ
>>508
>>500 も同じと思われ
511デフォルトの名無しさん:04/07/28 21:41
>>510
502=506=509 だが 500 ではない
512デフォルトの名無しさん:04/07/28 21:41
下ネタは好きだが、言うときはもうちっとヒネるぜ
a = b = c = d = 5;
とかを実行する場合、
a = 5 と d = 5 のどっちが先ですか?
>>513
右から。
>>513
結合規則でd = 5から
a = (b = (c = (d = 5)));
516デフォルトの名無しさん:04/07/28 21:47
>>513
そーゆーときは
a = b = c = d = 5;

(a = b) = c = d = 5;
a = b = c = (d = 5);
と比べてみればいい

# なるべく複数のコンパイラで
>>511
さっさと芯でくだちい。
>>516
そんな適当な事は言わないほうがいい
519デフォルトの名無しさん:04/07/28 21:48
>>517
やだね
520デフォルトの名無しさん:04/07/28 21:50
>>518
本音では規格票嫁なんだけどね・・・
>>513
質問するな ぼけ

>>514-516
回答するな ぼけ
解釈される順番は右からだが、実行される順番は右からとは限らない。
>>521
あえて聞きたいのだが、その理由は?
>>524
ぼけ先生には難しすぎて答えられないから
>>524
質問するな ぼけ

>>525
回答するな ぼけ
なぜそんな低脳が居着いてるんだろうかね
そう来たか。
ぬるぽ
530デフォルトの名無しさん:04/07/29 00:02
(;;@u@)ノシ)`Д´)ガッ
>>529
なにそのぬるぽ、ふざけてるの?
>>531
なんだと
533531にガッ:04/07/29 00:09
自分自身を出力するプログラムって書けますか?
ファイル読み込みは反則ということで。
>>533
A0プリンタであれば原寸で自分自身を出力する事はできよう。
535デフォルトの名無しさん:04/07/29 00:17
>>534
そういうことじゃなくて(;@u@)
ソースプログラムがファイル名に依存せずに自分自身のソースコードを出力するようなプログラムです。
誰か>>535が何を言いたいのか通訳してくれ
アヘアヘウヒハ
538デフォルトの名無しさん:04/07/29 00:25
>>533
パルピコかぶれか
板違いだ(・∀・)カエレ!!
539デフォルトの名無しさん:04/07/29 00:28
>>536
#include<stdio.h>・・・・・

と書いて、出力が

#include<stdio.h>・・・・・

となるようなプログラムです。

>>538
純粋にプログラムの問題です。
>>533でガッとか言ったから変な雰囲気になってしまったんですけど・・・。
>>539
どこに書いて、だよ。つか、幼稚園か?お前の頭は!
ソース読み込み禁止なら逆コンパイラになるだろうが、
シンボルその他をデバッグオプションで残したとしても、
100%同じソースの復元は不可能。
542デフォルトの名無しさん:04/07/29 00:36
>>540
ソースファイルに書いて、です。

ソースファイル self.c の内容が

#include<stdio.h>・・・

であるとき、このファイルをコンパイルした結果

self.exe(UNIX環境ではself)

が生成されたとき、コマンドラインから

self

と入力すると出力結果が self.c の内容と同一になるプログラムです。

>>541
逆コンパイルとかも禁止ということで。
>>539
できるわけねーだろバーカ。
変な雰囲気に見えるかね。見えんがね。見えるんならそうなったのはお前の質問のせいだ。
>>542
全てのソースコードをあらかじめ埋め込んでおけ
無理なものは無理
>>544
そのソースの中に自分を表示する部分があるが、
そこにまた自分のソースを入れるからネストの入れ子で
プログラムは終了しない。
まあ質問も釣りなんだがな。
548デフォルトの名無しさん:04/07/29 00:42
'\n''\r''\t''\a'
に該当する部分のフォントを表示するにはどうしたらいいですか?
ていうか、とりあえずIBMキャラセットを256文字全部を表示するにはどうしたらいいですか?
厳密には256-1文字ですか。
>>546
しょぼい脳だな
>>548
フォントはない
>>548
フォント用意されてんの?
されてるとして、表示先は何よ。何処よ。
>>548
どうしても見たければ VRAM に直接書き込め
>>543 >>545
出来るよ。
554sage:04/07/29 00:46
>>548
Windows環境なら、'\n''\r''\t''\a'をファイルに出力してメモ帳で開いてみろ。
'\n'以外はとりあえず表示される。フォント選択を変更すると表示される内容も変わるが。
>>555
表示させたいのは
「IBMキャラセット」

557デフォルトの名無しさん:04/07/29 00:51
>>543
(@u@)バーカバーカwwww
いまどきCマガのパズル問題を書く釣り師のほうが驚いた
37 IBM037 IBM EBCDIC (米国 - カナダ)
437 IBM437 OEM 米国
500 IBM500 IBM EBCDIC (インターナショナル)
737 ibm737 ギリシャ語 (DOS)
775 ibm775 バルト言語 (DOS)
850 ibm850 西ヨーロッパ語 (DOS)
852 ibm852 中央ヨーロッパ言語 (DOS)
855 IBM855 OEM キリル語
857 ibm857 トルコ語 (DOS)
860 IBM860 ポルトガル語 (DOS)
861 ibm861 アイスランド語 (DOS)
863 IBM863 フランス語 (カナダ)(DOS)
865 IBM865 ノルウェー語 (DOS)
DATTE やってらんないじゃん
scanfより sscanfでしょ
sかんfきたー
>>558
太古の昔からある問題を、Cマガのパズル問題と言い切るのも釣りか?
今月号で出たんじゃない?
564デフォルトの名無しさん:04/07/29 01:05
565デフォルトの名無しさん:04/07/29 01:09
> テキストファイルってのは
> ASCII文字のみで構成された
> バイナリファイルのことだ。

じゃあバイナリーファイルじゃないものってのはどんなもの? ;-)
binaryを辞書で調べてみろ
567デフォルトの名無しさん:04/07/29 01:16
自己出力プログラム(ソースファイルと同じ内容を標準出力に出す)foo.cのソース
#include <stdudio.h>
の1行だけ。

で、そのヘッダーファイルの中に、
#include <stdio.h>
main(){printf("#include <studio.h>\n");}
と2行書けばよい!
>>565
ファイルじゃないもの
569デフォルトの名無しさん:04/07/29 01:19
プリプロセッサ作って通しゃいいだろ?あほらしい事言ってるな
>>567
ダメポ。
stdudio.h
stdio.h
studio.h
572デフォルトの名無しさん:04/07/29 01:20
やーい、こたえられなくてごまかしてるやつ ;-) > binaryを辞書で調べてみろ
573デフォルトの名無しさん:04/07/29 01:22
>>541
こいつ頭わるすぎー
ソースを丸ごとリソースで埋めればいいんじゃないの?
575デフォルトの名無しさん:04/07/29 01:29
>>571
こいつだめすぎ。
stdio.hと書いたらループしてしまうだろ
(っていうか、stdio.hの中に違うこと書くんじゃねーよ!)
576デフォルトの名無しさん:04/07/29 01:29
>>574
リソース禁止
577デフォルトの名無しさん:04/07/29 01:37
>>575
バカ?
くだらない釣り禁止
変数とコメントを使え。
質問するな ぼけ
回答するな ぼけ
>>580
なぜですか?
GWよりも酷い。流石だな。
所詮言語としてもVBより劣るしな。
584デフォルトの名無しさん:04/07/29 07:57
>>581
釣り書き込みするな
釣りには解答するな
ってことじゃない?
>>584
どこをどう読んだらそんな解釈ができるんだ?
586デフォルトの名無しさん:04/07/29 08:00
20.34:
さて問題です。どうやれば出力として、自分自身のソースコードを産 み出すコードをどうやったら書けるか。
A:

本当に移植性の高い自己再生プログラムを書くのは大変難しい。これ は特に、一重/二重引用符の使いかた、文字集合(ASCII, EBSDIC...) に何を使うかからくる困難による。

以下は古典的な例である(普通は一行で紹介される。しかし最初に走っ たときに自身を"修正"する)


char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";
main(){printf(s,34,s,34);}

(このプログラムは、この種のプログラムの多くと同じように二重引 用符 " がASCIIのように34であると決めてかかっている.)
2次元配列の構造体って出来ますか?
色々調べてみたんですが、1次元の構造体しかなかったので・・・
>>588
できるだろ
>>588
色々調べるのもいいが、なぜ試さない・・・
>>588
その前に本当にその設計が妥当かどうかもう一度検討しる
二次元配列を含む構造体、と思っていいのか?
それとももっと違うナニカなのか?
>>592
禿同
struct hoge {
int a;
int b;
} fuga[10][20];

こういう意味?
それは構造体の二次元配列と言わないか?
>>588の質問は素晴らしい
二つの意味を含むので質問としては最低
釣りじゃないよね?
struct {
struct {
int foo;
double bar;
} hage;
char hoge[100];
} hige;
こういう意味だったりして。
それは二次元じゃなくてネストだよね
1)2次元配列を要素に持つ構造体
2)2次元配列の形をした構造体
3)構造体を要素に持つ構造体を「2次元配列の構造体」と呼ぶならば

他の解釈ある?
4)1次元配列を要素に持つ構造体の1次元配列
>>582
GWより暑いからな。
…いやホント、今年マジ暑い。
>>602
エアコン止めて高層ビル倒壊させれば涼しくなるよ。
604教えてください:04/07/29 19:26
条件判断式に配列をつかえないんでしょうか

例えば
for(i = 0; i<10; i++) {
 for(j = 0; j<10; j++) {
  switch(arg[i][j]) {
    case '0':
       ほにゃららら
    default :
       ほにゃららら

みたいな感じにしたいのですが
常にデフォルトの処理ばかり処理されてしまうのはなぜ???
int a[2];
int* b;

b = ( int* )&a;

ってやるとどうなるの?
>>604
break;
入れてる?
>>604
てめぇのバグだろ。デバッグもしてねぇくせに。
printfデバッグしろ!!
for(i = 0; i<10; printf("\n"),i++) {
 for(j = 0; printf("%d,",arg[i][j]),j<10; j++) {
  switch(arg[i][j]) {
    case '0':
       ほにゃららら
    default :
       ほにゃららら
とかな。
>>605
*b = 10; としたときに a[0] も 10 になるだけ。
>>605
a[0] == b[0]
a[1] == b[1]
a[2] == b[2]
になります

>>607
for(j = 0; j<10; j++) {
printf("%d,",arg[i][j]);

にしないと最後の一回が危うい
610教えてください:04/07/29 19:47
つーか・・・
かなり平凡なミスでした。

条件判断文の中身は数字なのに
case 0:じゃなくてcase '0':とか入れてるから
いつもデフォルトになっちまっていた!
すみませんですた
ズッコケ(AA略
これにて一件落着(AA略
613デフォルトの名無しさん:04/07/29 19:57
テキストファイルを読み込んで、一次元配列やmemsetで確保した
メモリ領域に格納したいのですが、C言語はPerlのように配列が
伸び縮みしないので、どのようにしたらよいのでしょうか?
reallocする
>>613
自分で伸び縮みさせろよマザーファッカー。
616デフォルトの名無しさん:04/07/29 20:17
>>614
サンクス
>>616
俺には礼無しかよマザーファッカー。
618デフォルトの名無しさん:04/07/29 20:47
夏休みにC言語を習得したくて、夏期講習みたいなの探してるんですけど、
何日にどこでやってる夏期講習があるとか検索できる総合サイトみたいなのあります?
>>618
お前が感じている感情は精神疾患の一種だ。俺がやってやってやれる俺に任せろ。
>>618
独習。
誰にもマークされないが(独習の)素人には勧められない罠。
621デフォルトの名無しさん:04/07/29 20:54
>>618
本気でプロを目指すんでなければ大枚はたくだけ無駄金だよ
大学のパンキョーでも履修すれ
>>608-609
うお、そうなんだ?

int a[2];
int* b;

b = a;

これと一緒って事?

623デフォルトの名無しさん:04/07/29 21:18
>>618
使うのが目的だったら、Cの開発環境一式と適当な入門サイトを使って、
入門サイトに出てくるプログラムを打ち込んで実行しながら勉強する。
どちらも無料で利用できる。

例えば、
開発環境→ttp://www.cs.virginia.edu/~lcc-win32/
入門ページ→ttp://homepage1.nifty.com/toshio-k/prog/c/

その気になれば一週間でマスターできるから、がんがれ。
624609:04/07/29 21:21
>>622
厳密に言うと違うかな?
配列 a の先頭アドレスを b に代入するが「b = a」
配列 a の 0 番目の要素のアドレスを b に代入するが「b = &a[0]」
C だとどっちも変わらないけど
>>624
b = &a[0];と&aは同等って事かな?
今までずっと勘違いしてたか・・・・・(ノД`)
>>625
値は同じだけど型が違うはず。
627デフォルトの名無しさん:04/07/29 21:30
>>625
b = &a[0]; と b = a が同等。
>>626
『int a[2]』に対する『&a』って何型なんだ?
&a[0]とaが同等?っていうか同じような扱いになるのはなんとなく
分かるんだけど更に&aが結果としては同じ扱いになるって所が
イマイチ理解できない俺は・・・・・orz
630デフォルトの名無しさん:04/07/29 21:36
>>628
(int **)型
631628:04/07/29 21:37
>>630
test.c:6: warning: assignment from incompatible pointer type
違うようです
warning C4047: '=' : 間接参照のレベルが 'char' と 'int (*__w64 )[2]' で異なっています。
@VC++
>>630
やっと見つかった

int (*b)[5];

のようです
634デフォルトの名無しさん:04/07/29 21:55
windowsで電源を切るにはどのようなコードを書いたら良いですか?
また、休止状態、スタンバイにするにはどうしたらいいですか?
スレ違い。該当スレへどうぞ。
でも、ExitWindowsっていうヒントだけ教えとく。
>>634
ExitWindowsEx
>>635
>>636

スレ違いなのに解答していただきありがとうございました。
VisualC++スレが妥当だったかな?windowsスレがなかったので・・スマソ
Win32APIスレがいいかもしれない。
今日の日直は誰ですか?
641634:04/07/29 22:31
なぜか、APIの方に漏れの質問とそっくりの質問がたってるな。
だれか代わりに質問してくれたのかな。

一応誘導はしたし
重複だタコとか叩かれる事もなかろう
643デフォルトの名無しさん:04/07/29 22:34
アルゴリズムの質問です。
あるx(N)(Nは整数)それぞれが、ランダムな値のuとvについて
u≦x(N)≦v
の関係をもっている時、ある値yがそれぞれのx(N)の範囲に該当するか調べる
できるだけ効率のいいアルゴリズムを教えてください。
例えば、2≦x(1)≦5,5≦x(2)≦8,1≦x(3)≦6というのがあった時
y=2に該当するのは、x(1)とx(3)という感じです。
644デフォルトの名無しさん:04/07/29 22:43
>>643
地道に比較するのが一番早い。
ちなみに N の大きさはどれくらい?
645デフォルトの名無しさん:04/07/29 22:46
Nは10万個くらいです
問題が理解出来てないんだけど、
x(1)は[2,5]の範囲を取りうるの?
x()の中身はブラックボックスなの?

こんな課題がありうるんだろうか・・・
正規分布の2σで95%の確率で・・・
とか、何か有るんでないの?
>>643
C言語なら俺に聞け!
アルゴリズムなら他の奴に聞け!
648デフォルトの名無しさん:04/07/29 23:12
>>646
完全なランダムです。
x(1)は[2,5]の範囲ですが、次に実行した場合全く違う値になります。
正規分布とか全くなしの完全なランダムです。
分布形態を調べて、確率閾値を設定して、特定の確からしさのもとで解を出す。
実世界ではよく要求される課題かと。

ただ、>>643がそういう課題に直面しているかどうかは、大いに疑問。
650デフォルトの名無しさん:04/07/29 23:17
>>648
x(1)は小さな整数だけ?それならテーブル作ればいいと思うけど。
完全なランダムなら、M回やれば最大最小値の確からしさはは1/Mの関数ですな。
0次ランダムなら、「モンテカルロ法」でぐぐりなされ。
アルゴリズムと呼べるものでは無いよ。
>>650
x(1)は0から1000程度の値のランダム値です。

>>652
モンテカルロ法を調べてみます。
トリッキースレに書いたのですが、
b = a + (a=b)*0;
が未定義になるのはなぜでしょうか。
655デフォルトの名無しさん:04/07/29 23:49
>>654
副作用の対象となっているオブジェクトを2度以上参照しているから
>>654
それがCの仕様だからです。
657eden:04/07/30 00:02
基本的にはここでC言語を使ったプログラムなんかは作んないの?
お題みたいに例えば「年を入力し、うるう年かどうかを判定しなさい」みたく

副作用でググった。理解できたよ。

ありがとう>>655
しないから適当に宿題を装って宿題スレでやれ
660デフォルトの名無しさん:04/07/30 00:21
>>653
今時のPCは速くてでかいからこんなやり方でもいけそう。
#include <stdio.h>
#include <bitset>
const int N = 100000, RANGE = 1000; std::bitset<N> bs[RANGE];
struct { int lo, hi; } data[] = {
{ 0, -1 }, /* 0 ≦ x(0) ≦ -1 */ { 2, 5 }, /* 2 ≦ x(1) ≦ 5 */
{ 5, 8 }, /* 5 ≦ x(2) ≦ 8 */ { 1, 6 }, /* 1 ≦ x(3) ≦ 6 */ };
main() {
for (int i = 0; i < sizeof(data) / sizeof(int) / 2; i++) {
int lo = data[i].lo, hi = data[i].hi;
for (int x = lo; x <= hi; x++) bs[x].set(i);
}
for (int y = 0; y < RANGE; y++) {
int n = 0;
for (int x = 0; x < N; x++)
if (bs[y][x]) {
if (n++ == 0) printf("y= %d: ", y);
printf(" %d", x);
}
if (n) printf("\n");
}
}
>>660
わざわざプログラムしてくださって
ありがとうございます。
助かりました。
662デフォルトの名無しさん:04/07/30 03:18
いいえ
はい
660はソースコードジェネレーター。
>>643
x(N)が固定なら、
@x(N)を小さい方の数字でソートしたテーブルを作っておく
Ax(N)を大きい方の数字でソートしたテーブルを作っておく
B@のテーブルからyより大きい数x(N)の数を数える
CAのテーブルからy未満の数x(N)の数を数える
DBとCで少ない方から該当するx(N)を地道に検索
でOKだけど、ランダムなら、最初から地道に検索するしかない
今だ!666ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
ベートーヴェン:運命、第三楽章

冒頭のモヤモヤでおもむろにチンポを取りだし、
ホルンのフォルティッシモに合わせてシコシコ開始。
その後、テンポ、楽想の変化に合わせて緩急をつけながら
頂点を目指しつつ、寸止めを繰り返す。
そして、最後のアタッカにねらいを定めて、最終的なグラインド開始。
猛烈なクレッシェンドとともに高まる興奮!
そして、4楽章冒頭、
勝利のフォルティッシモと同時にどっぴゅ〜〜〜〜ん!!!
これをきっちりシンクロさせるのは至難の業だが、
うまく達成させた時の快感は何者にも代えがたいものがある。
ただし難点は、射精後の虚脱感、敗北感とともに
残りの4楽章を聞かねばならないことだ。
まあ、そこらへんは快楽の代償と割り切って、
粛々と、飛び散った精液の清掃や
パンツの洗濯にあたるしかあるまい。
668デフォルトの名無しさん:04/07/30 14:01
年月日からtime_tを作成するにはどうすればいいんでしょうか。
また2038年問題に対応するよい方法はどんなものがありますか?
669668:04/07/30 14:06
あー、すいません。年月日だけじゃ無理ですね。
年月日時分秒からtime_tを算出する方法を教えてください。
閏年とかいろいろあってよくわからないんです。
Cに標準で計算する関数はないのでしょうか。
>>669
>年月日時分秒からtime_tを算出する
struct tm を埋めて (年-=1900, 月--を忘れずに) mktime。
>2038年問題に対応するよい方法
64bit に乗り換える。
671デフォルトの名無しさん:04/07/30 16:55
Windows環境(非unix環境)でcrypt関数を使いたいのですが、無いようなので自分で作ろうと思いました。

ぐぐって分かったことは、
・crypt関数はDESアルゴリズムを25回使用している。
・DESアルゴリズムの仕様
・crypt関数はDESアルゴリズムをsaltによって変更している。

ここまで分かったのですが、saltによるDESアルゴリズムの変更を書いたページが見つかりません。
もちろん英語のページも探しました。
以前に見たことがあるのですが、今は出てこないようです。
どなたかDESアルゴリズムの変更(それを書いた場所)をご存じないでしょうか?
>>671
MD5じゃだめ?
673デフォルトの名無しさん:04/07/30 17:35
>>672
2ちゃんねるのトリップを作りたいので、DESでないと無理です。
perlならcrypt関数があるのですが、それだといろいろと問題があるのでCで作ることにしました。
>>671
cygwinを入れれば?
>>671
crypt.c のソース
677デフォルトの名無しさん:04/07/30 19:03
かの有名な http://www.xslisp.com/index-j.html
読んでいたんですが、その中の eval.c で

object value_stack[VSSIZE], *vs_base, *vs_top;
object *vs_bottom = value_stack - 1;

なんて表記を見つけました。

ここで vs_bottom が有効な値を指していることは
C言語上で保障されているんですか?
678C初心者:04/07/30 19:10
BCC 使ってやってるんですが、エラーメッセージで

Error: 外部シンボル 'WinMain' が未解決(C:\BORLAND\BCC55\LIB\C0W32.OBJ が参照)

と、出るんですがどうすればいいんですか?
679デフォルトの名無しさん:04/07/30 19:26
ソースへのリンク(検索結果)ありがとうございます。>>crypt.c
unixだからソースが公開されているはずだということを見落としていました。
早速コンパイルしてみます。
cryptoapiになんかあるんじゃないかなーとも思うけどスレ違いだし、いいや
>>678
bcc32 -W ソースファイル
682C初心者:04/07/30 20:39
>>681
おー、できたできた。ありがとうございましたー。
683デフォルトの名無しさん:04/07/30 20:48
>681
逆だろ、-W オプションを外さないと駄目だろ。
684デフォルトの名無しさん:04/07/30 23:12
このコードの結果は未定義ですか?

*s++ = tolower(*s);

DEC C V5.9-010 で ctype.h をインクルードすると未定義だと言われます。
gcc-3.3.4 では ctype.h をインクルードしないと未定義だと言われます。
で、どちらの場合もインクルードしない場合が欲しい結果となります。
日本語が変だ。
>>684
tolowerがdefineされているから予想外の結果になっている。
undefすると関数版になるのは保証されてたっけ?
687デフォルトの名無しさん:04/07/30 23:55
>>686
でたらめ言うな
たとえ #undef してうまく動いたように見えても
それは偶然に過ぎない
>>684
*s = tolower(*s);
s++;
にしたら、どうなる?
>>688
別にそういうことを聞いてるんじゃないので…


では、質問を変えます。

*s++ = *s;

これは未定義ですか?
未定義だとしたら何故なのか解説をお願いできませんか?
690デフォルトの名無しさん:04/07/31 00:29
>>689
688をスルーしている限り絶対に無理
代入に先立って、インクリメントと変数の参照が実行されるけど。
その優先順位が未定義だから。
>>689
俺もそれは未定義には見えんなぁ。なんでだろ。
少なくとも691の解説が間違ってることだけはわかるんだが。
インクリメントは代入の後だよな >>691
693デフォルトの名無しさん:04/07/31 00:55
バトルロワイアルの禁止エリアをシミュレートしたいのですが、エリアが分断されないようにするには、どうすればよいですか?
すまん、素で読み間違えた。逝ってくる。
>>691
++ と * では * の方が優先順位は上だからそれはないです。

結局、答は「インクリメントを使った副作用の生じる式で、他の場所でその変数を参照したから」でOKですね?
>>695
そんな話は聞いたこと無い。何かを拡大解釈してないか?

でさぁ、>>689は本当に未定義なのか? そうなのか?
みんな、
*s = *s++; と勘違いしてないか? これは紛れも無く未定義なんだが。
697デフォルトの名無しさん:04/07/31 01:15
> そんな話は聞いたこと無い。何かを拡大解釈してないか?

無知なだけー
>>697
煽りはいらんからソース出せ。
煽るだけなら俺でも出来るってことに気づけよ。
>>696
= のオペランドの評価順序は不定だから
*s++ = *s;
*s = *s++;
どちらも不定っぽいけど、C FAQ によれば、>>695の理由で未定義です。
>>684 == >>689 == >>696 == >>698
は、かまって君の釣り。

>>697
あんた、今日は釣られる側かい。成長したなw
>>700
すんません。
>>684=>>689=>>695=>>699です。
>>699
> = のオペランドの評価順序は不定だから
だとすると大変納得できる答えなんだが、
=オペランドの評価順が不定だとする根拠は?
>>700-701
ぶー、はずれ。
出直してきな。
っていうか、根拠も無く適当なこと言うの、好きだね。
せめて同一人物の指定が当たってりゃ、まだ良かったのにね。
純粋にCの話題なのに、自分が説明できないことは釣りにしたいわけね。
704デフォルトの名無しさん:04/07/31 01:33
ディレクトリをツリーごと消したいのですが、
rmdirは空のディレクトリしか削除してくれません。
再帰的に消すにはどうすればいいんでしょうか。
どこかにいいプログラムないですか?
>>702
プログラミング言語C第2版P.65より、
「多くの言語と同様に、Cでは演算子の被演算数に対する評価順序は指定していない。(例外は、&&、?: と,である。)」
||が抜けてるけど、これがです。

>>703
はずれも何も>>701は本人なんですが…
706705:04/07/31 01:41
× これがです。
○ これが根拠です。
>>704
ホレ

int rmdir2(const char *path){
char *cmd[8192];
sprintf(cmd, "rm -rf \"%s\"", path);
return system(cmd) == 0;
}
>>704
rm

それはさておき、スレ違い。
709704:04/07/31 01:47
Cだけで再帰的に消す方法が知りたいのですけど。
自分で作ろうと思ったのですが、
どんなサブディレクトリがあるのかを調べる方法がわかりません。
どなたか教えてください。
>>709 マニュアル読めよ。
UNIXならopendirとreaddirを調べろ。
WindowsならFindFirstFileとFindNextFileを調べろ。
711704:04/07/31 01:57
Cの標準関数だけでやる方法はないですか?
なんだ。論破されたら荒らしに早変わりか。
713704:04/07/31 01:57
すいません、英語読めないんです。
>>711
Windowsなら、
system("deltree c:\");
>>705
評価順序が、左辺が先であろうと右辺が先であろうと、あの式は全く曖昧さを持ちません。

対して、未定義の定義(?)は、
「直前の副作用完了点から次の副作用完了点までの間に、
式の評価によってオブジェクトに格納された値を変更する回数は、
高々1回でなければならない。
さらに、変更前の値は、格納されている値を決定するためにだけ
アクセスしなければならない。」
とあります。
*s++ = *s; は、なんら上記に当てはまらないと思いますがいかがですか?
格納された値を変更する回数は1回である。
変更前の値は、格納されている値を決定するためにだけアクセスしている。

さあ、どうだ?
>>704
>Cの標準関数だけでやる方法はないですか?
たぶん無い。標準関数はディレクトリ構造をもたないマシンもあることを
想定して作られている。
717715:04/07/31 02:21
曖昧さを持つじゃん・・・
左辺が先に、
sに格納準備OK。アドレスは記憶(評価)されたので、sをインクリメントしておきます。ラジャー。
だったら・・・・。orz
回線切って寝ます。
>>704
当然ながら日本語のマニュアルだってある。なぜ自分で探さねーんだ!
*dst++ = *src++;
*dst++ = *dst;
の根本的な違いを理解しろ。
720デフォルトの名無しさん:04/07/31 02:42
>>719
おじいさん、もうその話題は終わりましたよ
>>704
rm.c のソース嫁
>>720
おや?もう起きたのかい?
struct HeaderA
{
int aaa;
int bbb;
int vol[1];
}
TYPE_A;

struct HeaderB
{
int aaa;
int bbb;
int vol[ ];
}

sizeofすると
HeaderAは12バイトで
HeaderBは8バイトなんですが

int vol[ ];
はサイズに含まれないけど
vol[0],vol[1],,,,,
とかでアクセスできるように出来る書式ってことなんでしょうか。



↑訂正
struct HeaderA
{
int aaa;
int bbb;
int vol[1];
};
厳密にいえば、
HeaderA は vol[1], vol[2], …にはアクセスできない。
HeaderB は文法違反。

ttp://www.kouno.jp/home/c_faq/c2.html#6
726デフォルトの名無しさん:04/07/31 03:36
このスレの住人にアミノ酸まとめてドン
727デフォルトの名無しさん:04/07/31 03:39
構造体Nodeに、*dat[N]を宣言し
Node *dat{char *(*MyBreak)(char *),char *(*MyFont)(char *),char *(*MyGrid)(char *)
..void MyClass(void)}のような、Node *dat[N];のelementを関数ポインターのアドレスにしたい。
なお、Nodeは
typedef struct __node{
char *tag;
char num;
char *comment;
struct __node *pointer;
}Node;
の自己参照型である。MyClassは、個々の抽象関数である。
Nは、処理系に依存する。
この点を踏まえて、ご教授お願いします。
>>725
まぁその辺は分かるんですが
HeaderB出来ちゃったもんで、
聞いてみたんですが・・・

C++だとOKなんかな・・・
729725:04/07/31 04:21
>>728
HeaderAのような書き方をして可変長配列のように使うのは、
規格違反だが全てのコンパイラで移植性が高い。
(と、c-faqに書いてある。)

同じ目的でHeaderBのように書いて、長さ0の配列を宣言できる
処理系もある。前者の方法ほど移植性は高くないと思うが。

どちらの方法も規格違反には変わりないので、コンパイラの
マニュアルに拡張機能として明記されていない限り使うべき
ではないと思う。
>>729
どもっす。

ちょっとコーディングしてて
タイプミスでHeaderBのような構造体つくちゃったんだけど
コンパイルとおったので
サイズ調べたり、色々使ってみてたりしたんですが・・・

こんなこと規格違反ながらもできたんですねぇ
なるほど勉強不足でした。
731677:04/07/31 05:23
誰か >>677 分かる人いないの?
732729:04/07/31 05:48
>>730
追記
HeaderBの書き方は C99では合法になったようだ。
734677:04/07/31 06:07
>>733
やっぱり駄目だよな。。。

いや、それなりに名の知れた人が書いているものだから、
「もしかして」と思ったのだが。
735デフォルトの名無しさん:04/07/31 07:17
>>715
おまえ右辺が評価される時点での s が ++ 前だと信じてるだろ?

1. 左辺の格納先アドレスの決定
2. 右辺の読み出し先アドレスの決定
3. 代入
4. ++

1 と 2 に順序依存性はあるか?
3 と 4 に順序依存性はあるか?

ある特定の CPU のレジスタセットを仮定せずに
どうやって順序依存性があると言い切れるのか
拝見したいものだな
>>725
そのFAQはもう古い。
捨てなさい。
HeaderBは正しい。
737736:04/07/31 07:44
と書き込んでみたら,スレ伸びてるジャン(><
738デフォルトの名無しさん:04/07/31 08:29
>>723
struct HeaderC
{
struct HeaderA a;
int x[1];
};
struct HeaderC c;
のようなオブジェクトを定義したとき、
c.a.vol[0] へのアクセスは保証されるが
c.a.vol[1] へのアクセスが c.x[0] へのアクセスと同じになる保証はない
(たぶん同じになるだろうし、実用例もあるが)
739デフォルトの名無しさん:04/07/31 10:22
> HeaderB は文法違反。

これは明らかなウソ。
ふつう通りますし、文法的にも問題ありません。
>>739
お前、赤信号を渡る時、
「(見つからなければ)タイーフォされない」という事と、
それが「法律違反である」という事の違いが理解できるか?
妄想で議論してないで
合法・違法の根拠を示すソースを提示しなさい。
742740:04/07/31 10:53
>>741
違法の根拠
http://www.lysator.liu.se/c/ANSI-C-grammar-y.html

さて、合法の根拠はいずこに・・・
C99ならOK
>>743
C999だと int vol[0]; じゃないか
んじゃ漏れはC9999
http://seclan.dll.jp/c99d/c99d04.htm#dt19990726

 この記述では、sizeof(info_t) は 多くの場合、attr, num, items[1] の大きさの合計を返します。だから、
例えば、items が一つもいらなかった場合に対応するために、sizeof で大きさをとる時には、
たいていその要素から num-1 といったように 1 を引く必要がありました。
これは、書くのが面倒な上、さらに後からプログラムを見る時にもわかりにくい記述方法となっていました。
今度の C 言語では、[ ] の中の大きさを、構造体の最後のメンバである時に限って省略することが
できるようになりました。例えば、次のように書くことができます。

typedef struct {
  int attr;
  int num;
  int items[ ];
} info_t;

...

info_t *info = malloc(sizeof(info_t) + sizeof(int) * num);
info->num = num;

...
X3010 6.7.2.1
「特別な場合として、二つ以上の名前付きメンバをもつ構造体の
最後のメンバは、不完全配列型をもってもよい。これをフレキシブル
配列メンバと呼ぶ。」

あとは、
http://docs.sun.com/source/816-2454/c99.app.html
"For example, in this structure, struct s { int n; double d[]; } S;,
the array, d, is an incomplete array type. The C compiler does not count
any memory offset for this member of S. In other words, sizeof(struct s) is
the same as the offset of S.n. "
とか。
>>734=677
value_stackから1を引いてしまった段階で未定義だけど、大抵巧くいくね。
巧くコンパイルできるかどうかを確認しながらびくびく使うよりはそんなコード書かないほうがいいのは自明。
>>704
opendir
readdir(NULLまで)
.と..は検索対象から外す
stat
→S_ISDIRなら再帰的に、その後rmdir
→S_ISDIR以外なら、unlink
closedir
のような関数作れば良いです。


>>716
上記例、opendirなどはCの標準、POSIXで定義されている
750723:04/07/31 12:10
>>746
そうそう、そうなんです。

データの大きさを計算する書式が見た目でシンプルになるなぁと
一人で納得してたところです。

あとHeader部分のサイズだけが純粋に欲しい時も
sizeof(HeaderB)だけでいいし楽だなぁと。

まぁ、HeaderAを使って
今までどおりnum - 1
とかって書けばいいじゃんって言われると、
まぁそうだね、、、って言うしかないんだけどねw
751Cの標準、POSIX:04/07/31 12:53
Cの標準、POSIX
752デフォルトの名無しさん:04/07/31 13:02
ttp://www.kouno.jp/home/c_faq/c6.html

6.13の回答文見てると回答者ですら混乱していることが良く分かる。
753デフォルトの名無しさん:04/07/31 13:09
Cの標準規格上問題ない > (むかしからよくありがちの)サイズ0の配列メンバーを最後にもつ構造体
完全に適法である。
754デフォルトの名無しさん:04/07/31 13:10
struct aaa{
int b;
struct aaa *c;
}


納得いかない
セミコロン忘れてるからじゃね
>「char」というのはどう発音するのか。
> A: C言語のキーワードの「char」の発音の仕方は少なくとも3通りはある。 「char(チャー)」、「care(ケア)」、「car(カー)」のように発音す
> る。どれを使ってもいい。
・・・・・
俺は無難にしぃえいちあぃあーぅ
758デフォルトの名無しさん:04/07/31 13:14
シャァ
759デフォルトの名無しさん:04/07/31 13:16
> しぃえいちあぃあーぅ

なんであぃなんだよ ぼけ
760デフォルトの名無しさん:04/07/31 13:17
761デフォルトの名無しさん:04/07/31 13:19
>>759
アメリカ南部のなまり
キャー
>>753
帰れ。
764デフォルトの名無しさん:04/07/31 13:34
> アメリカ南部のなまり

おいしいよねー > なんぶせんべい
765デフォルトの名無しさん:04/07/31 13:35
> 納得いかない

空白あいてないからいけない
ニャー
767デフォルトの名無しさん:04/07/31 15:06
>>752
>配列の大きさがわからない場合、Nを省略することができる。

これかw
>>741
アフォにもよくわかるよう同じサイトから見つけてやったぞ。
http://www.lysator.liu.se/c/rat/c5.html#3-5-4-2
ホレ。C89の時点でsize>0の可変配列は合法。
C99はsize==0ができるようになっただけ。

途中のメンバを可変サイズにするのが,非標準拡張。
769デフォルトの名無しさん:04/07/31 17:38
でたらめITTENじゃねーよ
質問させてもらいます・・
文字をウインドウに表示したときに背景が白なんですが、
この背景を変える方法はありませんでしょうか

いろいろ調べたんですがまったく見つからず困ってるところです・・
>>770
自分の使ってるプラットフォームのスレへ言って下さい。
C++なんですけど、ここだとだめなんでしたっけ・・?
ゲーム画面に文字を表示したときの背景を変えたいのですが
>>772
>>1も理解できないのか?
(´・ω・`)
CとC++は別のスレがあるってことですか・・?
よくわからんけど出直してきます・・
C++スレ今更ながら見つけました
どうも失礼しますた
そっちでも同じこと言われてんだろうな
今だ!777ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
volatileを指定するとどういう効果があるのですか?
また、どのような場面で必要なのですか?
>>778
コンパイラの知らないところで値が変化する可能性があることを知らせて、
値が変化しても問題ないコードを生成させる。
最適化を受けない。
OSやハードウェア、他のスレッドなどから改変される場合があるときに使う。
>>778
メモリマップされたレジスタとか共有メモリを使う場合の一部のケース。
最適化を禁止するのになんでvolatileなんていう単語を使っているんですか?
changingの意から察すべし
>>778
外部要因によって値が変わってしまう可能性のあるメモリを参照する場合。
マルチスレッドや外部I/Fからの入力がこれに該当する。
もしvolatileを指定しないでポートからの入力を次のように書いた場合、
最適化によって条件判断が省略されてループから脱出できなくなるかもしれない。

volatile char * port = anyMappedIOAddress;

while (* port != 0) {
waitAWhile();
}

って、既に書かれてた・・_/ ̄|○

>>782
まぁ、揮発性って意味やね<volatile
>>782
最適化を禁止するわけではない。
最適化による副作用が出ないようにする指示。
786782:04/07/31 22:38
すこしも理解できませんでした。ありがとうございました。
787782:04/07/31 22:40
>>786
騙りはやめてください。よく分かりました。ありがとうございました。
788782:04/07/31 22:47
>>787
騙りはやめてください。なんとなく分かりました。ありがとうございました。
789782:04/07/31 22:50
>>788
騙りはやめてください。明後日の方向に分かりました。ありがとうございました。
790782:04/07/31 22:50
>>788
騙り死ねやボケ

このスレは腐ってる。
本物のプログラマは一人もいない。
本物のプログラマはFORTRANを使う
で、volatileを実際に使った経験がある人はやっぱり居ないんですか?
マシン語として使う関係で使ったことはあるが、
本来の目的とは外れるからなぁ・・・。
794デフォルトの名無しさん:04/07/31 22:56
> 最適化を受けない。

これうそ。

各種ある最適化のうち、ある種類のものが適用されなくなるだけ。
ある変数の値がどこでどう参照されてどこで更新されるのかを考え、
そのライフシナリオで問題がないように(実質同じになるように)「もっと効率がいいように」
変更する最適化があるのだが、それが適用されなくなる。
つまり、コードに明示されている「変更」箇所以外でも値が変わるかもしれないことを
前提で考えるようになる (その変数について)
そういう「揮発性の」変数に使う。
795デフォルトの名無しさん:04/07/31 22:57
> これうそ。

かわうそ。
>>794
それ“揮発性”???
>>794
volatile変数が受けうる最適化って何よ?
>>797
レジスタへの割り付け。
はぁ〜?
>>798
寝言は実際に試してから言え
プゲラ
802デフォルトの名無しさん:04/07/31 23:51
>>794
>それが適用されなくなる。

引用符と一行空白、age の特徴を持つ人の発言としては
彼(?)の人格上の障害を差し引いた後のとりえであった
技術的な知見に対する評価を失墜させた痛恨のアフォ発言だな
803デフォルトの名無しさん:04/07/31 23:55
> 引用符と一行空白、age の特徴を持つ人の発言としては

同一人物だと思ってるの、ぼけすぎー


つーか、最近騙ってるのは俺だけじゃないはずだ
804デフォルトの名無しさん:04/07/31 23:57
>>803
プ
ホントだw
806デフォルトの名無しさん:04/07/31 23:58
>技術的な知見に対する評価を失墜させた痛恨のアフォ発言だな

技術的な知見なんて最初から無い ぼけ
807デフォルトの名無しさん:04/08/01 00:02
は? じじいとして「らしい」としか評価してないが・・・
は?
ぬるぽの出番ですか?
>>809
そんなことはない。
int *ptr = (int *)0;
*ptr = 809;
>>811
つまらない
>>812
つまらない
>>813
つまらない
>>814
つまらない
>>815
つまらない
817デフォルトの名無しさん:04/08/01 01:35
つまった
818デフォルトの名無しさん:04/08/01 01:37
>>817
つまらない
質問まだぁ〜?ちんちん
質問
CのコンパイラはCで書かれていますよね(少なくともgccは)。
最初はどうやってコンパイラをコンパイルするんですか?
>>820
もちろん、手動でだよ。
>>820
ttp://www.bohyoh.com/CandCPP/C/history.html

機械語→アセンブラ→B言語→C言語

の順に開発されたから、最初のCコンパイラはB言語かアセンブラで開発されたと思う。
もちろん、コンピュータというものが最初に作られた頃はプログラム言語なんてなかったから、
手作業で16進数の機械語を打ち込んでいた。
>>822
16進機械語の前に2進機械語があるはず。
824822:04/08/01 05:35
>>823
確かに。
それを言い出せば、2進機械語の前は配線を手で繋ぎ換えることでプログラムを記述していたし、
それより前は歯車式計算機、それより前は計算尺という話になってしまうけど。
そろばんは、日本最古の高性能デジタル計算機という話だ。
指は、世界最古の高性能デジタル計算機という話だ。
二進機械語の前に、トグルスイッチでパチパチする奴があるんでないの?
「シーモア・クレイがそれでOSを入力したスゲェ」みたいな。
>>827
その話はもう終わっている
829デフォルトの名無しさん:04/08/01 21:06
>>826
そのまんまじゃねーかよ。
デジタル → 指の
Cで、まず関数ポインタを宣言しておき後からその実装を書くというのはどうすれば良いんですか?
>830
プロトタイプ宣言を書けば良いのでは?

void func(void);
void (*p)(void) = func;
void func(void){}
832何かがおかしい:04/08/01 22:22
#include <stdio.h>
int main(void)
{
int counter;
char ask;
counter = 5 ;
printf("これから%d回、処理を繰り返します。\n", counter );
for( counter = 4 ; counter > 0 ; counter-- )
{
puts("処理を続けますか? (Y)\n処理を止めますか? (N)");
puts("キーボードから入力してください。 ( Y or N )");
scanf("%c" , &ask );
switch( ask )
{
case 'Y': case 'y':
puts("処理を行います。");
printf("あと%d回、処理を続けます\n", counter );
break;
case 'N': case 'n':
puts("処理を止めます。");
counter = 0 ;
break;
default:
puts("もう一度、入力してください。");
break;
}
}
puts("全ての処理を終了しました。");
return(0);
}
>>832
scanf使うのやめろ
834デフォルトの名無しさん:04/08/01 23:15
>>833 それじゃあ、何を使えばいいの?
getchar or getc使えって言ってるんじゃないの?
836デフォルトの名無しさん:04/08/01 23:20
getcharを使っても同じ。
fgetsで改行ごと読め。
C使うな ぼけ
>>837
日本語使うな ぼけ
839デフォルトの名無しさん:04/08/01 23:28
>>834
833を相手にするのやめろ
840デフォルトの名無しさん:04/08/01 23:29
>>836
こいつのオツムん中は gets だな
恥ずかしくて言えない本音w
やはりこうなったか( ´ー`)=3
842デフォルトの名無しさん:04/08/01 23:38
fgets を使うと switch は整数系じゃないとダメだってでるんだけどどうすれば(ry
教えてください。
構造体を定義するのに

typedef struct AAAA {
.................
} AAAA;

というコードをよく見るのですが、2つめの
AAAAは何か意味があるのでしょうか?
単に

struct AAAA {
.................
};

でいいと思うのですが。。。

実は両方とも意味があるんだが、どちらかというと最初のAAAAにこそ意味が無い
>>844
レスども

>実は両方とも意味があるんだが

気になりますw
846デフォルトの名無しさん:04/08/01 23:47
>>843
いちいちstructを書きたくない人は上で書く。
typedef struct tagAAAA {
struct tagAAAA*;
int idata;
char cdata;
float fdata;
} AAAA;
というように、自己参照のために使ったりする
848デフォルトの名無しさん:04/08/01 23:48
>>844
自己参照型の構造体なら意味がある
おっと、
- struct tagAAAA*;
+ struct tagAAAA *tAAAA;
だ。
自分は常に両方つけるけどね。
先のAAAAはつけないとdoxygenが構造体認識してくれないから。
後のAAAAが無いと変数宣言時にいちいちstructつけないといけないので面倒。
タグ名とtypedef名を別名にするのは何のためなの?
いっしょで問題ないような気がする。
852デフォルトの名無しさん:04/08/01 23:55
精神衛生上の問題
端的に言えば一身上の都合
なんつーか、MSDNでそうなってるから。
typedefを使わないのが真のプログラマ
856デフォルトの名無しさん:04/08/01 23:58
Real programmers don't use typedef.
真のプログラマは食いあぶれる
858843:04/08/02 00:02
みなさんレスどうもですm(__)m
ネタ化してしまいますた(苦笑

>いちいちstructを書きたくない人は上で書く。

あっ、そうでした。最近C++のお手伝いばかりしていて
ぼけっとしてますた。

>自己参照型の構造体なら意味がある

なるほど!


typedef struct AAAA {
.................
} AAAA, *AAAA_Ptr;

みないなセットばかり見ていたので、たんにAAAA
だけなのを見て面食らってしまいますた...orz
どうもありがとうございますた。。。
タグ名だけ妙にprivateチックな名前になってると、前方宣言できなくて嫌。
たいした根拠が無いなら、structを明示して使うか、タグ名と同じtypedefにしてほしい。
真のプログラマは明快なtypedefをしばしば用いる
861デフォルトの名無しさん:04/08/02 00:06
>>859
スレタイ嫁
すぃげんごならおれにきけぱーとはちじゅうなな
>>852はif(0==a)信者
864859:04/08/02 00:10
>>861
ん?疑問形にすればいいのか?
s/嫌。/嫌じゃない?/
s/ほしい。/もらえないかな?/
865デフォルトの名無しさん:04/08/02 00:11
private
866デフォルトの名無しさん:04/08/02 00:27
なんか***な響き
インビ

インブ
ぷりばてがどーかしたの〜?
うざったいだけだからメール欄にごちゃごちゃ書かないでいいよ
ほら869の機嫌が悪くなった。謝れ868
ごめんなちゃい☆
もう怒った、お前でオナニーしてやる。
えー、やめてくださいよー↓↓
↑↑
875デフォルトの名無しさん:04/08/02 02:10
Real programmers don't use int.
>>875
誰がそんな事言ったんだよ
877デフォルトの名無しさん:04/08/02 02:13
実数型のプログラマーは整数を使わない。だろ?
878デフォルトの名無しさん:04/08/02 02:14
むかしvoid先生んちに遊びにいったときに
奥さんのつくったロレーヌ風キッシュがおいしかったのですけどー

そんな私でもプログラマーになれますか?
879デフォルトの名無しさん:04/08/02 02:15
Real Programmer v.s. Quiche Eater
>>878は生越
881デフォルトの名無しさん:04/08/02 02:17
真のプログラマーは算術IF文を好むんです!
882デフォルトの名無しさん:04/08/02 02:17
ループが10ページにわたっても平気です!
883デフォルトの名無しさん:04/08/02 02:25
うちの学校もこれを教科書にしてる。
(講義は後期のみだが)
884デフォルトの名無しさん:04/08/02 02:25
誤爆か?

キッシュイーターといえば、scanf使うやつはもろにそうだな'
885デフォルトの名無しさん:04/08/02 02:27
enumなんかはシンタックスシュガーともいえるだろ?
お前なんかはソサイエティーラビッシュともいえるだろ?
887デフォルトの名無しさん:04/08/02 02:30
わたしも某先生のようにキッシュやクスクスは好きですが、
プログラムのコーディングでめしくってます。
今だ!888ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
社会のゴミが888ゲットおめ
890デフォルトの名無しさん:04/08/02 02:32
あの表面の赤いカブみたいなやつですか? > ラビッシュ
891デフォルトの名無しさん:04/08/02 02:32
いや、ぴょんぴょんはなる耳の長い動物のことだろ。
>875-891
ブラックムーンがちびうさを呼ぶときの名前だろ > ラビット
>>855-857
それ誤訳

Real programmers don't use typedef.
× 真のプログラマは typedef を使わない。
○ 現実のプログラマは typedef を使わない。

むしろ、使って欲しいのにちゃんと使われていないことを嘆いている。
で結局scanf使わずに何使うの
fscanf
>>896
fgets() 〜 strtol()
// #define バッファ 任意のバッファ用変数
// #define 対象 対象となる変数
fgets(バッファ, sizeof(バッファ), stdin);
// Choose.
// 対象 = atoi(バッファ);
// 対象 = atof(バッファ);
// 対象 = atol(バッファ);
// sscanf("format", バッファ, ...);

別に自分しか使わないとかならscanfでもええっちゅーの。
900推奨NGワード:04/08/02 11:55
第一群
頭悪すぎ,池沼,バカ,馬鹿,ばか,ばーか,アホ,あほ,阿呆,まぬけ,間抜け,アフォ,くず,クズ,アフォ,キモイ,低脳,タコ,クソ,死ね,氏ね,餓鬼,バッカ,香ばしい,ゲラゲラ,(プ,プゲラッチョ,莫迦,逝け,キモい,キモイ,消えろ,失せろ,晒し上げ

第二群
函数,規格票,scanf,gets,goto,コーディングスタイル,コメント,セキュア,セキュリティ,ナル,ヌル,ウォーニング,ワーニング,コンパイラ,コンパイラー

第三群
空白あけろ,空白あけるな,空白のあけかた,空白の空け方,空白空けるな,空白入れろ,空白入れない,キヤストすんな,ボ○ケ,ぼ○け,ぼけぇ,ヴぉけ,ぼけ,ボケ,ぼ け,質問するな,回答するな

第四群
;-),;),すぎー,初歩的な質問,初心者です,初心者,;-;,異端,脳内変換,UNIX厨,M$,初心者的な質問,のー?,勝利,敗北,妄想,素人,負け犬,ぬるぽ,ヌルポ

第一群:言葉自体の有害度が大きい。
第二群:言葉自体は有害ではないものの、使う人の技量や目的によってはフレームの原因になる。
第三群:荒らしが好んで使う言葉。
第四群:その他。主観で分類してください。
901変更点とか:04/08/02 11:57
・区切りを「,」にしました。
・売名行為に荷担することになるので「日下部陽一」は削除しました。
・言葉をいくつか追加しました。

意見・クレームなんでもどうぞ。
902お願い:04/08/02 11:58
一行が長いですが、改行を入れるかどうかの判断は次スレ立てる方に任せます。
903デフォルトの名無しさん:04/08/02 12:13
sscanfやfscanfの最初の文字のsやfはどういう意味なんですか?
string
file
なのでは?
それっぽいですねサンクス〜
>>901
>売名行為に荷担することになるので
という電波を受信したのですね?
907デフォルトの名無しさん:04/08/02 13:49
fputcとputcのちがいfgetcとgetcのちがいはなんですか
908デフォルトの名無しさん:04/08/02 13:50
次の質問どうぞ
>>907
fがない方はマクロかもしれない可能性がある。
そんな事はどうでもいい事だ。
911デフォルトの名無しさん:04/08/02 17:17
時間を0.1秒まで取得するのはtime.hじゃ無理ですか?
環境依存
0.1ならclockで出来ない?
914デフォルトの名無しさん:04/08/02 18:06
scanf嫌悪って宗教だよな。
個人でプログラム書くのにいちいち言われちゃたまらん。
仕事で使うとき気をつければ良いだけ。
それとも教育してるつもりなのか?
>>914
最悪はお前だ馬鹿。いつまでも繰り返すな無能。
>>915
馬鹿に反応するお前が馬鹿だ馬鹿
>>916
お前馬鹿だろ
>>914-917
とりあえずお笑い小咄スレに張ってこようと思います
> それとも教育してるつもりなのか?
そうなんだろう。
分かってる人間が、こんなスレで質問したりせんだろ。
clock()がまともに動いてなおかつ一番精度の悪いプラットフォームってなんだろ
思想は漏れは知らんが、
いちいちコードがうpされるたびに脇道にそれるのだけはかなわん。
視姦してやる



<●>__<●>じー・・・
>>923
初心者にscanfやgetsを勧めるオバカさんは消えちゃってください。
俺はバッファに64kとってるからまず溢れないんだよ。
だから無問題なの。
まったく馬鹿相手にすると疲れるよ。やれやれ。
クマーーー
scanf
scanf
scanf
scanf
scanf
scanf
scanf
scanf
scanf
scanf
もううざいからさ、scanfとかgetsを使うなという人は、代替となる関数を書いてくれ。
もちろん、強く主張するのだから、バッファオーバーランなどとは無縁だよなw
929は釣りなのか天然なのか……
readline使えよぼけ
readlineってなーに?
調べろよぼけ
半角スペースあけろ ぼけ
空白あけろ、だ ぼけ
readline氏ねカス
>>929
f
>>929
俺は「使うな」派じゃなくて「使い分けろ」派だが・・・

gets: fgets
scanf: fgetsとatoi(strtol),atof(strtod),sscanfなど
代替策は散々掲示されてます。

釣りだと思うけど、そうじゃないならこの話続けないで下さい。
まんこ
940939:04/08/02 19:26
誤爆だすまん
( ´д)ヒソ(´д`)ヒソ(д` )
次スレ勃ってる?
943ガンバル初心者!:04/08/02 20:51
#include <stdio.h>

int main(void)
{
   int a;
   char ask;

   a = 0 ;

   while ( a == 0 )
   {
      printf(" Y or N ? = ");
      scanf("%c" , &ask );

      switch( ask )
      {
         case 'Y': case 'y':
            puts("Yesの箱舟");
            a = 1 ;
            break;
         case 'N': case 'n':
            puts("Noストラダムス");
            a = 1 ;
            break;
         default:
         break;
         }
      scanf("%c" , &ask );
   }
   return(0);
}
またscanf厨ですか。
インデントくらい合わせろ。な。
945ガンバル初心者!:04/08/02 21:02
だってまだ #include <stdio.h> しか習ってないんだもん。
今日から配列勉強中だよ。
ここってタブ効かない?
ここ用にスペースに直したらタブがズレたの。ゴメン。
946ガンバレ初心者!:04/08/02 21:15
>>945
stdio.h の中の人にも、もっといいものが沢山ある。
授業で習った関数なんだからscanf厨とか言ってやるなよ。
scanf("型", (&)変数);
だけですむぶん教えるのが"楽"なんだろう・・・
>>947
それが良いことだと思ってるのか?
949ガンバル初心者!:04/08/02 21:24
優しい言葉、ありがとう! ガンバルよ!    でも今日はもう寝るよ!
950ガンバル初心者!:04/08/02 21:27
変なタイミングでレスしちゃったよ。。。
>>948
それじゃあどうすればいいのか、
手取り足取り優しく教えてくれると、どこかの誰かが泣いて喜ぶよ。



と寝言いってみるテスト。いえ、もうホント、明日があるんで寝ます。
>>948
俺は、fgetsと変換関数の組み合わせとかで教えて欲しいが、
始めの段階で難しいとか思われるよりは、
慣れてから問題点と解決方法を教える方が良いかも・・・と思った。
教えてくれるかは別として。
↓これ↓をコンパイルできるフリーのコンパイラってありませんか?

#include <stdio.h>
#include <math.h>
main()
{
float a,b,c;
float d,r,s,bunbo;
float x,x1,x2;
printf("a="); scanf("%",&a);
printf("b="); scanf("%",&a);
printf("c="); scanf("%",&c);
d=b*b-4.0*a*c;
bunbo=2.0*a;
if(d>0) {
/* 実根 */
x1=(-b+sqrt(d))/bunbo;
x2=(-b-sqrt(d))/bunbo;
printf("x1= %f \n",x1);
printf("x2= %f \n",x2);
上の続き

} else if(d==0.0) {
/* 等根 */
x=(-b)/bunbo;
printf("x= %f \n",x);
} else {
/* 複素根 */
r=(-b)/bunbo;
s=sqrt(-d)/bunbo;
printf("x1= %f + %f i \n",r,s);
printf("x2= %f - %f i \n",r,s);
}
}
>>950
起きているうちに寝言言うなや
このスレと一つ前全部読んで来い
>>950
次スレ立てろ ぼけ
957main(void):04/08/02 22:12
死ね
959main(void):04/08/02 22:15
死にました。
星厳呉あげ
961958:04/08/02 22:17
ごめん。誤爆
ここはエラそうなインターネッツですね
次スレ勃起につき、このスレは終了です。
質問するな
回答するな
>>964
なぜ、質問/回答してはいけないんですか?
雑談スレだからです
>>965-966
> 質問するな
> 回答するな