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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001v(^o^i)dNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

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

コンパイラを探しているなら >>2-13 を。
上記を逸した場合の結果は激しく未定義だYO!

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

各種リンクは>>3-20あたり(誰か適当に貼って)

C言語なら俺に聞け! Part 80
http://pc5.2ch.net/test/read.cgi/tech/1084749585/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0002デフォルトの名無しさんNGNG
しなやかに2get
>>1乙
0003デフォルトの名無しさん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/

【ライセンスや機能などに問題あり】
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
0004デフォルトの名無しさんNGNG
4get
0005デフォルトの名無しさんNGNG
まろやかに5get
0006デフォルトの名無しさんNGNG
豪快かつ華麗に6get
0007デフォルトの名無しさんNGNG
7get in nullpo
0008デフォルトの名無しさんNGNG
7getし損ねた。
7にあつあつのおでんをぶつけてやる。
ついでににガッ!!
0009デフォルトの名無しさんNGNG
ニガって何だよと思った
0010デフォルトの名無しさんNGNG
すいません、初めてここで質問します
char型というのはstrcpyとかstrcatとかで繋げることはできないのでしょうか?
やりたいことはchar str[]にchar str1を付けたしたいんです。
どうかよろしくお願いします
0011デフォルトの名無しさんNGNG
>>10
ぬるぽ
0012デフォルトの名無しさんNGNG
char str[MAX_PATH];
char str1;
strcpy(str,"ABCD");
strcat(str,str1);
0013デフォルトの名無しさんNGNG
>>12
突っ込みどころ満載だな。
0014デフォルトの名無しさんNGNG
>12
わけわからんコードをポストすな
0015デフォルトの名無しさんNGNG
sprintf(str, "%s%c", str, str1);
0016デフォルトの名無しさんNGNG
>>13 >>14

あなたたちお二人 strcatですね
お幸せに(はあと)
001710NGNG
わかりにくくてすみません
char str[] = {0x41,0x42,043};
char str1 = 0x44;
strcat(str,str1);
printf("%x\n",str[3]);
こんな感じでやりたいんです
001812NGNG
>>17

すいませんお手上げです。お力になれなくてすみません
0019デフォルトの名無しさんNGNG
関数がないなら作ればいいじゃない
0020デフォルトの名無しさんNGNG
>>17
普通にsprintf()でくっ付けたら良いんとちゃう?
もしくは普通にprintf("%s,%c\n",str,str1);
って感じで・・・
0021デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main(void){
char str[] = {0x41,0x42,043};
char str1 = 0x44;
int n = sizeof str;
realloc(str, n + 1);
str[n] = str1;
printf("%#x\n",str[3]);
return 0;
}
0022デフォルトの名無しさんNGNG
>>17
printfのとことかが意味不明だが、
普通に
printf(%s)とprintf(%c)を続けてやればいいのでは?
%xは16進数をダンプするわけで、文字列は表示できない。
002322NGNG
あぁ、ごめん。printfは意味不明じゃなかったっす。
0024デフォルトの名無しさんNGNG
>>21
どっかいけよ
0025デフォルトの名無しさんNGNG
>>21
>int n = sizeof str;
はげわら
0026デフォルトの名無しさんNGNG
ここは面白コードのインターネッツですか?
0027デフォルトの名無しさんNGNG
>>17
char str[] = {0x41,0x42,043};
この時点でstr[]のサイズは3なので、
後部にstr1を追加する余裕はありません
0028あぼーんNGNG
あぼーん
0029デフォルトの名無しさんNGNG
>>25
何がおかしいのか素でわからんから、教えてくれよ。
0030デフォルトの名無しさんNGNG
>>20
いや、なんというか、printfすることが目的じゃなくて
配列に入れたいというか・・・

>>21
どうもです、できました。でも長くなりますね。
char型の配列を選ぶことが間違いでしょうか・・・
0031デフォルトの名無しさんNGNG
自分で送れ厨房
0032デフォルトの名無しさんNGNG
なんで俺のメアド晒してんだよ
003310NGNG
>>27
あ、そうなのですか、すみません、
では
char str[4] = {0x41,0x42,043};
に訂正ということでお願いします。
003425NGNG
>>29
まじか・・・。つりならゆるさんぞ。
sizeofはsizeof(型名)の形で使う。
型のメモリサイズを得る演算子だから、変数の領域を取得することは出来ない。
strの長さを知りたいならstrlen(str)ってやるの。
0035デフォルトの名無しさんNGNG
char nullpo[1] = {0xFF} // 255
って何ですか?さっぱり分かりません。1から教えてください。というか教えろ糞ども
0036デフォルトの名無しさんNGNG
>>33
駄目みたいです。スマソ
0037デフォルトの名無しさんNGNG
>>34
バカはお前だ

>>33
配列はrealloc出来ないから、

char str[4] = {0x41,0x42,043};
char str1 = 0x44;
str[3] = str1;

とするのが正解。
0038デフォルトの名無しさんNGNG
>>34
お前氏ね。
003924NGNG
>>29
素なのかよ。realloc()の第一引数はmalloc(), calloc(), realloc()で
返ってきた値しか使っちゃならん。それ以外の値を使うと不定となる。
解放済みのも駄目。
0040デフォルトの名無しさんNGNG
>>39
アンカーを良く見ろ、ネタか?
0041デフォルトの名無しさんNGNG
int i = str1;
strcat(str, (char*)&i);

strの要素数が十分ではじめに0クリアされていてsizeof(int)>sizeof(char)ならできる。
「できる」と「やっていい」は別。
これがなぜ「できる」のか分からないのなら、やるべきではない。
っていうか、やるべではない。

なぜstrcatに目をつけたかがそもそも謎。
0042デフォルトの名無しさんNGNG
>>40
ん? realloc()のは分かっててやってるのか?
初心者いるようだから惑わすようなことするなよ。
004321NGNG
そうだったのか・・・むかついたが勉強になった・・・
0044デフォルトの名無しさんNGNG
MSDNより

Example
// expre_sizeof_Operator.cpp
// compile with: /EHsc
#include <iostream>

size_t getPtrSize( char *ptr )
{
    return sizeof( ptr );
}

using namespace std;
void main()
{
    char szHello[] = "Hello, world!";

    cout << "The size of a char is: "
           << sizeof( char )
           << "\nThe length of " << szHello << " is: "
           << sizeof szHello
           << "\nThe size of the pointer is "
           << getPtrSize( szHello ) << endl;
}
004510NGNG
char str[4] = {0x41,0x42,0x43};
char str1 = 0x44;
int n = strlen (str);
// realloc(str, n + 1);
str[n] = str1;
printf("%#x\n",str[3]);
でも出来ました
有難うございます >>34

strlenとsizeofの違いは後で調べます
0046デフォルトの名無しさんNGNG
あ、でも
警告: 関数 `strlen' の暗黙の宣言
となります。これも調べます。
0047デフォルトの名無しさんNGNG
>>10
>>34の発言は真に受けちゃダメだよ
004810NGNG
>>41
うーん、配列の追加とかそんな感じで検索してたら
strcatに行きついたんですが、もっと別の方法がありますでしょうか?
0049デフォルトの名無しさんNGNG
>>41
29が突っ込んだのは

>>int n = sizeof str;
>はげわら

これについてだろう。sizeof strは正しい構文。

>>41
Little-Endian依存
>strの要素数が十分ではじめに0クリアされていてsizeof(int)>sizeof(char)ならできる。
こんな嘘書くな
0050デフォルトの名無しさんNGNG
strcatとかstrlenは最後に'\0'が入ってることを前提にしてるから
今回の場合では使えないよ。
0051デフォルトの名無しさんNGNG
っていうか、文字型変数に str1 なんて命名するなよ。
何で誰も突っ込まん。
0052デフォルトの名無しさんNGNG
>>50
char str[] = {0x41,0x42,043};
だと使えないけど
char str[4] = {0x41,0x42,043};
ならstr[3]には0が勝手に入るからstrlenは使えるでしょ。
0053デフォルトの名無しさんNGNG
>>50
char str[4] = {0x41,0x42,0x43};

初期化指定が省略されている分は 0 で初期化されるから、
今回のケースに限り問題ない。
005441NGNG
>>49
それもやね。intel界の人間なんで、忘れとった。
0055デフォルトの名無しさんNGNG
何かCスレらしくなってきたじゃないか(゚∀゚)
0056デフォルトの名無しさんNGNG
ええじゃないか、ええじゃないか(゚∀゚)
0057デフォルトの名無しさんNGNG
初歩的な質問ですみません。
Cのソースやヘッダーを解析して宣言されている構造体とそのメンバの一覧を
出力するような解析ツールをご存知でしたら教えて下さい。

ベクターで探したのですが、関数のリスト表示はあっても構造体を
解析するものが見つからなくて、
0058デフォルトの名無しさんNGNG
>>57
自分で作れ!
0059デフォルトの名無しさんNGNG
>>前スレ997
>メンバ変数ということはC++でスレ違いだが

釣りか?
0060デフォルトの名無しさんNGNG
Cでは単にメンバーだな。
0061デフォルトの名無しさんNGNG
Cだとフィールドって言ってたんじゃないの?
まぁどっちでも通じるからいいけど。
0062デフォルトの名無しさんNGNG
ビットフィールドと勘違いしてそう
0063デフォルトの名無しさんNGNG
C言語を無料でDL出来るサイト教えれ
0064デフォルトの名無しさんNGNG
>>3も読めない芽倉ですか?
0065デフォルトの名無しさんNGNG
>>63
K札で作ると良いよ
0066デフォルトの名無しさんNGNG
C言語を作る方法教えれ
0067デフォルトの名無しさんNGNG
えっとね、c言語ってのは規格なんだよ
だからc言語なんてつくれないんだよ
きゃー、ネタにまじレスしちゃったー
にっげろ〜
0068デフォルトの名無しさんNGNG
↑釣り
0069デフォルトの名無しさんNGNG
釣堀で釣りをしなくて一体どうする?
0070デフォルトの名無しさんNGNG
program::= expression
expression::= ε

これC言語。
作者の俺が言うんだから、間違いない。
0071デフォルトの名無しさんNGNG
おお、リッチーさん
ようこそ!
0072デフォルトの名無しさんNGNG
リッチーさんて、著作権違反幇助幇助幇助で逮捕された香具師?
0073デフォルトの名無しさんNGNG
"C言語"は商標じゃないからな、誰が名乗っても問題ない。
0074蟹飯NGNG
ども
0075デフォルトの名無しさんNGNG
え、そうだったの? 知らんかった
禿がバイト見つけたってニュースは聞いたけど
http://www.cs.tamu.edu/reception
0076デフォルトの名無しさんNGNG
>>21
reallocの戻り値を使わないと意味無しどころかリークしまくり。

>>46
#include <string.h>
ちなみにC++なら
string s = "ABC";
s += "D";

>>57
http://www.annie.ne.jp/~y-oka/pc/gnu_global/

>>59
どう見てもVC++での話だろw
どうせpublic変数にしてるかforの内側で何かメソッド呼んだりしてるんだろ。
0077デフォルトの名無しさんNGNG
>>76
s += 'D';
0078デフォルトの名無しさんNGNG
string s("ABC", 3);
0079デフォルトの名無しさんNGNG
>>77
まぁ同じだが、漏れ的には""にするな。あとで2文字にしたいかも知れないから。

>>78
3とかmagic number書きたくないな。"ABC"も同じだが。
どっちにしてもそんなまんどくさい書き方はしない。
0080デフォルトの名無しさんNGNG
変数名こそstrと言う名前だけど、あれは文字列じゃないんだよ。
実質的に同じ結果が得られると言って、"ABC"と [4]={0x41, 0x42, 0x43}は同じじゃあない。
0081デフォルトの名無しさんNGNG
>>80
Cならまぁそう言えるが、本質じゃないな。
0082デフォルトの名無しさんNGNG
前スレで同じ質問しました、すみませんがもう一度します。
ttp://www.sikaku.gr.jp/nj/index4.html
C言語プログラミング能力認定試験(3級)を受けようと
思っていますが、どのくらいの難しさでしょうか?アドバイスお願いします。
0083デフォルトの名無しさんNGNG
>>82
アホか
0084デフォルトの名無しさんNGNG
サーティファイ認定委員会
http://www.sikaku.gr.jp/certify/200.html
0085デフォルトの名無しさんNGNG
>>57
Doxygenとか、Graphviz
0086デフォルトの名無しさんNGNG
>82
#define DIM(x) (sizeof(x)/sizeof((x)[0]))
上記がcharから構造体の配列にも使える事が理解できれば合格です。
0087デフォルトの名無しさんNGNG
> 実行速度はn%8よりn&7のほうが速いのですね。

そもそも計算結果ちがうだろ。

(ふのすうのとき)
0088デフォルトの名無しさんNGNG
>>86
でも、分母で0番目の要素書くのが気分的にいやなのよねえ。
分子を配列名にして、分母を型名にしたい!
0089デフォルトの名無しさんNGNG
>>88
0番目にする必要もないし、型名でも問題ないがw
0090デフォルトの名無しさんNGNG
>>57
Cmap
ttp://www1.ocn.ne.jp/~microsys/
解析が目的なら薦める。
0091デフォルトの名無しさんNGNG
私ゃ
#define numberof(x) (sizeof(x)/sizeof*(x))
だな。
0092デフォルトの名無しさんNGNG
> 0番目にする必要もないし、型名でも問題ないがw

べつに1番めでも2番めでもいやです。

型名にすると、このマクロつかえないでしょ?
0093デフォルトの名無しさんNGNG
>>91
sizeof*(x)
sizeof*(x)
sizeof*(x)
0094デフォルトの名無しさんNGNG
確かに汎用性は無くなるな。 C++ なら inline + template で無問題だが。
0095デフォルトの名無しさんNGNG
>>86
sizeof((x)[0]
sizeof((x)[0]
sizeof((x)[0]

どいつもこいつも
不要な括弧なんか書いてるから
肝心なとこで優先順位に

 知 ら ん 間 に 助 け ら れ

だっせー芋杉
0096デフォルトの名無しさんNGNG
>>93
何か問題でも?
0097デフォルトの名無しさんNGNG
>>95
ぼけはおまえ。
これはsizeofによくつけるカッコではなく、
「マクロの引数だからかならずつけカッコ」だ
それぐらいおぼえてから言え。かっこわるいぞ。
0098デフォルトの名無しさんNGNG
>>97
>>95はsizeofに括弧つけなくてもいいってことを最近知って
他の人にそのことを言いたかったんでしょう。
それぐらい察してあげようよ。

>「マクロの引数だからかならずつけカッコ」だ
sizeof((x)[0])
このsizeof直後の括弧は違うでしょ。
009991NGNG
前はsizeof(*(x))だったけど、マクロだからそろえなくてもいいやってんでsizeof*(x)
0100デフォルトの名無しさんNGNG
なんか痛々しいですね
010193=95NGNG
失礼した
0102デフォルトの名無しさんNGNG
現行の C 言語では、interface という語は予約語ですか?
もしそうであれば、 interface というのは何のための予約語
なのか教えていただけませんでしょうか?
0103デフォルトの名無しさんNGNG
はじめましてC言語でプログラムに悩んでるので教えてください。

u'' = [ u, v, u' , v']
v'' = [ u, v, u' , v']

'は1回微分です。微分は時間で行っています。
上の式を4次のルンゲクッタであらわしたいのですがどうすればいいですか?
0104デフォルトの名無しさんNGNG
>102
http://www.google.com/search?q=C%E8%A8%80%E8%AA%9E+%E4%BA%88%E7%B4%84%E8%AA%9E%E4%B8%80%E8%A6%A7&sourceid=opera&num=0&ie=utf-8&oe=utf-8
0105デフォルトの名無しさんNGNG
すみません、103です。抜けていたので補足です。
ルンゲクッタでu'、v'を求めたいのですがどうすればいいでしょうか?
0106デフォルトの名無しさんNGNG
>>104 C でも C++ でも interface というのは予約語では
無いみたいなんですが Visual C++ のエディタでは
色つきで表示されるし、いくつかの COM 関係の
ソースにも interface ってのが出てくるんですよ…

C99 以降とかで増えたのかと思ったけど、違うっぽい。
0107デフォルトの名無しさんNGNG
なんかVisual C++ 特有っぽいので、
Visual C++ スレに行きます。
★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/
010893=95NGNG
>>102
>http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=JIS+X+3010%3A2003&dantaiCd=JIS&status=1&pageNo=0
これ買え。もしくは、閲覧させてくれる人か機関を探せ。
ルールブック持ってない審判が同業者にいちいち聞いて回ってるのと同じで、ひたすらみっともないぞ。
ちなみに2chはネタをネタと見抜けない人には向かないって運営者の格言があることも知っておけ。
0109デフォルトの名無しさんNGNG
>>105
>どうすればいいでしょうか?

この語尾を、「納期○月×日で、見積もりを下さい」に変えればいい。
宛名はム板じゃなく△株式会社御中でな。
0110デフォルトの名無しさんNGNG
>>106
VCでCOMを使うときに使うだけだろ
独自拡張だよ
0111デフォルトの名無しさんNGNG
>>110
独自拡張だよ
独自拡張だよ
独自拡張だよ
0112デフォルトの名無しさんNGNG
>>105
マルチは死ね
0113ビル・ジョブスNGNG
可読性向上のための括弧は付けるべきです。よって86を支持。
0114デフォルトの名無しさんNGNG
>>113
こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0115ビル・ジョブスNGNG
>>114
おれはこのスレのPart.1の1だから悪いけどここに居るよ。
君が張ったリンクへは君自身が逝ってくれ。
そしてもうこのスレには二度と帰って来ないでくれ。
0116デフォルトの名無しさんNGNG
>>115
すごい主張ですね。
素直に感心しました。
0117デフォルトの名無しさんNGNG
>>115
必死だなw
0118デフォルトの名無しさんNGNG
スゲーワロタw
0119デフォルトの名無しさんNGNG
>>113 って、まだ生きてたのか…
0120デフォルトの名無しさんNGNG
>>119
お前もまだ死んでなかったんだw
0121デフォルトの名無しさんNGNG
漏れを嫌いな香具師なんてみんな死んじゃえばいいのに・・・
0122デフォルトの名無しさんNGNG
>>121
好き過ぎて嫌い。ごめん。
0123デフォルトの名無しさんNGNG
ソシテ ダレモ イナクナッタ・・・・
0124デフォルトの名無しさんNGNG
∧||∧
012522歳(初級〜中級) ◆MuQGL65shc NGNG
どうも最近のCスレはいかん。
すぐに話題がそれて、意味の解らん
レスがぐだぐだ続く。
もっとためになる話をしてくれないと困るではないか。
0126デフォルトの名無しさんNGNG
ネタがねぇんだよヽ(`д´)ノ
0127デフォルトの名無しさんNGNG
Cでかぁ? 何話せって言うのよ。
オブジェクト指向でもする?
0128デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1085929718/39

39 :デフォルトの名無しさん :04/05/31 00:40
>>36
globalはスタティック。
ローカル変数はスタックにのるのでメモリ(ヒープ)に乗せたいときに
staticを使う。
012922歳(初級〜中級) ◆6ahYthuttI NGNG
だったら書き込むなぼけ
0130デフォルトの名無しさんNGNG
お前は死ねぼけ
0131デフォルトの名無しさんNGNG
君にとってはどうでもいいかもしれないけど、
俺ことデフォルトの名無しさんにとっては非常に重要なんだ。
ここは君だけのためのスレじゃないんだから、
いいかげんに黙ってくれないか?
0132デフォルトの名無しさんNGNG

 さ ぁ 盛 り 上 が っ て ま い り ま し た
0133デフォルトの名無しさんNGNG
WINのLSIC+CPADでコッホ曲線が書きたいです。
つまり、グラフを描きたいのですがやり方がわかりません。
参考になるHP等を教えてください。
0134デフォルトの名無しさんNGNG
Cに未来はありますか?
C++でもなく
ましてやC#でもなく
単なるCに未来は?
0135デフォルトの名無しさんNGNG
C++よりはあると思う
0136デフォルトの名無しさんNGNG
>>133
http://www.google.co.jp/search?q=%82v%82h%82m%82%CC%82k%82r%82h%82b%81%7B%82b%82o%82%60%82c%82%C5%83R%83b%83z%8B%C8%90%FC%82%AA%8F%91%82%AB%82%BD%82%A2&ie=Shift_JIS&hl=ja&lr=
0137デフォルトの名無しさんNGNG
Cが進化してC++,C#,Dになったのです。
Cの未来はC++,C#,Dなのです。
0138デフォルトの名無しさんNGNG
> おれはこのスレのPart.1の1だから悪いけどここに居るよ。

実はおれもそうだ。
0139デフォルトの名無しさんNGNG
Kusakabeが暴れている時に来た。
0140デフォルトの名無しさんNGNG
int main(int argc, char *argv[]) {
  const char *const p = *argv; /* 1 */
  const char *const *const pp = argv; /* 2 */
  return 0;
}

1 で警告が出ず、2 で警告が出るのは何故ですか?
initialization from incompatible pointer type と怒られてしまうのですが。
0141デフォルトの名無しさんNGNG
initialization from incompatible pointer type  だから。
0142デフォルトの名無しさんNGNG
>>140
互換性のない型へのポインタで初期化しようとしたから。
0143デフォルトの名無しさんNGNG
歴史的にみて、
> #define LENGTHOF(x) (sizeof(x) / sizeof*(x))
を提唱するやつが5年に1回でてきてる。
(おれはいままでに数回みた)

でも、けっきょく定着しないのは、大きな欠点があるためだ。

このマクロは、関数の外の比較的グローバルな配列に使われることも多い。
で、ほかのコンパイル単位でexternで参照されていることもある。

で、このマクロを使っている関数の一部を、ほかのファイルにこぴぺして
流用するとき、そのままコンパイル通っちゃうのが危険なのよね。

もしくは同様に、ある配列のサイズをこれで計算してて、
その配列のアドレスを関数のポインターとして渡し、
その関数の中の仮引数にこれをつかっちゃったときも、
コンパイルエラーにはならない!

そこが大きな欠点だな。
0144デフォルトの名無しさんNGNG
>>139
それは誰ですか?
0145デフォルトの名無しさんNGNG
> 1で警告が出ず、2で警告が出るのは何故ですか?

1は文法的にまったく問題がなく、2はあるからです。
0146デフォルトの名無しさんNGNG
C#よりDbのほうができがいいと思います。
0147デフォルトの名無しさんNGNG
>143
externって最近めったに使わないし、ましてや配列でしょ?
その変数を操作するメソッド用意して隠蔽しちゃうからね。
最後に、十分定着していると言うかこれ常識だと思いますけど。
0148デフォルトの名無しさんNGNG
> externって最近めったに使わないし

おまえ あほか...。最近とかそういう問題じゃあねーだろ。

> ましてや配列でしょ?

逆だろ。配列だからこそ「グローバルにするかどうか」のさかいめでは、「じゃあグローバルに
しちゃお」って確率が増えるんだろうに

> 十分定着していると言うかこれ常識だと思いますけど。

いや20年前ぐらいにはじめてみたけど、その後も、流行っては消え、流行っては消えで、
ちっとも定着しない。けっきょく生で書くのよね割り算を。
0149147NGNG
>148
>逆だろ。配列だからこそ「グローバルにするかどうか」のさかいめでは、「じゃあグローバルに
>しちゃお」って確率が増えるんだろうに
増えねーよ。そもそもH/WでMAPされたI/O AREAくらいしかexternなんて使わねーんだよ。

君は一生、生でこいてなさい。私たちは普通に使います。
0150デフォルトの名無しさんNGNG
これが末端か・・・
0151デフォルトの名無しさんNGNG
> そもそもH/WでMAPされたI/O AREAくらいしかexternなんて使わねーんだよ。

おまえ...もうちょっとちゃんとC勉強したほいがいいぞ。
0152デフォルトの名無しさんNGNG
errnoとか。マクロになっていることもあるけど。
0153デフォルトの名無しさんNGNG
>>151
おまえ...もうちょっとオブジェクティブなC言語の実装を勉強したほうがいいぞ。
0154デフォルトの名無しさんNGNG
低脳ばっか
0155デフォルトの名無しさんNGNG
それが2ch
0156デフォルトの名無しさんNGNG
>int main(int argc, char *argv[]) {
int main(int argc, const char * const argv[]) {
0157デフォルトの名無しさんNGNG
int main(int argc, const char * const * argv) {
0158デフォルトの名無しさんNGNG
int main(int argc, const char * const * const argv) {
0159デフォルトの名無しさんNGNG
>>143
>>147 の言う通り、常識です。
>このマクロは、関数の外の比較的グローバルな配列に使われることも多い。
そーゆーものに使う方がまぬけなだけですね。
0160デフォルトの名無しさんNGNG
このスレには学生が多いな。
0161デフォルトの名無しさんNGNG
現場を理解してないからこんなことが言えるわけで。
コーディング体系にも適材適所があるんだから、それを宗教感覚で締め付けるのはよくない傾向だな。
こんなの現場に持ち込んでもらわれちゃ凄い迷惑だ。

カッコ付けだけのオブジェクト指向逝ってよし。
気安く変数を隠蔽してくれるとデバッグし辛くなるんだよ。
0162デフォルトの名無しさんNGNG
文字列操作教えてください。
char temp[MAX_PATH]
に30文字くらいのアルファベットが格納されるのですが
先頭から2つめのタブ以降から3つ目のタブの間の文字を
取得したいです。よろしく教えていただけないでしょうか?
0163デフォルトの名無しさんNGNG
×よろしく教えていただけないでしょうか?
○教えていただけないでしょうか。よろしくお願いします。
0164デフォルトの名無しさんNGNG
>>162
strtok
0165デフォルトの名無しさんNGNG
>>161
変数を隠蔽した程度でデバッグしにくくなる
お前のやり方が悪いだけ。
0166デフォルトの名無しさんNGNG
>>164
ありがとうございます。
肝心のタブはどのように判別すればよろしいでしょうか?
0167デフォルトの名無しさんNGNG
>>166
strtokについて調べろよ
0168デフォルトの名無しさんNGNG
char *get_token3(char *dst, const char *src)
{
#define TAB (0x09)
int c=0;
char *d=dst;
while(*src) {
if (*src++==TAB) {
if(++c==2) {
while(*src&&*p!=TAB)
*d++=*src++;
*d='\0';
return dst;
}
}
}
return NULL;
#undef TAB
}
0169162NGNG
>>167
>>168
非常に助かりました。感謝いたします。
0170デフォルトの名無しさんNGNG
>>169
早くstrtokを批判できるようになれよ
0171デフォルトの名無しさんNGNG
>>170
批判ってどんなの?
「文字列書き換えんな」とか?
0172デフォルトの名無しさんNGNG
でもなんでタブ区切りなんだろうな?
MAX_PATH とかいう名前から勝手に想像すると、
':' とか、':' とかじゃないのかな? ま、関係ない話だ。
0173デフォルトの名無しさんNGNG
>>171
ぶっぶー 外れです
ヒントは記憶クラス
0174デフォルトの名無しさんNGNG
>>168
\t
0175171NGNG
>>173
わかんね。ギブアップ。
おしえて。
0176デフォルトの名無しさんNGNG
>>175
strtokにぬるぽ渡してもガッされないだろ? 何でだ??
0177デフォルトの名無しさんNGNG
2回目以降の第一引数はNULLだから?
0178デフォルトの名無しさんNGNG
>>165
おまえ、デバッガ使ったことないだろ。
デバッガの機能を理解した上で、デバッグしやすいコーディングを考えたら
バカの一つ覚えみたいに変数を隠蔽しようなんて考えは起こらないはずだ。
それでも隠蔽に拘るなら、ヘボとしかいいようがない。
0179デフォルトの名無しさんNGNG
どんな隠蔽してるんだ?
IUKnownで関数テーブルからいちいちハンドラ探させるるとか?
0180デフォルトの名無しさんNGNG
あ、変数の隠蔽か。
0181デフォルトの名無しさんNGNG
デバッガの世話になるとは、ヘボとしかいいようがない。
0182デフォルトの名無しさんNGNG
それは違うと思うが、しかし変数の隠蔽でデバッグが
困難になるという状況は、思いつきにくいな。

Cで変数の隠蔽なんて大した事できないっしょ?
変数のIDテーブルとか使うのかなぁ?
0183デフォルトの名無しさんNGNG
構造体のネストが深いとか?
0184175NGNG
>>176
第1引数がNULLだったら前回の続きから
(言わんとしてることは察して)
ってことになってるから ガッ されないんでしょう。

こんな感じで実装されてるのかな。

/*
* 初めて使われたときの第1引数がNULLのときの
* 振る舞いは未定義らしいので気にしない。
*
* 簡単のために第2引数は1文字ってことで。
*/
char *hoge(char *str, const char c)
{
  static char *p; /* >>173の「記憶クラス」ってのはこれのこと? */
  char *q;

  if (str != NULL) p = str;
  while (*p == c) ++p;
  for (q = p; *p != '\0'; ++p)
    if (*p == c) { *p++ = '\0'; break; }

  return *q == '\0'? NULL: q;
}

やっぱ何が問題なのかわからん。
0185デフォルトの名無しさんNGNG
>>184
マルチスレッドな環境で
0186デフォルトの名無しさんNGNG
デバッグしにくい変数。

構造体のヘッダにデータサイズフィールドとか、データ型IDのがあって、
構造体の受け渡しは void* で行われて、コンテクストによっていろ
んな構造体にキャストしつつ使われている場合。

こんなんだったら嫌だな。局所的にはよくある手法だけど。
0187デフォルトの名無しさんNGNG
デバッグ厨の反撃まだー? マチクタビレター
0188175NGNG
>>185
正直マルチスレッドって良くわかんないけど
>>184でいうところのpを二人以上がいじったら大変だってこと?

0189デフォルトの名無しさんNGNG
二人って・・・
中の人などいない!
0190デフォルトの名無しさんNGNG
アライメントって何ですか?
0191デフォルトの名無しさんNGNG
広島の新井か
0192デフォルトの名無しさんNGNG
>>190
えんばいろめんと でぃびじょん
0193デフォルトの名無しさんNGNG
>>190
アラインメント
0194190NGNG
分りました。
ありがとうございました。
0195デフォルトの名無しさんNGNG
尻洗いぜーしょん
0196デフォルトの名無しさんNGNG
C言語でミリ秒を取得することはできますか?
0197デフォルトの名無しさんNGNG
出来るが環境依存
0198デフォルトの名無しさんNGNG
>>197
Win32APIですか?
0199デフォルトの名無しさんNGNG
>>196
C言語にそのような機能はありません。
ただし、多くのOSがそういうサービスを提供しているので、
その場合はCで取得可能でしょう。
(ミリ秒を取得するって変な日本語ですけど。)
0200デフォルトの名無しさんNGNG
Win32APIならGetTickCountかQueryPerformanceCounter/Frequency
前者はお手軽後者は高精度
0201デフォルトの名無しさんNGNG
>>197,>>199-200
めっちゃありがとう。
勉強になります。
0202デフォルトの名無しさんNGNG
すみません簡単な質問なんですが

ROM=コード部
Heap領域=アロケートにより取得するメモリ
stack部=Auto変数や引数
静的領域=staticな変数やグローバル変数
RAM=Heap領域+stack領域+静的領域

という理解で正しいでしょうか?
0203デフォルトの名無しさんNGNG
正しいとも言いがたい。そして、スレ違い。
0204デフォルトの名無しさんNGNG
>>202
違います。
違いすぎてフォローできません。
なぜ、ROMやRAMが出てくる?
0205デフォルトの名無しさんNGNG
>>202
ROM/RAMはハードの用語
プログラムやデータはすべてRAM=メモリ上に乗っている。
ただしコードの乗っているメモリにはCPUの機能として実行可能フラグがセットされたりする。
なのでRAMだけど書き換え不可。

後は表現が微妙だけど大筋であってる。
0206デフォルトの名無しさんNGNG
>>200
GetTickCountよりtimeGetTimeの方がよくない?
0207デフォルトの名無しさんNGNG
>>206
ライブラリがwinmmだから面倒。
計測にはQuery*のラッパークラス使うし。
0208デフォルトの名無しさんNGNG
はいそこまで。
0209デフォルトの名無しさんNGNG
???
僕の職場では、普通にRAMが足らないとかROMがあと残り3kとかいう話が出るんですが
組み込みだからということですか?普通にWin上でやったら全てRAM上に取られるということですか?
0210デフォルトの名無しさんNGNG
fgetsでファイルから読み込んだ1行を、もう一度読みたいのですがなにかうまい解決策はないでしょうか。
いろいろ調べてみたのですが、fseekとかなのかな。。
0211デフォルトの名無しさんNGNG
>>209
すれ違い。
まぁ、組み込みだろうな。今時のPCじゃそんな会話は出ない。
0212デフォルトの名無しさんNGNG
>>210
fseekする前にfgetposで場所を覚えておく。
で、fseekしたあとにfsetposで戻る。


ところで、二度目にfseekする前にその一行が変わるのか?
0213212NGNG
おおっと、fseekはfgetsの間違いだ。
0214デフォルトの名無しさんNGNG
f(σ・∀・)σゲッツ!!
0215デフォルトの名無しさんNGNG
>>212
目的を果たす処理を聞くのではなく
自分の考えたついたアホ処理を聞いて目的は言わない。
このスレの流れなのでスルーして下さい。
0216デフォルトの名無しさんNGNG
待ち人: 来るが遅い
0217デフォルトの名無しさんNGNG
>>209
そんな職場にいながら、どうしてRAMやROMを理解できないのか、
オレにはそちらの方が不思議だ。
コンピュータの一般的知識からやり直した方がいいぞ。
0218デフォルトの名無しさんNGNG
>>205
>プログラムやデータはすべてRAM=メモリ上に乗っている。

どさくさに紛れて適当なこと言うな。
ROMにだってプログラムやデータは載るだろ。
0219デフォルトの名無しさんNGNG
まぁ、書き込み可能なEPROMとかもあるしな。
微妙にスレ違いだし。
0220デフォルトの名無しさんNGNG
実行時の話じゃないの?
0221デフォルトの名無しさんNGNG
>>220
じゃあ、ROMにあるプログラムやデータは、
実行時にはのっていないことになるのか?
0222デフォルトの名無しさんNGNG
うるせーな。そんな下等な環境の話を持ち出すなよ。
CといったらWindowsに決まってんだろぼけ。
0223デフォルトの名無しさんNGNG
>>222
何故、Cと言ったらWindowsなのかと(ry
0224デフォルトの名無しさんNGNG
>>219-221
マスクROMに載っているコードだって実行できる。
3人ともそれを知らない世代なんだろうな。
0225デフォルトの名無しさんNGNG
>>224
バスに命令コードを流せる「何か」であれば
譬え紙テープリーダだろうと直接実行できる。
>3人ともそれを知らない世代なんだろうな。
世代とは関係なく、ハードウェアに頓着してないだけかと。
そんなことよりスレ違いですよと。
0226デフォルトの名無しさんNGNG
CString csBuff = "AAAAAAAAAAAA 03/26 26-MAR-2001 19:00:00 [TEST$AAAAA]"
※空白の部分はスペース
というデータより【26-MAR-2001 19:00:00】の部分を抽出したいのですが

csBuff.Format(csBuff.Mid(csBuff.Find(" ")));
csBuff.Format(csBuff.Mid(csBuff.Find("/")));
csBuff.Format(csBuff.Mid(csBuff.Find(" ") + 8));
csBuff.Format(csBuff.Mid(0,csBuff.Find("[") -2));
で文字を探した時、始めはデータの空白が8桁で固定だと思って安心していると
空白が9桁のものが稀にありバグが発生しました。
スペースが8?か9?10?あったとしてもうまいこと的確に【26-MAR-2001 19:00:00】
を取得するコードを教えてください。
0227デフォルトの名無しさんNGNG
基本的なことですが質問です。

array[0] = 何も入っていない
array[1] = 4
array[2] = 7
array[3] = 18
array[4] = 2
array[5] = 10

という配列があるとき、array[1]~array[5]だけを降順にソートして、その順に要素数名だけを出力するにはどうすればよいのでしょうか?
0228デフォルトの名無しさんNGNG
>>227
>array[0] = 何も入っていない

「何も入っていない」と言うのはあり得ない。
必ず何かしらの値が入っている。
0229デフォルトの名無しさんNGNG
>>226
>CString csBuff = "AAAAAAAAAAAA 03/26 26-MAR-2001 19:00:00 [TEST$AAAAA]"

明らかにスレ違い
0230227NGNG
>>228
返信ありがとうございます。

すみません。間違えていました。array[0]には0が入っています。
0231デフォルトの名無しさんNGNG
つーか宿題は宿題スレへ。
C/C++の宿題は私におまかせくださいませ 23代目
http://pc5.2ch.net/test/read.cgi/tech/1085149383/
0232デフォルトの名無しさんNGNG
array[1]~array[5]を別の配列Array[0]~Array[4]にコピーして
Arrayをソートした後array[1]~array[5]に戻して
出力するみたいなやり方もあるぞ。
0233デフォルトの名無しさんNGNG
>>232
array[1]〜array[5] だけをソートし、
array[1]〜array[5] だけを出力すればいいだろ。
0234デフォルトの名無しさんNGNG
要素数ってことは今回の場合 4,1,2,5,3 というのを期待しているわけだよね。
array に要素数を関連づけたリストをソートして、それを出すしかないんと?
0235227NGNG
>>234さんのおっしゃる通り、今回期待しているのは4,1,2,5,3です。
説明不足でした。失礼しました。

C言語初心者なもので、>>234さんのおっしゃる意味がよく分かりません。
具体的にどうするのでしょうか?
0236デフォルトの名無しさんNGNG
>>235
C言語初心者じゃねーだろ。C言語知らねーんだろ?
まずは入門書買えよ。
0237デフォルトの名無しさんNGNG
>>235
以前ほぼ同じ問題をここで見たよ。回答もあったよ。
というわけで、http://nssearch.hp.infoseek.co.jp/clang/から探そう。
0238デフォルトの名無しさんNGNG
#include <stdio.h>
int array[] = {0,4,7,18,2,10};
int no[5];
int compar(int *a, int *b)
{
return array[*a]-array[*b];
}
int main()
{
int i;
for(i=0;i<5;i++) {
no[i]=i+1;
}
qsort(no, 5, sizeof(int), compar);
for(i=0;i<5;i++) {
printf("%d\n", no[i]);
}
return 0;
}
0239デフォルトの名無しさんNGNG
>>238
スレ違い。宿題スレ行け。
0240デフォルトの名無しさんNGNG
>>239
黙れチンカス
0241デフォルトの名無しさんNGNG
>>240
なんだと、この大統領
0242デフォルトの名無しさんNGNG
>>240-241
暴れんなイケメン。
0243デフォルトの名無しさんNGNG
初歩的な質問をします。すいません。
10の-4乗の書き方は、10e-4、10*e-4、1e-4、1*e-4、e-4、
の5つうちどれでしょうか?
0244デフォルトの名無しさんNGNG
1e-4
0245デフォルトの名無しさんNGNG
if(10の-4乗の書き方==10e-4)
return FALSE;
else if(10の-4乗の書き方==10*e-4)
return FALSE;
0246243NGNG
>>244
ありがとうございます。
1e-4を1*e-4などに書き換えると何故か上手いぐあいに
動くように見えたので疑ってみました。
0247デフォルトの名無しさんNGNG
>>243
その5つの中から答えなきゃダメなのか?
pow(10, -4) だと、ダメなんだろうな。
0248デフォルトの名無しさんNGNG
ウチでは 1e-4はエラーになる。
1.0e-4 と書かないとダメなんだけど、これって処理系依存?

あと、1*e-4 は「変数eの値に 1を掛けて 4を加える」全く違う式。
0249248NGNG
「加える」ちゃう。「引く」だorz
0250243NGNG
>>247,248
いろいろとありがとうございました。
powでもいいけど、1.0e-4を使って正確にやってみます。
0251デフォルトの名無しさんNGNG
>>248
>ウチでは 1e-4はエラーになる。
>1.0e-4 と書かないとダメなんだけど、これって処理系依存?

エラーになるほうがおかしいと思う。
ISO/IEC 9899:1999 6.4.4.2参照。
0252248NGNG
>>251
漏れの勘違いだった。1e-4 はエラー出なかった。

ごめん && 情報さんきゅ。
0253デフォルトの名無しさんNGNG
qsortにarray渡さずに、
array + 1を渡せばいいだけだろ?
0254デフォルトの名無しさんNGNG
問題 f(x)=4x-xe^(2x)+2=0の根をニュートン法とラフソン法でもとめろ。ただし、初期値 x1=1、
収束判定定数ε=0.00001とする。また計算回数の違いを考察しろ。

これって誰か答えおしえていただけませんかね?

0255デフォルトの名無しさんNGNG
>>254
>>1嫁
0256デフォルトの名無しさんNGNG
VCでタブコントロールを使用して画面を作成したのですが、
タブコントロール上のダイアログにフォーカスがある状態で
ESCキーを押すと、そのダイアログのみ閉じてしまいます。

親のダイアログを含めて閉じる方法はどうすれば良いので
しょうか? OnCancel()から親ダイアログにWM_CLOSEを発
行してもダメでした。
0257デフォルトの名無しさんNGNG
>>256
CPropertySheet
CPropertyPage
これ以後はスレ違い
http://pc5.2ch.net/test/read.cgi/tech/1074104008/l50
へどぞー
0258デフォルトの名無しさんNGNG
イヤダネ!こういう仕切り厨は。↑
0259デフォルトの名無しさんNGNG
日本語理解しない香具師の方がイヤ
0260デフォルトの名無しさんNGNG
嫁も
香具師も日本語なのか
0261デフォルトの名無しさんNGNG
#include <stdlib.h>
#include <stdio.h>

の2重インクルード防止ってどうやるんだっけか?
0262デフォルトの名無しさんNGNG
>>261
ttp://unix.rulez.org/~calver/pictures/bart.gif
0263261NGNG
>>262

意味わからん
マジおしえてくれや
0264デフォルトの名無しさんNGNG
>>261
標準ヘッダは大抵二重インクルードガードされている。
0265デフォルトの名無しさんNGNG
>>260
お前には何語に見えたんだ?
0266デフォルトの名無しさんNGNG
┐( ´ー`)гフゥー...
0267デフォルトの名無しさんNGNG
今,ふと演算子の優先順位を見てたらポインタの欄に
:> こんなのあるんだけどなに?
◎ベース・ポインタ演算子:>をサポートしました.とは書いてあるけど,
それ以外に本文中には説明ないし.
Ver6.0 Microsoft C 初級プログラミング って本なんだけどさ.
MSCの独自仕様っぽいけど気になるYo!
0268デフォルトの名無しさんNGNG
':' が'-'に誤植ったか、'-' が抜けたかじゃねの?

'
0269267NGNG
かなぁ.

でも,表のなかと注の両方が:>なんだよね.
しかも,表の中の構造体の欄に->もちゃんとあるんだよね.

うー気になる.

忘れるか.
0270デフォルトの名無しさんNGNG
>>267
セグメント処理関係かな。VC6++じゃなくてMSC6なら時期的にもね。
0271デフォルトの名無しさんNGNG
>>270
basedポインタにそんなんあったっけ?
0272デフォルトの名無しさんNGNG
関数の戻り値を構造体の型にした場合何が戻ってくるんでしょうか?
その構造体の最初のメンバー?
0273デフォルトの名無しさんNGNG
その構造体のオブジェクトまるまる返ってきます。
0274デフォルトの名無しさんNGNG
>>260
ja-2ch
0275デフォルトの名無しさんNGNG
:-)
0276デフォルトの名無しさんNGNG
>>272
やってみろや
腐ってもム板の住人だろうが
ソースくらい示したらどうなんだ
0277デフォルトの名無しさんNGNG
>>274
lq_JP なら某OSの設定項目にあるが
0278デフォルトの名無しさんNGNG
あ
勝手に作った地域コードは3文字じゃまずいか…
ja-2channel で
0279デフォルトの名無しさんNGNG
>>267
x86系CPU向け独自仕様。
って、ベース・ポインタ演算子って書いてあるじゃん。
0280初心者NGNG
条件演算子で0は使えないんですか?
変数 > 0  とか
0281デフォルトの名無しさんNGNG
使える。コードさらしてみ
0282初心者NGNG
#include <stdio.h>
main () {
int i;
printf("金くれ\n");
do {
int = 0;
printf("金額は?>");
scanf("%d", &i);
while(getchar() != '\n') { }
} while(( i < 0) || (10000 < i));
printf("金額は%d円です\n". i);
return 0;
}
文字を入力すると0円になる。。
0283デフォルトの名無しさんNGNG
>>282
それコンパイル通らんだろう。
0284デフォルトの名無しさんNGNG
>>282
scanf()は目的に適った入力しか読まない。
この場合は数値のみ。
したがって、(数字以外の)文字を入力したらその入力を捨てずに終了する。
結論、scanf()を使う限り数字以外の文字を入力できない。
対処方法、scanf()使うなや。
0285デフォルトの名無しさんNGNG
> int = 0;

まずここだと思うけど。
0286デフォルトの名無しさんNGNG
> main () {

いや、まず、ここだな。
空白あけるなよ ぼけ。
改行しろよ ぼけ。
0287デフォルトの名無しさんNGNG
} while(( i < 0) || (10000 < i));

空白あけろよ ぼけ。
0288デフォルトの名無しさんNGNG
#include <stdio.h>

main()
{
  int i;

  printf("金くれ\n");
  do {
    printf("金額は?>");
    scanf("%d", &i);
  } while (i < 0 || 10000 < i);
  printf("金額は%d円です\n", i);
}
0289267NGNG
>>279
やっぱり,アセンブラのbpに相当するもの?
しっかし,どうやって記述するんだ? *(:>+4)とか?
なんか違う気がする・・・

あの頃って既にインラインアセンブラ使えなかったっけ?
それでbpやら引っ張ってきてた覚えがある.数年前だから曖昧だけど.
0290デフォルトの名無しさんNGNG
>>289
ちがうよ。セグメントに関する物。
__basedというキーワードが有るからMSDN見れ。
0291267NGNG
>>270 >>290
MSDQN見た.
こんな機能があったのかー サンクス.

ということは
void p_base:> *p_offset ・・・記述はいいや.もう使うこともないだろし.
0292初心者NGNG
>>282 int = 0; は i = 0; でした

} while ((i < 1) || (10000 < i));
0を1に変えて文字を入力すると
金額は?>  と出て再入力となってちゃんと出来ます
0293デフォルトの名無しさんNGNG
>>292
scanfが変換に失敗したので、iの内容が変更されてないだけだ。
0294testNGNG
#include <stdio.h>

int main(void)
{
printf("test\n");
printf("test\n");

return 0;
}
0295testNGNG
#include <stdio.h>

int main(void)
{
  printf("test\n");

  return 0;
}
0296testNGNG
納得
0297デフォルトの名無しさんNGNG
testするなら、1レスの中にまとめろと思った。
0298デフォルトの名無しさんNGNG
scanf使ったら必ず戻り値調べろ矢
0299(^-^)NGNG
#include <stdio.h>
#include <stdlib.h>

int main(void){
  int i;
  char money[100];

  printf("金くれ\n");

  do{
    printf("金額は?>");
    scanf("%s", money);
    i = atoi(money);
  }while(( i <= 0) || (10000 < i));

  printf("金額は%d円です\n", i);

  return 0;
}

こういうことかな・・・。

>>297 ごめんなさい。
0300デフォルトの名無しさんNGNG
そういうことじゃないと思うが・・・
スタックもぼっこわすし可能性あるし・・・
第一scanf 使うなっていわれなかった?
0301デフォルトの名無しさんNGNG
>>300
>スタックもぼっこわすし可能性あるし・・・

scanf("%100s", money);
でスタックがぼっこわされなくなったりはしない?
0302デフォルトの名無しさんNGNG
scanfなんて今すぐ窓から投げ捨てろ!
0303デフォルトの名無しさんNGNG
>>301
scanf貶すのは脱初級者レベルだからほっときなよ。
0304(^-^)NGNG
>>301
すごい!!サイズを指定するんですね!!
どうやってもスタック壊れそう・・・どうしようと思っていました。

>>282さん
僕も初心者です。
一緒にがんばろう。
0305デフォルトの名無しさんNGNG
初心者よ、よく聞け。
scanfは禁止だ。
0306デフォルトの名無しさんNGNG
うざい
0307デフォルトの名無しさんNGNG
>>306
誰に言ってるのかしらんが、ここのスレタイを100回読め。
そして、2度とここへ来るな。
0308デフォルトの名無しさんNGNG
305=307
うざい
0309(^-^)NGNG
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int i;
  char money[100];


  printf("金くれ\n");

  do{
    printf("金額は?>");

    gets(money);

    i = atoi(money);

  }while(i <= 0 || i > 10000);

  printf("金額は%d円です。\n", i);

  return 0;
}

>>302, 303, 305
こんな感じでしょうか?
またまたスタック壊してしまいますけど(^^;
0310デフォルトの名無しさんNGNG
壊すと知っていて何故つかうの?
man gets して、最後に fgets を
つかいなよって書いてないかい?
0311デフォルトの名無しさんNGNG
>>307
スレタイ読めてねーのはてめーだろ
scanf禁止のどこがCの話か冷静に吟味してみろよ
このスレでも何度も議論されているが
別にCでなくたってできる議論ばっかだぜ
それがわかんねーやつを置いて誰が初心者だよ
バカも休み休みほざきな低脳
0312デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=96
一応安全か?
もうくんナよ
0313デフォルトの名無しさんNGNG
> num=atoi(&money[0]) ;

num=atoi(money);とかけよ。
0314(^-^)NGNG
>>312
ありがとうございます。
解答をこれからじっくり読ませていただきます。
fget()ってヒントからfopenとかfputとか調べていました(^^;
stdinとかstdoutってあるんですね。(^-^)
0315デフォルトの名無しさんNGNG
scanf():使いこなせば結構便利
gets():使うな
0316(^-^)NGNG
>>315
分かりました(^^;
0317デフォルトの名無しさんNGNG
scanf():使うな
fscanf():使うな
sscanf():使いこなせば結構便利

gets():使うな
fgets():使いこなせば結構便利
0318デフォルトの名無しさんNGNG
初心者よ、よく聞け。
scanfは禁止だ。
0319デフォルトの名無しさんNGNG
初心者よ、よく聞け。
は禁止だ。
0320デフォルトの名無しさんNGNG
>>318
理由が説明できないくせにシッタカこいてんじゃねえよクズ
0321デフォルトの名無しさんNGNG
初心者よ、よく聞け。
シッタカは禁止だ。
0322デフォルトの名無しさんNGNG
つまらんやりとりでageるなカスどもめ
0323デフォルトの名無しさんNGNG
>>322
お前の発言がつまらん
だったらお前がネタ出せよ口だけ厨房
0324デフォルトの名無しさんNGNG
>>323
sage厨は放置せよ
0325デフォルトの名無しさんNGNG
>>322=猿以下の馬鹿
0326デフォルトの名無しさんNGNG
>>320
教えてくださいと言え。
0327デフォルトの名無しさんNGNG
C言語が出来ない連中が居るスレはここですか?(pu
0328デフォルトの名無しさんNGNG
>>326
そんなこと頼んでねえよ耳が腐るだけだろオマエの説明なんて
0329デフォルトの名無しさんNGNG
殺伐としてんな
0330デフォルトの名無しさんNGNG
>>326
教えてください。

さぁ教えろ
0331デフォルトの名無しさんNGNG
おいおい、scanfはprintfと並ぶC言語の基本だろうが。
勝手な俺ルールを一般人に強制すんなハゲども。
0332デフォルトの名無しさんNGNG
しどろもどろ警報
総員、袋叩き準備せよ
0333デフォルトの名無しさんNGNG
貴方達の使用しているプロバイダに通報しました。
あと1週間ほどしたらプロバイダよりメールが来ると思いますので、
それをよく読んで、thebbsの管理者に謝罪文を送ってください。
謝罪がこない場合は、プロバイダの使用停止が決定されます。
0334デフォルトの名無しさんNGNG
メ几
木又

イ戈
0335デフォルトの名無しさんNGNG
scanfは使ったほうがいいよ。
0336デフォルトの名無しさんNGNG
C++スレてこんなに殺伐としてるんですか?
0337デフォルトの名無しさんNGNG
尻尾巻きやがった (ケケケ
0338デフォルトの名無しさんNGNG
scanf、gets使うなって何使えばいいの?
0339デフォルトの名無しさんNGNG
ログ読めや
0340デフォルトの名無しさんNGNG
>>338
↓これ使いなさい

    \おーだんごーまーるまるー              /
      \    おーだんごーまーるまるー       /
   .    \         おーだんごーまーるまるー/
          ∧_∧  ∧_∧   ∧_∧
          (・∀・ )  ( ・∀・)  ( ・∀・)
         ⊂  ⊂)  (    )  (つ   つ
          (__(_)  (__)_)  (__(_)
0341(^-^)NGNG
なんか、大変なことになってる・・・。
僕は自分とは全然違うソースを見て・・・こんな風にもできるんだって
結構、感動したのですが・・・。
0342デフォルトの名無しさんNGNG
fgets
0343デフォルトの名無しさんNGNG
ずいぶんトーンダウンしたな
さっきの元気はどこいった?w
0344デフォルトの名無しさん NGNG
だんまりさんに替わって、なんとなく答えます。

scanfってのは、"%d"と指定した場合に、数字以外の文字なんかがが入力され
たときの対処が全然できてないからです。(多分数字以外だと強制終了)
だからといって"%s"にしても同じくエスケープなどの制御コードなんか叩いち
ゃうと一緒で、キーボードバッファは残っちゃうしろくなことはない関数です。
数値や文字入力に適した標準関数はないので、信頼性のあるプログラムを作る
のならscanfに替わる関数を自作するしかないですね。
0345デフォルトの名無しさんNGNG
ニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニ
ニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニ
ニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニ
ニヤニヤニ ∧_∧ ニヤニ ∧_∧ニヤニヤニヤ ∧∧ニヤニヤニ
ニヤニヤニ( ´∀`)ニヤニ( ・∀・ )ニヤニヤニ (゚Д゚,,)ニヤニヤニ
ニヤニヤニ(    )ニヤニ(    )ニヤニヤニ.(|  |)ニヤニヤニ
ニヤニヤニ| | |ニヤニヤ| | |.ニヤニヤニヤ|  |〜ニヤニヤ
ニヤニヤニ(_)_)ニヤニ..(_∧_)ニヤニヤニ し'Jヤニヤニヤニ
ニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニ
ニヤニヤニ∧∧ニヤニヤニヤ>>344ニヤニヤニヤニヤニヤニヤニヤニヤ
ニヤニヤ ( *゚ー)ニヤニヤ (`Д´)ニヤニヤニヤニ ∧∧ニヤニヤニ
ニヤニヤニ.| ∪|ニヤニヤ (∩∩)ニヤニヤニヤミД゚,, 彡ヤニヤニ
ニヤニヤ〜|  |ニヤニヤニヤニヤニヤニヤニヤニ ミ   ミニヤニヤニ
ニヤニヤニ し'Jニヤニヤニヤニヤニヤニヤニヤニヤミ   ミ〜ヤニヤ
ニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤし'Jヤニヤニヤニ
ニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニヤニ
0346デフォルトの名無しさんNGNG
>>344
大部分 (プだが最後の一行だけぎりぎり及第点やる
0347デフォルトの名無しさんNGNG
>>344 信頼性のあるプログラムを作るのなら

すべてはこれに集約されるわけだが
学習中の初心者や宿題などにまで言及して
いちいちケチをつける理由ってなんだ?
0348デフォルトの名無しさんNGNG
>>346
ばーか、偉そうにこいてるんじゃねぇよ。
0349(^-^)NGNG
>>344
僕の買った本にはstdinとかstdoutなどの記述もなかったのでもう少し詳しそうな
本を探してみます。

http://www.1point.jp/~book_2ch/program/c_lang.html
0350デフォルトの名無しさんNGNG
>>347
宿題だから\nまで飛ばせって前提が何の議論も経ずにまかり通るわけだな
0351デフォルトの名無しさんNGNG
すいません、fscanfって一行の中の任意の部分だけ切り取って読むような
ことってできないんですか?
0352デフォルトの名無しさんNGNG
>>347
プロの世界まできても使うクサレ野郎を少しでも少なくするためだ
0353デフォルトの名無しさんNGNG
最近殺伐してますね
0354デフォルトの名無しさんNGNG
>>351
読んだ後に切り取ることがそんなに面倒ですか?
0355デフォルトの名無しさんNGNG
>>352
プロの世界に来てから言えw
0356デフォルトの名無しさんNGNG
>>355
おまえ、はやく就職できるといいな。ムリだろうけども。
0357デフォルトの名無しさんNGNG
>>350
スタックの勉強をしていて、たとえば標準入力から数値を入力し、
int型のスタックに値を積んでいくと言う宿題があるとする。
この場合入力分の完全性ではなく、スタックの動作が問題の本質であって
文字入力なんてのは即席で立て付けの悪いものでも問題ないわけだ。

だが、本質ではない入力時のチェックのために余計な気を回すことが
必ずしも正しいとはいえないだろう。また、scanfを回避するだけで
完全なものになるという考えも大きな間違えだ。

fgets->sscanf "%d"に5aという入力を与えた場合、
5と言う値が得られるのが正しいと誰が言い切れる。
0358デフォルトの名無しさんNGNG
intはインポと読みます
strはストルと読みます
arrayはアライと読みます
forはフォウと読みます
fgetsはフゲットスと読みます
scanfはスキャンフと読みます
0359デフォルトの名無しさんNGNG
>>358
>>114
0360デフォルトの名無しさんNGNG
scanfよりsscanfの方が望ましいのは確かだけど
sscanfに置き換えるだけで満足してるならそれこそプロを語る資格なんて無いと思うよ。
それとも、scanfを禁止している人間は初心者に対して
入力された文字列の完全なチェックを求めているのか?
0361デフォルトの名無しさんNGNG
>>357
atoi()使えよ。
0362デフォルトの名無しさんNGNG
>>361
むしろ strtol()、strtod() だな
0363デフォルトの名無しさんNGNG
求めているとも。
0364デフォルトの名無しさんNGNG
>>360
空想力が豊かですね。オレのソースを見た事があるのか。
0365デフォルトの名無しさんNGNG
>>360
atoi()使えよ。strtol()やstrtod()もいいぞ。
むしろ、こっちのほうが初心者が余計な気を使わずに組めると思うのだが、どうよ?
0366デフォルトの名無しさんNGNG
>>364
おたふくのヤシか?
0367デフォルトの名無しさんNGNG
>>363
時代とともに複雑化するhello, worldを思わせる書き込みだな。
0368デフォルトの名無しさんNGNG
おば様早すぎ
0369デフォルトの名無しさんNGNG
>>361, >>362
>>114

やれやれ近頃はatoiまで何の疑問も持たないアフォが蔓延してきたのか
scanfどころのレベルじゃねえな
0370デフォルトの名無しさんNGNG
>>400
0371デフォルトの名無しさんNGNG
>>365
欲しい値がintひとつならそれもいいと思うよ。
そうでないならたかが宿題に、規模は小さくても構文解析を求めているわけだし、
「入力はscanfを使うものとする」という条件にすらケチをつけるアホもたまに沸くし。
0372デフォルトの名無しさんNGNG
Perlを使えよお前ら
http://pc5.2ch.net/test/read.cgi/tech/1085564875/
0373デフォルトの名無しさんNGNG
> do{
>   }while(i <= 0 || i > 10000);

空白あけろ ぼけ
0374デフォルトの名無しさんNGNG
> おいおい、scanfはprintfと並ぶC言語の基本だろうが。

なわけねーだろ ぼけ。scanfつかうな
0375デフォルトの名無しさんNGNG
>>374は田中
0376デフォルトの名無しさんNGNG
> scanf、gets使うなって何使えばいいの?

だから、「その2つ以外」です > 何使えばいいか。

その2つ除いても100個以上もあるんだから、「その2つが使えないともう使うものがない!」なんてことはないよね?
0377デフォルトの名無しさんNGNG
> scanfってのは、"%d"と指定した場合に、数字以外の文字なんかがが入力され
> たときの対処が全然できてない

ここまではあってる。

> からです。

ここですでに違う。それがメインの理由ではない。

> (多分数字以外だと強制終了)

ここで大幅減点

0378デフォルトの名無しさんNGNG
メインの理由は、バッファサイズを指定できない事によるオーバーランの危険だけだろ
socketからの入力につかうんでもなければ大事にはならん。
0379デフォルトの名無しさんNGNG
>>378 (>_<)
0380デフォルトの名無しさんNGNG
いいか良く聞いとけよおまえら。
scanfを使ってはならない一番の理由はなぁ、俺が使ったことないからだ。
0381デフォルトの名無しさんNGNG
おまえらうんこ
0382デフォルトの名無しさんNGNG
ツマラン! オマエラの話は ツマラン!
0383ビル・ジョブスNGNG
おれが13歳の時CP/MのBDS-Cでscanf()がまともに動かなくてK&Rのサンプルが実行できなかった
悔しい思い出がある。それから20数年経った今、君たちの議論はとても微笑ましく想える。
そしてコードは常にエレガントに、ライブラリ関数は子供だと思ってもっと愛してやれ。
出来の悪い子(関数)ほど可愛いぞ。
よって時と場合によって、使っても良しとする。
0384デフォルトの名無しさんNGNG
言語初心者です。
C言語を始めようと思うのですが、
まず何が必要になりますか?
0385デフォルトの名無しさんNGNG
>>384
調べる力
0386デフォルトの名無しさんNGNG
>>384
scanfに対する畏敬の念
0387デフォルトの名無しさんNGNG
>>384
はっきり言う。おまえには無理だからやめとけ。
0388デフォルトの名無しさんNGNG
>>387
またお前か
厨房は早く寝なさい
0389デフォルトの名無しさんNGNG
じゃあがんばりまーす
0390デフォルトの名無しさんNGNG
また録音が光臨していたようだな
0391デフォルトの名無しさんNGNG
0から3までる配列に1から4をランダムで入れたいのですが

srand(time(NULL));
for (loop = 0;loop<4; loop++)
{
    i++;
number = rand()%4; /* 乱数発生 */
    one[number] = i;
  }

とやると重複してしまいます。
重複しないようにするにはどうしたらいいでしょうか?
0392デフォルトの名無しさんNGNG
1〜4を配列にいれて、ランダムにならびかえろ。
0393デフォルトの名無しさんNGNG
>>384
愛と、無料コンパイラと、テキストエディター。
そして、先人の書いた、チュートリアル一式。
つーか、俺も、今さっき、ボーランドで無料コンパイラ落としたところ。
まだ、インストールもしてない。
0394デフォルトの名無しさんNGNG
一番おばかな例を示すから、
あとは自分げ考えろ!
srand(time(NULL));
for (i = 0; i < 4; i++) {
  do {
    number = rand() % 4 + 1;
    for (j = 0; j < i - 1; j++) {
      if (one[j] != number)
        break;
    }
  } while (j == i - 1);
  one[i] = number;
}
0395ビル・ジョブスNGNG
>384
質問の意図はまさか”道具”ですか?じゃないですよね・・

C言語を効率的良く学習するにはプラットフォームの知識が欠かせません。
WindowsならWIN32と並行して学習、制御系なら制御したいデバイスの知識。
C言語を学習するのが目的じゃなくて、その先に何かあるはずだから、
C言語はただの道具として考えたほうがいい。
その結果、使えば使うほど欲も出てきて上達します。言語仕様論なんかは
趣味の世界だから立ち入らないほうが無難ですね。

C言語よりもWIN32 APIのほうが遥かに難解ですよ。まだ文献も少ない頃、
1つのAPIで3日間位悩んだ事もありますから。
ちなみに昔はCreateDIBSection、最近ではIDiscMasterのIStorageあたり。
まぁハマリAPIに中ると結構深いので、気分転換しながら頑張ってください。
0396デフォルトの名無しさんNGNG
>>394
お馬鹿。そんな例を示す恥を知れ。
0397391NGNG
>>394の例がばかな理由がわかりません・・・;

あと配列に入れてからランダムに並び替えってできるんですか?
0398デフォルトの名無しさんNGNG
srand(time(NULL));
for (loop = 0;loop<4; loop++)
{
unko = rand()%4+1;

   do{
number = rand()%4+1; /* 乱数発生 */

}while(number!=unko);
    
one[loop] = number;
}

こんなんじゃ動かんかね?
知らんけど。
0399デフォルトの名無しさんNGNG
>>398訂正
>while(number!=unko);

while(number==unko);
0400デフォルトの名無しさんNGNG
400 G E T ’ S
0401デフォルトの名無しさんNGNG
ひねくれたやり方だと

int number;
int slot[4];
int flag = 0;
int idx = 0;

while(idx < 4)
{
number = rand() & 0x3;
if(!(flag & (0x1 << number)))
{
slot[idx++] = number + 1;
flag |= (0x1 << number);
}
};

こんなのはどう?w
0402ビル・ジョブスNGNG
やっぱり>>392の言うところのこれかな、全部の組み合わせの配列を用意するのはナンセンスだろうな。

int i, array[4] = {1, 2, 3, 4};
srand(time(NULL));
for (i = rand() % 4; i; i--) {
  int t, j = rand() % 4, k = rand() % 4;
  t = array[j]; array[j] = array[k]; array[k] = t;
}
0403デフォルトの名無しさんNGNG
>>402
1〜4だけだと微妙だけど
数が多ければ
一旦リスト作って
ポップして取り出していくのは普通につかうのでは。
0404デフォルトの名無しさんNGNG
>>398
>>399
スレ汚しすまそ
忘れてくさい
0405デフォルトの名無しさんNGNG
配列はextern指定できないんでしょうか?
0406デフォルトの名無しさんNGNG
できますよ
0407405NGNG
extern int array[10];

↑
なんかこう書いただけでエラー言われるんですが
0408デフォルトの名無しさんNGNG
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
と、毎回かかなきゃいけないのか?つうか、エラーの内容見ろよ
0409405NGNG
すいません、大嘘かいてました

実際は

enum test{test_1, test_2};

extern test _test[10];

みたいな事やるとエラーになるんです
内容は、外部シンボルenum testが見つかりません、というものです
0410デフォルトの名無しさんNGNG
>>409
ソースもエラーメッセージも、コピペしろ。自分の言葉に直すな。
隠したい情報があれば、置換してもいいから。
0411デフォルトの名無しさんNGNG
>>410
わかりました。以下はコピペです

const int MAP_SIZE = 15;
enum Panel_Name{PANEL_NONE,PANEL_SEA,PANEL_FOREST,PANEL_GROUND};
extern Panel_Name map[MAP_SIZE][MAP_SIZE];

pazzle01-20040530 error LNK2001: 外部シンボル ""enum Panel_Name (* map)[15]" (?map@@3PAY0P@W4Panel_Name@@A)" は未解決です。
pazzle01-20040530 fatal error LNK1120: 外部参照 1 が未解決です。
0412デフォルトの名無しさんNGNG
単に使い方がまちがっとるだけでは?
const int MAP_SIZE = 15;
enum Panel_Name{PANEL_NONE,PANEL_SEA,PANEL_FOREST,PANEL_GROUND};
enum Panel_Name map[MAP_SIZE][MAP_SIZE];
な使い方でいいんじゃない?
//externを使う必要があるのか謎だが
0413デフォルトの名無しさんNGNG
>>411
宣言だけで、mapの定義してないんじゃない?
0414405NGNG
>>413
そうでした

extern Panel_Name map[MAP_SIZE][MAP_SIZE] = {};

でいけました
ありがとうございました
0415デフォルトの名無しさんNGNG
>>413
いや、一番の問題は extern を理解していない事だろ。
0416デフォルトの名無しさんNGNG
>>402
とりあえず乱数を信じて(まあまあ)これで手を打たないか?
for(i = 0; i < 4; i++) {
 int t, r = rand() % 4;
 t = array[i]; array[i] = array[r]; array[r] = t;
}
0417デフォルトの名無しさんNGNG
freadで、読み込むべき個数より読み込んだ個数が少なかった、とか
返値が0だった時に、実際に何バイトは読み込んだのか、ということは
どうやったらわかりますか?
0418デフォルトの名無しさんNGNG
一個5円の飴を13個買うには、5 * 13 で 65円払う必要があります。
0419デフォルトの名無しさんNGNG
>>417
戻り値を見ろ。
戻り値が0なら、実際に読み込んだのも0バイト、つまり全く読み込まれてない。
0420デフォルトの名無しさんNGNG
>>419
ああ、そうだったんですか
ありがとさん
0421デフォルトの名無しさんNGNG
stdinやstdoutなどが指してるFILE構造体のメンバ
「_base」が指してる標準入出力バッファって
プロセス内(論理メモリ空間内)に配置されているわけだから
標準入出力バッファ(ストリーム)ってプロセスごとに保有してると考えていいんですよね
0422デフォルトの名無しさんNGNG
_baseというメンバがあるかは環境による。適切なスレへgo
0423デフォルトの名無しさんNGNG
>>420
ただし freadの戻り値は個数を返すから、
第2パラメタ を 1、第3パラメタにバイト数
として呼ばないといけないよ。
0424デフォルトの名無しさんNGNG
int main()
{
int a[10]={10,1,2,3,4,5,6,7,8,9};
int *p=a;
int i;

for (i=0;i<10;i++){{
printf("*p -> %d\n",*p);
p++;
i++;
}
}

p++が*p++でも同じ結果になるんですけど何故ですか?
pはa[0]だから++すると配列移動するのは分かるんですけど
*pってa[0]の中身の10じゃないんですか?
0425デフォルトの名無しさんNGNG
int main()
{
int a[10]={10,1,2,3,4,5,6,7,8,9};
int *p=a;
int i;

for (i=0;i<10;i++){
 printf("*p -> %d\n",*p);
 p++;
}
return 0;
}

間違えましたこっちでした・・・
0426デフォルトの名無しさんNGNG
>>424
演算子の優先順位。
インクリメント演算子よりも逆参照演算子の優先度が低いため、
*p++は、pをインクリメントして逆参照する。
0427デフォルトの名無しさんNGNG
>>426
ありがとうございます!!
0428デフォルトの名無しさんNGNG
int main(){
unsigned char *buf;
buf = malloc(50);
unsigned char c1 = 'a';
unsigned char c2 = 'b';
*buf = c1;
*buf++ = c2; //ここが駄目のようです
puts(buf);
free(buf);
return 0;
}
buf[1] = c2;にすると問題ないのだけれど
*buf++ = c2;っぽい書き方(うまく説明できない・・・)は
どう書けばいいですか?
0429デフォルトの名無しさんNGNG
>>428
malloc使うときは先頭はなしちゃタメタメあるね
0430デフォルトの名無しさんNGNG
先頭はなしても戻せればOK。
要するにfreeするために先頭アドレスがまた必要になる。
0431デフォルトの名無しさんNGNG
上のプログラムは表示の時点で、先頭アドレスが必要だな。
puts の時点で buf は文字列の先頭をさしていない。
あと *buf++ = c2 だと、*buf に上書きしてから、ポインタ進めているぞ。
0432428NGNG
>>428の
えーとfreeを削ってみましたが
何も出力されません??
0433デフォルトの名無しさんNGNG
>>391
一応これなら動くけど、糞なやり方。
間違ったままでは悔しいから書き込んどきます。

for(cnt=0;cnt<4;cnt++)
{
one[cnt]=rand()%4+1;
end|=(shift<<(one[cnt]-1));

if(!(OldKey^end))
one[cnt]=0;

OldKey=end;
}

for(cnt=0;cnt<4;cnt++)
{
if(one[cnt]==0)
{
for(;one[cnt]==0;idx++)
{
if(!((end>>idx)&0x01))
one[cnt]=idx+1;
}
}
}
0434デフォルトの名無しさんNGNG
>>432
まず、出力に関係無い。メモリリークの問題。削っちゃダメ。
mallocの戻り値を別の変数に入れておいて、
freeにそれ渡せ
0435428NGNG
int main(){
unsigned char *buf, *buf2;
buf = malloc(50);
buf2 =buf;
unsigned char c1 = 'a';
unsigned char c2 = 'b';
*buf = c1;
*buf++;*buf++ = c2;
puts(buf2);
//free(buf);
return 0;
}
これで出来ました!
0436デフォルトの名無しさんNGNG
>>433 ;-) 付け足し・・・
【 変数宣言 】
char end=0x00;
char shift=0x01;
char OldKey=0x0F;
int idx;
int one[4];
int cnt;
0437デフォルトの名無しさんNGNG
>>435
またまた (プ
動きゃいいって考えの香具師にはつきあってやらん
0438デフォルトの名無しさんNGNG
>>435
文字列なんだから、最後は'\0'でデミっとけよ。
0439デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

int main()
{
unsigned char *buf, *ptr;
ptr = (unsigned char *)malloc(50);
buf = ptr;
unsigned char c1 = 'a';
unsigned char c2 = 'b';
*buf = c1;
*++buf = c2;
*++buf = '\0';
puts((const char *)ptr);
free(ptr);
return 0;
}

ああ、俺もうだめぽすぎ('A`)精進しないと
0440428NGNG
>>438
int main(){
unsigned char *buf, *buf2;
buf = malloc(50);
buf2 =buf;
unsigned char c1 = 'a';
unsigned char c2 = 'b';
*buf++ = c1;*buf++ = c2;*buf ='\0';
puts(buf2);
free(buf2);
return 0;
}
と、こんな感じですか?
0441デフォルトの名無しさんNGNG
>>440
それじゃ、正常にfreeされねーってばよ。
0442441NGNG
ごめん、見間違えた。あってる。
0443428NGNG
>>442,439
なるほど!、どうも有難うございます
0444デフォルトの名無しさんNGNG
今度こそ 444 G E T
0445デフォルトの名無しさんNGNG
なんかお前ら変数のネーミングが気持ち悪いよ。

char *buf = malloc(50); // バッファを確保する。
char *p = buf; //バッファ先頭アドレスをポインタ型で取得
*p = c1;
*++p = c2;
*++p = '\0';


まっとうな神経してたら、こんな感じだろ。
0446デフォルトの名無しさんNGNG
>>445
お前の顔気持ち悪い

bufよりhen
0447デフォルトの名無しさんNGNG
どうせならこうしなよ。
int main(){
unsigned char *p, *buf;
unsigned char c1 = 'a';
unsigned char c2 = 'b';

p = buf = malloc(50);
*p++ = c1; *p++ = c2; *p ='\0';
puts(buf);
free(buf);
return 0;
}
0448デフォルトの名無しさんNGNG
0なら1に1なら0にするビット演算方法を教えてください。
0449デフォルトの名無しさんNGNG
!
0450デフォルトの名無しさんNGNG
~
0451デフォルトの名無しさんNGNG
a^=1;
0452デフォルトの名無しさんNGNG
>>449 ビット演算じゃないね
>>450 ちがうね
0453448NGNG
おお、ありがとうございます。
0454デフォルトの名無しさんNGNG
^
0455デフォルトの名無しさんNGNG
main はどうして main(void) とか main(int argc, char **argv) とか
main(int argc, char **argv, char **env) とかいろんな引数が許されるの?
C++なら関数オーバーロードあるけど、Cじゃそんなのないし。
0456デフォルトの名無しさんNGNG
あぁ、またその話題が・・。
0457デフォルトの名無しさんNGNG
プロトタイプ宣言が必要ないから。

ret = func(a, b, c);というソースから作ったオブジェクトファイルと
void func();から作ったオブジェクトファイルはリンク可能。
0458455NGNG
>>プロトタイプ宣言が必要ないから。

なるほど。すごく分かりやすい一行だ。ピンときたよ。
0459デフォルトの名無しさんNGNG
すまん、教えてくれ。

main関数の終了時に
正常終了かエラー終了か

そのexeをキックした他アプリに知らせたいんだが
一般的には、エラーは0以外?それとも0?

まぁ別にキックしたアプリ側で、どうとでも判定できるんだが
一般的な定石ルールってあるのかと。



0460デフォルトの名無しさんNGNG
UNIXだと普通エラーは0以外だと思う。
0461デフォルトの名無しさんNGNG
>>459
サンクス

やはり0で正常終了
0以外でエラーの種類てな感じでしょうか。

いや、たまたま幾つかのアプリを
連続でキックしてある事をしようとしたんだけど
正常終了が1でエラーが0のやつが
幾つかあったので、決まり事ないのかなぁと思ったもので。
0462461NGNG
訂正>>460
ありがとん
0463デフォルトの名無しさんNGNG
決まりは無い。
0464デフォルトの名無しさんNGNG
慣習ならある。
0465デフォルトの名無しさんNGNG
stdlib.h の中にこんなのがある

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
0466デフォルトの名無しさんNGNG
if(a == b || a == c)

のような条件式を

if(a == ??)

のような感じにまとめる事はできないのでしょうか?
というか以前何かのソースで見たのですが思い出せません
わかりにくくてすいませんがよろしくお願いします
0467デフォルトの名無しさんNGNG
マクロ定義しる
0468デフォルトの名無しさんNGNG
>>467
気がつきませんでした
ありがとうございました
0469デフォルトの名無しさんNGNG
>>468
1つの式を2度以上評価させるようなフレーズのマクロ化は危険だぞ
0470デフォルトの名無しさんNGNG
>>457
> プロトタイプ宣言が必要ないから。

ANSI-C 以前から無いか?
0471デフォルトの名無しさんNGNG
>>452
>>451はあってるぞ
a = a ^ 1;
ってことだから
1と排他的論理和とってんじゃないの
0472デフォルトの名無しさんNGNG
>471
欲嫁
0473デフォルトの名無しさんNGNG
a = + - + + - +0;
みたいな記述が許される言語はキモイと思います!
0474デフォルトの名無しさんNGNG
>>466
数値ならswitch/caseでできる。それ以外に一般的な方法は無い。
書くのが面倒という理由でマクロ化するのは論外。
0475デフォルトの名無しさんNGNG
d = (a==b)||(a==c);
if (d) { ... }
0476デフォルトの名無しさんNGNG
Booleanならa == b == cでもいいけどな( ´_ゝ`)
0477デフォルトの名無しさんNGNG
fread()の実装を見たいんですが、stdio.cってどこかで拾えませんか?
0478デフォルトの名無しさんNGNG
>>476
Win32のBOOLではその保証は無いな
0479デフォルトの名無しさんNGNG
>>466
数値なら>>474の言うとおりswitch
文字ならstrchrか(if(strchr("xy",a)) こんな風に)。
それ以外に一般的な方法は無い。
0480479NGNG
s/数値/整数値/
0481デフォルトの名無しさんNGNG
>>477
ベンダーによって違うんじゃないのか・・・

0482デフォルトの名無しさんNGNG
ライブラリを逆汗
0483デフォルトの名無しさんNGNG
>>477
ベンダに問い合わせたか?
買った店、出入りの営業、公式ページ、etc...
0484デフォルトの名無しさんNGNG
gccやVCのソース見とけばいいだろ。
0485デフォルトの名無しさんNGNG
>>484
どこでみれますか?
0486デフォルトの名無しさんNGNG
正規入手って考え方がねえ奴だな
0487デフォルトの名無しさんNGNG
stdio.cじゃ引っかからないだろうなぁ
0488ビル・ジョブスNGNG
>485
ランタイムライブラリソースをインスト。
見てもおばけマクロがいっぱい居るから難解だよ。
0489477NGNG
VC++なんですが、普通にfread()へステップインしたら見れますた(ワラ
*stdio*で検索してたんだが、fread.cだったようで・・・。
0490デフォルトの名無しさんNGNG
VC だったら関数ごとにソースファイルがあったはずだよ
0491デフォルトの名無しさんNGNG
>>489
何で*stdio*で検索すんの? *fread*だろ
0492デフォルトの名無しさんNGNG
どーやって勉強したらいい?
0493デフォルトの名無しさんNGNG
分からない
0494デフォルトの名無しさんNGNG
本買うべきならお勧めの本教えてくれ
0495デフォルトの名無しさんNGNG
・正しい日本語
・ビジネスマナー
0496デフォルトの名無しさんNGNG
>>494
ドグラ・マグラ
0497デフォルトの名無しさんNGNG
CとC++はどっちがいい?
0498デフォルトの名無しさんNGNG
>>497
不本意ながらCのが好き
不本意ながらね
0499498NGNG
更に言うと、KR > C90 && C90 > C99 && sizeof(C99 == C++)
0500デフォルトの名無しさんNGNG
Cなんて覚えてる暇あったらRPGツクール覚えろや。
0501デフォルトの名無しさんNGNG
>>500
お前のせいで500GETできなかったじゃねーか
死ね
0502デフォルトの名無しさんNGNG
>>500はCが覚えられなくて挫折した方ですか。可哀想に
0503デフォルトの名無しさんNGNG
糞スレになってきてる?( ´_ゝ゚)!?
0504500NGNG
Cくらいできますが?

int main(void){return;}
0505デフォルトの名無しさんNGNG
>>500はセンスあると思うよ。
0506デフォルトの名無しさんNGNG
わー凄いですね何をするスクリプトか全然分かんなーい
0507デフォルトの名無しさんNGNG
>>500は最高。
0508デフォルトの名無しさんNGNG
>>506
あからさまな釣りに釣られ過ぎ。
0509デフォルトの名無しさんNGNG
>>504
凄いですね(^^
何て読むのかなと思いました!!何々?
レツーン?マイン?イント?何なのか分かんねーw
0510デフォルトの名無しさんNGNG
>>509
何か嫌なことでもあったか?
0511498NGNG
>>504
>>509
言って欲しいようだな

こちらへどうぞ
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0512デフォルトの名無しさんNGNG
WindowsXP Homeで、スタック領域を増やすにはどうしたらいいですか?

自分で作ったプログラムなんですが、スタックメモリが足りないらしく、エラーが起こります
プログラムを変えないでそのまま実行したいので、スタック領域の増やし方を教えてくださいおねがいします

WindowsXP Home
MS VC++で作成したプログラムです。
0513498NGNG
>>512
空気読め。
0514デフォルトの名無しさんNGNG
>>512
プログラムを変えるのが先だ。
0515498NGNG
>>513
騙るなヴォケ
0516512NGNG
>>514
そういう意見はよく聞きますが、これは学校で出された課題なのでプログラムを変えることはできません
0517デフォルトの名無しさんNGNG
>>512
CL.EXEのオプションを調べれ
いじょ
0518デフォルトの名無しさんNGNG
>>517
CL.EXE と LINK.EXE な
0519512NGNG
>>518
すいません
それって何でしょう?
どこで設定できるんでしょうか?
0520デフォルトの名無しさんNGNG
>>519
まずはバグを疑え。
次に設計を見直せ。
0521512NGNG
検索をかけたところ、CL.EXEとLINK.EXEは見つかったのですが、
どこでオプションを設定できるのでしょうか?

>>520
おそらくバグはありません。
スタックメモリをあまり使わないように数値を変えたプログラムなら普通に動きました。
0522デフォルトの名無しさんNGNG
>>512
宿題スレか機種依存OKな所へ行っておくれ
0523512NGNG
>>522
わかりましたそうします
0524デフォルトの名無しさんNGNG
ifと#ifはどう違うんでしょうか?
0525デフォルトの名無しさんNGNG
∧_∧
( #)←これ
0526デフォルトの名無しさんNGNG
∧_∧
(^_^#)←これ
0527デフォルトの名無しさんNGNG
>>525
あなたがきてからこのスレの質が下がっている。そのことを自覚してください。
0528デフォルトの名無しさんNGNG
>>521
ならそれでいいじゃん。
無駄にスタックを浪費するプログラムを組むのは良くないよ。
0529(^-^)NGNG
>>524
#ifはデバッグの時使うの!!
条件付きコンパイルっていうらしいです。

やっと答えられそうなのあった!!
0530デフォルトの名無しさんNGNG
うわー釣られた馬鹿がここに1匹居ます。>>527
0531デフォルトの名無しさんNGNG
>>529
悪いこといわんから、変な答えをするのはやめた方がいい。。。
0532(^-^)NGNG
>>531
ごめんなさい。
勉強します。
0533デフォルトの名無しさんNGNG
「2chなんて社会のゴミの集まりですから悪口いわれても気にすることないですよ」
0534デフォルトの名無しさんNGNG
#追加
デバック用の他に、機種依存コードを書くときにも使用する

#if BITS_PER_LONG == 32
#define IS_SETLKW64(cmd)((cmd) == F_SETLKW64)
#else
#define IS_SETLKW64(cmd)((cmd) == F_SETLKW)
#endif /* BITS_PER_LONG == 32 */

とか
0535デフォルトの名無しさんNGNG
#で始まるのはプリプロセッサの命令
それ以外はCのコンパイラに対する命令
0536デフォルトの名無しさんNGNG
>>530
いやあんた、煽られてむかついてるだけやんw
0537デフォルトの名無しさんNGNG
何が違うかって言うと
if はコンパイラがごにょごにょする
#if はプリプロセッサがごにょごにょする
のが違う。
0538デフォルトの名無しさんNGNG
>>536
むかついてません
調子に乗ってる人を中止しただけです。
0539538NGNG
うあ、最悪
中止じゃなくて注意って書こうと思ってたんだけど
0540デフォルトの名無しさんNGNG
>>527
誤爆?
0541デフォルトの名無しさんNGNG
>>538
あんまりむきになっちゃだめよ
マターリね、マターリ
0542デフォルトの名無しさんNGNG
>>538
どうでもいいけど
ネタにいちいち過剰反応するのは止めろ。
0543デフォルトの名無しさんNGNG
>>529
別にデバッグに限らないんだがな・・・勉強しろ。
0544デフォルトの名無しさんNGNG
↑うるせーよ厨房(ワラ
0545(^-^)NGNG
>>533
いえ、僕まだ初心者のくせにでしゃばった真似をしてしまいました。
つっこまれたらそれ以上説明できないのに・・・。
>>534のような使い方も知らなかったので・・・。
0546デフォルトの名無しさんNGNG
#if 0
...
#endif
でコメントアウト
0547デフォルトの名無しさんNGNG
>>534
ありがとうです。他の人もありがとん。

>>534
のような使い方なら分かります。
ですが、#if〜#endif内が、プリプロッセに対する命令以外の普通のコードだった場合、そう書く意味はあるんでしょうか?
真が非0で、偽が0っていうのは一緒ですよね?
例えば、
#define FLAG 1(もしくは0)として、#if FLAGとするのと、if(FLAG)とするのとでは
動作に違いがあるのでしょうか?
0548デフォルトの名無しさんNGNG
デバッグ用に #define 濫用して欲しくないんだよな…
値変える度にいちいちフルビルドするのマンドクセ
まあ、ローカルな部分か半固定的な内容なら許せるけど。
0549(^o^)NGNG
>>547
だから機種依存コードを書くときにも使用するといっているだろうが。
0550デフォルトの名無しさんNGNG
>>547
if(FLAG) の場合は else 側も解釈される。
とはいえ、必ず偽となる部分は普通残らないから変わりないけど。
あえていうなら、#if で括れば偽となる部分でエラーが起きるとしても無視される。
0551デフォルトの名無しさんNGNG
>>549
機種依存コードを書くなら>>534のような使い方をすると思いますが。

>>550
なるほど。その変についてソースを良く読んでみます。ありがとん。
0552デフォルトの名無しさんNGNG
要するに>>535、>>537。
0553(^o^)NGNG
>>551
>>534は#ifと#endifの間に「たまたま」プリプロセッサ命令を書いているだけ。

たとえばVC++6.0のfread.cには以下のコードがある。
環境によってbufsizeに代入する値を変えられるようにしている。

#if defined (_M_M68K) || defined (_M_MPPC)
/* assume will get BUFSIZ buffer */
bufsize = BUFSIZ;
#else /* defined (_M_M68K) || defined (_M_MPPC) */
/* assume will get _INTERNAL_BUFSIZ buffer */
bufsize = _INTERNAL_BUFSIZ;
#endif /* defined (_M_M68K) || defined (_M_MPPC) */
0554デフォルトの名無しさんNGNG
>>547
#ifは、コンパイル時に解釈する
ifは、実行時に解釈する
よって
#ifは、コンパイル時に解釈したい時に使い
ifは、実行時に解釈したい時に使えば良い
(決して言葉遊びではない)
0555デフォルトの名無しさんNGNG
547はプリプロセッサというものをよく理解していない気がする。
0556デフォルトの名無しさんNGNG
>>554
コンパイル時じゃない。
コンパイラに渡された時には、すでに#で始まる行は解釈し終わっている。
0557554NGNG
>>556
そうだね
0558デフォルトの名無しさんNGNG
「コンパイラ」という用語自体が処理系依存だね
0559デフォルトの名無しさんNGNG
compilerかもな
0560デフォルトの名無しさんNGNG
>>553
なるほどそうっすね。

プリプロセッサ命令を使うと、#ifで真にならない場合、真になるブロックに関しては
オブジェクトコードには含まれないですよね?
そういう部分でサイズを小さくしようっていう意味もあるんでしょうか?
0561デフォルトの名無しさんNGNG
ウィンドウズプログラムが苦手で克服したいのですが・・
どうしたらいいですか?
0562デフォルトの名無しさんNGNG
毎日、遊ぶ時間を削ってやる。ひたすらに。
0563ビル・ジョブスNGNG
>561
まずはWIN32でテキストボックスとボタン、メインウィンドウを含めると
計3つのウィンドウを作ってみよう。VC6の生成するHello Worldとかを改造してね。
ここで重要なのはテキストボックスとボタンもウィンドウだって事。
そして、Windows自体がオブジェクティブな概念の上にあるので、概念的な事を中心に
学習すると他にも応用が利きます。そして使いたい機能があったらその都度MSDNを読む。
GUIプログラミングって気が遠くなる位環境が大きいから機能を丸暗記するんじゃなくて
”概念として理解する”それが大切。WIN32あたりでまともなアプリケーションを作ろうと
思ったらかなり頭良くないと作れない可能性もあり、結構門は狭いと思います。
そういう意味でVBとかC#とかもありますからそちらを学習するのもOKです。
0564デフォルトの名無しさんNGNG
>>559
それじゃアセンブラも含まれちまうぞ
0565デフォルトの名無しさんNGNG
ラベル名を動的に作りたいんですが

たとえば、
#define LABEL_01 (0x1111)
#define LABEL_02 (0x2222)

このLABEL_xx のxx部分を変数の様に扱いたいのですが
できませんでしたっけ?

?か# だった何か使って出来たような記憶もあるのですが・・・

0566デフォルトの名無しさんNGNG
”動的”の意味がはっきりしないが
プリプロセッサを使ったトークンの結合なら ##
0567デフォルトの名無しさんNGNG
>>565
>ラベル名を動的に作りたいんですが

fp = fopen("dqn.s", "w");
fprintf(fp, " .text\n.globl LABEL_01\n");
fclose(fp);
0568565NGNG
>>566
どもっす。

##で出来ました、感謝感謝。
0569デフォルトの名無しさんNGNG
すいませんが以下のCは何を行っているか教えていただけませんでしょうか。

#ifdef AAA
#define BBB __CCC(D)
#else
#define BBB __CCC(D)
#endif
0570デフォルトの名無しさんNGNG
>>569
Cなんてない。
0571デフォルトの名無しさんNGNG
すいません以下のC言語はです。
誠に失礼しました。
0572デフォルトの名無しさんNGNG
>>569
その後に現れるBBBを __CCC(D)に置き換える。
#ifdef AAAと#elseの中が全く同じだから、条件分岐は無意味。
0573デフォルトの名無しさんNGNG
>>512
NT系は足らなくなれば自動で増える。
設定できるのは始めに用意される量。
0574デフォルトの名無しさんNGNG
>>572に補足
AAAが定義(#define AAA)されていれば、BBBを__CCC(D)に置き換えるようにする。
定義されていなければ、BBBを__CCC(D)に置き換えるようにする。
よって、条件分岐は意味がない。
0575デフォルトの名無しさんNGNG
569 == マルチ
0576デフォルトの名無しさんNGNG
>>571
C言語なんてない
0577デフォルトの名無しさんNGNG
printf("abc"); と書いたときの"abc"は、
関数の外で const char foo[] = "def"; と定義した文字列と同じ領域に置かれますか?
関数内で、char *bar = "xyz"; とした場合はどうでしょう?
この場合も const char *bar = "xyz"; にすれば、"xyz"; は関数外で書いたのと同じエリアに
取られるでしょうか?

ROM化とかするときに、ROM上にもとられて、それをわざわざRAM上に展開するように
したくないのです。
0578デフォルトの名無しさんNGNG
>>577
それは環境依存。コンパイラのマニュアルを嫁。
0579デフォルトの名無しさんNGNG
>>576
じゃ、おまえここへ噛み付いて来い
http://www.jsa.or.jp
0580デフォルトの名無しさんNGNG
>>577
コンパイラとリンカの仕様を確認。
ROMとRAMの区別があるような特殊な環境なら、
・ROMに直接置かれる読み出し専用領域
・ROMにあるデータで初期化されるRAM領域
・初期化しないRAM領域
…というようなセクションに分けて管理されているはず。
書き方によってどのセクションに置かれるかなんてのは環境によって違うので、
自分で調べるか、作った本人に訊くしかない。
0581デフォルトの名無しさんNGNG
include <stdio.h>

int main(void)
{
int a,b,c,d;

a /*= 10;
b */= 20;

c /*= 30;
d */= 40;

printf("%d\n" , a+c);
return 0;
}

なんで?
0582デフォルトの名無しさんNGNG
>>581
コンパイルできるものをもってこい。
話はそれからだ。
0583デフォルトの名無しさんNGNG
/* コメント
*/
0584デフォルトの名無しさんNGNG
>>581
#include

#を忘れてる
0585デフォルトの名無しさんNGNG
fopenするとき、windowsでも動くように常にバイナリモードで読み書きした方がいいでしょうか?

バイナリモードを指定てもUNIXでは正常に動きますか?
常にバイナリモードでfopenすることでUNIX環境での影響はありませんか?
0586デフォルトの名無しさんNGNG
_.c:1: error: 構文解析エラー before '<' token
_.c:7: 警告: type defaults to `int' in declaration of `a'
_.c:7: 警告: data definition has no type or storage class
_.c:10: 警告: type defaults to `int' in declaration of `c'
_.c:10: 警告: data definition has no type or storage class
_.c:13: error: 構文解析エラー before string constant
_.c:13: 警告: type defaults to `int' in declaration of `printf'
_.c:13: 警告: conflicting types for built-in function `printf'
_.c:13: 警告: data definition has no type or storage class
0587デフォルトの名無しさんNGNG
UNIX ではバイナリモードは、無視されるんじゃなかったっけ?
0588デフォルトの名無しさんNGNG
                    _,,..、-―-- .,
                 ,..-''"        `ヽ、
               ,. '"    _,,... - __    ヽ、
             /    ,..=-‐''~ ̄_ ~'''- 、   ヽ
             , ′    /,,..-'''"~ ̄::: ̄~'''-ヽ,  ヽ
           /    ,、'7:::,:'//:::,:´/∧::、:::゛,:::::ヽ、 ゙',
           /  .......//,:///!',::////  ',:::!!:::!i::::ヽ:, ...゙,
           l ........./n,V::;l;jl-ユTト:{:{   }!}」j:,l!:}:::!l:゙, ...〉
           ゛, .......,';「rll:´kr_テ'::「`|  ノ_,='`メ!l::;;ll!l:l./
            ゛、../ ハ l!::l| 「!-'lj    r'::/`/イ,:ノノ |!'
             ,ソ//:::|!:::l!  ̄     '-" ,':::イ!../'  
            /://::;;ハ::::ll\    .__ '  ,,::':::,!l:|   
            ノ:イ/:/;/;;`ヾ、_ ` ,. -'7_ .イ::く;;ノメ!、
         ,. '"',イ;'::/;/;;:;-"!  / ,イヽ、;;;:!:::!::| ヘヽ
       _,,-"/..'/:::/;;;-'"  !__/ /-'',ス `''-.,,:!  ゙';ヽ、
     .,-'":;; ',/,,',.-<     ゙'〈  '",-'┐ ,,'"ス、  ゙;:、、、
   ,.-'"::;;/.'/',/^ヽ``、、     ゙,    <ノ ノ' / ,ハ,  ゙;:'; ヾ、
  /"/:;;/ '‐'/,「`ヽ、 ` 、 = __  ゙、   'v'"/`、' 'l  ',::', ヾ、
 l' /::;'"  ,.:';:"/;;!   `.ー、~''ーニ.,ハ,   ハ'"   ヽ, ゙,  !::;!  ヾ!
  !:/  /:/ /:/;ト、   ...゙, |   _| \_,ノ::.\= 、._ l ,!、  l::;!  ll
  !:!  ,//' /::/::ハ ',..   ゙',l ,-',-ト、  `'ー-、ヽ, 7./l ト`、, !ノ  丿
  '、 // /:/:,/_,,l ゛、..   ゙',. ヽ:Vヾ、、、_    ~///,ノ l;;:',ヾ'
    /,' ,!::/!ll`i;;;| ヽ..   ヽ `/:  ヽ ニニ‐=/ノr' ,' l;!l,:l 'ヾ;、
   ,!:!  !::l'l:!l::!;;:::ハ   ヽ、.  ソ' :   ........,~7,  ,l / !;;!ll!! ヾ;
0589585NGNG
>>587
常にバイナリモードにしていた方がいいってことですか?
0590デフォルトの名無しさんNGNG
>>585
やろうとしていることによる
ビットマップとかPCMみたいなことをするなら
バイナリモードを指定しないとWindowsでは動かないし
インタープリタのようなテキスト処理なら寧ろ余計なことはしないほうがいい
stdioに関してはこんなとこだが

処理系間の相違が問題になる場合の一般論としては
処理系依存となる部分をできるだけ小さなライブラリとして括り出しておく
0591デフォルトの名無しさんNGNG
宿題スレですれ違いな質問をしてこちらに誘導されたので質問させていただきます。
C言語で
c:\\test\\test.txt
のようにしてTESTというフォルダを新規に作成して
test.txtというファイルにカキコミを行う際にはどのようにすればよろしいのでしょうか?
もともとCドライブにTESTというフォルダがある場合は上述でできたんですが…
当方BCC++を利用しております。
できればUNIXの環境での書式も教えていただけたら幸いです。

0592デフォルトの名無しさんNGNG
system
0593585NGNG
>>590
今やろうとしていたことは、PPM形式の画像処理でした
この場合、バイナリモードを指定してやった方がいいのですね

状況により使い分けることが大切ってことですね
0594デフォルトの名無しさんNGNG
すまん。 >>591 さんをこのスレに誘導したのは漏れなのだが
UNIXの経験がないので誰か答えておながいします。
あるいはこっちのほうがよかったのか?

【初心者歓迎】C/C++室【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1086373839/

0595デフォルトの名無しさんNGNG
>>581 を↓このスレにコピペしたら受けそうな希ガス。

最高に頭悪そうな発言して下さい in ム板
http://pc5.2ch.net/test/read.cgi/tech/1085915001/
0596デフォルトの名無しさんNGNG
そうでもない希ガス
0597デフォルトの名無しさんNGNG
>>594
ここに誘導するからには、処理系に依存しない方法を答えることが出来るのでは?
UNIXの経験がないとか言わないで答えてあげればいいじゃない。
0598デフォルトの名無しさんNGNG
私の質問はスレ違いであることは重々承知していますが、私はこのスレの皆様の
人格、能力、知識、これらすべてにおいて板の中でも最高峰のものを持っている
ということを確信しておりますので・・・
聞きたいことは他でもありません、javaのことなのです。
”javaの入門書として定評のあるものを教えていただきたい”
ええ、わかっています。Cスレでjavaのことを訊くことがいかに恥知らずで愚か
な行為であるかは。まともなレスが返ってくる可能性は少ないでしょう、でも私は奇跡
が起こるところを見てみたい。あなたたちとともに夢を見てみたい。
0599デフォルトの名無しさんNGNG
>>598
なんだね君は!
スレ違いなレスがどれほど迷惑なものかも知らんのか!
それもスレ違いであることをわかっていながら
こんな愚行を犯すなんて・・・
即効、削除依頼を出してきなさい。
君のレスは見るに耐えない。
0600デフォルトの名無しさんNGNG
>>599
まあ、もちつけ。
このスレの基本はマターリなんだからナ。
スレ違いなレスなんて珍しくもない。あまり枠にとらわれてはいけないよ。
0601599NGNG
>>600
(゚Д゚)ハァ?
なんのために、スレタイってものがあると思ってるんだ?
スレ違いの荒らしを擁護するなんて頭が悪いんじゃないかね?
0602貧乏紙NGNG
>>591
普通にopen fopenの引数にセットじゃだめなのUNIXとかLNUXは知らないけど。
0603600NGNG
(^^;)
なんで熱くなってるのかわかりませんね・・・
別に擁護したわけではないでしょ。
大した質問でもないんだから、ちょっと答えてやればいいでしょうに
漏れはjavaのことはよく知らないんで答えられないが。
0604(・∀・)NGNG
漏れは独習javaを薦める。
0605デフォルトの名無しさんNGNG
>>604
そんなくそ本燃やしちまえ。
0606デフォルトの名無しさんNGNG
たかがスレ違いな話題を出しただけで
削除以来を促すのはどうかしてる。
0607599NGNG
おまえら、ルールって知ってる?ルールも知らないのに
掲示板の書き込みなんかするんじゃないよ。
すれ違いな話題はスルーか叩き、これが2ちゃんのルール。
マジできもい。入門書なんてどれでも一緒
--------------------------------------------------終了
0608デフォルトの名無しさんNGNG
>>599
お前はどうせCしかできないんだろ(藁
0609デフォルトの名無しさんNGNG
長く続いている割に耐性のないスレだな。
0610デフォルトの名無しさんNGNG
>>609
耐性があればいいってもんじゃない。
耐性があるということは変化が少ないということ
変化が少ないということは発想に欠けるということ
発想に欠けるということはプログラマとして失格
プログラマとして失格ということはこのスレに書き込むことは許されない
ってことなんだから。
0611デフォルトの名無しさんNGNG
>>610
>耐性があるということは変化が少ないということ
この部分をもうちょい詳しく説明して欲しいんだが。
0612デフォルトの名無しさんNGNG
>>611
耐性があるというのは、周りからの刺激(煽り、スレ内容からずれる話題など)に対して
何も行動を起こさないということだ。だけども、それらの何気ないことがらからも
何らかの価値見出していく姿勢が大事であると同時に、そうすることによって
色んな方面への視界も広がっていくので、よりよい変化をもたらしていくということだ。
0613デフォルトの名無しさんNGNG
スレ違いな話題はやめろ
0614デフォルトの名無しさんNGNG
>>612
なるほど納得しました。
0615598NGNG
あのう・・・すいませんだらだら質問したのがいけなかったようです。
javaの入門書でお薦めなのを教えてください。
0616デフォルトの名無しさんNGNG
>>615
高橋麻奈のやさしいJava
0617デフォルトの名無しさんNGNG
>>615
間のレス読んでないの?
Javaのスレで聞いた方がより確実な回答が得られるのでそこで聞いてください。
俺は独習Javaしかしりません。
0618598NGNG
ありがとうございます。
これでやっと成仏できそうです。
0619デフォルトの名無しさんNGNG
>>598
君は幸せ者だな
ちょっとスレ違いなことを書くだけでこんなにレスがつくなんてwww
0620デフォルトの名無しさんNGNG
Java荒らしはうせろ
0621デフォルトの名無しさんNGNG
0と1の間の少数をランダムで発生させるにはどうすればいいでしょう
0622デフォルトの名無しさんNGNG
>>621
少数って何だ? 小原少数け??
0623621NGNG
すいません。小数です
0624デフォルトの名無しさんNGNG
atof()って文字列配列から変換する場合
小数点.も読み取ってくれるのですか?

例)char a[4]="2.1" をatof(a)で無事変換できるのですか?
0625デフォルトの名無しさんNGNG
>>624
>char a[4]="2.1"
先ずは人間が一々数えるようなことをするのはやめろ。
次に使用している環境でレファレンスを参照しろ。
そして実際にコーディングして納得しろ。
0626デフォルトの名無しさんNGNG
>>624
実際にやってみればすぐに分かるだろ。
0627デフォルトの名無しさんNGNG
確率分布については自分で考えてもらうとして1.0 / (rand() % RAND_MAX + 1)なんかどうよ
0628デフォルトの名無しさんNGNG
>>624
ついでに言うと、「文字列配列」とかぬかすな。
0629627NGNG
>>621
0630デフォルトの名無しさんNGNG
文字列配列?
0631デフォルトの名無しさんNGNG
                    _,,..、-―-- .,
                 ,..-''"        `ヽ、
               ,. '"    _,,... - __    ヽ、
             /    ,..=-‐''~ ̄_ ~'''- 、   ヽ
             , ′    /,,..-'''"~ ̄::: ̄~'''-ヽ,  ヽ
           /    ,、'7:::,:'//:::,:´/∧::、:::゛,:::::ヽ、 ゙',
           /  .......//,:///!',::////  ',:::!!:::!i::::ヽ:, ...゙,
           l ........./n,V::;l;jl-ユTト:{:{   }!}」j:,l!:}:::!l:゙, ...〉
           ゛, .......,';「rll:´kr_テ'::「`|  ノ_,='`メ!l::;;ll!l:l./
            ゛、../ ハ l!::l| 「!-'lj    r'::/`/イ,:ノノ |!'
             ,ソ//:::|!:::l!  ̄     '-" ,':::イ!../'  
            /://::;;ハ::::ll\    .__ '  ,,::':::,!l:|   
            ノ:イ/:/;/;;`ヾ、_ ` ,. -'7_ .イ::く;;ノメ!、
         ,. '"',イ;'::/;/;;:;-"!  / ,イヽ、;;;:!:::!::| ヘヽ
       _,,-"/..'/:::/;;;-'"  !__/ /-'',ス `''-.,,:!  ゙';ヽ、
     .,-'":;; ',/,,',.-<     ゙'〈  '",-'┐ ,,'"ス、  ゙;:、、、
   ,.-'"::;;/.'/',/^ヽ``、、     ゙,    <ノ ノ' / ,ハ,  ゙;:'; ヾ、
  /"/:;;/ '‐'/,「`ヽ、 ` 、 = __  ゙、   'v'"/`、' 'l  ',::', ヾ、
 l' /::;'"  ,.:';:"/;;!   `.ー、~''ーニ.,ハ,   ハ'"   ヽ, ゙,  !::;!  ヾ!
  !:/  /:/ /:/;ト、   ...゙, |   _| \_,ノ::.\= 、._ l ,!、  l::;!  ll
  !:!  ,//' /::/::ハ ',..   ゙',l ,-',-ト、  `'ー-、ヽ, 7./l ト`、, !ノ  丿
  '、 // /:/:,/_,,l ゛、..   ゙',. ヽ:Vヾ、、、_    ~///,ノ l;;:',ヾ'
    /,' ,!::/!ll`i;;;| ヽ..   ヽ `/:  ヽ ニニ‐=/ノr' ,' l;!l,:l 'ヾ;、
   ,!:!  !::l'l:!l::!;;:::ハ   ヽ、.  ソ' :   ........,~7,  ,l / !;;!ll!! ヾ;
0632624NGNG
ごめんなさい。実際にやってみました。できました。以上です。
0633デフォルトの名無しさんNGNG
(double)rand() / ( RAND_MAX );
0634デフォルトの名無しさんNGNG
(double)rand() / ( RAND_MAX + 1);
0635デフォルトの名無しさんNGNG
(double)rand() / ( ぬるぽ );
0636デフォルトの名無しさんNGNG
>>635
(double)rand() / (ガッ);
0637デフォルトの名無しさんNGNG
っていうか、そういうときこそ
#if WIN32
setmod(ほげほげ);
#endif
って書くんだろうが!
0638デフォルトの名無しさんNGNG
pthreadなプログラムなんですが、SIGSEGVをトラップするルーチンを
組んであります。
SIGSEGVをトラップするのはいいのですが、どこのルーチン(あるいはアドレス)
で発生したか知る方法はありませんか? OSはlinuxとします。
pthreadなので、デバッガは使えないものとします。
0639デフォルトの名無しさんNGNG
>>638
スレ違い
たぶんこっち

マルチスレッドプログラミング相談室 その2
http://pc5.2ch.net/test/read.cgi/tech/1037636153/l50
0640デフォルトの名無しさんNGNG
>>639 勝手に決めないで。pthreadの話じゃない。あんたがスレ違い。

どこでSIGSEGVが発生したかをデバッガ無しで知りたいだけ。
syslog()をポイントポイントで入れまくってトレースするやりかたは
なるべくならしたくない。
割り込み発生アドレス等が分かればsyslog()で書き出したい。
0641デフォルトの名無しさんNGNG
>>639
あんたがスレ違いだってさ(笑)
0642デフォルトの名無しさんNGNG
ここにいるのは答えられない無能ばかりか?
0643デフォルトの名無しさんNGNG
>>642
自分が無能だなんて公表しなくても...

皆知ってるってw
0644デフォルトの名無しさんNGNG
>638
的外れかもしれないけれど、こんな感じかな??
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=100
0645デフォルトの名無しさんNGNG
  >>1
  >GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
  >標準Cではできない事の質問は使用している開発環境のスレへ
  >標準Cではできない事の質問は
0646644NGNG
あ、raise()しているわけではないのか...。学習ルーム行ってこよう。
0647ビル・ジョブスNGNG
>638
PTLですか・・でもご質問はPTLとは無関係ですね。
私も分からないのですが、以下のsigcontextから答えが得られると考えます。
ご本人かもしれないのであえてリンク張るの止めました。

ページにmprotectをかけてSIGSEGVを発生させ、それが起こったアドレスを
SIGSEGVハンドラに渡したいのですがLinuxでの方法がわかりません。
OSはRedHat Linux 6.0(Kernel 2.2.5-15)をDOS/Vマシンで使っています。

FreeBSDではSIGSEGVハンドラに
void sigsegv_handler(int sig, int code, struct sigcontext *scp, char *addr)
のように引数を渡すことでaddrにアクセスのあったアドレスが渡されるのですが
Linuxでこのようにしてもアドレスは渡されないようです。

sigcontextの中に入っているのかもしれませんが、構造体の要素がどういう
意味を持っているかわからないため確認できません。

どうすればアドレスを渡すことができるのでしょうか?
よろしくお願いします。
0648デフォルトの名無しさんNGNG
引用なら引用らしくしてくれ。ぱっと見、ちんぷんかんぷん。
0649ビル・ジョブスNGNG
>>648
引用じゃない。転載。
0650デフォルトの名無しさんNGNG
>>647
いまどきDOS/Vマシンだなんて、
随分物持ちがいいのですね。
0651初心者NGNG
自宅はFreeBSD、大学はSolarisという環境です。

できるだけ、システム非依存でプログラムするには、システムコールを使わずライブラリを使えばいいんですよね。
Cの標準的なライブラリの使い方がのったお勧めの本ってありますか?今、Cの本は、やさしいC だけしかありません。
0652デフォルトの名無しさんNGNG
>>651
man
0653(^-^)NGNG
>>651
http://www.1point.jp/~book_2ch/program/c_lang.html
ここにいろいろあります。
0654651NGNG
>>652-653
Thanks!

それにしてもbook_2chって。。
こんなものまであるのか。
0655デフォルトの名無しさんNGNG
例えばA.cからbという自作関数を呼び出すとします。
b関数はb.hでプロトタイプ宣言されてb.cに書かれています。
こういった状況でb.hで宣言された変数はどこまで保持されています?
0656デフォルトの名無しさんNGNG
アプリの最初から最後まで。
0657デフォルトの名無しさんNGNG
>>640
Linux には siginfo_t はないの?
0658デフォルトの名無しさんNGNG
あ、SEGV のターゲットアドレスじゃなくて、PC が知りたいのか。それ
だと、移植性のある方法はないんじゃないかな。UNIX板/Linux板で聞い
たほうがいいんじゃ?

0659デフォルトの名無しさんNGNG
VC.NETで、平仮名で書かれた名前を英語に直すプログラムを書きたいのですが、
if(x=='か'){buf_eng[n++]='k';buf_eng[n++]='a';}
というのを平仮名の数だけやる しか私の貧弱な知識では分かりません...。
もっと良い方法をご存知の方はご教授いただけないでしょうか。
0660デフォルトの名無しさんNGNG
>>659
テーブル使え。
0661デフォルトの名無しさんNGNG
「英語」に「直す」のか……
0662659NGNG
>>661さん 
ローマ字表記にする ということです。何か変でしたか?
>>660さん
今までそのようなモノに出会ったことがないので
もう少し詳しく教えていただけないでしょうか。
0663デフォルトの名無しさんNGNG
世の中には様々な感覚の人がいるねぇ
0664!660NGNG
>>662
ルックアップテーブル アルゴリズムあたりでぐぐれ。
正直、アルゴリズムというほどのものではないが・・
0665638NGNG
>>644-647 サンクス
0666666NGNG
666
0667659NGNG
>>664さん
ありがとうございます! 早速ざっと見てみました。
 ttp://ash.jp/code/codetbl2.htm の文字コード表 と
教えていただいたlook-up-table で効率の良い検索プログラムが
作れそうですが、ただ、開発時間を考えると、ifを何個も書いて
やった方が早く目的を達成できそうです。。。ほんとは既存の
モノがあればよいのですが。。。(ご存知ないですか?
エクセルであるかな、と思ったら無かった...)
0668デフォルトの名無しさんNGNG
>>667
黙って作れ。
0669デフォルトの名無しさんNGNG
>>667
>ただ、開発時間を考えると、ifを何個も書いて
>やった方が早く目的を達成できそうです。

へぇ〜そうですか。ただ、いきなり破綻している気もするんですけどね。

> if(x=='か')
0670デフォルトの名無しさんNGNG
>>667
キミのやりたいことはカナtoローマ字変換じゃないのか?
だったら↓の一覧をを配列に入れりゃいーだけの話だろうが。

ttp://www.osumi.or.jp/sakata/java/romazi.htm
0671デフォルトの名無しさんNGNG
stdio.hに含まれる、gets関数についてなんですが、引数にポインタを与える場合、
先頭のアドレスを始まりとして、アドレス1つにつき1文字ずつ入っていくのでしょうか?
それとも先頭のアドレスに入力した文字がすべて入るのでしょうか?
0672デフォルトの名無しさんNGNG
またネタっぽいのがきた・・・
0673671NGNG
すみません、自己解決しました。
ポインタは取り込んだ文字列配列へのポインタだったのね・・・
0674デフォルトの名無しさんNGNG
>>673
ネタはやめろと言ってるだろ
0675671NGNG
ネタのつもりじゃなかったんですが・・・
0676659NGNG
>>670さん
そうですね。それが一番手っ取り早いですね。。。
ご親切にありがとうございました。

>>671さん
ポインタの指すアドレスを先頭にしてその後のアドレスに
書き込まれると思っていい筈です。
きちんと書き込まれるべき変数領域を確保しないと危険ですが。
0677デフォルトの名無しさんNGNG
>>671
getsを使って標準入力からデータを受け取り、printfで出力するプログラムを作ってみて下さい。
0678659NGNG
>673さん。。。まともに応えてしまいました。。。
無視してください
0679673NGNG
>659
どうもありがとうございます。ポインタのみで、1文字1アドレスで作りたかったんですが、
どうもgets関数では難しいみたいですね・・・
0680デフォルトの名無しさんNGNG
Q.以下のC言語のプログラムの、出力結果を予想せよ。

#include<stdio.h>

int *ptr;

void test(void){
int a;
a = 10;
ptr = &a;
}

void test2(void){
int b;
b = 23;
}

main(){
test();
printf("Result1: %d\n",*ptr);
test();
test2();
printf("Result2: %d\n",*ptr);
}
0681デフォルトの名無しさんNGNG
予想しました。
0682デフォルトの名無しさんNGNG
>>681 予想結果と、解説もヨロシコ
0683デフォルトの名無しさんNGNG
環境依存、コンパイルオプション依存等。
0684デフォルトの名無しさんNGNG
>>682
1行目、Result1:の後に、環境依存の数値が表示される。
2行目、Result2:の後に、環境依存の数値が表示される。

解説:
最適化を一切しない場合、比較的高い確率でResult1に10、Result2に23が表示されるかもしれない。
最適化の種類によっては共に10が表示されるし、コンパイラオプションによっては意図的な異常値が表示されるかもしれない。
0685デフォルトの名無しさんNGNG
>>661
>659によると英語=ローマ字表記であり、直す=するなのだろう。

>>659
VC.NETなんかで書かないでVBAで書いたほうが2002倍楽だぞ。
#あんたの頭なら。
0686デフォルトの名無しさんNGNG
>>684 C言語のスタックの使い方を考えて、解説を再考してみよう。
それから、関数をインライン展開するコンパイラーってあるのか?
0687デフォルトの名無しさんNGNG
gcc
0688デフォルトの名無しさんNGNG
>>686
だからそんなもんは環境依存だ。
0689デフォルトの名無しさんNGNG
>>686
なんだおまえは?
梅雨厨か?
0690デフォルトの名無しさんNGNG
梅雨厨って初めて聞いたw
北海道には関係ないな。
0691デフォルトの名無しさんNGNG
>>690
もうすぐ北海道に米軍が駐屯するんだってな。
ケツ掘られないように気をつけろよ。
0692デフォルトの名無しさんNGNG
>>686
そこまで言うなら自身がどこまで想定できたのか語ってみそ。
底の浅さを露呈するのが関の山だからお勧めはしないが。
#ちなみに、インライン展開を想定しなくても>684のような振る舞いは想定できる。
0693デフォルトの名無しさんNGNG
>関数をインライン展開するコンパイラーってあるのか?
ありまくり。
0694デフォルトの名無しさんNGNG
>>692
スタックとか考えないで、コード書いてる人が多いことがわかりました。
こんなもんか(´∀`)モケモケ
0695デフォルトの名無しさんNGNG
>>694
そろそろやめときな。まぁ、もう誰も相手にしないだろうけど。
0696デフォルトの名無しさんNGNG
(659です)
平仮名文字列を char buf[10]に読み込んだのですが、
そこから先、一文字ずつきりだす方法が分かりません。
ワイド文字をマルチワイドにして、さらにワイド文字コードで比較
すればよいのでしょうか。。或いはもっと簡単な方法はないでしょうか?
アイデアがあったらご教授願います。
# VBA は知らなかったので気力が湧いたら勉強します。
0697デフォルトの名無しさんNGNG
>>696
unsigned short u;
for (i=0; i<10; i+=2){
u = (buf[i]<<8) | (unsigned char)buf[i+1];
uでテーブルサーチ。
}
0698696NGNG
>>697さま
光が見えました! ありがとうございますm(__)m。
0699デフォルトの名無しさんNGNG
>>698=659
まずは文字コードについて勉強し直せ、と言いたい。
0700デフォルトの名無しさんNGNG
>>697
一文字後ろが小さい字(「ゃ」とか「ぃ」など)かどうかでテーブルを変える
なりなんなりする必要もあるね。長音符号も。
じゃないと例えば「ぽっぷこーんしょうじ」がちゃんと変換できない

擬似コードで書くと:
u1 = 当該文字
u2 = 一文字後ろ
if (u2==「ゃ」) 「ゃ」用のテーブルサーチ(例:き→kya)
 :
else 普通のテーブルサーチ

あと「ばぁ」とかをどう表現するかも決める必要があるかもしれないけど
名前に限ればそこまでは考えなくてもいいかな
0701デフォルトの名無しさんNGNG
B,P,Mの前の「ん」はNではなくMにするという決まりも。
0702デフォルトの名無しさんNGNG
母音の前の「ん」も特例処置が必要だし。
0703デフォルトの名無しさんNGNG
start関数の中で配列one[4]に数字を入れたのを
main関数で出力したいのですがどうしたらいいんですか?
0704デフォルトの名無しさんNGNG
>>696
unicode使え
0705デフォルトの名無しさんNGNG
>>703
one[4]をグローバル変数にする。
0706デフォルトの名無しさんNGNG
>>700
結果の出力方法に依存するけど、可能なら、「ゃゅょ」が出現した時点で、
出力バッファから1キャラ削除して「ya,yu,yo」を出力する、という方法も考えられる。
「ん」も同様のアイディアが使えるだろう。
0707703NGNG
>>705
補足+質問です
start関数とmain関数を二つのファイルに分けてあるんですが、
グローバル変数の宣言はどっちのファイルですればいいんですか?
0708デフォルトの名無しさんNGNG
>>707
mainがある方にexternをつけてone[4]の宣言をする。
0709デフォルトの名無しさんNGNG
>>707
>>708
グローバル変数は main 側で定義するものじゃないのか……?

まあ、もっと言えばそんなことで悩むくらいなら
グローバル変数なんて使わないようにした方が今後のためだと思うが
0710デフォルトの名無しさんNGNG
他のアプリケーションにバッファオーバーフローを起こさせて強制終了させ
任意のプログラムを実行させるようにしたいのですが、どうしたらいいですか?
0711デフォルトの名無しさんNGNG
ニヤニヤ
0712デフォルトの名無しさんNGNG
>>710
何がしたい?
0713デフォルトの名無しさんNGNG
初心者クラッカーれすか?
0714デフォルトの名無しさんNGNG
プログラミング言語Cの前書き読んでたら眠くなってきたorz
0715デフォルトの名無しさんNGNG
他のとこでも聞いてますがここでも教えて下さい。

キーボードから5人分の年齢身長および体重を繰り返し構文を用いて年齢は1次元配列(age)身長と体重は2次元配列(date)
に読み込み以下の二つの条件を同時に満足するもののデータ(出席番号・年齢・身長・体重)と人数を画面に表示するプログラム
を作成せよ。
条件
1 身長が全員の平均値よりも高い。
2 体重が全員の平均値以下である。

と言う問題なんですが厨房のオレにはさっぱりで
数値や変数の型などは自由で良いみたいなので模範解答みたいのをお願いします。
よろしくお願いします。
0716デフォルトの名無しさんNGNG
死ねよ
http://pc5.2ch.net/test/read.cgi/tech/1086373839/54
http://pc5.2ch.net/test/read.cgi/tech/1085149383/965
http://pc5.2ch.net/test/read.cgi/tech/1086612317/14
http://pc5.2ch.net/test/read.cgi/tech/1083765346/637
0717デフォルトの名無しさんNGNG
>>715
まずは、>>1を読め
0718デフォルトの名無しさんNGNG
>>715
お前は質問に答えて貰うに値しねーよ
厨房って言葉を免罪符にするな真性
0719デフォルトの名無しさんNGNG
>>715
とりあえず、この問題文の条件を完璧に満たすソースは作成不能だな。

>キーボードから5人分の年齢身長および体重を
>読み込み
>データ(出席番号・年齢・身長・体重)と人数を画面に表示する
0720デフォルトの名無しさんNGNG
>>710
「他のアプリケーション」のバグを探してください。
0721デフォルトの名無しさんNGNG
>>719
ワラタ
確かにw
0722デフォルトの名無しさんNGNG
>>715
#define SUTADIO <stdio.h>
#include SUTADIO
#define mein main
#define mosi if
#define boid void
#define faibu 5
#define wan 1
#define tuu 2
boid mein(){
float caunto;
float age[faibu];
float date[faibu][tuu];
int tincyo_heikin;
int taijuuu_heikin;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
printf("年齢 身長 体重? ");
scanf("%f %f %f",&age[(int)(char)(int)caunto],&date[(int)(char)(int)caunto][0],&date[(int)(char)(int)caunto][1]);
}

tincyo_heikin=taijuuu_heikin=tincyo_heikin=taijuuu_heikin=0;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
taijuuu_heikin+=date[(int)(char)(int)caunto][1];
tincyo_heikin+=date[(int)(char)(int)caunto][0];
}
taijuuu_heikin=tincyo_heikin=taijuuu_heikin/faibu;
tincyo_heikin=tincyo_heikin=tincyo_heikin/faibu;

for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
mosi(tincyo_heikin<date[(int)(char)(int)caunto][0] && taijuuu_heikin>date[(int)(char)(int)caunto][1]){
printf("年齢%f 身長%f 体重%f\n",*&age[(int)(char)(int)caunto],*&date[(int)(char)(int)caunto][0],*&date[(int)(char)(int)caunto][1]);
}}}
0723デフォルトの名無しさんNGNG
>>722 コピペしてなにがうれしいんだ
0724デフォルトの名無しさんNGNG
STDERRをファイル出力するにはどうすればいいの?
fprintf(STDERR,"エラー\n");
と、かくと余裕でメインコンソールに表示されるんですが・・
0725デフォルトの名無しさんNGNG
>>724
$ program 2> file
0726デフォルトの名無しさんNGNG
>724
freopen()しなよ
0727デフォルトの名無しさんNGNG
>>726
stderr = freopen("log/err.log", "w+",stderr);
これいれたらできましたー
freopen初めて知りました・・・
ありがとうです。
0728デフォルトの名無しさんNGNG
725は無視
0729デフォルトの名無しさんNGNG
Cでネット上のデータ(CSV)などをダウンロードする方法ってあるのでしょうか?
0730デフォルトの名無しさんNGNG
環境による
0731デフォルトの名無しさんNGNG
整数nを入力し、n人分の名前とスコアを入力し、名前とスコアを出力させる
プログラムを作っています。構造体を勉強する練習問題です。
以下のように作りました。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXLEN 256

char buff[MAXLEN];
struct info{
 char *name;
 int score;
};

void error(char *);

main(){
 struct info *sp;
 int n, i;

 printf("Input Number N >");
  scanf("%d",&n);


  for(i=1; i<=n; i++, sp++){
  sp = (struct info *)malloc(sizeof(struct info));
  if(sp==NULL){
   error("Cannot allocate memory for structure.");
  }
0732731NGNG
  printf("Name = ");
  scanf("%s",buff);
  sp->name = (char *)malloc(sizeof(char)*(strlen(buff)+1));
  if(sp->name==NULL){
   error("Cannot allocate memory for name");
  }
  strcpy(sp->name,buff);

  printf("score = ");
  scanf("%d",&sp->score);
 }


 sp -= n;
 for(i=0; i<n; i++, sp++){
  printf("%s's score is %d\n", sp->name, sp->score);
 }
 return 0;
}
0733731NGNG
実行結果です。
Input Number N >2
Name = AAA
score = 20
Name = BBB
score = 30
(null)'s score is 17
BBB's score is 30

Input Number N >3
Name = AAA
score = 50
Name = BBB
score = 60
Name = CCC
score = 70
セグメントエラー

間違っている点、勘違いしている点のご指摘おねがいします。
0734デフォルトの名無しさんNGNG
sp は配列をさしているわけではないから、インクリしたらアクセスしちゃ
いけないエリアを指すかもしれない。

連続してmallocを呼んでも確保するエリアが連続した領域という保証は無い。
したがって、このプログラムでは、malloc するたびにsp は新たな「どこか」を指してしまい、
それ以前に確保した領域を再び参照することは出来ない。
0735731-733NGNG
>>734
ご指摘ありがとうございます。
直してみます!
0736デフォルトの名無しさんNGNG
ローカルのPC上では正常に動くのに
サーバ上ではゴミが入るようなプログラムって
あり得ますか?
あるとしたら、どのような事柄が原因となることが考えられますか?
0737デフォルトの名無しさんNGNG
>>736
バグ。
CFAQの16.5を読めば、ヒントが見つかるかもね。
http://www.kouno.jp/home/c_faq/c16.html#0
0738デフォルトの名無しさんNGNG
スレッドセーフとリエントラントってどう違うのですか?
「スレッドセーフ=リエントラント」という説明をしているサイトを多くみかけますが、
「このAPIはリエントラントだけどスレッドセーフではない」とかいう記述もたまにあります。
どっちが正しいのでしょう。。。。
0739731-733NGNG
うぅ…解決できません。
ソースを載せてなんて厚かましいことは言いません。
「こうしたらいいよ」的なヒントをいただけないでしょうか?
0740デフォルトの名無しさんNGNG
リエントラントってマルチスレッドに加えてハードウェア割り込みに対しても安全って事だと思うけど。
なので「このAPIはリエントラントだけどスレッドセーフではない」というのが分からない。
「このAPIはスレッドセーフだけどリエントラントではない」ならわかるけど。
自分の認識が間違ってるのか・・・
0741デフォルトの名無しさんNGNG
とりあえず、「スレッドセーフ=リエントラント」でないのは確か。
リエントラントとだけかかれる場合は、その名の通り「再入可能」なだけで
あって、複数のスレッドから呼び出された時にどうなるかは保障なし。

適当にでっち上げた事例だが、再帰的にリスト操作する関数を作ったとする。
再帰的に呼び出せるように組んだのでリエントラントではある。
しかし、ミューテックスか何かで保護しないと複数のスレッドから呼び出された
時点で、リストが壊れる可能性があるのでスレッドセーフにはならない。
0742デフォルトの名無しさんNGNG
>>739
うーん >>734 が全てじゃないのかな?
根本的にダメなんで、malloc が何をする
関数で、それを使って自分がなにをした
かったのか考え直してみてから、1から
作り直したほうがいいよ。
0743デフォルトの名無しさんNGNG
>>739
ポインタの配列作って、その中にmallocで確保したメモリのポインタをいれる。
0744デフォルトの名無しさんNGNG
>>743
最初にデータ数を入力する様になっているから、
一次元配列分の領域を確保すればいいんでない?
0745デフォルトの名無しさんNGNG
>>659の逆でローマ字からひらがなにするプログラムを書きたいのですが
だいたい同じような方法でいいんでしょうか?
0746デフォルトの名無しさんNGNG
ファイル出力で、1バイトの、0X0A というデータをかきこみたいのですけど、

fputc(10,fp);
fputc(0x0A,fp);
fprintf(fp,"%c",0x0A);

を、実行しても、改行コード 0D 0Aになってしまいます。
0Dが付加されてしまう。

0Aだけを出力する方法はないのでしょうか?
0747デフォルトの名無しさんNGNG
>>746
バイナリモードでファイル開け
0748デフォルトの名無しさんNGNG
>>747
ありがとう、さっそくやってみます。
0749デフォルトの名無しさんNGNG
>>731
問題点のポイントだけ

その1)sp = (struct info *)malloc(sizeof(struct info) * n);
その2)sp[i].name = strdup(buff);

これで判らないなら知らん
0750731-733NGNG
>>742-744 の御3方
ありがとうございました。mallocが何をするものなのかよく分かっていませんでした。
まず、大きいfor文に入る前に
sp = (struct info *)malloc(sizeof(struct info)*n);
を実行し、欲しい配列の個数分領域をOSに確保してもらい、その先頭をspが指すようにしました。
そしてfor文が回るごとにsp++をし(*++++++++++++++++++... → ++++++++++*++++++...)、
そのspが指している場所からnameとscoreの情報を入れていきました。

for文を抜けたあとでsp-=n; を実行することでspの指す場所を戻し、
次のfor文内でsp++をしながらsp->nameとsp->scoreを表示させていきました。

説明が下手なので分かりにくいとは思いますが、こうすることで上手くいきました。
ありがとうございました。
0751731-733NGNG
>>749
ポイントありがとうございます。
恐縮ながら、その1)には自分で気が付くことができました。
その2)については、strdupが分からないので調べてみます。

よりよいプログラムが書けるように頑張ります。
#そのためにはもっとポインターや構造体のことを学ばないと・・・
0752デフォルトの名無しさんNGNG
#include <iostream>
using namespace std;

int main(){
int i;
double tw;
tw=2;

for(i=0; i<=10; i++){
cout << tw << '\n';
tw=tw-(tw*tw-2)/(2*tw);
}
return 0;
}

2 1.5 1.4667・・・となり、1.41421、1.41421・・・と限界がすぐ来てしまうのですが、
桁数って増やせないものでしょうか?
0753デフォルトの名無しさんNGNG
スレタイ嫁バカ
0754デフォルトの名無しさんNGNG
>>752
スレタイ嫁
話はそれからだ
0755デフォルトの名無しさんNGNG
<<752
cout <<setprecision(n)
で精度がn桁になる
上限は実装依存
#include <iomanip>を忘れずに
0756デフォルトの名無しさんNGNG
>>752-753
おっと、これはC言語ではないんだな?
見たこと無い文字列だったんで、「何打コリャ?」と思ってしまった。
0757755NGNG
わりぃ
答えてまった
0758755NGNG
すごいだろ? へへん
0759755NGNG
まいったか
0760デフォルトの名無しさんNGNG
まいりました。




あなたのしつこさに
0761デフォルトの名無しさんNGNG
変な質問ですみません

#include<stdio.h>
#include<math.h>
main()
{
float a,b,c,d;
a=2.2;
b=2.2;
c=sqrt(9.68);
d=0.000001;

if(a*a+b*b==c*c-d)
(以下略)
と打ったのですが何故かifの方が実行されず何故かelseの方が実行されてしまいます
数字があってるかどうか表示させて確認したので間違ってはないはずなんですが・・・
0762デフォルトの名無しさんNGNG
浮動小数点数の演算結果を == で比較するのは実際的じゃない。
C-FAQ参照。
www.kouno.jp/home/c_faq/c14.html#5
0763761NGNG
>762
ありがとうございます、FAQを読んでなんとか修正出来ました
0764デフォルトの名無しさんNGNG
なあ兄さん、今日は朝までいるんだろ?
0765デフォルトの名無しさんNGNG
>>741
リエントラントは再入可能。
つまり状態をもたない。よって複数のスレッドから同時に呼び出されても大丈夫。
それから、同時に呼び出されても非同期に動くことができる。

スレッドセーフは、その通りに複数のスレッドから同時に呼び出されても大丈夫。
ただし、リエントラントとは限らない。というのも、状態を持つけど排他制御すること
によって複数のスレッドから同時に呼び出されても大丈夫なように実装されてるかも
しれないから。
リエントラントでない場合は、排他制御してるので待ち合わせが発生する。
(つまり非同期じゃない)

と解釈してるのだがどうだろう。

740の疑問は妥当。
741は途中から言葉が「再帰」になってるように、多分再入と再帰をごっちゃにしてると
思われ。
0766デフォルトの名無しさんNGNG
for()
{
if(!)
{
break;
}
}
このbreakでfor文抜けですよね?
0767デフォルトの名無しさんNGNG
んだね
0768デフォルトの名無しさんNGNG
あんれ
0769”管理”人にゃんNGNG
HPつくった
みなさんみてみてよ
http://www.geocities.jp/nyantos7893/
0770デフォルトの名無しさんNGNG
!俺最高!最高!
0771デフォルトの名無しさんNGNG
>>765
スレ違いかもしれないのですが、教えてくさい。
リエントラントな関数は状態を持たないとのことですが、
どうしても状態をもたないといけないときはどう実装
するのでつか?
0772デフォルトの名無しさんNGNG
>>762
はぁ?馬鹿ですか?




と以前言われた。
0773デフォルトの名無しさんNGNG
スレッドIDもらって、状態変数をスレッドの最大数の要素をもった配列にすれば
平気よん。
0774デフォルトの名無しさんNGNG
>>772
× >>762
○ >>772
0775デフォルトの名無しさんNGNG
>>774
>>762と同じ事を言ったら、こう言われたの。
0776デフォルトの名無しさんNGNG
>>775
ネタなら他所でやれ。
言いたいことがあるなら、ちゃんと言え。
0777デフォルトの名無しさんNGNG
if (hoge() && foo())
は確実にhoge()から計算されますか?
0778デフォルトの名無しさんNGNG
>>777
される。

>>776
邪魔だ。
0779デフォルトの名無しさんNGNG
#if〜#endifの間をコンパイルさせたくない時

#if !defined(NULL)
#endif

にしとけば問題なさそうなんですが
何処かで、もう少しスマートな書き方を見た覚えがあるんですが
どうしても思い出せません…
どなたか教えて頂けませんか?
0780デフォルトの名無しさんNGNG
>>779
#if 0
・・・
#endif
0781779NGNG
>>780
なんでこんな事も分からなかったのか…
逝ってきます…
0782デフォルトの名無しさんNGNG
初心者です。よろしくお願いします。

a[9] = {0 , 0 , 2 , 0 , 0 , 5 , 6 , 7 , 8}
array[4][1] = 3
array[4][0] = 2

のとき、

for( j = 0 ; j <= 8 ; j++ ){

  if( a[ j ] == a[ array[4][1] ] ){

     a[ j ] = a[ array[4][0] ];

  }
  printf("%d " , a[j]);

}

を実行すると、結果が、
a[9] = {2 , 2 , 2 , 2 , 2 , 5 , 6 , 7 , 8}
とならず、
a[9] = {2 , 2 , 2 , 2 , 0 , 5 , 6 , 7 , 8}
となるのです。何故、4番目の値が0から2にならないのか、
さっぱりわかりません。どなたか、教えて頂けないでしょうか。
よろしくお願いします。
0783デフォルトの名無しさんNGNG
それは4番目の0を2にしてしまうからだよ。
比較する値(4番目の値)をまず変数に用意してからやろう。
0784デフォルトの名無しさんNGNG
あ、ちがった3番目0を2にしたからだよ
0785デフォルトの名無しさんNGNG
j = 4のときに
a[4] == a[3]
 0    2

だからa[2] = 2が代入されない。 
0786785NGNG
ちょっといいかた変える。
j = 4のときに
a[4](値0)  と  a[array[4][1]]、つまりa[3](値2)が等しくないから
     
a[4] に a[array[4][0]]、 つまりa[2](値2)が代入されない。 
(a[2]ははじめ0だが、途中で2に変わっている)
0787デフォルトの名無しさんNGNG
デバッガで追っかければ一発なのになー
0788デフォルトの名無しさんNGNG
#if 0
〜
#endif
をソースレベルでコメントと認識して色わけしてほしいと思うのは漏れだけでつか?
0789デフォルトの名無しさんNGNG
#if 0 〜 #endif をコメントと認識している時点で間違いだ。
0790デフォルトの名無しさんNGNG
>>788
君だけだね
0791デフォルトの名無しさんNGNG
>>788
gvimはそうなるよ。
0792デフォルトの名無しさんNGNG
782です。

納得です。
ありがとうございます。
0793デフォルトの名無しさんNGNG
>>788
wzでも、色分けされる。
0794デフォルトの名無しさんNGNG
今のWZはまともなコメント処理してくれてるの?
4.0以前のコメント判定は酷すぎて話にもならんかったが・・
0795デフォルトの名無しさんNGNG
最新の秀丸でも色分けされる
0796デフォルトの名無しさんNGNG
>>794
なにをもってまともなコメント処理とするかは知らんが、
4.00Fにおいて、とくに誤作動と思われるふしはない。
ちなみに#if 0 は有効だが、#if defined(HOGE) までは面倒見てくれないよ。
0797デフォルトの名無しさんNGNG
質問です。
ある機能を実現する時、何通りものコードを思いついたとします。
それぞれで実装してみて、その処理時間を比較するにはどうしたらよいでしょうか?
また、
条件分岐の数を増やせば増やすほど処理の時間は比例するのでしょうか?
0798デフォルトの名無しさんNGNG
>>797
time() で所持にかかった時間計れば?
厳密に正確な時間は計れないけど、アルゴリズムも比較くらいならできるんじゃないかな。

条件分岐は、増やしたからといっても処理時間が増えるとは限らない。
極端な話、99,9999%の確率で2つめの分岐で抜けてしまう処理に、100個に分岐を後
付したところで全体への影響は少ないでしょ。
0799デフォルトの名無しさんNGNG
>>798
薦めるならclockだろ
0800デフォルトの名無しさんNGNG
>>797
gcc -pg hoge.c
./a.out
gprof --brief

man gdb
0801デフォルトの名無しさんNGNG
>>798
>>799
回答ありがとうございます。
clock()を使えば出来そうですね。土日に試してみます。

条件分岐を増やせば増やすほど見づらいコードになるから、
なるべく条件分岐が少ないようなやり方の方がよいと聞いたんですが、
これってどうなんでしょうか?
0802デフォルトの名無しさんNGNG
>>791
ひでまるでさえがなる!
0803デフォルトの名無しさんNGNG
>>801
書き方によってある程度は見やすく/醜くなるわけだが。

しかし、ロジックを実現するために条件分岐をさせるわけで、
見難いから分岐を減らそう、というのは本末が転倒していないか?
いくら見難かろうと、必要な条件分岐は削れない。

やたら複雑に分岐しているコードは、無用な処理が含まれている
可能性が高いから、整理してシンプルなロジックに出来ないか検討
しよう、というのなら話は分かるが。
0804デフォルトの名無しさんNGNG
clock()って起動した時間だけど
intを超えた場合はどうなるの?
0805デフォルトの名無しさんNGNG
3つの整数を読み込んで、それらの最大値と最小値の差を出力する
プログラムを作成せよ。ただし3つの整数の最大値と最小値の差は、
その 値を返す関数 int width(int x, int y, int z) を作成して計算せよ。

という問題なんですが、警告が出ます。どこがおかしいのでしょうか?

#include <stdio.h>

int width(int x, int y, int z)
{ int max = x;
int min = y;
if(y > max) max = y;
if(z > max) max = z;
return (max);
if(x < min) min = x;
if(z < min) min = z;
return (min); }

int diff(int max, int min)
{ return (max - min); }
int main(void)
{ int na, nb, nc;

puts("三つの整数を入力してください。");
printf("整数1:");scanf("%d", &na);
printf("整数2:");scanf("%d", &nb);
printf("整数3:");scanf("%d", &nc);

printf("3つの整数の最大値と最小値の差は%dです。\n", width(na, nb, nc));

return (0); }
0806デフォルトの名無しさんNGNG
2ちゃんえるの中で特定の板でルーチン変更宿題受けたのですが
何処で聞いたら宜しいでしょうか。
特定のダイヤルアップの規制をしたいので教えていただけたら幸いです。
0807デフォルトの名無しさんNGNG
>>805
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
0808デフォルトの名無しさんNGNG
>>805
1. 関数の戻り値は一つなのだが・・
2. 君のwidth(...) の最初おreturn の後ろは死んでるぞ。
3. diff はどこで使うんだい?
0809BorisNGNG
ここのサイトはとっても面白いサイトです。是非来てください。感想お待ちしてます。
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

世界最高おもしろサイト”ふくろうの巣”
       http://fukurou.sdap.jp/
ぜったいにきてねっ!掲示板に感想かいといてねぇ
0810デフォルトの名無しさんNGNG
>>804
壊れると聞いたことがある。でも40日つけ続けなければいい。
0811デフォルトの名無しさんNGNG
C言語の講師がむかつく
0812805NGNG
3つの整数の最大値と最小値はif文を使ってどうやって出せばいいんですか?
0813デフォルトの名無しさんNGNG
max = a > b ? (a > c ? a : c) : (b > c ? b : c);
min = a < b ? (a < c ? a : c) : (b < c ? b : c);
0814デフォルトの名無しさんNGNG
3つと決めうちならそれでもいいが、
たとえば1000個の中のmin,maxを
出せっていわれても大丈夫なように
しておくのが学習ちゅうもんじゃないか?
0815(^-^)NGNG
>>812
>>805かなりいい所いってますよ。
修正箇所は>>808さんの言っている所のみです。
0816805NGNG
diffの使い方がよく分かりません。最後のprintfのとこに書けばいいんですか?
0817デフォルトの名無しさんNGNG
man diff
0818(^-^)NGNG
>>816
#include <stdio.h>
int width(int, int, int);

int main(void)
{
  int na, nb, nc;

  puts("三つの整数を入力してください。");
  printf("整数1:");scanf("%d", &na);
  printf("整数2:");scanf("%d", &nb);
  printf("整数3:");scanf("%d", &nc);
  printf("3つの整数の最大値と最小値の差は%dです。\n", width(na, nb, nc));
  return 0;
}

int width(int x, int y, int z)
{
  int max = x;
  int min = y;

  if(y > max) max = y;
  if(z > max) max = z;

  if(x < min)
    min = x;
  if(z < min)
    min = z;

  return max - min;
}
で、いいと思います。
0819805NGNG
diffは使わなくてもいいんですか?
0820(^-^)NGNG
>>819
最初からdiff関数使われていませんよ (^^;
0821デフォルトの名無しさんNGNG
>>819
少しも考える能力ないんですか?
0822デフォルトの名無しさんNGNG
805と名乗っている奴は偽者だろ
0823デフォルトの名無しさんNGNG
>>821
それもそうだが、>>805 のソースは >>805 が書いたもの
じゃないってことだよな。ちゃんと、自分で考えろ。
0824(^-^)NGNG
>>822
偽者だったんですか!!(;_;)
0825805NGNG
本物です。
テキストの見本にはdiffで差を求めるプログラムが載っていたので、
使わなくてもいいのかなって思っただけです。
0826デフォルトの名無しさんNGNG
return (max - min);
とか。
0827デフォルトの名無しさんNGNG
diff という関数を使うのか使わないのかという問題ではなく、
diff という関数のなかでなにをしているのかを考えないと。
ちゃんと考えていれば、そんな疑問はわかないはずだな。
0828805NGNG
差を返す関数ですよね?
diffを使うか使わないかわからないと不安だから聞いているだけです。
0829デフォルトの名無しさんNGNG
むぅ、「差を返す」という処理を関数として行う必要があるのか、
必要がないのか? 関数にしたければすればいいわけで
なにが不安なのか?
現に >>818 では、関数にしないで差を求めているわけでしょう?
>return max - min;
関数でやりたければ、
return diff(min,max);
ってかきゃ済む問題でしょ?
0830デフォルトの名無しさんNGNG
おお、あなたの関数でいけば、
return diff(max.min);
でした。
0831805NGNG
return max - min;をreturn diff(max.min);に変えればいいんですね?
やってみます。皆様本当にありがとうございました!
0832デフォルトの名無しさんNGNG
>>831
diff(max,min);
0833デフォルトの名無しさんNGNG
>>831
>return max - min;をreturn diff(max.min);に変えればいいんですね?

最後が疑問符になっているってことは、ちゃんと理解してないな・・・
0834デフォルトの名無しさんNGNG
今後のためにまずソーティングをかまして最大最小をひろってそれらの差を返すようなのに書き直しましょうね
0835デフォルトの名無しさんNGNG
int min=999999; //いいかげん
int max=0;
for(i=0;i<num;i++) {
 if (min>data[i]) min=data[i];
 if (max<data[i]) max=data[i];
}
ソートするよりラクダじゃないか?
0836デフォルトの名無しさんNGNG
Cでローテートシフトするスマートなマクロを考えています。

#define RSHIFT(x,shift) (x=x>>shift | x<<(?-shift))

ビット数によって可変なので
0837836NGNG
上の書き込み取り消します。すいません。
0838デフォルトの名無しさんNGNG
838なら837の取り消しは無効になる
0839デフォルトの名無しさんNGNG
>>810
サーバーの場合は40日なんてザラじゃない?
どうするんだろ気になって眠れない
0840デフォルトの名無しさんNGNG
clock()じゃなくて
difftime()つかえ
0841デフォルトの名無しさんNGNG
>>839
0に戻るはず。
だから、intの範囲を超えない40日以内の差をとれば、それは常に正しい。

違ってたら、指摘を頼む。
0842デフォルトの名無しさんNGNG
ヤコビ法とガウス・ザイデル法を使って連立方程式を求める
プログラムの例ってどこかにないですかね?
0843デフォルトの名無しさんNGNG
入力した名前に該当する数学と英語の点数を表示するプログラムなのですが、
一応コンパイルは成功しましたが、名前を入力してリターンキーを押すと、
強制終了してしまいます。どこがおかしいのでしょうか?

/*
番兵法とbsearch関数を利用した線形検索
*/

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

#define SEITO_SUU 10

typedef struct {
char name[10];/* 名前 */
int math;/* 数学の点数 */
int eng;/* 英語の点数 */
} Person;

/*--- Person型の比較関数(名前昇順) ---*/
int npcmp(const Person *x, const Person *y)
{
return (strcmp(x->name, y->name));
}
0844デフォルトの名無しさんNGNG

/* 要素数nの配列aからkeyと一致する要素を線形検索(番兵法) */
int search(Person a[], int n, int nx, Person key)
{
int i = 0;/* 配列xの要素数 */

strcpy(a[n].name, key.name);

while(1)
{
if(key.name == bsearch(key.name, a[i].name, nx, sizeof(Person), (int (*)(const void *, const void *))npcmp))
{
break;
}
else
{
i++;
}
}

return i == n ? -1 : i;
}
0845デフォルトの名無しさんNGNG
int main(void)
{
Person x[11]= {{"Tom", 75, 60},
{"Jerry", 85, 90},
{"Spike", 45, 30},
{"Rachel", 55, 85},
{"Monica", 75, 90},
{"Phoebe", 80, 75},
{"Chandler", 70, 65},
{"Joey", 85, 75},
{"Ross", 90, 85},
{"int", 3 , 3},
};
int nx = sizeof(x) / sizeof(x[0]);
int idx, nnx;
Person ky;
0846デフォルトの名無しさんNGNG


/* ここから、データを昇順に並べ替えるプログラム */
int i, j;
Person someone;
for(i = 0; i < SEITO_SUU-1; i++){
for(j = i+1; j < SEITO_SUU; j++){
if(strcmp(x[i].name, x[j].name) > 0 ){
someone = x[i];
x[i] = x[j];
x[j] = someone;
}
}
}
/* ここまで昇順に並べ替えるプログラム */

puts("探したい人の名前を入力してください");
scanf("%s", &ky.name);
idx = search(x, nnx - 1, nx, ky);/* 配列xから名前がkyである要素を線形探索 */
if (idx == -1)
puts("探索に失敗しました。");
else
printf("%s : 数学 %d点 英語 %d点\n", x[idx + 1].name, x[idx+1].math, x[idx+1].eng);
return (0);
}
0847デフォルトの名無しさんNGNG
長々とすみません。以上です。よろしくお願いいたします。
0848デフォルトの名無しさんNGNG
scanf("%s", &ky.name);
これまずいね。
scanf("%s", ky.name);
こうだね。
0849デフォルトの名無しさんNGNG
拙者、0を返す所存にござる!
0850デフォルトの名無しさんNGNG
printf デバッグって知ってる?

////////////////////////////////////////
int search(Person a[], int n, int nx, Person key)
{
int i = 0;/* 配列xの要素数 */

printf("key.name = %s\n", key.name); //  この3行を
printf("n = %d\n", n);           // いれて 
printf(nx = %d\n" , nx); // 見よう〜。

strcpy(a[n].name, key.name);
////////////////////////////////////////
0851デフォルトの名無しさんNGNG
3つめのprintf、だぶるこーてーしょんが足りないや。補ってね。
0852843NGNG
>>848
ありがとうございます!
でも、まだ強制終了します・・・・。
0853デフォルトの名無しさんNGNG
>>839
スリープしている時間が圧倒的に多いと思うけど。
0854853NGNG
時間が多いとは言わないな。時間が長い。
0855デフォルトの名無しさんNGNG
つーか壊れるといってもあふれるだけで、プログラムの実行を続けられなくなるわけじゃないし・・・
0856デフォルトの名無しさんNGNG
>>842
ヌーメリカル・レスィピ
0857デフォルトの名無しさんNGNG
とある初心者掲示板を騒がせていたどきゅそのページ。
ttp://www.medianetjapan.com/2/19/internet_computer/junn/index.html
0858デフォルトの名無しさんNGNG
>>852
printf("ここまできてる1\n");
         :
printf("ここまできてる2\n");
         :
printf("ここまできてる3\n");
         :
っていう感じのをソース内に貼りまくって実行してみ?
どこらへんが原因で強制終了になってしまっているのか見当がつくよ

もちろん別のファイル名で保存しないといけないぞ
0859デフォルトの名無しさんNGNG
>>858
gdb ぐらい使いなさい(w
0860デフォルトの名無しさんNGNG
いや、まあそうなんだけど
>>852にはgdbは無理かなって思ったんだYO!
0861デフォルトの名無しさんNGNG
現在プログラム板にはHSP関連スレに凶悪な荒らしどもが住みついています。

・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる

などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?

【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0862デフォルトの名無しさんNGNG
>>843
未だにPC98使ってんの?
0863843NGNG
>>858
なるほど!ありがとうございます!!
試してみます!!
0864843NGNG
/* 要素数nの配列aからkeyと一致する要素を線形検索(番兵法) */
int search(Person a[], int n, int nx, Person key)
{
int i = 0;/* 配列xの要素数 */

strcpy(a[n].name, key.name);

>>858さんの言うとおりにやってみたら、上記のstrcpy()のところが間違っている
ことがわかりましたが、

key.nameを、&key.name[0]に変えたり、いろいろやってみましたができませんでした。
どうかご教授お願いいたします。
0865デフォルトの名無しさんNGNG
>>864
そこまで判っててなんで原因を調べないのか不思議だ・・・
>>850さんのアドバイスに従ってprintf入れて期待通りの引数が入ってるか確認してみ?
0866デフォルトの名無しさんNGNG
>>864
そもそも nnx っていうのは何も使われていないようにみえるのだが・・・
0867843NGNG
>>865さん、>>866さん、そして、>>850さん本当にどうもありがとうございました。
原因が解決しました。
printf デバッグすごいですね!これからぜひ使ってきたいです!!
0868デフォルトの名無しさんNGNG
>>867
解決したらその方法を報告するように
0869843NGNG
>>868
すみません。原因は、nnxの値を定義していなかったことでした。
0870デフォルトの名無しさんNGNG
(´-`)。oO(やっぱりな・・・

(#゚д゚)次ィ!!
0871デフォルトの名無しさんNGNG
for( ; ; ){ 式 }
とforの中が、空の場合、 式を繰り返すのですか?。
0872デフォルトの名無しさんNGNG
省略した場合は
for(;;) → for(;0;)
になって欲しかった。
0873デフォルトの名無しさんNGNG
>>871
そうです。

K&Rでは、無限ループは for(;;){ 〜 } と書くよう推奨しています。
0874デフォルトの名無しさんNGNG
人によっては
while (0)
と書く人もいるよね。そもそも
1.do
2.while (0)
3.for(;;)
この3つの違いって何よ?
0875デフォルトの名無しさんNGNG
while(1)じゃねぇの?
0876デフォルトの名無しさんNGNG
Makefile作るのメンドイんでVC++みたいなの紹介してください
0877デフォルトの名無しさんNGNG
eclip
0878デフォルトの名無しさんNGNG
>874
意味不明
0879874NGNG
>>875
間違えた

>>878
>意味不明
どこが?
0880デフォルトの名無しさんNGNG
アセンブリコード見れ
0881デフォルトの名無しさんNGNG
ccとgccとでバイナリが違うものになるのでしょうか?
0882デフォルトの名無しさんNGNG
>>879

>>意味不明
>どこが?
どこがあってたというのか?
2と3のあたりだけ哉。
0883デフォルトの名無しさんNGNG
>>881
>>880
0884デフォルトの名無しさんNGNG
>>874
Cを知らない人がでしゃばるなよ。
0885デフォルトの名無しさんNGNG
do {
} while(0);

って使うだろ、普通
0886デフォルトの名無しさんNGNG
普通って何だよ
0887885NGNG
>>886
ごめんなさい、難しい漢字を使ってしまいましたか。

(名・形動)[文]ナリ
(1)いつでもどこにでもあって、めずらしくない・こと(さま)。
「日本に―の鳥」
(2)ほかとくらべて特に変わらない・こと(さま)。
「ごく―の家庭に育つ」「―ならもう卒業している」
(3)特別ではなく、一般的である・こと(さま)。
「―高校」
0888デフォルトの名無しさんNGNG
>>887
ネタなら電波板に逝ってくれ。邪魔だ。
0889874NGNG
>>884
すまんかった...orz

>>886
漏れがDoを入れたのがわるかった

ところで while (1) と for (;;) の違いを教えてくだちい
0890885NGNG
>>888
ねたじゃない。日本語が苦手な886さんに意味を教えてあげただけだ。
0891デフォルトの名無しさんNGNG
>>889
違いはない。前者だとコンパイラによって警告が出る(条件式が定数)から嫌だと言う人がいる。
0892デフォルトの名無しさんNGNG
>>889
永久ループなら他に
L1:
/*...*/
goto L1;
なんかもあるな

この問題に限ったことじゃないが「警告出るからイヤ」は処理系依存の一種だと思う
言ってる本人は自慢げだが俺に言わせれば狭いだけ
警告は内容をよく読んで判断するもので避けるべきエラーとは違う
0893デフォルトの名無しさんNGNG
>>889
違いはコンパイルしてアセンブリコードを見てくれ…
0894889NGNG
>>891-889
レスありがとうございます。
今初めて気づいたのですが、警告レベル4(VC6)にしたら、その
メッセージがでました。for(;;)を勧める理由がわかりますた。

>>893
アセンブリコードあんまりよくわからないのですが、全く同じに
見えますた。
0895デフォルトの名無しさんNGNG
アセンブラ読めねぇ奴にアセンブルコード見てくれってゆわれても説得力ない罠
0896デフォルトの名無しさんNGNG
http://www.personal-media.co.jp/book/c/ansi.html
↑これ、最強
0897デフォルトの名無しさんNGNG
>>892
永久ループにgoto使う奴なんていないよ。

>警告は内容をよく読んで判断するもので避けるべきエラーとは違う
while(1)->for(;;)なんてコスト0の書き換えで避けられるなら避けろよ。
しかもCではfor使う書き方が圧倒的にポピュラー。
いや、あんたの国ではどうだか知らんけどさw
0898デフォルトの名無しさんNGNG
for厨キターーーーーーーーーーーーーーーーーーーーーーーーーー!!!
0899デフォルトの名無しさんNGNG
永久ループ

void loop()
{
 処理
 loop();
}
0900デフォルトの名無しさんNGNG
900get
0901デフォルトの名無しさんNGNG
>>897
>いや、あんたの国ではどうだか知らんけどさw

ワラタ
自分の話の腰を折るとは奇特な人だ・・・
0902デフォルトの名無しさんNGNG
for(;;)は顔文字に見えるから嫌。
0903デフォルトの名無しさんNGNG
>>897

>永久ループにgoto使う奴なんていないよ。
gotoをbreakと偽装する人は多いのに不思議だな


> while(1)->for(;;)なんてコスト0の書き換えで避けられるなら避けろよ。
> しかもCではfor使う書き方が圧倒的にポピュラー。

これのどこが
> >警告は内容をよく読んで判断するもので避けるべきエラーとは違う

に対しての反論(?)なんだ? 脈絡ないやん
0904デフォルトの名無しさんNGNG
while("無限ループ")
0905デフォルトの名無しさんNGNG
>>902
我々はとんでもない勘違いをしていたのかもしれない。

for(;;) → for (;;) → (;;)のために → 泣いている人のために
while(1) → 1の間 → スレの最終レスが1の間 → スレのレスが0の間

レスが来ないと糞スレ立てた人(while(1))より
泣いている人のため(for(;;))に尽くせというメッセージだったんだ。

つまり!for厨は実は良い奴だったんだ!
0906デフォルトの名無しさんNGNG
while(1)の方がいいと思うに一票
0907デフォルトの名無しさんNGNG
>>906
0908デフォルトの名無しさんNGNG
>>907
どうした?
0909デフォルトの名無しさんNGNG
>>908
俺も一票投じるという意味。
0910デフォルトの名無しさんNGNG
いや、ただ
906
  >> 906
こうしたかったんだけどタイミング外しただけ。
恥ずかしいからそれ以上つこまんでくれ。
0911デフォルトの名無しさんNGNG
>>909-910
了解
0912デフォルトの名無しさんNGNG
>>903
>gotoをbreakと偽装する人は多いのに不思議だな
意味分からん。多重ループからの抜け出しにgotoを使うといってるのか?
だとしたら関係ない話だな。「永久ループ」には使わないといっている。

>これのどこが
>> >警告は内容をよく読んで判断するもので避けるべきエラーとは違う
>に対しての反論(?)なんだ? 脈絡ないやん
警告は確かに絶対につぶさなければならないものではないが、
わざわざ警告の出るコーディングをメリットもなしに選択するする必要はないし、そうすべきではないといっている。
0913デフォルトの名無しさんNGNG
無限ループという言い方が良くない
正しくは*無限時間内の入力待ち*
0914デフォルトの名無しさんNGNG
>>912
>多重ループからの抜け出しにgotoを使うといってるのか?

単一ループからの抜け出しに決まってるやん
何でgotoを使わないのかって論点は変えてないぜ?


>わざわざ警告の出るコーディング

逆だろ逆
ある特定の処理系で警告が出ないようにコーディングすることは処理系依存だとさっきから(ry
そもそもこれを主張する人の処理系と聴かされる人の処理系が違うからそうなるわけで
0915デフォルトの名無しさんNGNG
for(;;)
while(1)
下の方がタイプ量が多いが、下の方が好き。
0916デフォルトの名無しさんNGNG
(;;)
0917デフォルトの名無しさんNGNG
どうでもいいけど早く課題キボンヌ
0918デフォルトの名無しさんNGNG
一つ質問。
char buf[100];
memset(buf, 0, 100);
if (fgets(buf, 100, fp)) {
/* 正常処理 */
} else {
/* 異常処理 */
}
のように書く人をしばしば見かけるのですが、memset()は何のために書いているのでしょう。
0919デフォルトの名無しさんNGNG
だれかちゃんとつっこんでやれよ。

>>905
ナ ナンダッテー!!
 Ω ΩΩ
0920デフォルトの名無しさんNGNG
マクロって何?
0921デフォルトの名無しさんNGNG
>>918
全てが0になっていないと気が済まない人のための精神安定剤。
0922デフォルトの名無しさんNGNG
macro 【形】 とても大きい、大規模{だいきぼ}な
0923デフォルトの名無しさんNGNG
>>920
置き換え
0924デフォルトの名無しさんNGNG
>>921
むぅ、そんな低い志でコーディングしてたのか。
ならなんでmalloc()+memset()なんてしないでcalloc()使わないんだろう・・・
0925デフォルトの名無しさんNGNG
>malloc()+memset()
...前に例にあげてるのと違うが


思うに、途中でallクリアする際にmemset()を使ったので
最初にも使ってるのでは?
0926デフォルトの名無しさんNGNG
printf("%c",'\\');
の実行結果が \ になるのは何故ですか?
0927デフォルトの名無しさんNGNG
cat filename|nl|grep for

このコマンドの意味を教えてください。
0928デフォルトの名無しさんNGNG
>>926
そういうもんだから

>>927
スレ違い
0929デフォルトの名無しさんNGNG
>926 エスケープ

>927 キャット空中大回転、と読む
0930デフォルトの名無しさんNGNG
すれ違いだが ニャンコ先生ならキャット空中三回転ぞなもし
0931デフォルトの名無しさんNGNG
>>918,921
0クリアしたいだけなら
char buf[100] = {0};
0932デフォルトの名無しさんNGNG
漏れはマンドクサイので
char buf[100] = {};
って書いてるけどダメ??
0933デフォルトの名無しさんNGNG
>>931-932
コードサイズが肥大するからやめて。
生成されるバイナリに0がずらりと並ぶんです。
メモリの無駄。
0934デフォルトの名無しさんNGNG
> K&Rでは、無限ループは for(;;){ 〜 } と書くよう推奨しています。

うそです。空白はあいてます。
0935デフォルトの名無しさんNGNG
>メモリの無駄

100バイト程度でなにいってんの(w
0936デフォルトの名無しさんNGNG
> メモリの無駄。

なぜ?
0937デフォルトの名無しさんNGNG
コンパイラは通ったんだけど、実行しようとすると

繕nmached quote

と出て、動きません。なぜ?
0938デフォルトの名無しさんNGNG
なぜ?
0939デフォルトの名無しさんNGNG
繕え!!
0940デフォルトの名無しさんNGNG
繕->0x91 & 0x11
0941超初心者NGNG
↓をコンパイルするとエラーが出てしまいます。いろいろ考えたんですが、理由がさっぱり
分かりません。どなたかご教授いただけないでしょうか?
#include <stdio.h>

int main(void)
{
int no;
printf("整数を入力:"); scanf("%d",&no);

int a=0;
while(a >= 0) {
printf("%d ",a);
a--;
}
if(no > 0)
putchar('\n');


return 0;
}

(8) : error C2143: 構文エラー : ';' が '型' の前にありません。
(9) : error C2065: 'a' : 定義されていない識別子です。
0942デフォルトの名無しさんNGNG
>>941
普通にコンパイルできたが・・・・・(当方BCC)
0943デフォルトの名無しさんNGNG
>>941
int a=0; の int と a の間に全角スペース入ってない?
0944デフォルトの名無しさんNGNG
VC++.Net
問題無し
0945941NGNG
皆さんレスありがとうございます。
当方もVC++.Netなんですが、何度やってもコンパイルエラーが・・・。

>943
調べたところ全角スペースは入っていませんでした。
0946デフォルトの名無しさんNGNG
とりあえずリビルド汁!
0947デフォルトの名無しさんNGNG
コンパイルオプションが不適切とか?
0948デフォルトの名無しさんNGNG
VC++.netってC99対応してんの?
してないんだとしたら、変数を関数の戦闘以外で定義
してるのがまずいんじゃない?
0949デフォルトの名無しさんNGNG
>>941
変数宣言はブロックの先頭でしか出来ないのでint aをprintfの前に移動
0950デフォルトの名無しさんNGNG
そうか!
CスレだたーYO!
0951941NGNG
>>948-949
解決出来ました!!
変数宣言がブロックの先頭でしか出来ないとは思いませんでした。
まだまだ勉強不足です・・・。


皆様ご教授ありがとうございました♪


0952デフォルトの名無しさんNGNG
>>933
> コードサイズが肥大するからやめて。
> 生成されるバイナリに0がずらりと並ぶんです。

そんなコンパイラがあるものか。
グローバル変数ならわかるが、>>918 を見る限りローカル変数だ。
0953デフォルトの名無しさんNGNG
>>952
プ
0954デフォルトの名無しさんNGNG
だとしたら無駄なコピーが発生するな。
0955デフォルトの名無しさんNGNG

  952
0956デフォルトの名無しさんNGNG
ここはレベルの低いインターネットですね
0957デフォルトの名無しさんNGNG
RAW DATA #1
 00000000: 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 4C 49 42 /DEFAULTLIB:"LIB
 00000010: 43 22 20 2F 44 45 46 41 55 4C 54 4C 49 42 3A 22 C" /DEFAULTLIB:"
 00000020: 4F 4C 44 4E 41 4D 45 53 22 20             OLDNAMES"

RAW DATA #2
 00000000: 02 00 00 00 39 00 09 00 00 00 00 00 32 64 3A 5C ....9.......2*:\
 00000010: 4D 59 20 44 4F 43 55 4D 45 4E 54 53 5C 56 69 73 ************\***
 00000020: 75 61 6C 20 53 74 75 64 69 6F 20 50 72 6F 6A 65 ****************
 00000030: 63 74 73 5C 63 6C 5C 74 65 73 74 2E 6F 62 6A 38 ***\**\test.obj8
 00000040: 00 13 10 01 02 00 00 06 00 0D 00 00 00 FA 24 0D .............u$.
 00000050: 00 00 00 FA 24 21 4D 69 63 72 6F 73 6F 66 74 20 ...u$!Microsoft
 00000060: 28 52 29 20 4F 70 74 69 6D 69 7A 69 6E 67 20 43 (R) Optimizing C
 00000070: 6F 6D 70 69 6C 65 72 00 00               ompiler..

RAW DATA #4
 00000000: 55 8B EC 33 C0 5D C3                  U.i3A]A

↑
char a[10000] = {0};
int main(){
return 0;
}
0958デフォルトの名無しさんNGNG
char *s = "リテラル文字列は書き換え可能であるべきだとおもう?";
0959デフォルトの名無しさんNGNG
べきでない
0960デフォルトの名無しさんNGNG
char s[] = "文字列リテラルそのものを書き換え可能なものとして定義する必要はあまり無いと思われ";
0961デフォルトの名無しさんNGNG
>957
const char *res="a をスタック上にとるとどうでしょ?";
0962デフォルトの名無しさんNGNG
>>957
const char *tsukkomi="a が使われてないから最適化で削除されていると思われ。";

BCCで試してみた限り、前者は確かに冗長。
因みに、グローバルに置いても似たような結果に。

/*--------*/
int main(){
char a[10000]={0};

a[7777]=1;

return 0;
}

/*--------*/
int main(){
char a[10000];

memset(&a,0,sizeof(a));
a[7777]=1;

return 0;
}
0963デフォルトの名無しさんNGNG
>因みに、グローバルに置いても似たような結果に。

事故レス。
グローバルに置かれる初期化なしの変数は実行開始時にまとめて確保されるからメモリ占有量は大差ない罠。
0964デフォルトの名無しさんNGNG
>>962
BCCってウマいの?
0965デフォルトの名無しさんNGNG
初期化用の文字列をROM上においてあって、まいかいわざわざRAMにコピーしてから
参照するのはあほらしいよね。参照しかしないのだったら。

そんなときに活躍するpragmaは、さて、なんでしょう? (1点)
0966デフォルトの名無しさんNGNG
meaningless
0967デフォルトの名無しさんNGNG
unused
0968デフォルトの名無しさんNGNG
aborn
0969デフォルトの名無しさんNGNG
nullpo
0970デフォルトの名無しさんNGNG
gaxtsu
0971デフォルトの名無しさんNGNG
pokotin
0972デフォルトの名無しさんNGNG
#pragma thread(stop)
0973デフォルトの名無しさんNGNG
#pragma stop(hibarikun)
0974デフォルトの名無しさんNGNG
inpo mona;
0975デフォルトの名無しさんNGNG
#pragma furu! > hibarikun
#pragma require(thisthread->next)
0976デフォルトの名無しさんNGNG
>>975
#pragma wait_a_minute
0977デフォルトの名無しさんNGNG
#pragma getkiriban(1000)
0978デフォルトの名無しさんNGNG
#pragma thanks(>>976)

#define pragma
0979デフォルトの名無しさんNGNG
#pragma mada-(>>976)
0980デフォルトの名無しさんNGNG
#pragma go(http://pc5.2ch.net/test/read.cgi/tech/1087049069/)
新スレ
0981デフォルトの名無しさんNGNG
#ifdef
0982デフォルトの名無しさんNGNG
#pragma kita-(>>980)
0983デフォルトの名無しさんNGNG
#pragma require!(realanswer)
0984デフォルトの名無しさんNGNG
#pragma realansweris(>>971)
0985デフォルトの名無しさんNGNG
#pragma AA(_| ̄|○) >> 983
0986985NGNG
#pragma sed(s/983/984/)
0987デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>969
0988ビル・ジョブスNGNG
1000!
0989デフォルトの名無しさんNGNG
まだ早い(プ
0990デフォルトの名無しさんNGNG
http://p44.aaacafe.ne.jp/%7Efeel/
0991デフォルトの名無しさんNGNG
今だ! 2番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0992デフォルトの名無しさんNGNG
          アヒャーー
      ∧∧
     (゚∀゚ )⌒ヽ ≡≡ = = -
    ,.、,,U‐U^(,,⊃_       /i ≡≡≡ = = -
   ;'゚∀゚ 、、:、.:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i = ≡≡≡ = = -
    '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
     `" ◎ ''`゙ ◎ ´´   - = ≡ = = -
0993デフォルトの名無しさんNGNG
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ <  1098取り合戦、いくぞゴルァ!!    ,,、,、,,,
    /三√´д`) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,     \エーーーーーーーッ!?/
      //三/|三|\     
      ∪  ∪       (´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)
 ,,、,、,,,       ,,、,、,,,      ,,、,、,,,     ,,、,、,,,        ,,、,、,,,
      ,,、,、,,,      (´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)´д`(´д`)

http://big.freett.com/scheme_a/num1000.swf
0994デフォルトの名無しさんNGNG
>>840
謎がすっきり解決しました
ありがとうございます
0995デフォルトの名無しさんNGNG
いくぞ
0996デフォルトの名無しさんNGNG
いまだに1000とったことないんだからな。
0997デフォルトの名無しさんNGNG
やべーあげなければよかった。
これじゃ1000とれないかもしれないじゃん。
0998デフォルトの名無しさんNGNG
べつに1000とることに価値があるとは思っていない。
0999デフォルトの名無しさんNGNG
>>1000は一生童貞
1000デフォルトの名無しさんNGNG
ありがとう、1000なら童貞でもいいよ。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。