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

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

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

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

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

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

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

C言語なら俺に聞け! Part 91
http://pc5.2ch.net/test/read.cgi/tech/1095180315/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0002デフォルトの名無しさんNGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

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

【ライセンスや機能などに問題あり】
Microsoft C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
Intel C++ Compiler for Linux
http://developer.intel.com/software/products/compilers/clin/noncom.htm
00032NGNG
2
0004デフォルトの名無しさんNGNG
ifで式を , で複数書いたとき一番右の式だけが評価されて次の行に実行が移るのですが
これは仕様で決まっているのですか?
0005デフォルトの名無しさんNGNG
>>4
>ifで式を , で複数書いたとき一番右の式だけが評価されて

んなこたーない。
0006デフォルトの名無しさんNGNG
VBとかでのdir関数に相当する事をC言語の標準関数でできますか?
やっぱりAPIを使う必要がありますか。
0007デフォルトの名無しさんNGNG
Ruby!!!
0008デフォルトの名無しさんNGNG
>>6
システムコールを使わないとだめだね。
だって環境によって違うもの。
0009デフォルトの名無しさんNGNG
>>5
#include <stdio.h>
int main(void)
{
int m=0;
if (m == 0, m == 1) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0, m == 1) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0, m == 1, m == 0) printf("%d %d\n", __LINE__, m);
if (m == 0, m == 1, m == 0, m == 1, m == 0, m == 1) printf("%d %d\n", __LINE__, m);
return 0;
}

これで一番右がm==0の時だけ真と評価されているみたいなんですけど
実際はどういう動作をしているんでしょうか?
0010デフォルトの名無しさんNGNG
>>9
m == 0 もしっかり評価されている。
その後、最後に書いた m == 1 の結果が
全体的な式の評価結果となっているだけだ。

if (printf("評価してるよー\n"), m == 0)

を実行してみろ。
0011デフォルトの名無しさんNGNG
>>9
m = 0;
m = 1;
m = 2

if(m == 2) printf("mは2です。");

とするとm = 0; m = 1; m = 2;すべてが実行されて
最終的にmは2になるだろ。
それと似たような原理で、すべて評価した上で最後の式が
ifにかけられている。
0012デフォルトの名無しさんNGNG
つか、まずは「評価」という言葉の意味をしっかり理解しれ
0013デフォルトの名無しさんNGNG
>>10
分かりました、ありがとうございます。
0014デフォルトの名無しさんNGNG
volatileってなに?
言語仕様の外側の話?
0015デフォルトの名無しさんNGNG
その変数への最適化を抑制するようにコンパイラに指示する
0016デフォルトの名無しさんNGNG
全角で書くな
0017デフォルトの名無しさんNGNG
マルチスレッド動作してたり、割り込み処理があるなどで変数が突然書き換わる場合があるときにつけるやつ
0018デフォルトの名無しさんNGNG
いみわかんね

言語仕様として定義できるキーワードじゃないってこと?
0019デフォルトの名無しさんNGNG
>>18
言語仕様の一部だけど?
0020デフォルトの名無しさんNGNG
彼女のはあともvolatile
          ↑こんなかんじ
0021デフォルトの名無しさんNGNG
int i = 0;
while(i == 0){
  printf("Waiting...\n");
}

は、最適化されて
while(1){
  printf("Waiting...\n");
}
こういう動作をしても仕様上問題はない。

しかし、他のスレッドから書き換えられるのを待ってたりするときに
最適化されて評価されないと困る。
だから、volatileを付けてiに最適化を加えるなと指示する。
0022デフォルトの名無しさんNGNG
>>8
やっぱりそうですか。ありがとうございました。
0023デフォルトの名無しさんNGNG
>>18
いみわかんねー奴には
一生関係ないものだ。

もともと足りない脳みそを
無駄に使うようなマネをするな。
0024デフォルトの名無しさんNGNG
宿題で「この中からC言語の仕様として定められているキーワードを選びなさい」という問題が出てるんでしょ。
0025デフォルトの名無しさんNGNG
>>24
はあ?w
volatileはどう考えてもC言語の使用だろ?w
0026デフォルトの名無しさんNGNG
volatileはコンパイラへのメッセージ。
言語仕様ではない、かも。。
0027デフォルトの名無しさんNGNG
>>26
>volatileはコンパイラへのメッセージ。

いみふめ。
ソースコードは全て「コンパイラへのメッセージ」だろ?
0028デフォルトの名無しさんNGNG
>>26
何をもって「言語仕様」と言ってるのかはわからんけど。
少なくとも規格にはありますぜ。
0029デフォルトの名無しさんNGNG
こうしてまたひとつ新たなトリビアが誕生しました

「volatileは、言語仕様ではない」
0030デフォルトの名無しさんNGNG
>>29
volatileって、なに?
0031デフォルトの名無しさんNGNG
trivialな例で申し訳ないが、以下の関数fooが割込処理にiのアドレスを登録するものだったとする。
その割込処理は登録されたアドレスに何か書いたりする。

void func(void)
{
static int i;
foo(&i);
i = 1;
while (i)
;
}

んで、のようにやったときはループから抜け出すことができない(可能性がある)。
コンパイラは最適化でiは1から変わらないと思ってiの評価をループの外で終える
ようにするかもしれないからだ。

しかし、iの宣言をvolatileつきにすると、そのような最適化は一切行わない。
なので割込処理でiに0を設定するとループから抜けるようになる。

この辺がvolatileの存在意義。
0032デフォルトの名無しさんNGNG
教えてください。
ttp://www.cmagazine.jp/src/kinjite/c/null.htmlに、
『NULLにしても0にしても'\0'にしても「ゼロという値」がstrcpyのふたつ
目の引数にセットされます。』
とあるので、NULLの内部表現は0と一致していると私は思うのですが、
先輩はNULLの内部表現は0とは限らない、といって譲りません。
どちらが正しいのでしょうか。
0033デフォルトの名無しさんNGNG
>>32
NULL の内部表現は 0 とは限りません。
'N''U''L''L'という文字が入っている可能性だってあります。
0034デフォルトの名無しさんNGNG
>>33
NULL は0です。
しかし、必ずしも
0の機械上での表現が
0x0000とは限りません。
0035デフォルトの名無しさんNGNG
>>32
一応FAQなんだけど、ポインタとして評価される文脈で字面の0が出てきたら、
それはNULLポインタとして扱われる。また、その文脈ではNULLポインタは
0として扱われる。

これはあくまでCとしての評価の話で、NULLポインタが実際にバイナリ0で
あるかどうかとは関係のない話なのだ。ただし、おれはNULLポインタを
バイナリ0以外にしている処理系は見たことがないが規格上は区別されてる。

ポインタとして扱われる文脈とは、たとえば

(void *)0; /* キャスト */
int *i = 0; /* ポインタ変数への代入*/
void foo(void *);
foo(0); /* ポインタを取る関数のパラメータ */

など。fooを例に取るとこいつに渡るのはたしかにvoid*型のNULLポインタなのだが、
パラメータを積んだスタックにバイナリ0があるとは限らないっていうこと。

# もっともスタック渡しかどうかも処理系によるんだけどそこはそれ
0036デフォルトの名無しさんNGNG
>>34
はじめから内部表現の話をしているのだから一行目の突っ込みは意味不明だが・・・。

>>35
昔そういう環境もあったって話が過去スレであった気がする。
0037デフォルトの名無しさんNGNG
( ´∀`)つ))
ttp://www.kouno.jp/home/c_faq/c5.html
0038デフォルトの名無しさんNGNG
>>32
>NULLの内部表現は0と一致していると私は思うのですが、
>先輩はNULLの内部表現は0とは限らない、

ここで書かれている 0 が内部表現なのか数値なのかによって
話が変わってくるから、いくら議論しても無駄。
0039デフォルトの名無しさんNGNG
ていうか、
「どちらも本当。但し、話がかみ合っていないけど」
という回答もありうるな。
0040デフォルトの名無しさんNGNG
>>32
「内部表現」の意味がわかってない気がする。
0041デフォルトの名無しさんNGNG
つーか、ネタだろ・・
新スレになったばっかだっつーのにご苦労さん
0042デフォルトの名無しさんNGNG
printf("%s\n", NULL);
ってやると、
(null)
ってでるよな。
てことは、どこかで
#define NULL "(null)"
ってやってあるのか?
0043デフォルトの名無しさんNGNG
>>42
printfの中で
0なら"(null)"を出力する
というふうにしてるんだろ。
0044デフォルトの名無しさんNGNG
char *ptr = 0;
*ptr = 1;
ってやると、
ぬるぽ
ってでるよな。
てことは、どこかで
#define ぬるぽ 1
ってやってあるのか?
0045デフォルトの名無しさんNGNG
プックス
0046デフォルトの名無しさんNGNG
先生!Wide Studioでボタンに出力ってどうするんですか。
0047デフォルトの名無しさんNGNG
おまいら、ヘッダファイルをのぞいてみましたよ。
linuxならこんな感じ。
% grep "define NULL " /usr/include/*/**
/usr/include/g++-3/streambuf.h:#define NULL (__null)
/usr/include/g++-3/streambuf.h:#define NULL (0)
/usr/include/linux/stddef.h:#define NULL 0
/usr/include/linux/stddef.h:#define NULL ((void *)0)
0048デフォルトの名無しさんNGNG
>>46
スレ違い
0049デフォルトの名無しさんNGNG
grepの使い方間違ってるし。
0050デフォルトの名無しさんNGNG
        _
    ミ ∠_)
        ./
      /_∧
      /,,・∀・)
  // と    )    | | ガッ
       Y /ノ    人    ガッ
      て / )    <  >__Λ  ガッ
      _/し' //.V;´Д`)
     (_フ彡  /    ヽ ←>>44
005147NGNG
ごめん、こうだった。
% grep "define NULL " /usr/include/**/*
/usr/include/freetype2/freetype/internal/ftobjs.h:#define NULL (void*)0
/usr/include/g++-3/streambuf.h:#define NULL (__null)
/usr/include/g++-3/streambuf.h:#define NULL (0)
/usr/include/glib-2.0/glib/gmacros.h:# define NULL (0L)
/usr/include/glib-2.0/glib/gmacros.h:# define NULL ((void*) 0)
/usr/include/libio.h:# define NULL (__null)
/usr/include/libio.h:# define NULL ((void*)0)
/usr/include/libio.h:# define NULL (0)
/usr/include/linux/stddef.h:#define NULL 0
/usr/include/linux/stddef.h:#define NULL ((void *)0)

>>49
厨な漏れにgrepの使い方を教えてください。
そもそもしよう目的が違ってるとか...?
0052デフォルトの名無しさんNGNG
>>51
find /usr/local -type f -print | xargs grep -n define | grep NULL
とかかな…。

これが>>49的正解かどうかは分からない

0053デフォルトの名無しさんNGNG
s/local/include/
0054デフォルトの名無しさんNGNG
>>51
zshが前提になってるのがいかんのじゃなかろうか。
あとgrepは

egrep '^ *# *define +NULL'

で探さないといけないんじゃなかろうか。あ。tabも考慮せんとならんか。
0055 ◆FIcNi4f8js NGNG
\s
0056デフォルトの名無しさんNGNG
>>52,>>54
zsh依存なのがだめなのか(´・ω・`)
って、grepの使い方とかとは関係ないような。。
zsh使ってなかったら自分が使ってるshellに適当に読み替えればいいことだし。
いずれにしてもすれ違いな質問に答えてくれてありがとうございます。
0057デフォルトの名無しさんNGNG
ISO C99を使うと
char *s;
s=strdup("test");
とすると
implicit declaration of function `strdup'
と文句を言われるんですが、これってC99ではstrdupなんて使うなってことなんでしょうか?
0058デフォルトの名無しさんNGNG
そもそもCにstrdupなんか無い。
0059デフォルトの名無しさんNGNG
zsh依存って、**かな?
他のシェルなら例えばcshで*{,/*{,/*{,/*}}}くらいやっておけば事足りそうだけど。
#まぁ、find使えと。
0060トーシロNGNG
ちょっとお尋ねしたいのですが、引数でデータ型の後ろに*だけつけて宣言してる関数があるのですがどういう意味でしょうか?

void aaa(char *)

こんな感じです
0061デフォルトの名無しさんNGNG
>>60
char型ポインタ
0062デフォルトの名無しさんNGNG
>>60
プロトタイプ宣言で変数名は必修じゃないよ
0063トーシロNGNG
>>62
完璧に理解できました。どうもです
0064デフォルトの名無しさんNGNG
>>60
0065デフォルトの名無しさんNGNG
>>60
おいおい、右に ダッコ♪ がないぞ
0066デフォルトの名無しさんNGNG
だっくぉ?
0067デフォルトの名無しさんNGNG
ageとsageを掛けたり割ったりするにはどうすればいいのですか?

double age(double a1, double a2){
 return 0.5*a1 + a2;
}
と
double sage(double b1, double b2, double b3){
 return -7*b1 + 8*b2 + b3;
}
0068デフォルトの名無しさんNGNG
またお前か!
0069デフォルトの名無しさんNGNG
>>68
いや今回係数の掛け算は出来てるから別の意図の質問と思われる。
わけわかなのは以前と一緒だが。
0070デフォルトの名無しさんNGNG
age(1.0,1,0) * sage(1.0,1.0,1.0);
age(1.0,1,0) / sage(1.0,1.0,1.0);
0071デフォルトの名無しさんNGNG
67と同一人物か同じクラスのやつの書き込みを3つは見たな・・・。
0072デフォルトの名無しさんNGNG
>>71
お前で四つ目だ。
0073デフォルトの名無しさんNGNG
>>72 で5つ目
0074デフォルトの名無しさんNGNG
ポインタの中身同士の割り算で
ひっさびさに例のアレやっちったよ
びっくりこいたぜ
0075デフォルトの名無しさんNGNG
>>74
あぁ、ゼロ割りか。たまにやっちまうよな
まあ、がんばれ
0076デフォルトの名無しさんNGNG
ゼロ除算には聞こえないなあw
0077デフォルトの名無しさんNGNG
*a/*b;

↑これだろ? 空白厨が空白あけろぼけと言いそうだ。
0078デフォルトの名無しさんNGNG
つか、アドレス同士で割り算するのが間違ってるだろ。
0079デフォルトの名無しさんNGNG
>>77
厨でもなんでもないだろう。
空白を空けた方が見やすい。
0080デフォルトの名無しさんNGNG
>>79
かっこつけたほうがいいじゃん。
0081デフォルトの名無しさんNGNG
>>79
「空白あけろぼけ」を連呼していた奴のこと>空白厨 ぼけ厨と言うべきか。
0082デフォルトの名無しさんNGNG
正直、召喚するような気がするのでよしてくださいませんか…
0083 ◆FIcNi4f8js NGNG
キー入力するときに脳内コンパイルで気付く
0084デフォルトの名無しさんNGNG
>>83
そだな・・・
0085デフォルトの名無しさんNGNG
ある数の三分の一乗とか四分の一乗を計算するための関数ってありますか?
自作しなくてはならないのでしょうか?
0086デフォルトの名無しさんNGNG
math.h の pow
0087デフォルトの名無しさんNGNG
ぽw
0088デフォルトの名無しさんNGNG
>86
即レスありがとうございます!
0089デフォルトの名無しさんNGNG
#include <stdio.h>
〜
typedef struct hit{
int atari;
int hazure;
} HIT;

〜

int main(void)
{
〜
HIT data[9000];
〜
return 0;
}

HIT data[9000];の上限を500万ほどにしたいんですが
数を増やすして実行すると「問題が発生したため〜」
とでてきて動きません解決方法をお教え下さい。
0090デフォルトの名無しさんNGNG
static つけるか、グローバル変数にするか
0091デフォルトの名無しさんNGNG
>89
コンパイラオプションでスタック領域を増やす
0092デフォルトの名無しさんNGNG
>>89
コンパイラのマニュアルで、スタックサイズを指定する方法を調べれ。
プログラムの中に不明瞭な処理系依存を持ち込むようなバカな真似はやめれ。

トラブルが起きたとき、論理的な間違いが、まず自分にあるかどうか調べ、
しかる後に相手にあるかどうか調べ、大局的に妥当な解を導く能力を大事にすれ。
0093デフォルトの名無しさんNGNG
#include <stdio.h>
#define STR_MAX 20

void strngcpy(char *s, char *t){while (*s++ = *t++)
printf("s => %c t => %c\n",*s,*t);
}
int main(void){
char source[] = "hello, world";
char dest[STR_MAX];
strngcpy( dest, source );
printf("%s\n", dest);
exit(0);
}


// strngcpyで*sにアクセスするにはどうすればいいんですか?
0094デフォルトの名無しさんNGNG
>89
巨大なデータはファイルとかDBを利用した方がいい鴨
0095デフォルトの名無しさんNGNG
>>93
いつの時点でだ? s++ の前か、後か。
009693NGNG
s++ の後です
よろしくお願いします
0097デフォルトの名無しさんNGNG
>93
void strngcpy(char *s, char *t)
{
 while (*s = *t) {
  printf("s => %c t => %c\n",*s++,*t++);
 }
}
009893NGNG
ありがとうございます
0099デフォルトの名無しさんNGNG
>>96
無理
0100デフォルトの名無しさんNGNG
>>89
UNIXの場合、スタックサイズは、ユーザ側の設定でも制限がかかることがある。

bashなら、
ulimit -s
で確認
ulimit -s unlimited
で制限をはずせる。
# これでハマッタことがある。

Windowsはしらん。
0101デフォルトの名無しさんNGNG
>>89 普通に malloc でヒープ領域にとれないの?
HIT のメンバに next と prev 作れば可変的にも増やせるし。
0102デフォルトの名無しさんNGNG
実際に500万件登録する可能性があるんなら例外が少ないほうがいいんじゃないか?
0103デフォルトの名無しさんNGNG
ttp://pc5.2ch.net/test/read.cgi/tech/1087209526/243
↑このソース、 0割りを回避するらしいんですが、
double に対しても != 0 で分岐すれば0割りは回避できるんでしょうか?
0104デフォルトの名無しさんNGNG
>>103
出来るんじゃない?
0105デフォルトの名無しさんNGNG
>>103
出来ないんじゃない?
0106デフォルトの名無しさんNGNG
そんなもの関数呼ぶ前にチェック汁
0107デフォルトの名無しさんNGNG
NaN位返せばいいのに…
0108デフォルトの名無しさんNGNG
な、なんだってぇぇぇ
0109デフォルトの名無しさんNGNG
もるぱ
0110デフォルトの名無しさんNGNG
>>103
浮動小数点の等値・非等値比較は誤差を考慮しないという致命的な欠陥を抱えている
0111デフォルトの名無しさんNGNG
>>110
0除算で問題が起こるのは分母が厳密に0に一致するときだけじゃないか?
0112デフォルトの名無しさんNGNG
問題が起きないケースまではねてしまうよね
0113デフォルトの名無しさんNGNG
>>112
つまりa!=0はaが厳密に0じゃなくてもfalse返すことがあるってこと?
・・・true返すと思い込んでたよ・・・(´ー`;)
0114デフォルトの名無しさんNGNG
そこでイプシロンですよも前ら。
0115デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1087209526/243
0116113NGNG
>>112
確認してみたけどやっぱり厳密に 0 になるときだけだったよ。
だからそのコードは問題ないんじゃない?
確認方法は、下記のとおり。

double a = 1;

while( a!=0 )
{
a /= 2;
std::cout << a << "!=0 == " << (a!=0) << std::endl;
std::cout << a << "*2 == " << (a*2 ) << std::endl;
}
0117デフォルトの名無しさんNGNG
>>116
coutはCじゃない……。
0118113NGNG
>>117
ふぉっΣ(゜o゜;)
すんません。もし動かす人がいたら適当にprintfに置き換えて。
0119デフォルトの名無しさんNGNG
これは1つまたは有限個の処理系での結果の写像が結論であるべき問題なのだろうか・・・・
0120デフォルトの名無しさんNGNG
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

main()
{
int computer;
printf("【ジャンケン】\n");

srand(time(NULL);
computer = rand()%3 + 1;
printf("コンピュータは %d",computer);
return 0;

}


↑のプログラムを実行するとコンピュータの出す値が、
1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,・・・のようにかなり偏って出てきてしまうんですがどうしてなんでしょう?
コンパイラはGCCです。
0121120NGNG
すみません >>120の10行目は
srand(time(NULL));   でした。
0122デフォルトの名無しさんNGNG
>>120
実装によるんじゃないか?
srand直後のrandが3の倍数を返す確率が高いのかもしれない。
0123120NGNG
>>122
なるほど そんなこともあるんですか〜。
即レスどうもありがとうございました。
0124デフォルトの名無しさんNGNG
>>120
randは下位ビットがランダムにならない線形合成法を使っている事が多い。
下位ビットは捨てて、上位ビットを使え。
0125120NGNG
>>124
レスありがとうございます。
プログラミングを始めてからまだ1週間程度なので、
下位ビットとか上位ビットの意味がわからんです。。。
0126デフォルトの名無しさんNGNG
敢えてマジレスするとtimeの返す値が変わってなくて
同じseedが使われてるからだろ
0127デフォルトの名無しさんNGNG
>>125
まーなんだ、

rand() / (RAND_MAX / 3) + 1

とかすれば、切り捨ての分偏りはでるものの、
余りを使うよりはいい結果がでるってこった。
0128120NGNG
>>125
マジレス感謝いたします。
>>126
おお〜 なるほど〜。それを使って再度朝鮮してみます。
どうもありがとうございました。
0129デフォルトの名無しさんNGNG
>>119
ISO/IEC 9899:1999には特記事項なし。
0130デフォルトの名無しさんNGNG
>>119
>>113 にも理解できるように言い換えると、
「俺の環境で出来たら問題ない、とかほざくんじゃねーよ!」
って事ですね?
0131デフォルトの名無しさんNGNG
>>118
その顔文字いいな。
使わせてもらおう。
0132デフォルトの名無しさんNGNG
きょうは、あたらしくおぼえたかおもじのれんしゅうをしました。

ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)
ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)
ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)
ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)
ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)
ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)
ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)ふぉっΣ(゜o゜;)

たのしかったです。
おわり。
0133デフォルトの名無しさんNGNG
バルタン星人!
0134デフォルトの名無しさんNGNG
Σ(゜o゜;)
0135デフォルトの名無しさんNGNG
32767

何が発想できますか?
0136デフォルトの名無しさんNGNG
>135
サンニーナロナ
0137デフォルトの名無しさんNGNG
135見てサンニーナロナがすぐに思いつかないやつはプログラマ失格
0138デフォルトの名無しさんNGNG
??なにそれ。。。
0139デフォルトの名無しさんNGNG
知らないやつがいるとは・・・。
0140デフォルトの名無しさんNGNG
オナニーは他でやれ
0141デフォルトの名無しさんNGNG
>>135
shortの最大値
0142デフォルトの名無しさんNGNG
>>141
ぶっぶー
0143デフォルトの名無しさんNGNG
>>141
・・・・・・・・・・。(゜o゜;)
0144デフォルトの名無しさんNGNG
>>135
私の家の緯度を10000倍した数
0145デフォルトの名無しさんNGNG
>>144
経度は?
0146いなむらきよしNGNG
奇形の俺でもよければ何でも聞いて欲しいキケー!
0147デフォルトの名無しさんNGNG
ソケットのプログラミングやってるんですが、
サーバ側のrecvの返値が、クライアントから送ったデータのサイズになりません。
つまり全部送られてきていないみたいなんです。
どういう原因が考えられますでしょうか。
0148デフォルトの名無しさんNGNG
突然ですみません。
浮動小数点演算エラーって何ですか?
また、よくある原因は?
0149デフォルトの名無しさんNGNG
>>147
それは正常な動作です。
ソケットプログラミングの入門書でも読みましょう
0150147NGNG
いや、入門書買うお金がないからここで聞いてるんですが・・。
正常ってどういう意味ですか?
0151デフォルトの名無しさんNGNG
>>150
じゃあ
http://pc5.2ch.net/test/read.cgi/tech/1096187183/
の1あたりからリンク読んでおいで
0152147NGNG
そっちで質問します
0153初心紗NGNG
大学の課題で、ファイルの16進ダンプを作成しなければならなくなりました。
で、プログラムを作ったのですが、こんなもんで世の中で通用しますか?
/*////////////////////////////////////////////////////////////////////////////*/
/* */
/* 機能:指定されたファイルを16進数でダンプする */
/* 使い方:HEXDMP FILE-NAME */
/* */
/*////////////////////////////////////////////////////////////////////////////*/
/* インクルードファイル定義 */
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <memory.h>
#include <io.h>
#include <conio.h>

/* マクロ定義 */
#define OK 0
#define NG 1
#define HEXLEN 16 /* 出力幅 4の倍数指定 */
#define STRMAX 256

/* プロトタイプ宣言 */
int MemDmp(int, unsigned char *, int);

0154デフォルトの名無しさんNGNG
半角カナ使ってる時点で0点。
0155デフォルトの名無しさんNGNG
いみわからね
0156デフォルトの名無しさんNGNG
全角数字使ってる時点で0点。
0157デフォルトの名無しさんNGNG
タブ使って書き込みした時点で0点
0158デフォルトの名無しさんNGNG
>>153 これはプログラムと呼べるのか?
0159デフォルトの名無しさんNGNG
ネタじゃないとしたら相当なアホだな。
実際にそれを使ってダンプしてみろよ。
0160デフォルトの名無しさんNGNG
誰が松本香やねん
0161デフォルトの名無しさんNGNG
/*////////////////////////////////////////////////////////////////////////////*/
↑
やる気のなさが致命傷
0162デフォルトの名無しさんNGNG
>>153
最高に頭悪そうな発言してください in ム板 (2)
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0163初心紗NGNG
くそ〜みんなで ば〜にしやがって! それならウナラセルプログラムをみせてみろってんだ。
ってねぇ。言うだけならだれでもねぇできるもん。
0164初心紗NGNG
>>163
あなた誰ですか?
冗談は止めてください
0165プロ ◆2r7NFKA9/2 NGNG
今は作ってる最中だからな。完成したら見せてやるよ。
俺は今、Winnyのようなファイル共有方式の掲示板を作ってるんだ。
2ちゃんねる以上の匿名性を備えた、完璧な掲示板だぜ。
0166デフォルトの名無しさんNGNG
他のスレで誰かが答えるなと思ったら誰も答えないのが2ch
0167デフォルトの名無しさんNGNG
そう言って傍観してるのも2ちゃんねるらしいね。
0168デフォルトの名無しさんNGNG
初心者です。
ライブラリに登録されているようなヘッダーファイル開いても意味がわかりません。
みなさんはわかりますか?
完璧に理解できるようになるまで、みなさんはどのくらいの年月がかかったですか。
教えてください。
0169デフォルトの名無しさんNGNG
>>168
精進せいや
0170& ◆fn827t8V72 NGNG
ヘッダファイルの中身を見るようになったのは1年以上たってからだな。
それにヘッダファイルの中身は理解する必要はない。
0171素人 ◆2r7NFKA9/2 NGNG
名前が化けやがった。
いいか、俺のトリップをよく覚えておけ。
そのうちインターネットの歴史に名を残すようなソフトを公開するからな。
0172デフォルトの名無しさんNGNG
>>171
うん、待ってるね。
0173デフォルトの名無しさんNGNG
>>170
・ドキュメントのバグか?
・隠しコマンドがありそう
・どう考えても自分に責任のなさそうなエラー

こんなときだな
0174デフォルトの名無しさんNGNG
ヘッダファイルなんて読んでも意味がない。処理系固有のことしか書いてないんだから。
0175デフォルトの名無しさんNGNG
>>168
286マシンで、メモリが無くてソースが詰め切れなくてヘッダ内の要らない関数宣言とか削除したとき。
という過去があるので、一ヶ月くらい?
0176デフォルトの名無しさんNGNG
・マクロにハメられたとき

他に同様の危険物がないか確認にいったりする
0177デフォルトの名無しさんNGNG
・標準以外かつ他人が作った物を触るとき
0178デフォルトの名無しさんNGNG
>>175
>メモリが無くてソースが詰め切れなくて
すまん、これさっぱり解らんのだが。どーゆーコンパイラだ?それ…
0179デフォルトの名無しさんNGNG
メモリがたりなくてヘッダを展開しきれなかったとか

64k以上の行のソースを読めないのもあったな
0180デフォルトの名無しさんNGNG
SDKのヘッダなら良く開いたりする。ドキュメントよりも進んだことが書いてあったりするし。
0181デフォルトの名無しさんNGNG
Cのヘッダはよく中身最初見てたがC++は見ない。MSDNマンセー
0182 ◆FIcNi4f8js NGNG
>>178
BDS-Cとかじゃないか?
0183デフォルトの名無しさんNGNG
ある配列があって、それをある処理にかけるのに
要素と要素の間でsleepをはさんだりするとき
for(i=0;i<len;i++){
 if( i ) sleep(30);
 hoge( array[i] );
}
のようなコードなんだけど もっとエレガントに書きたいです

これって 配列の各文字列をカンマでつなげるときとかも
同じようなもんだと思うけど この書き方だとちょっとダサいし・・・
0184デフォルトの名無しさんNGNG
音声ファイル変換を行っています。
以下のようなプログラムがあります

short* prbuf = new short[remain];
intTmpFlame = pWAV->_GetRemData(prbuf);

strcat(LPSTR(wh->lpData) , (LPSTR)prbuf);


_GetRemData(short*)の引数にポインタを渡すと
その型のデータを取得できるメソッドがあるのですが、
そこで取得したshort*型のデータをWAVEHDR構造体のデータ部である
LPSTR lpData// 音声データ部
に新たに追加(元からデータが格納されています)させたいのですが、
型が違うデータの追加の仕方がわかりません。
どなたか教えていただけないでしょうか?

ちなみにstrcatで
strcat(LPSTR(wh->lpData) , (LPSTR)prbuf);
とキャストしても考えていたような
結果がえられませんでした。

よろしくおねがいします。
0185デフォルトの名無しさんNGNG
>>183
配列の話の最中にいきなり文字列云々が出てくるし、何を聞きたいのか判らん。
0186デフォルトの名無しさんNGNG
>>183
質問の意味というか意図がよくわからん。
if( i ) で何がしたかったの?
あなたの言うエレガントとはどんなことを言うの?
0187デフォルトの名無しさんNGNG
>>184
スレ違い。好きなスレに行け。
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
http://pc5.2ch.net/test/read.cgi/tech/1093672937/
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0188デフォルトの名無しさんNGNG
>>187
質問してる範囲はスレ違いじゃねえだろ
0189デフォルトの名無しさんNGNG
>>188
それでは環境に依存しない回答を頼む。
0190デフォルトの名無しさんNGNG
>>184
wh->lpData = (LPSTR)prbuf;
じゃあダメなのか?
lpDataってこたぁポインタだろ
内容の確保されていないポインタに文字列コピーしてどうするよ?

ポインタの概念を一度勉強しなおすべし
0191デフォルトの名無しさんNGNG
>>189
ハァ?質問者に回答しろって?アホかアホかアホか
0192デフォルトの名無しさんNGNG
>>191
なんだ質問者か。だったら>190をよく読んで出直せ。
0193デフォルトの名無しさんNGNG
>どなたか教えていただけないでしょうか?
>質問してる範囲はスレ違いじゃねえだろ
>ハァ?質問者に回答しろって?アホかアホかアホか

スレ違いって言うより、生きててごめんなさいって感じだな。
0194184NGNG
>>190
wh->lpDataは、内容が確保(?)されてるんです。
(っというか、既にデータがある先を指しています。)
wh->lpData = (LPSTR)prbuf;
これだと上書いてしまいますよね。
あくまでその指してるデータに追加したいのです。
ちなみにwh->lpDataには、追加されるprbuf分のメモリも
確保されています。
0195デフォルトの名無しさんNGNG
>>186

a[0]    a[1]    a[2]    a[3]
    ↑     ↑     ↑

配列を処理するときに、矢印のところでも
なにか処理をはさみたい という話
0196陽気な名無しさんNGNG
mutukasiidesu
0197デフォルトの名無しさんNGNG
>>194
まずはなんでstrcatを使ってるのか理由を教えてくれ
あと、文字列型でのNULLの意味も書いてみてくれ

その2つがわかってれば、バグの原因もわかるだろう
0198デフォルトの名無しさんNGNG
ぬるぽ
0199デフォルトの名無しさんNGNG
>>195
>183で何が気に入らないのか書いてみ。
0200デフォルトの名無しさんNGNG
>>194
wav形式の取り扱いなら適切なスレがある。このままこのスレだといつまでもこの調子で話が展開するぞ。
0201デフォルトの名無しさんNGNG
>>183
OK。俺に任せろ

#define elegant_sleep sleep
#define elegant_hoge hoge
#define ELEGANT_SLPTIME 30

for ( elegant_i = 0; elegant_i < elegant_len; elegant_i++){
 if ( elegant_i ) elegant_sleep(ELEGANT_SLPTIME);
 elegant_hoge( array[elegant_i] );
}

こんなところでどうだ?
forやifまでエレガントにしたかったら、自分でやってくれ
0202デフォルトの名無しさんNGNG
>>200
いや、スレ違いのところに書き込んだはいいが、>>194がstrcpyなんていう
馬鹿なものを使ってるからここで正解だろう
WAVEに限らず、NULLが混じるデータを扱う場合全般にかかわる馬鹿コードだからな
0203デフォルトの名無しさんNGNG
>>199
if( i ) sleep(30);

この判定文が、うまいこと他んところに紛れ込ませないかなと。
ループの最初の一回だけ処理しない、または最後の一回だけ処理しない
というのが エレガントに記述できたらなぁ と。
ループはi=0から始まるとは限らないし
0204デフォルトの名無しさんNGNG
hoge(array[0]);
for(i = 1; i < len; i++){
 sleep(30);
 hoge(array[i]);
}

ではイヤかね?
0205デフォルトの名無しさんNGNG
>>183
一定時間ごとにタイマイベント発生させて
イベントハンドラを呼び出すようにしたら?
スレッド作るとかして

WindowsだったらWM_TIMERメセージつかうとか
0206デフォルトの名無しさんNGNG
for ( i = 0; i < len; i++, sleep(30) )
  hoge( array[i] ) ;
0207デフォルトの名無しさんNGNG
>>206
それはおかしいですよ
0208デフォルトの名無しさんNGNG
v(^o^i)d
0209デフォルトの名無しさんNGNG
>>203
その調子で、何がしたいのかを、
まず日本語ではっきり書いてみれ。(ここにじゃなくていい)
はっきりとはどの位かというと、規格や法律の条文くらい。
1点のあいまいさも残さないように要求をきっちり定義すれ。
いざコードを書こうとすると、やることが決まっていて
悩んでいる余地がなくなっているのが理想形だ。

あなたの考える「エレガント」とは違うかも知れないが、
俺の考える「エレガント」の1つに「フラットであること」がある。
例外的な扱い(≒if 文)はいわば反例へのフォローであり、
数学的な正しさに疑問符がつくとこれがまた不快だったりする。
前提条件はあっていいが、論理の本体に傷が残るとブスなコードになる。
あなたのコードと >>204 はこの点で大きく違う。
0210デフォルトの名無しさんNGNG
>>209
でも、もういいです。ありがとう。
綺麗には書けないから仕方なくif文使います。
0211デフォルトの名無しさんNGNG
i = 0;
goto L1;
while(++i < len){
 sleep(30);
L1:
 hoge(array[i]);
}
でいいだろ。
0212デフォルトの名無しさんNGNG
>>211
ネタ?
0213デフォルトの名無しさんNGNG
数字好きな人って変な人が多いよね
ガンヲタとかアニヲタとかPCとか
0214デフォルトの名無しさんNGNG
正確な統計は取ったんでしょうか。
あと数字好きという点の定義は?
0215デフォルトの名無しさんNGNG
>>210
しょうがないな、のび太くんは。

    for (i=0; i<len; i++) switch (i) {
        default:
            sleep(30);
        case 0:
            hoge(array[i]);
    }

これでいい?
0216デフォルトの名無しさんNGNG
>>204
len が 0 の場合こけるな。
0217デフォルトの名無しさんNGNG
>>215
それだと
for(i=0; の 0 と、case 0: の 0 というように
同一の意味を持つ定数が2箇所に分かれて出てくるから
美しくないと思う。
が、しょうがないな
0218デフォルトの名無しさんNGNG
>>216
だから要求定義をまずはっきりさせてからでないとキリねえっつの。
それとも T array[0]; ができるって言いたいのか?
0219デフォルトの名無しさんNGNG
for( loop_count = 0, i = 0; i<len; ++loop_count, ++i )
{
if ( loop_count!=0 ) sleep(30);
hoge(array[i]);
}

これがもっとも思考に忠実でエレガント。
0220デフォルトの名無しさんNGNG
思考的には 0かどうかの判定など存在せずに、
単に間に sleepを挟むだけでは?
0221デフォルトの名無しさんNGNG
// (a)original(183)
for (i = BEGIN; i < len; ++i) {
if (i != BEGIN) sleep(30);
hoge(array[i]);
}
// (b)分岐なし(len対策済み)(204)
if (len > 0) hoge(array[BEGIN]);
for (i = BEGIN + 1; i < len; ++i) {
sleep(30);
hoge(array[i]);
}
// (c)switch(215)
for (i = BEGIN; i < len; ++i) {
switch (i) {
default:
sleep(30);
case BEGIN:
hoge(array[i]);
}
}
// (d)分岐なしの派生
i = BEGIN;
if (len > 0) hoge(array[i]);
for (++i; i < len; ++i) {
sleep(30);
hoge(array[i]);
}
>217の言う、定数の出現数だけなら(d)がいいように見えるが。
#私なら(a)のままだな。
0222221NGNG
// (e)変数追加(219)
for (loop_count = 0, i = BEGIN; i < len; ++loop_count, ++i) {
if (loop_count != 0) sleep(30);
hoge(array[i]);
}
これはこれで、定数出現が一回か。
0223デフォルトの名無しさんNGNG
>>218
長さが0ということはよくある。
T array[0];
とは無関係の話。
0224デフォルトの名無しさんNGNG
今回の場合 sleep() だからいいけど、何億何十億とまわるループだと
ループ内の条件分岐を外に出せるなら出したほうが良い。
0225デフォルトの名無しさんNGNG
>>224
何億何十億と配列操作するならその方が考えもんだ。
0226デフォルトの名無しさんNGNG
それくらいすぐに行くけどな。
0227デフォルトの名無しさんNGNG
#include <stdio.h>
main(){
char buffer[1024];
scanf("%s", buffer);
printf("%s", buffer);
}

というプログラムをtest.exeにコンパイルして
DOSからtest.exe | test.exeとパイプして起動したら
キーボードからの入力をそのまま画面に出力されることを期待してたのですが、
最初のprintfからパイプを通してscanfへと流れてないようです。

どうすれば期待通りのプログラムに出来ますか。
0228デフォルトの名無しさんNGNG
>227
printf("%s\n", buffer);
0229デフォルトの名無しさんNGNG
>>228
なんでやねん
0230227NGNG
>>228
それも試しましたがダメでした。
0231215NGNG
>>217
「switch を goto として使う最悪の例」というボケだったんだが…
0232デフォルトの名無しさんNGNG
>>230
^Z+Enter で
入力したやつまとめて出てくるんじゃね?
0233デフォルトの名無しさんNGNG
>>227
OS が NT 系で test.exe が 16bit の旧EXEなら、
COMMAND.COM を起動してから実験してみるもよし
0234デフォルトの名無しさんNGNG
>>232
俺も一瞬そう思ったが、EOF 判定はしてないぞ
0235デフォルトの名無しさんNGNG
>>232
質問ちゃんと読んだら?
オレは答えはわかるけど、説明する気にもなれん
023689NGNG
>>90-92
どうもありがとうございます。
スタック領域を増やすと少し増やす事が出来ました。
0237227NGNG
>>233
OSは2000でEXEのbitはわかりませんが、
変わりありませんでした。
0238デフォルトの名無しさんNGNG
>>232
してないとは言い切れないぞ。
0239デフォルトの名無しさんNGNG
>>227
DOSはマルチタスクではないので、前段プロセスが終了するまで後段プロセスがスタートしない。
そうでない場合でも、改行するまでは入力がバッファリングされてしまう。
0240デフォルトの名無しさんNGNG
Win2kならDOSじゃないだろ……_/ ̄|○
0241デフォルトの名無しさんNGNG
>>237
>EXEのbitはわかりませんが

コマンドラインみしてみ
0242デフォルトの名無しさんNGNG
レスちがいを承知でおしえてもらいいことがある、パソコンのプロのみなさまへ
今日メモリクリーナなるものをDLしてつかったところ何も開いていない状態で
みたら60Mぐらいつかわれていた・・これって一体なににそんなとられてるの?
メモリー俺のパソは128しかないんで・・・解放しても70Mぐらいからはじまる
まじでいったい何が60Mもつかってるの?てかfreeとなんか似てるな
って、まじでおしえてください・・60Mのメモリのパソならなんもできないじゃん
60も意味不明にとられてたら・・バスタかなんかですか?
0243デフォルトの名無しさんNGNG
>>242
氏んでこい
0244デフォルトの名無しさんNGNG
>>242
メモリクリーナってのはわざと大量のメモリを確保する。(中身は全く手を付けないけど)
そのときWindowsはメモリが足りなくなるので今までのメモリの内容をスワップファイルへ書き出す。
そしてすぐに確保したメモリを解放する。当然このときにスワップからメモリに書き戻されるのだが、
このときWindowsは虫食い状態になっていた空き領域を1ヶ所に集めて空き領域が連続ようにメモリに書き出す。
基本的にはこの空き領域が連続させることがメモリクリーナの効果。

こういうのはソフトウェア板で聞け。
0245デフォルトの名無しさんNGNG
おまえらconst付けてるか
0246デフォルトの名無しさんNGNG
明らかに釣りだな
マジレスしてるやつ頭悪スレ池
0247デフォルトの名無しさんNGNG
C言語の中括弧とかのタブの取り方っていろんなスタイルあるけど,
大体手本となるような本とかWebページは同じやり方だよね。
例えば,if文を例に取ると,大概のページ・書籍には

if(……){
処理1;
処理2;
}

って書いてあるけど,俺は

if(……)
{
処理1;
処理2;
}

っていうほうが見やすい。
やっぱり前者のほうで書いて勉強を続けていったほうがいいのかなぁ。
0248デフォルトの名無しさんNGNG
>>247
http://etc3.2ch.net/test/read.cgi/entrance/1093006298/544-
0249デフォルトの名無しさんNGNG
サンキュウ
0250デフォルトの名無しさんNGNG
プログラムの高速化を図りたいのですが各命令の速度の比較は分からないでしょうか?
例えばa=a+bを1とすると
a=a*b 3
if    10
rand  20
みたいな感じで。
0251デフォルトの名無しさんNGNG
>>250
プロファイル取るか、CPUの仕様書でも読め。
0252デフォルトの名無しさんNGNG
>>250
a=a+bがいつも1だとは限らないしな。
0253デフォルトの名無しさんNGNG
数万個ある小さなファイルを順番に読み込んでるんですが、数が進むにつれて
読み込み速度がどんどん低下してしまいます。何か解決法はありますか?
0254デフォルトの名無しさんNGNG
なぜ遅くなってるのかを解析する。
0255デフォルトの名無しさんNGNG
>>253
例えば読み込んだファイルを全てメモリに確保して、
新しいファイルが読み込まれても削除してないとか。
0256デフォルトの名無しさんNGNG
>>253
読んだデータは全部メモリ上に保持してたりする?
メモリ不足でページフォルト起こしてるんだろ。
0257デフォルトの名無しさんNGNG
>253
小さなファイルが数万個あること自体がアウツ
0258デフォルトの名無しさんNGNG
万個って言いたかっただけだろ。
0259デフォルトの名無しさんNGNG
C言語でメールクライアントを作っているのですが
retr 1をした後に送られてくるデータを*bufに入れたはいいが
空行でメールのヘッダと本文に分けたい(分かれ目のポインタの値が知りたい)
strcmpとかでやってみたところ、うまく分かれてくれないんだが
どうすればいいんでしょうか?

0260デフォルトの名無しさんNGNG
あきらめろ
0261デフォルトの名無しさんNGNG
>>259
chomp せよ
0262デフォルトの名無しさんNGNG
*bufをchompしても、最後の改行が消えるだけで
分けれないんですが。
0263デフォルトの名無しさんNGNG
正規表現使えば楽。
0264デフォルトの名無しさんNGNG
p = strstr(buf, "\n\n"); ?
0265デフォルトの名無しさんNGNG
p = strstr(buf, "\n\n");

最初、それで余裕とか思ってたらOUTでしたorz
0266デフォルトの名無しさんNGNG
\n\r\n\r
じゃないの?
0267デフォルトの名無しさんNGNG
orz
\n\r\nで、逝けた。。。。。。
板汚しスマソ
0268デフォルトの名無しさんNGNG
execやspawnは外部プロセスを終了させないと制御が戻ってこないですが、
外部のプログラムを実行して、そのプロセスを終了させないで、制御を元のプログラムに戻すことはできるのでしょうか?
0269デフォルトの名無しさんNGNG
_P_NOWAIT もしくは INT 27H などいかが?
0270268NGNG
もしかしてボーランドのコンパイラでしょうか?
私はLSIC試食版を使っていますが、INCLUDEの中からは発見できませんでした。
0271デフォルトの名無しさんNGNG
>>268
LSI-Cじゃどっちみち限界があるからBCCでも使え。
それと、プロセス制御は環境依存するから該当スレへ。
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
0272デフォルトの名無しさんNGNG
>>269
>INT 27H
それはどうかと…w
mov ax, 35xxh
int  27h
だっけか?もうとっくに忘れてるや
0273268NGNG
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
にて質問します。

黙って移動してすいませんでした。
0274デフォルトの名無しさんNGNG
>>268
(POSIX って前提で) ふつー、fork して exec か、または popen しないか?
一度、system("hoge &"); してるのは見たことがあるが。
0275268NGNG
>274
ごめんなさいwindowsXP Proです
0276デフォルトの名無しさんNGNG
MSYSでmingwを使うと、日本語部分が文字化けするのですけど
どうやれば対処できるのでしょうか?
0277デフォルトの名無しさんNGNG
>>276
環境依存のスレで聞いてください
0278227NGNG
マルチスレッド化してみましたがやはりうまくいきませんでした。

#include <stdio.h>
#include <sys/types.h>
#include <process.h>
#include <windows.h>

unsigned __stdcall func(void *arg){
char buf[1024];
while(1){
scanf("%s", buf);
printf("%s", buf);
}
}


int main(int argc, char *argv[])
{

unsigned d;
int id;
id = _beginthreadex(NULL, 0, func, (void *)1, 0, &d);
if( id==NULL ){
fprintf(stderr, "error.");
return 0;
}
while(1){
Sleep(100);
return 0;
}
}
0279デフォルトの名無しさんNGNG
>>278
1行ずつバッファリングされるってレスついてたと思ったけど?
どううまくいかないのかね。
0280デフォルトの名無しさんNGNG
aやsなどのキーを押したように仮想させるには、具体的にどのように書けばいいのでしょうか?
0281デフォルトの名無しさんNGNG
>>280
まずはイメージトレーニングだ
0282デフォルトの名無しさんNGNG
>>280
標準入出力だけじゃ無理。
即ち、標準関数だけじゃ無理。
0283デフォルトの名無しさんNGNG
>280

stdinから読み込むがごとく、ファイルから読め
0284デフォルトの名無しさんNGNG
他のヘッダファイル等を使えば可能ですか?
ルーチンのようなものをCで作れればと思っているのですが。
0285デフォルトの名無しさんNGNG
>>284
人の話を聞け
0286デフォルトの名無しさんNGNG
>>285
すみません。
Cは数値解析で使ったことしかなく、他の事に関してはまったくの初心者なのです。
0287デフォルトの名無しさんNGNG
Microsoft Visual Studio .NET でC/C++の基本的練習するとしたら、どうしたらいいと思いますか?
0288デフォルトの名無しさんNGNG
次の質問をどうぞ
0289デフォルトの名無しさんNGNG
自作関数のヘッダにstring.hという名前をつけて#include "string.h"で
インクルードしてるんですが、#include <string.h>を同じソース上に書いても
問題ないのでしょうか?
0290デフォルトの名無しさんNGNG
>>280
freopen てことじゃなくてか?
0291デフォルトの名無しさんNGNG
>>289
問題ないと思うがお薦めしない。
その自作関数のヘッダのファイル名を変えとけ。
0292デフォルトの名無しさんNGNG
構造体のメンバーに long hoge:8; のようなものがあるのですが、
':'の意味と、そのあとの数字の意味を教えて下さい。
0293デフォルトの名無しさんNGNG
>>292
ビットフィールドで調べてみよう
0294デフォルトの名無しさんNGNG
long hoge:8;って激しく無意味だな・・・。
0295デフォルトの名無しさんNGNG
long unko:69;
0296sageNGNG
C標準関数とシステムコールの違いを教えてください
0297 ◆FIcNi4f8js NGNG
ttp://www.wakhok.ac.jp/~maruyama/Syscall/Syscall.html
ttp://www.wakhok.ac.jp/~maruyama/Syscall/sysint/section3.3.html#SECTION0003000000000000000
0298デフォルトの名無しさんNGNG
>>296
なんで検索しないんですか?
0299 ◆FIcNi4f8js NGNG
ぐぐるだけでいっぱいでてくる
ttp://x68000.startshop.co.jp/~68user/unix/func.html
0300sageNGNG
この書き方がよくない理由はなに?
if (!strcmp(a, b))
0301デフォルトの名無しさんNGNG
>>300
strcmp が真偽値を返すわけじゃないから、かな。
別に結果は同じだけど ==0 にした方がわかりやすい。
strequal という関数を作ったほうがもっとわかりやすい。
0302227NGNG
>>279
みのがしてました
printfのあとにfflush(stdout)をいれることで解決しました。
みなさんありがとうございます。
0303デフォルトの名無しさんNGNG
>>300
not string compare と読ませることにメリットがない
0304デフォルトの名無しさんNGNG
>301
>strequal

とはいえ大小比較するからなぁ...
0305デフォルトの名無しさんNGNG
#define strequal(a,b) (strcmp((a),(b))==0)
0306デフォルトの名無しさんNGNG
localtime()はtmのポインタを返すんですが、
これによって得られたtmは使った後解放してやる必要があるんでしょうか。
0307デフォルトの名無しさんNGNG
>>306
なぜ、そう思ったんだ?
0308デフォルトの名無しさんNGNG
ポインタを返すということは、localtime()の関数内部でmallocをしている可能性があるので、
こっちで解放してやらないとメモリがどんどん食われると思ったんです。
あるいはローカルの静的なオブジェクトを返しているのかもしれないですが、
どちらか分からないので。
0309デフォルトの名無しさんNGNG
>>306
解放してはだめ。
0310 ◆FIcNi4f8js NGNG
仕様書読めば書いてあることをわざわざ聞くのは
その仕様に納得してないから?
0311マジレスしてみるテストNGNG
>>310
いいえ。仕様書へのアクセス手段を知らないからです。
みながみなεπιστημηみたいな言語オタクだと思うなよ。
0312デフォルトの名無しさんNGNG
標準関数の仕様書くらいどこにでもころがってるだろ
0313デフォルトの名無しさんNGNG
>>308
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/localtime.3.html

ここにもあるように静的な領域を確保するらしいけど

 引き続いて呼び出されるあらゆる日付や時刻に関する関数によって上書きされる可能性がある。

とあるように、localtime() を複数回呼び出しても「メモリがどんどん食われる」事はないと思う。
0314デフォルトの名無しさんNGNG
επιστημηって言語の仕様をすべて暗記してるのか?
0315デフォルトの名無しさんNGNG
επιστημη氏は、記憶力聡明な人ではあると思う。
が、全てのプログラマが記憶力聡明であるわけではないし、
また優秀なプログラマでも、記憶力が乏しい人もいる。
お互いを摺り寄せる努力が必要だ。
0316デフォルトの名無しさんNGNG
記憶力聡明?
いいかげんな造語だな。
0317デフォルトの名無しさんNGNG
> そうめい【聡明】
> ―な
> ―に
>
> 〔「聡」は耳が、「明」は目がさといこと〕 物事や人情などに対する判断力・洞察力にすぐれ、自分の置かれている
> 環境で第一になすべき事を十分に自覚している様子。
Shin Meikai Kokugo Dictionary, 5th edition (C) Sanseido Co., Ltd. 1972,1974,1981,1989,1997
0318デフォルトの名無しさんNGNG
まぁ、まともな奴ならマニュアルくらい普通に読めるだろって話だな。
0319デフォルトの名無しさんNGNG
マニュアルを持ってればな
0320デフォルトの名無しさんNGNG
マニュアルにアクセスすることすらできない奴はまともとは言えない。
0321デフォルトの名無しさんNGNG
まぁ、まともな奴ならマニュアルくらいどこで見つけられるか知ってるだろって話だな。
0322デフォルトの名無しさんNGNG
このヌレの住民って本当に優しいな。見なおしたよ。
0323デフォルトの名無しさんNGNG
int a;
printf("%d %d\n",
sizeof(int), sizeof a);

というのをiccでコンパイルすると

ero.c(6): remark #181:
argument is incompatible with corresponding format string conversion
        sizeof(int), sizeof a);
        ^
のようなのが出ます。

sizeofの前に(int)とかつけると出なくなりますが
そもそもsizeof演算子を使うと、どういうデータ型になるので
すか?
0324デフォルトの名無しさんNGNG
>>311
>仕様書へのアクセス手段を知らないからです。
ばかだからでは?
0325デフォルトの名無しさんNGNG
>>323
size_t
これは大抵unsigned intがtypedefされている。
0326デフォルトの名無しさんNGNG
>>325
%u にすると出なくなりました。

ありがとうございます。
少しえろくなりました。
0327デフォルトの名無しさんNGNG
%uにするよりも、頭に(int)つけるほうが賢い対処法だったのになぁ・・。
0328デフォルトの名無しさんNGNG
>>327
gcc に糞メッセージを出させないようにするのがスジな気がしないでもない。
0329デフォルトの名無しさんNGNG
iccだよ
0330デフォルトの名無しさんNGNG
ちょいと調べてみると、size_t には
POSIX では %zd
Microsoft では %Id
C99 のフォーマットマクロにはなし
なんだな。
0331デフォルトの名無しさんNGNG
>>330
C99も%zd
0332デフォルトの名無しさんNGNG
>>331
あれ ?
%zu ではなくて %zd なの ?
0333デフォルトの名無しさんNGNG
>>332
確かに%zuの方が良いかもしれん。
符号無から符号有の変換は未定義だか処理系依存だからな。
0334デフォルトの名無しさんNGNG
C++ の bool のようなものを定置したいんですが、
typedef enum{ false = 0, true = 1 } bool;
と
typedef enum{ false = ( 0 != 0 ), true = ( 0 == 0 ) } bool;
のどちらがいいのでしょうか…
0335デフォルトの名無しさんNGNG
Cでは真偽値は0と1と決まっているから前者でいい。
0336デフォルトの名無しさんNGNG
>>334
どちらよりも、 #include <stdbool.h> がよい。

それがだめなら、どちらかというと前者。
理由は、下の書き方にしてもメリットは無いから。
0337デフォルトの名無しさんNGNG
学校の課題で使うので stdbool はちょっと無理かなと…
長いことC++やってるんでCの細かい仕様なんか忘れちゃった(´・ω・`)
0338デフォルトの名無しさんNGNG
stdbool.hがないなら、

#ifndef STDBOOL_H
#define STDBOOL_H
typedef enum {false, true} bool;
#endif

をstdbool.hと名付けるよろし。
0339335NGNG
しばらくC++ばっか使ってたら頭からstdbool抜けてた(焦
>>337
stdbool.hは標準のヘッダだから、なかったらその環境がおかしい。
0340デフォルトの名無しさんNGNG
>>338
stdbool.h を真似るなら、もっと小細工が要りそうだ。
0341デフォルトの名無しさんNGNG
>>339
いや、C99がどうとかじゃなくて、例えばC++の演習で
std::vectorとか使ったらやり杉じゃないのかなあ…という感じで・・

まだCのテキスト渡されて関数すらやってない感じなので・・・
0342デフォルトの名無しさんNGNG
複数のCプログラムから実行ファイルを作る make を(WindowsXPの)コマンドラインで使いたいのですが、
ググってみても分かりませんでした。どうすればよろしいのでしょうか?
Linux環境であれば make が出来るのですが、Windows でのやり方が分かりません。
0343デフォルトの名無しさんNGNG
DVD-RAM書き込みや、メディア(DVD-RAMの空き容量)の情報を取得するには、
どのようにすればいいのでしょうか?
MMCのコマンドを使用すれば可能とのことらしいのですが、
ググッテもよくわかりませんでした。
ご存知の方いらっしゃいましたら、教えてください。
参考になるHP/書籍を教えていただけるだけでも構いませんので、よろしくお願いします。
OS:windows2000
言語:C言語
コンパイラ:VC6.0
0344デフォルトの名無しさんNGNG
>>334
できない。あきらめろ。
bool a;
a = 2;
if(a == true) goto hell;
0345デフォルトの名無しさんNGNG
>>344
そこまで厳密にやるわけではないので大丈夫です…

にしても C++ だと enum では int からの暗黙の型変換が
出来ないために bool が新しく出来たってのに、Cでは
typedef enum{ false = 0, true = 1 } bool;
bool b = ( 0 == 0);
これが動くんですね…
0346デフォルトの名無しさんNGNG
>>345
某社のライブラリのように大文字で BOOL なら
まがいものと割り切って使えという表示になる
0347デフォルトの名無しさんNGNG
>>345
C++のboolでも bool b = ( 0 == 0); はコンパイルとおるぞ。
「動く」とはまた違うのかもしれんが。
0348デフォルトの名無しさんNGNG
「まがいもの」で済む問題かどうかも疑わしい
それは #define begin { と同質

頭がおかしくなってしまってからでは自覚不能に陥るぞ
0349デフォルトの名無しさんNGNG
>>347
それが通るように bool が新しく作られたですよね・・
プリプロセッサは使いたくないし、class にしてもうまくいかない…
enum にしても型変換が出来ない・・

皆さんのアドバイス通りとりあえず前者にしておきます。
ありがとうございました
0350デフォルトの名無しさんNGNG
>>343

directXはどう?
http://www.microsoft.com/japan/developer/library/jpdx8_c/ds/dvd/dvd_controlling.htm
0351342NGNG
すみません、>>342 もお願いします。
0352デフォルトの名無しさんNGNG
>>351
nmake
0353342NGNG
>>352
ありがとうございましたm(_ _)m
0354343NGNG
>>350
ありがとうございます。
ですが、書き忘れていました。言語は「C言語」のみで(「C++」は不可)でした。
折角、教えていただいたのに申し訳ございません。


webでちょこちょこ調べてみてはいるのですが、
実装出来そうな方法が、「ASPI(SPTI)」、「MMC(マルチメディアコマンド)」
位しか出てきませんでした。
この辺を使用してCプログラムを書いたことがある方いらっしゃいませんでしょうか?
0355デフォルトの名無しさんNGNG
>>354
DirectXはCでも使えなかったっけ?
0356デフォルトの名無しさんNGNG
Cでも使えたと思うが
0357343NGNG
>>355-356
すみません。Cで使えるとは知りませんでした。
使用方法と自分のやりたい事が実装できるか調べてみます。
どうもありがとうございました。
0358デフォルトの名無しさんNGNG
>>350 >>355
答えるな。>>343 が図に乗ってスレ違いに気付いていない。
0359343NGNG
>>358
図に乗っていません。本気で困っています。
たしかにC以外のlibやapiを使うと言う意味ではスレ違いかもしれませんが、
他に適切なスレが見つからなかったので、ここで聞いています。
適切なスレをご存知であれば、誘導してもらえないでしょうか。
0360デフォルトの名無しさんNGNG
int double float
0361デフォルトの名無しさんNGNG
ttp://pc5.2ch.net/test/read.cgi/tech/1084765853/
0362デフォルトの名無しさんNGNG
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=DirectX&COUNT=10
0363デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1084765853/
0364343NGNG
C限定なんですけど・・・
0365デフォルトの名無しさんNGNG
流れに乗ろうかと思ったがまぁいいや。

>359
>図に乗っていません。本気で困っています。
おまいさんが困っているかどうかなどこっちには関係ない。

>他に適切なスレが見つからなかったので、ここで聞いています。
で、スレッドの検索ぐらいしたんだろうな?おい。

Win32API質問箱 Build23
http://pc5.2ch.net/test/read.cgi/tech/1095534704/

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

鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/
0366343NGNG
>>361、363
どうもです。そっちに移動します。
DirectXで実装できなそうだったら、戻ってくるかも知れませんが、
その時は、またよろしくお願いします。

>>364は、俺じゃないです。
よくそうやってからかえるよな。あんた最悪だな。

0367デフォルトの名無しさんNGNG
>>366
>>354 はだれ?
0368デフォルトの名無しさんNGNG
>366
おいおい、このスレには戻って来ちゃだめだっつーの。
後、最後の1行は余分。2ch で質問するなら煽り耐性は持っててほしい。
とりあえず自分の心の中だけで罵っとけば平和。
0369343NGNG
>>365
スレッド検索はしました。
「【初心者歓迎】C/C++室 Ver.10【環境依存OK】 」は見つけたんですが、
こっちとの違いが良く分からなかったので。
(>>1を読んだらすれ違いだと分かりました。)
↑のほうが適切だったんですね。以後、気をつけます。
今更書いてもしょうがないかも入れませんが、Win32Apiではなく(Dos)Commandを
作るイメージでした。
(俺が、細かいことまで書かなかったのが原因です、すみません。)

>>367
>>354は自分です。

>>368
ベタのC言語専用スレだったんですね。すみません。
0370デフォルトの名無しさんNGNG
main で return するのと プログラムのどこかで exit するのと
どこが違うのでしょうか?
0371デフォルトの名無しさんNGNG
おなじ
0372デフォルトの名無しさんNGNG
処理系によってはI/Oのフラッシュ等をせずに終らせる機能もある。非常用。<exit
0373370NGNG
ありがとう。
0374デフォルトの名無しさんNGNG
>>372
そのexitはやばいんじゃないの?
abortならそれでもいいけど。
0375デフォルトの名無しさんNGNG
整構造で組み立てる気がない者が使う分には exit と abort は気分の差
0376デフォルトの名無しさんNGNG
exit で終わろうが、セグフォで終わろうが、気分の差
0377デフォルトの名無しさんNGNG
で、どっちの場合も malloc してた場合は free しないといけないんですか?
0378デフォルトの名無しさんNGNG
free不要。時にexit書くような所では危険。
0379デフォルトの名無しさんNGNG
char a;
// (中略)
printf("あああ%cいいい",a);

これで、「あああいいい」という風に、空白も無しに表示させるにはaに何を代入すればいいのでしょうか?
0380デフォルトの名無しさんNGNG
>>379
a='\0'
0381デフォルトの名無しさんNGNG
char a[] = { 0, 0 };
// 中略
printf("あああ%sいいい", a);

として a[0] に \0 を入れる。
0382デフォルトの名無しさんNGNG
>>380
気は確かか?
0383デフォルトの名無しさんNGNG
>>381
問題変えるなよ。
0384デフォルトの名無しさんNGNG
a=255;
0385デフォルトの名無しさんNGNG
>>377
main()
{
malloc(1);
exit(0);
}
これがOKと言いたいだけな消防と話すことはない
0386デフォルトの名無しさんNGNG
'\b'
0387デフォルトの名無しさんNGNG
a=127;
0388デフォルトの名無しさんNGNG
Cのプログラムで、複数の .c ファイルをコンパイル・リンクするときに、
グローバル変数が二重定義になることがあるのですが、
それを避けるにはどうすればよろしいのでしょうか?
0389デフォルトの名無しさんNGNG
static
0390デフォルトの名無しさんNGNG
>>388
extern で宣言と定義を区別
初期値を指定しない
0391デフォルトの名無しさんNGNG
名前がファイルによってかぶっているときには>>389
実体が1つのはずのものが二重定義になるときは>>390
0392デフォルトの名無しさんNGNG
>>389
ありがとうございます。

>>390
ヘッダファイルは extern にして、.c ファイルで定義するということでしょうか?
0393デフォルトの名無しさんNGNG
>>391
複数の .c ファイルで同じヘッダファイルを使うときはどうなのでしょうか?
0394デフォルトの名無しさんNGNG
>>393
>>390
0395デフォルトの名無しさんNGNG
>>393
>>392の4行目でいっている通り
0396デフォルトの名無しさんNGNG
390-391では無いが、
ヘッダにグローバル変数は書かない事を勧める。
IDEなら良いが、素のエディタでは把握できなくなる。
0397デフォルトの名無しさんNGNG
例えば、xxx.h を yyy.c と zzz.c の両方で include するとき、
xxx.h では変数を extern 宣言して、yyy.c で変数の実体を定義すればよいのでしょうか?
0398デフォルトの名無しさんNGNG

レス・ハンコック「C言語入門」という本を見てみたら、冒頭のサンプルソースに#include <stdio.h>なしにprintf()関数を使ってるソースを出してるんですが、一応コンパイルできるんでしょうけども、入門書的にはアリなんでしょうか?

それとも昔はこれでよかったんでしょうか?
0399デフォルトの名無しさんNGNG
>>395-396
御親切なアドバイスをありがとうございましたm(_ _)m
またどうしても分からなかったら質問させて頂きます。
0400デフォルトの名無しさんNGNG
>398
リンカのデフォルトに入っている処理系は多い。
たとえばVCだと、
#pragma comment(linker, "/nodefaultlib:\"libc.lib\"")
として実行ファイルサイズを切り詰める場合もある。
0401デフォルトの名無しさんNGNG
>>398
いい訳がない。もしそれよりも前のどこかに「冗長になるから省く」などと
書かれていれば理解できるけれども。
0402デフォルトの名無しさんNGNG
>>400
なんかズレてないか? なぜリンカが出てくる?

>>398
昔はそれでよかった。
今でもプロトタイプを省略しても間違いではないのだが、省略するメリットは無く、思わぬデメリットを食らうこともある。
よって、入門書的にはNG。
0403デフォルトの名無しさんNGNG
.cファイルって.hファイルがインクルードされる前に
全てコンパイルされるんですか?
0404デフォルトの名無しさんNGNG
プリプロセス(含インクルード)してからコンパイルだろ
0405デフォルトの名無しさんNGNG
>>403
プリプロセッサ→コンパイラ→リンカ
の順に動くから、#include が先に展開される。
0406デフォルトの名無しさんNGNG
ヘッダファイルを処理するプログラムを日本語に訳してみろ
0407デフォルトの名無しさんNGNG
違った。
○#ディレクティブを処理するプログラム
×ヘッダファイルを処理するプログラム
0408デフォルトの名無しさんNGNG
>>406
前処理
0409デフォルトの名無しさんNGNG
#include "oresama.h"
0410デフォルトの名無しさんNGNG
>>379

ちょっとうるさいけど char a='\a';
0411デフォルトの名無しさんNGNG
return文では、なぜ括弧をつけるスタイルとつけない
スタイルが許されているのでしょうか?
0412デフォルトの名無しさんNGNG
>>411
は?
a = 1;
は許すが、
a = (1);
はコンパイラで弾けって事か?
0413デフォルトの名無しさんNGNG
>>412
if a {}
はなぜ弾くのかってことじゃないか?
0414デフォルトの名無しさんNGNG
おまえらくだらない話題ほどよく絡みますね
0415デフォルトの名無しさんNGNG
>>414
おまえくだらない話題ほどよく絡みますね
0416デフォルトの名無しさんNGNG
>>411
文法的にそういう決まりになっているから。
0417デフォルトの名無しさんNGNG
未だにCでは最後の評価式の値がそのまま返り値にできないんですか?
0418デフォルトの名無しさんNGNG
>>417
ガキかお前は
0419デフォルトの名無しさんNGNG
>>417
そんな無駄な仕様は入れない。
0420デフォルトの名無しさんNGNG
無名関数が欲しいです
0421デフォルトの名無しさんNGNG
>>410
char a[2] = {'\0', '\0'};

a[0] = 'a';
printf("->%s<-\n", a);
a[0] = '\0';
printf("->%s<-\n", a);
0422421NGNG
正 >>379
誤 >>410
0423デフォルトの名無しさんNGNG
>421
%sぢゃねーて
0424398NGNG
>>401, >>402

お返事ありがとうございます。

そういえばK&Rにもプロトタイプ省略のソースが載っていたと思うんですが、今でも推薦する人が多いようですね。
0425デフォルトの名無しさんNGNG
>>417
昔からCではreturnを書かない時は最後の評価式の値がそのまま戻値だ。

最近のコンパイラは関数定義で戻値の型が指定されているときはreturnが必要で、
戻値がvoidの時は逆にreturnを書くな。とコンパイルエラーが出る。
ただそれだけ。
0426デフォルトの名無しさんNGNG
>>425
大嘘を書くな、大嘘を。
0427デフォルトの名無しさんNGNG
C言語で連想配列やスタック、キューといった基本的なデータ構造が
使えるSTLみたいなライブラリはありませんか?単純なものでいいんですが、
できればGPLでないやつがいいんですが・・・
0428デフォルトの名無しさんNGNG
boostってGPLだっけ?
0429デフォルトの名無しさんNGNG
>>428
この際boostがGPLかどうかは殆ど関係ないと思うのだが。
0430デフォルトの名無しさんNGNG
>>428 ちがうよ
0431デフォルトの名無しさんNGNG
>>426
何が大嘘?
0432デフォルトの名無しさんNGNG
>>431
× 昔から
○ 昔は
じゃないか?
0433デフォルトの名無しさんNGNG
>>431
プ
0434デフォルトの名無しさんNGNG
> 戻値がvoidの時は逆にreturnを書くな。とコンパイルエラーが出る。

おいおい。
0435デフォルトの名無しさんNGNG
boostってCのAPIあんの?
0436デフォルトの名無しさんNGNG
>>425
return;は?
0437デフォルトの名無しさんNGNG
> 戻値がvoidの時は逆にreturnを書くな。とコンパイルエラーが出る。
とあるんだから、、
0438431≠425NGNG
あーなるほど。確かにreturn書くなって言われたら困るわなぁ。
0439デフォルトの名無しさんNGNG
だめなんだ!?
うるさくなったな。エラー吐くんだろ。わー人具じゃないんだろ?
0440デフォルトの名無しさんNGNG
>>439
エラーになるのは、voidとしているのに値を返している場合。
それ以外は出ても警告のみじゃないかな。
#C99は知らん。
0441デフォルトの名無しさんNGNG
--- Compile log ------------------------------------
Error - voidなのにreturnが書かれとる。
Warning - scanf使うのはやめときや。
Warning - gets使うのはやめときや。

コンパイルに失敗したで。直しときや。
--------------------------------------------------
0442デフォルトの名無しさんNGNG
いいな、大阪弁で答えてくれるのか
その中の人がさんまさんだったら余計なことが80%は占めるんだろうな。
0443デフォルトの名無しさんNGNG
Error - voidゆーてreturnで値返しよる。

やな
0444デフォルトの名無しさんNGNG
>>441
3つとも外れじゃスカタン
0445デフォルトの名無しさんNGNG
最近よく見るのは↓だなー。リンカが出してるようだ。

/tmp/cccaJuBA.o(.text+0x18): In function `main':
: warning: the use of `mktemp' is dangerous, better use `mkstemp'
0446デフォルトの名無しさんNGNG
これってたまたまうまくいってるだけですか?

#include <stdio.h>

int test()
{
volatile int a = 123;
volatile int b = 456;
volatile int c = a + b;
}

int main(void)
{
printf("result = %d\n", test());
return 0;
}
0447デフォルトの名無しさんNGNG
>446
ネタのマジレスするとw
1.test()は戻り値を返せ
2.マルチスレッドでもないローカル変数ごときにvolatileを使うな
0448デフォルトの名無しさんNGNG
>>446
たまにはソースとアプリケーションだけじゃなくコードも眺めてみれ

っとそれはC言語じゃないな
0449デフォルトの名無しさんNGNG
>>448
もしかしてアキュムレータの値が戻り値になるっていう話のことを言っているのですか?
0450デフォルトの名無しさんNGNG
>>442
欲しいな・・・
0451デフォルトの名無しさんNGNG
デスマで死にそうなときにそっとリアルゴールドを出してくれるコンパイラが欲しい
0452デフォルトの名無しさんNGNG
んなもん呑んだら吐くわい
0453デフォルトの名無しさんNGNG
> return文では、なぜ括弧をつけるスタイルとつけない
> スタイルが許されているのでしょうか?

大昔はつけなければいけなかったから。

大昔といっても、void型が導入されるよりはずっと前、
かつ、 += という演算子ができたよりはあと、だ。
0454デフォルトの名無しさんNGNG
> /*////////////////////////////////////////////////////////////////////////////*/
> ↑
> やる気のなさが致命傷

じゃあ
//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//
0455デフォルトの名無しさんNGNG
int foo, hoge
1.foo / hoge
2.foo % hoge
1 と 2 ではどっちが遅いですか?
0456デフォルトの名無しさんNGNG
>>455
比較する以前に計算自体が違うわけだが
0457デフォルトの名無しさんNGNG
x86のDIVの場合、/の結果と%の結果は同時に取得できるから、
>>455 の1と2はどっちが速いとか遅いとかじゃなくて不可分の関係
0458デフォルトの名無しさんNGNG
stdio.hのstdioって何って読むんですかぁ?
ストディオ?
0459デフォルトの名無しさんNGNG
すたっどあいおー
0460デフォルトの名無しさんNGNG
>>459
すたっどあいお、スタッドアイオともにgoogleで検索してみたけどともに0ヒットでした
本当にこの読み方なんですかぁ?
0461デフォルトの名無しさんNGNG
Standard Input Output
標準入出力
0462デフォルトの名無しさんNGNG
えすてぃーでぃーあいおー が業界標準です。日本のUnix業界では。
0463デフォルトの名無しさんNGNG
すたんだーどあいおーと読んじゃうけど
0464デフォルトの名無しさんNGNG
現場からは以上です。それではスタジオにお返しいたします。
0465デフォルトの名無しさんNGNG
失礼しまつ
http://pc5.2ch.net/test/read.cgi/tech/1095075678/669
・アルゴリズム・データ構造の説明(少なくていいです)
・スピードやメモリの効率向上のためなど工夫した点
を聞きたいのですが、おねがいします
0466デフォルトの名無しさんNGNG
>>465
そこらへんに何個も貼り付けてんじゃねーよカスチンが
0467デフォルトの名無しさんNGNG
>>466
何個もって2個しかない
つーか質問スレなんだから答えてやれ
0468デフォルトの名無しさんNGNG
>>465=>>467
0469デフォルトの名無しさんNGNG
>>467
自演モツ彼
>ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0470デフォルトの名無しさんNGNG
LINUX(UNIX)でファイルが指定ディレクトリ下に作成されたのを検知する方法
ってあるでしょうか?(C言語で)

やりたいのは、指定ディレクトリ配下にファイルが生成されたら、その
ファイルの内容をチェックする仕組みを作りたいのですが、ディレクト
リはルートから複数(可変数)ディレクトリ下ったところに生成され、
なおかつファイル数が膨大なため、いちいちチェックしていると非常に
時間がかかってしまうためです。

もしご存知の方がいましたらお知恵をお貸し下さい。
0471デフォルトの名無しさんNGNG
#includeで
netint/in.h
arpa/inet.h
sys/socket.h
fcntl.h
unistd.h
errno.h
がコンパイルできるコンパイラ教えてください。
VC++6.0ではできませんでした。
0472デフォルトの名無しさんNGNG
環境違うもんな。コンパイラ以前の問題。
0473デフォルトの名無しさんNGNG
errno.hがないはずはない
0474471NGNG
>>472
UNIXじゃないと無理ですか?

>>473
errno.hはありました
0475デフォルトの名無しさんNGNG
>>455
聞く前に実測しろ
理屈の上では完全に等速のはず

Cでもアセンブラでもいいから
除算プログラムを自分で書いてみれば明らか
商を求めるアルゴリズムと
余を求めるアルゴリズムが
全く同じになることがわかる
0476デフォルトの名無しさんNGNG
>>471
> コンパイルできるコンパイラ教えてください。
根本的なところが解ってない悪寒。
ヘッダファイルがないんでしょ?
で、上3つは winsock2.h で代用できればラッキー。
fcntl.h は、あるはずだ。
unistd.h はインクルードしなくて宜しい。

まあ多分、エラーが山ほど出て来るだろうな。
0477デフォルトの名無しさんNGNG
>>476
あんた馬鹿?
0478デフォルトの名無しさんNGNG
>>471
激しくスレ違い。お好きなところへどうぞ。

ネットワークプログラミング相談室 Port11
http://pc5.2ch.net/test/read.cgi/tech/1096187183/
★初心者にVisual C++を教えるスレ★ Part14
http://pc5.2ch.net/test/read.cgi/tech/1093672937/
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
C言語なら俺俺に聞け! Part 87
http://pc5.2ch.net/test/read.cgi/tech/1090652323/
最高に頭悪そうな発言してください in ム板 (2)
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0479デフォルトの名無しさんNGNG
>>475
あんたも馬鹿?
0480デフォルトの名無しさんNGNG
>>479
聞く前に実測しろ >おまえの脳の性能
0481デフォルトの名無しさんNGNG
$ cat test48-1.c test48-2.c
int waru( void ) {
int foo = 4;
int hoge = 2;

return foo / hoge;
}
int jyouyo( void ) {
int foo = 4;
int hoge = 2;

return foo % hoge;
}
0482デフォルトの名無しさんNGNG
$ cat test48-1.s test48-2.s
.file "test48-1.c"
.text
.p2align 4,,15
.globl waru
.type waru, @function
waru:
pushl %ebp
movl $2, %eax
movl %esp, %ebp
popl %ebp
ret
.size waru, .-waru
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.4 (Debian 1:3.3.4-13)"
.file "test48-2.c"
.text
.p2align 4,,15
.globl jyouyo
.type jyouyo, @function
jyouyo:
pushl %ebp
xorl %eax, %eax
movl %esp, %ebp
popl %ebp
ret
.size jyouyo, .-jyouyo
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.4 (Debian 1:3.3.4-13)"
0483デフォルトの名無しさんNGNG
>>482
その前に
gcc -O2 -S test48-1.c test48-2.c
0484デフォルトの名無しさんNGNG
>>481-482
やーい作れねえ
低脳確定
0485デフォルトの名無しさんNGNG
>>475
おまえ >>457 読んでないだろ?
それとも意味分からんの?
0486デフォルトの名無しさんNGNG
>>485
xは86じゃなくオマエのあたま
0487デフォルトの名無しさんNGNG
>>484
なにいってんの?
>>455への説明だよ?
0488デフォルトの名無しさんNGNG
低脳確定x2
0489デフォルトの名無しさんNGNG
>>487
おい、アセンブラ読めない低脳
除算でも剰余でもなくなってることに気付・・・けるわけねえな (プププ
0490デフォルトの名無しさんNGNG
>>488
やーいつくれねーって意味解からない。
何を作って欲しいの?
0491デフォルトの名無しさんNGNG
C:\>debug
-a0
3643:0000 mov dx, 0004
3643:0003 mov ax, 0000
3643:0006 mov cx, 0064
3643:0009 div cx
3643:000B
-t=0

AX=0000 BX=0000 CX=0000 DX=0004 SP=FFEE BP=0000 SI=0000 DI=0000
DS=3643 ES=3643 SS=3643 CS=3643 IP=0003 NV UP EI PL NZ NA PO NC
3643:0003 B80000 MOV AX,0000
-t

AX=0000 BX=0000 CX=0000 DX=0004 SP=FFEE BP=0000 SI=0000 DI=0000
DS=3643 ES=3643 SS=3643 CS=3643 IP=0006 NV UP EI PL NZ NA PO NC
3643:0006 B96400 MOV CX,0064
-t

AX=0000 BX=0000 CX=0064 DX=0004 SP=FFEE BP=0000 SI=0000 DI=0000
DS=3643 ES=3643 SS=3643 CS=3643 IP=0009 NV UP EI PL NZ NA PO NC
3643:0009 F7F1 DIV CX
-t

AX=0A3D BX=0000 CX=0064 DX=002C SP=FFEE BP=0000 SI=0000 DI=0000
DS=3643 ES=3643 SS=3643 CS=3643 IP=000B NV UP EI PL NZ NA PO NC
3643:000B 03D9 ADD BX,CX
-q
C:\>
0492デフォルトの名無しさんNGNG
x86 だの 4 だの 2 だのと電波が飛んでくるらしいが・・・キモッ
0493デフォルトの名無しさんNGNG
debug.com で速度が論じれると思ってるアフォがいるづらだぁ
0494デフォルトの名無しさんNGNG
あ、ごめんごめん。
こうしないといけなかったか。。。
アセンブリ見てなかった。
$ cat test48-1.c test48-2.c
int waru( int foo, int hoge ) {
return foo / hoge;
}
int jyouyo( int foo, int hoge ) {
return foo % hoge;
}
0495デフォルトの名無しさんNGNG
ほらよ
http://debug.com/
0496デフォルトの名無しさんNGNG
>>493
debug.exe な
0497デフォルトの名無しさんNGNG
おうおう、喧嘩か?おい!
0498デフォルトの名無しさんNGNG
やめとけ、アフォは放置に限る
0499デフォルトの名無しさんNGNG
プログラミングから少し外れるかもしれませんが…

(1)大学でプログラミング(C言語)を教えている先生って
ISOなりJISなりのCの規格を直接調べているのが普通なんでしょうか?
(2)本格的に言語を学ぶ場合には(1)の書籍って必須なんでしょうか?
0500デフォルトの名無しさんNGNG
>>499
(1)いいえ
0501デフォルトの名無しさんNGNG
>>499
(2)いいえ
0502デフォルトの名無しさんNGNG
>>499
(2)はい
0503デフォルトの名無しさんNGNG
>>499
人に教える立場の人間ならば、持っていて然るべき。
それ以外ならどうでもいい、かな。
0504デフォルトの名無しさんNGNG
>>499
「普通」を定義せよ
0505499NGNG
尋ねてはみたものの、実際の本(?)を見たことがないんで
実感が沸かなかったりします(スンマセン

プログラミング(とりあえずC)を本格的に勉強したいと思っているんですけど
値段にビビッっているんですよね、僕。

>>504
多数派とか8割以上とかってあたりです。
0506デフォルトの名無しさんNGNG
>>505
その定義なら標準偏差で 10〜90 の範囲に含まれるものってことになるな
0507デフォルトの名無しさんNGNG
270ドルか…K&Rでも読んだほうがいいな
0508デフォルトの名無しさんNGNG
>>505
生データが必要だな
調査がんばれよ
0509デフォルトの名無しさんNGNG
for文の++iとi++は使い分ける必要はありますか?どんなタイミングで加算されますか?
0510デフォルトの名無しさんNGNG
>>509
強い理由が生じるまで【素直でいろ】。
0511デフォルトの名無しさんNGNG
>>509
for(;この辺;)
の ++i と i++ は意味がぜんぜん違うから使い分けろ。
0512デフォルトの名無しさんNGNG
>>509
なんか似たような質問、最近みたな
このスレ的答えならば、実測しろ。
0513デフォルトの名無しさんNGNG
>>509
C++じゃないので気にするな
0514デフォルトの名無しさんNGNG
>>509
アセンブラ嫁
0515デフォルトの名無しさんNGNG
++iはインクリメントしてから計算するのに対して、
i++は計算してからインクリメントする。
(例)
int main() {
int i=0, j=0;
printf("%d,%d\n", i++, ++j);
return 0;
}
0516デフォルトの名無しさんNGNG
( ; ;++i)と( ; ;i++)の場合の違いです。
0517デフォルトの名無しさんNGNG
>>516
今からでも「わざわざ」憶えろ。それほどのことだ。>汗
0518デフォルトの名無しさんNGNG
(;_;)と(T_T)の違いを教えてください。
0519デフォルトの名無しさんNGNG
(*^o^*)
0520デフォルトの名無しさんNGNG
>>518
(;_;) < (T_T)
0521デフォルトの名無しさんNGNG
>>518
無限ループを作るとき、以下のように使い分けます。

#define _ 1
#define T_T 1

for (;_;) {
// ...
}

while (T_T) {
//...
}
0522デフォルトの名無しさんNGNG
>>470
↓多分Linux限定だけどこの辺。
http://www.linux.or.jp/JF/JFdocs/kernel-docs-2.4/dnotify.txt.html
0523デフォルトの名無しさんNGNG
while(T^T);
0524デフォルトの名無しさんNGNG
>>522
激しくさんくすこ
0525デフォルトの名無しさんNGNG
コマンドラインオプションの解析とかしてると
switch( optionChar )
{
 case _T('o'): hoge; break;
 case _T('v'): hage; break;
 case _T('-'): hege; break;
}

とか出てくんの。なんかかわいいの。
0526デフォルトの名無しさんNGNG
0 か 1 が入る配列 a[] (a[10])がある。
1 は必ず[0]から入り、歯抜けは無い。但し、いくつ 1 が入るかは不定。
で、1 が入っている個数分の桁を 1〜3 の値で表示する。
例)
a[0] が 0 → 表示なし
a[0] が 1
   1
   2
   3
a[0] a[1] が 1 → 1,1 1,2 1,3 2,1 2,2 2,3 3,1 3,2 3,3 を表示 (上のように各表示改行して)
a[0]〜[2] が 1 → 1,1,1 1,1,2 1,1,3 1,2,1 1,2,2 1,2,3 ・・・ 3,3,3 を表示(同)
a[0]〜[3] が 1 → 1,1,1,1 1,1,1,2 1,1,1,3 1,1,2,1 1,1,2,2 ・・・ 3,3,3,3 を表示(同)
↓
以下同様(最大[0]〜[9])


どう作ればエレガントかなぁ(´・ω・`)
0527470NGNG
>>522様

470です。感謝感謝です。では早速試してみます。
どもありがとうございました。
0528デフォルトの名無しさんNGNG
ごめん、読解力なくて理解出来ん
0529ぼるじょあ ◆yBEncckFOU NGNG
な〜んとなく分かった気がするが、a[10]にする必要があるんだろうか。
0530デフォルトの名無しさんNGNG
int i = 0;
while(i < 10 && a[i]) i++;
これでi桁になるわな。
0531デフォルトの名無しさんNGNG
5桁だったら
最小値を1,1,1,1,1
最大値を3,3,3,3,3
に設定して一つずつインクリメントすればいいんじゃ?
0532デフォルトの名無しさんNGNG
組み合わせみたいなもんかな、とかオモタけど
それじゃ a[10]じゃ収まらないし・・・うーん?? どゆこと?
0533デフォルトの名無しさんNGNG
こういうのをかぐわしいという
0534530NGNG
>>526 醜いかなぁ…
#include <stdio.h>
#include <string.h>
char temp[20];
void inc(int digits, int n){
  if (n > 1){
    strcpy(temp + 2 * (digits - n), "1,");
    inc(digits, n - 1);
    strcpy(temp + 2 * (digits - n), "2,");
    inc(digits, n - 1);
    strcpy(temp + 2 * (digits - n), "3,");
    inc(digits, n - 1);
  }else if (n == 1){
    printf(temp);
    printf("1\n");
    printf(temp);
    printf("2\n");
    printf(temp);
    printf("3\n");
  }
}
int main(){
  int a[10] = {1, 1, 1, 1, 0, 0, 0, 0, 0, 0};
  int n = 0;
  while(n < 10 && a[n]) n++;
  if (n > 0) inc(n, n);
}
0535デフォルトの名無しさんNGNG
>>526
printf(t + 1); がちょっとトリッキーだけど、ま、こんな感じかなぁ。

#include <stdio.h>

#define N 10
#define R 4
void PrintRec(int a[], int p)
{
    static char t[N * 2 + 2], *u = t;
    int i;

    if (p < N && a[p]) {
        *u++ = ',';
        for (i = 0; i < R; i++) {
            *u++ = '0' + i; PrintRec(a, p + 1); u--;
        }
        u--;
    } else {
        *u++ = '\n'; *u = '\0'; printf(t + 1); u--;
    }
}

int main(void)
{
    int a[] = {1, 1, 1, 0, 0, 0, 0, 0, 0, 0};

    PrintRec(a, 0);
    return 0;
}
0536530NGNG
あ、うっかりmain()なんて書いちまった。
0537530NGNG
>>535
かっこよすぎる…
0538535NGNG
げ、間違えてた。

for (i = 1; i < R; i++) {

に修正してくれ。
0539デフォルトの名無しさんNGNG
自作自演乙
0540デフォルトの名無しさんNGNG
strtok 並のタコさを感じる関数だ
0541デフォルトの名無しさんNGNG
再帰するのにメインの変数はstaticって、
難読化してるんじゃないかと疑いたくなる。
0542デフォルトの名無しさんNGNG
配列の先頭から 1 を数える処理と、
1,2,3 による組み合わせを列挙する処理を別々でつくっちゃだめなの?
0543530NGNG
>>542
俺の別々だけど
0544デフォルトの名無しさんNGNG
ちなみにうちには規格票あります。
0545デフォルトの名無しさんNGNG
>>525
すっげかわいい
0546526NGNG
>>530氏 >>535氏
わーい。お二人ともサンクス!!
自分もチョビっと作り始めてたけど、リカーシブルコールはイマイチ苦手で (´・ω・`)ゞ
精進します。
0547デフォルトの名無しさんNGNG
自作自演乙
0548470NGNG
>>522様
試してみました。ディレクトリ内で更新があることは検知できるのですが、
どのファイルが更新(作成)されたか?という所までは取れないみたいですね…
なにか方法があるのかもしれませんが…
もう少し調べてみます。どもでした。また何か情報がありましたら追加情報を
お待ちしています(^^;;
0549デフォルトの名無しさんNGNG
>>548
更新される以前の状態を自分で保持してればいいだけでは?
0550デフォルトの名無しさんNGNG
char配列の終わりを示す文字っていうか数字ってあります?
0551デフォルトの名無しさんNGNG
>>550
特に無い。
0552550NGNG
ありがとうございます。
charのポインタから配列の終わりを探そうと四苦八苦していたのですが
これでようやく諦めがつきました。
0553デフォルトの名無しさんNGNG
>>550-552
そのやり取り何度も見たぞ。
0554470NGNG
>>549様
階層が固定、小数のファイルならそれでも良いのですが、ルート以下の階層数
は不定であり、その中に含まれるファイル数も膨大で(一階層下に数万ファイル、
全体で数百万ファイル)ある事を想定しているため、前回の情報を保持して…っ
て言うのは非現実的なんです(´;ω;`)
また秒間数件のファイルが作られる事もあり、単純に各階層化をチェックして…
って事も無理なのです(処理スピードが追いつかない予感がして…)。
なのでファイルが作成に対して機能をフックするみたいな事が出来ないかと
思い、質問させていただきました(Windowsなら簡単なんですが…)。

何か妙案がありましたらご教授お願いします(^^;;
0555デフォルトの名無しさんNGNG
K&R第2版(邦訳) p.125 の、ポインタ同士の比較に関する
内容についてなんですが、

|…つまり、pとqが同じ配列の要素をさしていれば、==、!=、<、>=
|などの関係演算子は正常にはたらく。
  (略)
|しかし、同じ配列のメンバーをさしていないポインタ同士の演算や
|比較を行うと、結果は不定となる

前半部は分かるのですが、後半部については例えば
char *p = malloc(〜);
char *q = malloc(〜);
if (p == q) 〜
このケースで大小比較がまずいのはわかるのですが、==による比較も、
実は規格的にはまずいということになるのでしょうか。
0556デフォルトの名無しさんNGNG
>>555
なにがまずい?
0557デフォルトの名無しさんNGNG
>>555
後者はまずくありません。
0558555NGNG
>>556
いえ、後半部分に、同じ配列のメンバーをさしていないポインタ同士の
演算や比較を行うと結果は不定となるとありましたので、
p==q という比較演算の結果が不定とはどういうことなのだろうかなと、、
0559デフォルトの名無しさんNGNG
>>558
p==q という比較演算の結果が不定ではありません
0560デフォルトの名無しさんNGNG
飽きた。
0561555NGNG
>>559
すみません、では何が不定なのでしょう
0562デフォルトの名無しさんNGNG
>>561
書いた奴の気持ちになって読め
0563555NGNG
どうも良く分からないです。
前半部の例は「関係演算子は正常にはたらく」例として
挙げられていますから、後半部の「しかし〜」以降の内容は
「関係演算子は正常にはたらかない」ということを
暗に示しているのだと思うのですが、そうではないのでしょうか
0564デフォルトの名無しさんNGNG
>しかし、同じ配列のメンバーをさしていないポインタ同士の演算や
>比較を行うと、結果は不定となる
=「もし p!=q ならば、p==q または p<q または p>q」

別に矛盾はしていない。
ただ、p!=q なら p!=q であるのは間違いないだろうな。
何しろ

>…つまり、pとqが同じ配列の要素をさしていれば、==、!=、<、>=
>などの関係演算子は正常にはたらく。
=「もし p==q ならば、p==q」

だといっているのだから。
0565デフォルトの名無しさんNGNG
> ただ、p!=q なら p!=q であるのは間違いない
それは間違いないだろう。p!=qなのだから。
しかし、同じ配列のメンバーをさしていないポインタ同士の演算では
常にp!=qが成立するということが保証されているかどうかの問題だろ?

不定であるのならば、規格としては保証されていないということでFA?
0566デフォルトの名無しさんNGNG
詳しい人いないかなあ
仕様はともかくデファクトではどう扱われるのか興味ある
0567555NGNG
>>564
「比較を行うと結果は不定」の結果というのは
比較演算の結果ではなく、そういうことを指して言ってたんですか…

何とも分かりづらいですが、比較演算の結果としては
正しい論理値が得られるわけですね。安心しました。


| 同じ配列のメンバーをさしていないポインタ同士の
| 演算や比較

意味があるかないかは別として、
char c1, c2;
char *p1=&c1, *p2=&c2;
if (p1 < p2) 〜

このような比較演算を実行すること自体は
規格上問題はないのでしょうか。
0568デフォルトの名無しさんNGNG
>>566
デファクトでは直感的な理解で問題ないのでは?
大抵はポインタ=そのマシンにおけるメモリアドレスとして扱われてるだろうし。
0569デフォルトの名無しさんNGNG
メモリリークの検査のためにプログラムのmain部を何度も繰り返すテストをしました。
リークは問題なかったのですが、長時間(2、3時間ぐらい)続けていたら
mallocが0を返す事がありました。
メモリのブロックの断片化か何かでメモリ確保できなかったと想像していますが、
プログラムの性質上、メモリ破壊は考えにくく、
再現性がないので原因が特定できていません。
これを防止する方法はあるでしょうか。
(WindowsXPSP1 VC6SP6)

とりあえず再発したら同じサイズのメモリ片に対してmalloc/freeを繰り返さずに
キャシュしておく方法を試すつもりです。遅いですし。
0570デフォルトの名無しさんNGNG
>>550
但しchar配列を文字列として扱っているなら'\0'で終わるのが通例。
0571デフォルトの名無しさんNGNG
セグメントありなメモリモデルだと、別の配列をさすポインタが同じ値
になることがなかったっけ

0572デフォルトの名無しさんNGNG
オフセットだけ同じってか?
ラージポインタでもなんでも、全く同じ値になったら駄目だろう。
0573デフォルトの名無しさんNGNG
関数の中でポインタに配列の頭のアドレスをおしえても、呼び出し側に戻って(pt++)で一文字づつ表示させても、全部0、0、0、0...です。なんででしょうか?
0574デフォルトの名無しさんNGNG
>>573
最小限のコード出せ
0575デフォルトの名無しさんNGNG
わけわからんが、関数内でポインタの指す領域を変更したのではなく、
ポインタ変数の値を変更したのなら、呼び出し元には反映されんよ。
0576デフォルトの名無しさんNGNG
>>567
演算を実行すること自体は問題ない。
どんな値が返ってくるかはわからないが、少なくともディスプレイが突然爆発したりはしない。
0577555NGNG
>>576
了解しました。
ありがとうございます。
0578デフォルトの名無しさんNGNG
ニ、三時間に一回mallocが0を返すっていったら、
原因はやっぱり宇宙線以外考えられないから、
対策としては鉛の板でパソコンを覆うことだね。
0579573NGNG
int main(void)
{char i=0;

   char ss[80]
   int a[80], *apt=a;

     gets(ss);

      op(ss,a,apt);

printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);


void op(char ss[],int a[],int *apt)
{
   char i=0;

while(a[i]){a[i]=ss[i++];}
apt=a;
}
0580573NGNG
ソースは上の通りです。
0581デフォルトの名無しさんNGNG
>>554
creatとかopenのシステムコールをフックするモジュール書けば検知できるけど、
一般的にはファイル作る側が勝手に作るんじゃなくて、作る時に管理プロセスに
通知するとかDBに登録するとかの構成にしたほうがスマートだろう。

Linux板行けばもっといい方法教えてくれるんじゃない?
0582569NGNG
>>578
ありがとうございました。
仰るとおり宇宙線が原因でした。
鉛の板をパソコンに覆ったところ、無事対策できました。
今後再発するようでしたら鉛の板を増築しようと思います。
0583デフォルトの名無しさんNGNG
>>582
宇宙線の影響はほとんどないと思われます。
もっとも有力な原因はあなた自身の電波ではないでしょうか。
0584デフォルトの名無しさんNGNG
>>580
gets()はさておき、op()の第三引数意味無かったり、a[i]=ss[i++];とか
突っ込み所は多いけど、そのコードなら表示内容が0ばっかにはならんだろ?
0585470NGNG
>>581様
ありがとうございます。実はファイルを生成する側のモジュールは
自分達で生成したものではなく、とある製品が生成するものなので
こちらの都合にあわせてDB等に通知してもらう事が出来ないんです(´;ω;`)

>Linux板行けばもっといい方法教えてくれるんじゃない?
ですね、アドバイスどもでした。そちらでも聞いてみます。
0586デフォルトの名無しさんNGNG
>>580
清書してみました。おいらもこれが全部0になるとは思えないのだが・・・
環境は何??

void op(char *ss,int *a )
{
for(;*ss; a++, ss++)
*a = (int)*ss;
*a = 0;
}

int main(void)
{
char ss[80];
int a[80], i;

gets(ss);

op( ss,a );

for( i = 0; a[i]; i++ )
printf( "%d\n", a[i] );
}
0587デフォルトの名無しさんNGNG
>>573
ポインタについて根本的に判ってない悪寒。
指摘しようと思ったが、指摘箇所が二桁になりそうなのでやめた。

>>584
自動変数の内容が0になってしまう環境ならそれも有り得る。
0588デフォルトの名無しさんNGNG
メイン関数閉じてませんでした。直しました
何入力しても、0、0、0...です..
int main(void)
{char i=0;

   char ss[80]
   int a[80], *apt=a;

     gets(ss);

      op(ss,a,apt);

printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);printf("%d\n",a[i++]);
return 0;
}
void op(char ss[],int a[],int *apt)
{
   char i=0;

while(a[i]){a[i]=ss[i++];}
apt=a;
}
0589デフォルトの名無しさんNGNG
>>586
おいおい、清書の段階でバク取っちゃダメだろ。
0590デフォルトの名無しさんNGNG
>>579
初期状態ではa[]の中身は何もないんだよな?
while(a[i])してるが、iはss[i++]でインクリメントされた後の数
つまり、a[i]の判定に使われているのはまだデータが入力されていない場所じゃないか?
a[0]の初期値がNULLだったら、そのまま終了してしまうぞ
ゼロフィルされたデータだったら、そりゃ0ばっかりになる
0591デフォルトの名無しさんNGNG
あー、条件判断ssじゃなくa見てたのか
こりゃ釣られちまったぜ
0592デフォルトの名無しさんNGNG
whileと代入文を別の行にしてデバッガ動かせば一発でわかるバグじゃないか?これ
0593_gunzipNGNG
>>585
kernel2.4付属ののdnotify.txt読んだ?
あとはdnotifyのソースを参照するとか。
IRIXで向けにFAMとかいうライブラリもあった気がする。
0594環境は..NGNG
C言語をはじめよう! Ver.1.1.0.9
Copyright (c) 1998-2004 AOK.
と
LSI C-86 Ver. 3.30c試食版
です。
0595デフォルトの名無しさんNGNG
いや、答えでてるだろ、もう
0596デフォルトの名無しさんNGNG
ホントだ。すまん。
0597デフォルトの名無しさんNGNG
>>594
>>591-592
0598594NGNG
ありがとうございます。もっと修行します
0599デフォルトの名無しさんNGNG
>>598
ところでcharを整数型として使うな。文字型だと思え。
整数はint使え。
0600デフォルトの名無しさんNGNG
>>599
intよりlongとかのほうがよくないか?
0601デフォルトの名無しさんNGNG
http://proxy.ymdb.yahoofs.jp/users/e5f9ed2a/bc/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8/a.jpg?bcMpUvBBlEO9YH6Z
float MySin(float x,int m)内のルーチンがよく分かりません。
0602デフォルトの名無しさんNGNG
>>599
文字型とか言うな
0603デフォルトの名無しさんNGNG
>>601
>float MySin(float x,int m)内のルーチンがよく分かりません。
いや、それを作れという問題じゃないのか?
0604デフォルトの名無しさんNGNG
>>599
Cに文字型なんてねーよ
0605デフォルトの名無しさんNGNG
低能どもが
0606デフォルトの名無しさんNGNG
>>605
よう。元気か?前スレ893
レポートはちゃんとでっちあげることができたか?
0607デフォルトの名無しさんNGNG
どこの前スレだよ
0608デフォルトの名無しさんNGNG
>>606
お前、スレ勘違いしてないか?
0609デフォルトの名無しさんNGNG
ここは酷いスレですね
0610デフォルトの名無しさんNGNG
宇宙線て何?
ヴァカ?
0611デフォルトの名無しさんNGNG
restrict キーワードについて教えてください。

int * restrict p[7];

とすると、コンパイラに怒られました。restrict ポインタ
の配列は意味がないのでしょうか?

エイリアスなし、変更なしのポインタを

int * const restrict p;

と宣言するとコンパイラの最適化を助けることができますか?

よろしくお願いいたします。
0612デフォルトの名無しさんNGNG
xの2n+1乗ってCで書くにはどうしたらいいのかなぁ。
もちろんXには数字を代入するんだけど。
0613デフォルトの名無しさんNGNG
>>612
printf( "%dの2n+1乗", number );
0614デフォルトの名無しさんNGNG
>>612
最初にxとnを読み込んでおいて、
さっきいった関数に読み込んで累乗の計算させるんですけど。
0615デフォルトの名無しさんNGNG
Cソース中から、決められたディレクトリにあるファイルを
FTPで送信(PUT)することってできるんでしょうか?
fprintf(stdout, ゙ftp ホスト名・・・
なんて記述じゃ駄目でしょうか?
やはり、ソケットを使ったプログラムにするしか無いのでしょうか?
なにせ、ソケットの知識が無いもので。
すいませんが、よろしくお願いします。
0616デフォルトの名無しさんNGNG
>>612
#include <math.h>してpow()、powf()またはpowl()
0617デフォルトの名無しさんNGNG
>>611
君は素晴らしい。才能がある。intelやAMDに入社すべき。
0618デフォルトの名無しさんNGNG
>>615
無理です。
0619デフォルトの名無しさんNGNG
http://vvv.ciao.jp/cgi-bin/test/pic/28.txt

1984 taro okamoto [email protected]
1999 tanaka ichiro [email protected]
1945 takasi okada [email protected]

上記のリストをコンパイルしたプログラムに出力したのですが、
最初の一行目がメールアドレスのところしかディスプレイには表示されません。
あとの二行は正常に表示されるようです。
原因が不明で悩んでいます。どなたか教えてください。
0620デフォルトの名無しさんNGNG
>>615
コマンドファイルを生成してリダイレクトしちゃう?

#include <stdio.h>

main()
{
char command_buf[256];
FILE *fp;

fp = fopen( "command.txt", "w" );
fprintf( fp, "open HOSTNAME\n" );
fprintf( fp, "USERNAME\n" );
fprintf( fp, "PASSWORD\n" );
 :
 :
fprintf( fp, "quit\n" );
fclose( fp );

sprintf( command_buf, "ftp<command.txt" );
system( command_buf );
}

と思ったが、パスワードの入力部分で止まっちゃうだろうな・・・たぶん・・・
0621デフォルトの名無しさんNGNG
>>620
そういう用途のために、止まらないftpクライアントもあるよ。
0622デフォルトの名無しさんNGNG
>>619

まず、indexの宣言がポインタもしくは配列じゃないとダメでしょ?
ばっふぁおーばーらんで打ち壊してるよ。

あとはwhileの条件文だが、
while(scanf(中略)==4)
にした方がよくねぇか?
これだと、1文字とか入力した段階で終われるし。
0623デフォルトの名無しさんNGNG
そもそもindex無意味のような
0624デフォルトの名無しさんNGNG
>612->614
センス良すぎ。笑ってたら聞こうとした質問忘れた
0625デフォルトの名無しさんNGNG
構造体の中に関数ポインタを含ませるなんて事、出来ま・・・・・・・・・・せんよね。
0626高校生NGNG
それ位己でやってみそ。
0627デフォルトの名無しさんNGNG
>>625
Cで virtual 使いたくなったときの常套手段
0628デフォルトの名無しさんNGNG
出来るんか!Σ(´Д`;)
0629デフォルトの名無しさんNGNG
むしろ出来ない理由がまったく思いつかないが・・・。
0630デフォルトの名無しさんNGNG
うほっ、出来た。
書き方悪かっただけなのね・・・

お邪魔しますた
0631デフォルトの名無しさんNGNG
>>610
地球を貫く強い紫外線の一種です。
0632デフォルトの名無しさんNGNG
太陽風
0633デフォルトの名無しさんNGNG
>>615
Unix でならやった事あるよ。
/dev 配下のファイルに直接アクセスしたような記憶が...
0634デフォルトの名無しさんNGNG
質問です。
1〜16の数をそれぞれ 1/16 で発生させるプログラム
を作りたいんですがどうやればいいのでしょうか?
誰かご教授下さい。
0635デフォルトの名無しさんNGNG
>>634
rand()%16+1
0636デフォルトの名無しさんNGNG
下位ビットがどうのとか荒らしてみる
0637635NGNG
おっと、
ランダムにとは書いていないな。ならば(ry
0638デフォルトの名無しさんNGNG
>>634
確実に1/16発生させたければ、160個ほどの配列を作り1〜16を10回繰り返し入れ
シャッフルさせ、一個ずつ取り出す。無くなったら先頭に戻ってシャッフル
0639デフォルトの名無しさんNGNG
scanf()を用いて以下の通り関数の値を出力するプログラムを作戦してください

1を入力したときにsin(x)の値
2を入力したときにcos(x)の値
3を入力したときにtan(x)の値

お願いします
0640デフォルトの名無しさんNGNG
>>639
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0641デフォルトの名無しさんNGNG
>>555
"<" などによる大小比較と、 "-" による距離の算出は同じ配列上にあるポインタ同士で有効。
"==" などの等値比較にそのような制限は無い。

ttp://www-ccs.ucsd.edu/c/express.html#Less Than
ttp://www-ccs.ucsd.edu/c/express.html#Equals
0642デフォルトの名無しさんNGNG
>>639
-lmでいいと思います


と、エスパーレス
0643デフォルトの名無しさんNGNG
scanf("%d",a);
if(a==1){printf("%f\n",sin(x));}
とか。
0644デフォルトの名無しさんNGNG
int (*a)[3];
int *a[3];
↑二つの違いは判るのですが、()によって
 配列[3]へのポインタになるのか すっきりしません。
 ルールですか?それとも[]演算子の結合ルールによる記述なのですか?
 教えてください。
※a[x][j] = *(*(a+x)+j)
0645デフォルトの名無しさんNGNG
>>644
Cの変数/関数宣言は大体
型 式;
の形になるように出来てる。
上の int (*a)[3] の場合、式 (*a)[n] の型が int になる。だから a は配列へのポインタ。
下の int *a[3] の場合、式 *a[n] の型が int になる。だから a はポインタの配列。
0646デフォルトの名無しさんNGNG
>>509
for に限った話でもないし、ちょっと遅いレスだけど

int
main (void)
{
int i;

i = 0;
printf("%d, %d, %d\n", i++, i++, i++);

i = 0;
printf("%d, %d, %d\n", ++i, ++i, ++i);

return 0;
}

こんな感じになるのも注意。
0647デフォルトの名無しさんNGNG
>>646
どんな結果になるわけ?
0648デフォルトの名無しさんNGNG
>>647
環境依存なので自分の環境で試すがよろし
0649デフォルトの名無しさんNGNG
>>648
わかってて聞いてんだよ
0650デフォルトの名無しさんNGNG
>>645
質問の仕方が悪かったかもしれん、
大きさnの配列へのポインタを定義する際に
()を付与する必要があるが、付与しなければならない理由が今一
理解できていない。
0651デフォルトの名無しさんNGNG
int *a[n];はint*[n]型、int (*a)[n]はint(*)[n]型。
0652706NGNG
お願いします *
* *
* * *
* * * *
* * * * *
を表示するプログラムを作りたいんですけどどうすればいいでしょうか?
0653デフォルトの名無しさんNGNG
しつこい
0654デフォルトの名無しさんNGNG
>>652
宿題スレへ
ダディクールがC/C++の宿題を片づけます 32代目
http://pc5.2ch.net/test/read.cgi/tech/1097592876/
0655706NGNG
*
       * *
      * * *
     * * * *
    * * * * *
です。すみません   
0656デフォルトの名無しさんNGNG
>>655
はいよ。
main(){printf("*\n       * *\n      * * *\n     * * * *\n    * * * * *\n");}
0657デフォルトの名無しさんNGNG
>> 650

前置演算子 * は [] よりも優先度が低いからっす。似たようなものに、

void (*foo)(void);
void *foo(void);

とかあります。
0658デフォルトの名無しさんNGNG
>>657
「*a」ポインタ変数→[]演算子ってなって 配列へのポインタ?
こうなると、先にポインタ変数である事が定義されて
[]演算子で指定した大きさを参照するポインタになる?

逆に
*a[n]
[]演算子→「*a」ポインタ変数になって、ポインタ変数の配列になる?
これだと、配列である事が先に定義されてから
その一要素サイズがポインタ変数(int)である事が定義されるのか?

[]()の演算子の優先順位が関係してるから、()を付与しなければ
配列へのポインタとして定義できないのかな。

ここの所が知りたい。
※今、ちょうど この答えが出たんだが こういうことですか?
0659デフォルトの名無しさんNGNG
*a は *(a+0) と表せ、a[0]と同じで、
同様に
*(a+1)はa[1]
*(a+2)はa[2]...となる。
例えばポインタ変数aはとある領域、仮に1111番地
を指すとすると、
*(a+1)は1112番地
*(a+2)は1113番地...を示す。
つまり、a[i]はポインタ変数aの指す領域からi番目の場所を指す。
0660デフォルトの名無しさんNGNG
foo[]
のように[]がくっつくと、
最初に配列であることが確定するので
*foo[]とすると

foo は "array" of pointer
となりまs

順番を変えて、
foo は "pointer" to array
にするには
(*foo)[]
としまs

そんな感じで
(*foo)()
で "pointer" to function
となりまs

...のようなことが
K&Rの5章12節にかいてありまs
0661デフォルトの名無しさんNGNG
配列のポインタって全く使って無いな。。。
全く頭に無かったけど。いつ使うの?
0662デフォルトの名無しさんNGNG
多元配列を引数で受け渡す時とか、C++でnew演算子を使用して多元配列の領域を
確保した際とか。
0663デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
char a[100];
char *p;
char (*pp)[100];
char *p2;

p = &a[0];
pp = &a;
p2 = &a; /* warning */

printf("p = %08x, pp = %08x\n", p, pp);
p++;
pp++;
printf("p = %08x, pp = %08x\n", p, pp);

return 0;
}
0664デフォルトの名無しさんNGNG
>>660ちゃんと最後の「u」まで打てや(@�u@ .:;)
0665デフォルトの名無しさんNGNG
>646>648
ありがとうございました。i++と++iの違いはわかります。配列やポインタについてはあの後復習したら理解できました。


>647>649
ガッ ガッ
0666555NGNG
>>641
ありがとうございます
ここですね。<, =<, >, >= について以下のように書かれていました。
| You can compare two pointer values only if they are the addresses
| of elements within (or just beyond) the same array object.

2つのポインタが同じ配列の要素を指している場合に限って
それらの大きさを比較してもよいというわけなんですね。
もっともだと思います。また == の解説にはこのような
記述はありませんでした。納得です。
0667デフォルトの名無しさんNGNG
=<
=<
=<
0668デフォルトの名無しさんNGNG
>>667
餓鬼みたいな揚げ足取ッてンなヨ
0669デフォルトの名無しさんNGNG
オレが許してもコンパイラが許さん
0670デフォルトの名無しさんNGNG
みなさん、ヘッダファイルのインクルードガードって
どういう工夫してますか?
大文字? 小文字? アンダースコア使う?
ついでに GUID も混ぜ混んじゃう?

-------------------------
#ifndef MYLIB_H
#define MYLIB_H

XXXXX
XXXXX
XXXXX

#endif
-------------------------

ANSIでは、アンダースコアで始めちゃだめ、とかいろいろあるんですよね?
ん、アンダースコア2発だったかな??
0671デフォルトの名無しさんNGNG
     >667>669
        _, ,_   ガッ ガッ      _**_*
     ( ・д・)三●☆))Д´;((☆拳三(・А・ )  
0672デフォルトの名無しさんNGNG
アンダースコア開始は駄目だからね
駄目駄目、駄目だからね
0673デフォルトの名無しさんNGNG
おれWindowsでしかソフトつくったことないんだけど、
UNIXにもGUIDの考え方ってあるの?
0674デフォルトの名無しさんNGNG
なんでそんなに「駄目」なの?
0675デフォルトの名無しさんNGNG
システム予約の識別子、って事になってなかったっけ。
まぁやめとけと。
0676デフォルトの名無しさんNGNG
MACアドレスとかもGUIDなんじゃねーの?
と用語サイトを検索した結果をそのまま書く俺。
0677デフォルトの名無しさんNGNG
これからC始めるならどのコンパイラがいいですか?
OSはXPです。
とりあえず>>2のVC++toolkit2003を入れてみました。
0678デフォルトの名無しさんNGNG
>>677
それでいいからやれよ
0679デフォルトの名無しさんNGNG
おれ >>673 です。
GUIDには、いつも世話になっています。
これって生成ソースが公開されてるのかな。
VisualStudioだったら「GUIDの生成」というメニューがあるけど、
gccの関連ツールとか関連ライブラリにはそんなのあるのかなと思って。
0680デフォルトの名無しさんNGNG
>>678
えぇこというねぇ〜
0681デフォルトの名無しさんNGNG
#include <stdio.h>
main(void){
double x;
while(1){
printf("整数入力してね : ");
if(scanf("%lf",&x)!=1) break;
if(x>=0.0)
printf("%15s%22.15e\n%15s%22.15e\n%15s%22.15e\n",
"x=" , x ,
"sqrt(x)=" , sqrt(x) ,
"pow(x,x)=" , pow( x , x ));
else { printf("負数は無理 \n"); break; }
}
printf("EXIT \n");
}

結果
整数入力してね : 2
x= 2.000000000000000e+00
sqrt(x)= 1.414213562373095e+00
pow(x,x)=3.903118602145848e-322
整数入力してね : 3
x= 3.000000000000000e+00
sqrt(x)= 1.732050807568877e+00
pow(x,x)=-2.424659668443082e-231
整数入力してね : 4
x= 4.000000000000000e+00
sqrt(x)= 2.000000000000000e+00
pow(x,x)= 8.000000000000140e+00
なぜに?
0682デフォルトの名無しさんNGNG
そもそもGUIDが必要な理由がわかれば答えもわかるはず。
0683デフォルトの名無しさんNGNG
>>681
コンパイル時にwarningでてないか?
0684681NGNG
>>683
warning出ません
ちなみにMac OS 10.2 gcc3.1 です
0685デフォルトの名無しさんNGNG
warningはしょせんerrorじゃない
0686デフォルトの名無しさんNGNG
うちのコンパイラは出してくれるなぁ
test.c : warning:#include <math.h>を忘れています
0687デフォルトの名無しさんNGNG
if(a=kansu(b))
こんなんでも出すものがあるしな。
0688デフォルトの名無しさんNGNG
>>682
わかんねぇ。
0689681NGNG
>>686
#include <math.h> 入れてみました
結果
整数入力してね : 2
x= 2.000000000000000e+00
sqrt(x)= 1.414213562373095e+00
pow(x,x)= 4.000000000000000e+00
整数入力してね : 3
x= 3.000000000000000e+00
sqrt(x)= 1.732050807568877e+00
pow(x,x)= 2.700000000000000e+01
整数入力してね : 4
x= 4.000000000000000e+00
sqrt(x)= 2.000000000000000e+00
pow(x,x)= 2.560000000000000e+02
なにげに進歩?
0690デフォルトの名無しさんNGNG
>>689
進歩ってどういう意味だ?ちゃんと答え出てるだろ
0691681NGNG
>>690
アホですんません
答え出てますね パニ食ってました
0692デフォルトの名無しさんNGNG
みんなが普段使ってる文字フォントはなんですか
0693デフォルトの名無しさんNGNG
>>692
うるせえ馬鹿
0694デフォルトの名無しさんNGNG
はい
0695デフォルトの名無しさんNGNG
>>665
>>646は実行したときの結果が思っているものとは違うかも、ってこと

i++ と ++i の違いじゃなくて、
i++, i++, i++ ってなっているときに
0, 1, 2 とか 1, 2, 3 となるのが当然とは限らない

>i++と++iの違いはわかります。
>理解できました。
とあるので、分かってくれているのかもだが
実行せずにレスしたんなら一度試しておけ

0696デフォルトの名無しさんNGNG
あ、あの、結構前に restrict ポインタの配列等について質問した
ものなのですが... ひょっとして忘れられてるのかと思ってひつこく
もう一度投稿します。困っています。気になって夜も眠れません。

static const int * const restrict * const restrict * const restrict ppp = ...

とかなってしまいます。ひょっとしたら僕は騙されているのではないか?
と思い始めています。typedef で見た目スッキリにはできるけれども、
僕の心はスッキリしません。エイリアス一切なしのソースを書き、その
決意をコンパイラにオプションで伝えた方がよっぽどましです。

そもそも、restrict キーワードなんて使っている人は、

 ぼ く だ け で す か ?
0697デフォルトの名無しさんNGNG
この辺を言っているのかな。
ISO/IEC 9899:1999 6.5.2.2 -10
The order of evaluation of the function designator, the actual arguments,
and subexpressions within the actual arguments is unspecified.
0698デフォルトの名無しさんNGNG
アセンブラリスト見ればいいじゃないか
0699デフォルトの名無しさんNGNG
C言語って何ですか?
0700デフォルトの名無しさんNGNG
>>699
貴方には関係の無い物です
0701デフォルトの名無しさんNGNG
うひょひょ
0702デフォルトの名無しさんNGNG
いくつかの標準関数の引数にはrestrictがつけられるようになったんじゃなかった?
memcpyとか。
0703665NGNG
>646
実行結果

2, 1, 0,
3, 2, 1,

ひえーっカウントダウンしてます!
表示の順番が逆に!
0704デフォルトの名無しさんNGNG
>>703
Sun-OSだと昇順になるよ。
引き数をスタック渡しするCPUだと降順になると思われ。
0705デフォルトの名無しさんNGNG
>>704
そんな決まりは無い
0706デフォルトの名無しさんNGNG
Cの引数の評価順は不定
0707デフォルトの名無しさんNGNG
不定というと、毎回バラバラみたいな印象だな。
0708デフォルトの名無しさんNGNG
Cの引数の評価順は俺に聞くな
0709デフォルトの名無しさんNGNG
J=0の畤、

*(a+J++)
は、a+何と書いたことになりますか?
0710デフォルトの名無しさんNGNG
>>709
当然 a+J++ と書いたことになります
0711デフォルトの名無しさんNGNG
0
0712デフォルトの名無しさんNGNG
>>709
*(a+(J++))と同じになると思われる

今、お遊びでVC++ .NETで
int i=1, j=2, k;
k = i+++j;
としてみたら、
k = (i++)+j
として処理された・・・i+(++j)とどっちになるかと思ったけど、つまらん結果だった
0713デフォルトの名無しさんNGNG
>711さん ありがとうございます。
0714デフォルトの名無しさんNGNG
if (>>709が聞きたかった事 == >>712)
>>711 == >>713 && printf("乙\n");
0715デフォルトの名無しさんNGNG
自演したと言いたいのか?
なんか知らんがガンバレ。
0716デフォルトの名無しさんNGNG
>>712は>>709が聞きたかったこととは少しずれてるが、
>>711の補足として読んでおけばいいのかな?
>>709はJが0の場合の計算結果を知りたかったみたいだし

>>712のがちょっとおもしろかったので、俺も今試してみた。
i++++jもi+++++jも不可だな
i+++++jは(i++)+(++j)と処理したらMSを見直したんだが
0717デフォルトの名無しさんNGNG
見直すって?
((i++)++)+jでもi+(++(++j))でもなく、そうなるべきという根拠は何だ。
0718デフォルトの名無しさんNGNG
>>712,716
演算子は可能な限り長くなるように解釈すると仕様で決められていたと記憶しているが。
0719デフォルトの名無しさんNGNG
頻繁に使われる   って何ですか?
どんな働きをしますか?
0720デフォルトの名無しさんNGNG
>>719
そういう働き
0721デフォルトの名無しさんNGNG
>>717
いや、((i++)++)+jでもi+(++(++j))でも構わんのだけど、
i+++jを通すなら、i+++++jも適当な解釈で通してくれてもいいじゃん、って思っただけ
融通利かせてくれたら、ネタ提供してくれたMSを見直す、って意味だよ
0722デフォルトの名無しさんNGNG
>>719
http://compsoc.dur.ac.uk/whitespace/
0723デフォルトの名無しさんNGNG
演算子の優先順位のお勉強からはじめようね。
とりあえず。
0724デフォルトの名無しさんNGNG
あぁ、&nbsp;って書いてたのか。
また何かネタかと思った。
0725デフォルトの名無しさんNGNG
>722英語がわかりません
0726デフォルトの名無しさんNGNG
*(p++)++ は出来ると思うんですけど、
*++(++p) ってやっても大丈夫?
0727デフォルトの名無しさんNGNG
http://tohoho.wakusei.ne.jp/html/char.htm
0728デフォルトの名無しさんNGNG
ありがとうございます!よくわかりました!
0729デフォルトの名無しさんNGNG
プログラムの勉強なんて俺にとってはぶっちゃけウォナニー。英語も数学も全くだめなんだから。
16でGUIアプリに挑戦中とかいう奴もいる。俺は18。始めて3ヶ月。
鬱だ。この差は埋められないのか...
0730デフォルトの名無しさんNGNG
なんちゃって
0731デフォルトの名無しさんNGNG
でも気持ちいいんだろ?
0732デフォルトの名無しさんNGNG
ウォナニーが出来れば充分
0733デフォルトの名無しさん NGNG
[email protected]

初めまして、C言語を初めて1ヶ月もまだ経っていない16歳です。
メッセにてC言語のことを助言及び教えていただける方、募集中です。
私の質問に答えてくれる人、登録お願いいたします!!
0734デフォルトの名無しさんNGNG
>731
はい..気持ち...いいです..(w
0735デフォルトの名無しさんNGNG
とりあえず、荒らし依頼として通報しとくね ^^
0736デフォルトの名無しさんNGNG
確かに半年立つまでは気持ち良かったが...(ry
0737デフォルトの名無しさんNGNG
>>726
++ 演算子の結果は右辺値なので不可。
0738デフォルトの名無しさんNGNG
質問
/*compute Mass of Black Hole */
/*Print Data for M vs C vs P Plot */
#include <math.h>
#include<stdio.h>

main( )

{

float C0, /* Orbital circumference, km */
P0, /* Orbital Period, seconds */
G; /* Gravitational constant km**3/s**2 per solar
mass*/
float pi, MassHole;

G=1.327E11;
pi=3.14159;

for(C0=1E5; C0 < 1E7; C0=C0+2E5){
printf("C0 is : %f\n",C0);
for(P0=10; P0 < 1000 ; Po=P0+10){
MassHole=C0*C0*C0/(2*pi*G*P0*P0);
printf("%f %f\n",P0, MassHole);
}
}
}
  上記のコードでコンパイルしようとしてもエラー E2451  未定義のシンボル P0( 関数main() )
トエラーメッセージが出てコンパイルできません。どうしたら解決しますでしょうか?
0739デフォルトの名無しさんNGNG
嘘を吐くな
未定義なのはPoだろ
>for(P0=10; P0 < 1000 ; Po=P0+10){
エラーメッセージの意味を読み取る努力しろ
0740デフォルトの名無しさんNGNG
>>738
Poってなに?

おっぱいおっぱい!!
0741デフォルトの名無しさんNGNG
>>738
眼鏡かける。
0742デフォルトの名無しさんNGNG
Windows 環境なのですが、コマンドプロンプトに色をつけることは出来ないのでしょうか?
"\x1b[33m" などを使っても、文字に色がつきません。
どうすればよろしいのでしょうか?
0743デフォルトの名無しさんNGNG
GUIなどは標準Cではできない






そもそもなんで?
OS書くため生まれた言語としては
グラフィックが扱えないと言うのはいささか手落ち、
そんなことが あってたまるかの一言。
0744デフォルトの名無しさんNGNG
>>742
NT系統はANSI.sys入ってないからエスケープシーケンス不可
9xは標準で入っているから可の場合「も」ある

NT系統は自分でANSI.sys入れることが必須だが、
入れて正しく記述しても付かない人も多いし、上手いこと付いた場合でも
それを人に渡す場合、相手も入れてないと結局色はつけられない
0745742NGNG
>>744
XPもNT系統なのでしょうか?

無理そうなので、別な方法で(特定の文字列を)強調してみます。
ありがとうございましたm(_ _)m
0746デフォルトの名無しさんNGNG
>>743
適切なライブラリさえあれば、標準Cで十分可能ですが。
0747デフォルトの名無しさんNGNG
>>743
別にできないとは規定されてないぞ。
fread/fwrite で VRAM を読み書き出来るようにすれば良い。
0748デフォルトの名無しさんNGNG
>>743
オブジェクトモデルが規定されていないため cdecl のような非標準拡張が必要となったまで
リッチー氏が C を設計した当時、Unics はモノリシックカーネルでよかったので静的リンクについてしか設計をしていなかった
0749デフォルトの名無しさんNGNG
>>745
2000, 2003, XPなど ME以降に出たものはNTカーネルだから、
NT系統と言ってしまっていいだろう。

できないわけではない。
テキストファイルに一行書き加えるだけだが
ttp://kasai86.ld.infoseek.co.jp/dos/esc.htm
それでできるようになるのは「自分だけ」だ。
配布用には向かない
0750デフォルトの名無しさんNGNG
2000はMeより前だがな
0751デフォルトの名無しさんNGNG
>>743
全ての環境のI/Oなんて標準化できない、
お前の使ってるヘボイPCとOSが世の全てじゃない。
0752デフォルトの名無しさんNGNG
>>750
T-engineみたいなの
0753デフォルトの名無しさんNGNG
>>743
C言語が出来た頃のコンピュータを見てきてからそれを言えヴォケ
0754デフォルトの名無しさんNGNG
>>749
cygwinのbashとかはどうやって色をつけてるんだろう?
0755デフォルトの名無しさんNGNG
>>749
config.ntは16ビットアプリ用だから32ビットコンソールアプリだとそれでも無理のはず。
32ビットアプリをNT上で動かすときにはこういうのを使うしかないよう。
http://www.kumei.ne.jp/c_lang/intro/no_58.htm
http://www.kumei.ne.jp/c_lang/intro/no_59.htm

どうしてもエスケープシーケンスを使いたいのならLSI-Cでも使え。
0756デフォルトの名無しさんNGNG
>>754
bash は コマンドプロンプト ではない
0757デフォルトの名無しさんNGNG
数学にもC言語にも強いお方助けてくださいまし・・・

多項式の次数Nを読み込む
N+1個の係数a[0]・・・a[N]を読み込む

y=aN XのN乗+aN-1 XのN-1乗+・・・+a1 X+a0

=(((aN X+aN-1)×X+aN-2)×X+・・・+a1)×X+a0

【aNのNは下付きのちっちゃいNで、×は”かける”、Xは”エックス”】

読み込む部分はmain関数でおこない
多項式の計算する部分を関数にせよ
(戻り値は多項式の場合)

式がかなりわかりずらいですがなにとぞよろしく
0758デフォルトの名無しさんNGNG
要は多項式をHorner(ホーナー)形式に書き換えよということか?
0759デフォルトの名無しさんNGNG
むむ?
ホーナー形式?
そんな難しい話ではないはずなのだが。。。
0760758NGNG
>>757
あぁ、早とちりした。ホーナーじゃないか。で、何がしたいんだ?
0761デフォルトの名無しさんNGNG
つまり半スイング状態でホームラン打つ奴のことだな
0762デフォルトの名無しさんNGNG
C言語の課題で>>757これを作れと。。。
なんだかよく分からなくてあの授業にはもうついていけんorz
0763デフォルトの名無しさんNGNG
>>761
もえぷろきたーー!!
0764デフォルトの名無しさんNGNG
>>762
エスパーでもないとこんな問題文読み取れない。
関数にしてほしいのは何だ?多項式の次数と係数を配列にでもして
引数にとって値を返すのか?
0765デフォルトの名無しさんNGNG
がんがれー
0766デフォルトの名無しさんNGNG
>>762
具体例をあげてみては?
0767デフォルトの名無しさんNGNG
あー下付きのNとか階乗の表示がしづらい。。。
数列のつもりなんだがそこらへんは伝わってた?
0768デフォルトの名無しさんNGNG
>>1
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0769デフォルトの名無しさんNGNG
了解。さわがせました。
でも、ここで>>757解けるかたいたらよろ
0770デフォルトの名無しさんNGNG
ダディクールスレを見て逃げ帰ってくる予感
0771デフォルトの名無しさんNGNG
>>762 >>767
なんでもかんでも他人のせいにする根性は
社会に出る前に直しておけ
0772デフォルトの名無しさんNGNG
>>756
あれ?、コマンドプロンプト上で動いてるようにしか見えないんだけど違うのか・・・
0773デフォルトの名無しさんNGNG
>>771
はい、なおします。
でも、大学でたら永久就職する予定なんだが...

永久就職も社会に出るのと同じか...
どっちにしろもうちょっと自分で努力します
0774デフォルトの名無しさんNGNG
>>773
永久就職とは?
0775デフォルトの名無しさんNGNG
大学卒業と同時に無期懲役刑
0776デフォルトの名無しさんNGNG
>>774
あれ?永久就職しらん?
結婚すよ。

数学の助教授とね。
0777デフォルトの名無しさんNGNG
永久就職を知らん人も知らん人だが
性格を注意されて永久就職するからって言い訳するのもなぁ・・・
なんていうか・・・orz
0778デフォルトの名無しさんNGNG
>>767
y=aN XのN乗+aN-1 XのN-1乗+・・・+a1 X+a0
これは
y=a_N*X^{N}+a_{N-1}*X^{N-1}+…+a_1*X+a_0
と書くとわかりやすい。
数式を書くとき、TeX風の疑似表現をしてみると良いでしょう。
0779デフォルトの名無しさんNGNG
>>778
おお〜、なるほどね。
有り難う御座います!

0780デフォルトの名無しさんNGNG
大学生だったのか。小学生かと思った。
0781デフォルトの名無しさんNGNG
えー。。。小学生_| ̄|○
これでも、貴族なかんじの大学なのに...
0782デフォルトの名無しさんNGNG
いいから消えろよ
0783デフォルトの名無しさんNGNG
自作自演乙
0784デフォルトの名無しさんNGNG
数学の先生か。
数学のことしか興味がなく、世間知らずでワガママなんだよな。
御愁傷様。
0785デフォルトの名無しさんNGNG
う”...消えろか...。イタイ
もうちょっとハッキリした答えが来るまで待ちたいんだが。
というか、誰か教えておくれよ
0786デフォルトの名無しさんNGNG
ヒントは再帰だ
0787デフォルトの名無しさんNGNG
>>785
C言語なんて要らないんじゃない?
0788デフォルトの名無しさんNGNG
ちなみに再帰ってのは「二度と再び帰ってくるな」って意味です。
0789デフォルトの名無しさんNGNG
再帰。。。
あー、情報の先生もそんなこと言ってたかも。
0790デフォルトの名無しさんNGNG
>>785
煽っても何も出てこないから諦めろ
0791デフォルトの名無しさんNGNG
>>790
わかってるね。。。
授業中遊ぶか寝るかしかしてなかったもんで(汗

>>785
親切に色々ヒント出してくれて有り難う
でも自分、アフォでごめ。
0792デフォルトの名無しさんNGNG
ビットフィールドは移植性が無い
といわれますが、何故なんでしょうか
0793758NGNG
>>757
汚いが、こんなんでどう?
#include <stdio.h>
#include <stdlib.h>

double evaluate(double* a, int N, double x, int level)
{
  return level == N ? *(a + N) : evaluate(a, N, x, level + 1) * x + *(a + level);
}

int main(void)
{
  double *a, x, f;
  int N, i;
  printf("Input degree of a polynomial:");
  scanf("%d", &N);
  a = (double*)malloc(sizeof(double) * N);
  for (i = 0; i <= N; i++)
  {
    printf("Input coefficient of pow(x, %d):", i);
    scanf("%lf", a + i);
  }
  printf("Input x:");
  scanf("%lf", &x);
  f = evaluate(a, N, x, 0);
  printf("value:%lf", f);
  free(a);
  return 0;
}
0794デフォルトの名無しさんNGNG
>>792
順番が決ってないから。
0795デフォルトの名無しさんNGNG
全角スペースを判定するマクロを作りたいのですが、

#define IS_SPACE(x) ((unsigned char)(x) == 0xa1)

char* str = " ";
if(IS_SPACE(*str) && /* 1バイト目を比較 */
IS_SPACE(*(str+1)) /* 2バイト目を比較 */ )
{
}

と、いう風にやってみたんですが、うまく判定できません。
どこが間違ってますか?
0796デフォルトの名無しさんNGNG
全角空白って0xa1a1なん?
つか文字コードは?
0797デフォルトの名無しさんNGNG
>>793
キタ――――(・∀・)――――!!!

どもどもー!




あれ?実行するとなんか・・・なんか??

数字を入れると答えが出る感じじゃないの?
0798デフォルトの名無しさんNGNG
他の文字に0xa1はいってたらダメじゃん
0799デフォルトの名無しさんNGNG
0x8282
0800デフォルトの名無しさんNGNG
>>795
諦めて素直にstrcmp使うのはだめなん?
0801デフォルトの名無しさんNGNG
>>795
#define IS_SPACE(x) !strncmp(x," ",2)

char *str=" ";
if(IS_SPACE(str)){
0802デフォルトの名無しさんNGNG
#define IS_SPACE(x) ((x)[0] == " "[0] && ((x)[1] == " "[1]))

でも、文字列の先頭から真面目にマルチバイト文字の処理していかないと、
誤認識する文字コード系が多い気もする。
0803デフォルトの名無しさんNGNG
全角スペースを使ってる国って日本以外にあるのか!?
0804デフォルトの名無しさんNGNG
BIG5とか
0805758NGNG
>>797
・多項式の次数Nを読み込む
・N+1個の係数a[0]・・・a[N]を読み込む
の2つは満たしているはず。最初に"Input degree of a polynomial:"で次数を、
"Input coefficient of pow(x, n)"でx^nの係数を入力する。次にxを入力すると
xを代入した時の多項式の値が出力される。っていうか、問題の後半から問題文
そのものが意味不明だから、もしやることが間違ってたら参考に作り直しな。
0806デフォルトの名無しさんNGNG
この場合だとShift_JISなら誤認識はしない、かな?
EUC-JPは、ある漢字の2バイト目と別の漢字の1バイト目が、また別の漢字と同じバイト列に見えたり。
0807795NGNG
皆さんありがとうございます
>>802の方法でうまくいきました
0808デフォルトの名無しさんNGNG
struct Tree{
 Hoge data;
 Tree* next; //姉妹Treeへのポインタ
 Tree* child; //子Treeへのポインタ
};

こういう構造体で構成される階層データがあるのですが、
これを再帰無しで全検索するスマートな方法ってあるでしょうか。

スタックがつぶれてしまって…。
0809808NGNG
しまった、記法がC++ですいません。
0810デフォルトの名無しさんNGNG
>>806
Shift_JISでも問題は一緒
0811デフォルトの名無しさんNGNG
>>807
あたりまえだが移植性とかまったく考えてないし、
素直に801のstrncmp版使っとけ
0812デフォルトの名無しさんNGNG
>>808
アドレスだけスタックに入れて、プログラムの構造はループにする
0813デフォルトの名無しさんNGNG
>810
一緒じゃない、問題はあるが違うネタ。全てが2バイト文字ならShift_JISは無問題。
使ってる領域見れ。
0814デフォルトの名無しさんNGNG
>>788
!再起だと思う。
0815808NGNG
>>812
ありがとうござます、標準ライブラリですよね
試してきます。落ちませんように…
0816デフォルトの名無しさんNGNG
>>808

どうせ再帰が使えないなら横型探索で。
#include <stdio.h>

#define Q_SIZE 1024

struct Tree {
  int data;
  struct Tree *next;
  struct Tree *child;
};

void search(struct Tree *p)
{
  struct Tree *queue[Q_SIZE + 1] = { p };
  int i, j = 1;

  for (i = 0; p = queue[i]; i++)
    do {
      printf("%d\n", p->data);
      if (p->child)
        queue[j++] = p->child;
    } while (p = p->next);
}

int main(void)
{
  struct Tree root = { 1 };
  search(&root);
  return 0;
}
0817デフォルトの名無しさんNGNG
標準ライブラリ、特に入出力関数がどう実装されているかを
わかりやすく解説した本ってありませんか?

リダイレクトしたときに、入出力関数の動きがどのような仕組みで
変わるのかを知りたいのですが?
0818デフォルトの名無しさんNGNG
>>817
そんな事言うと、ソース読めと言われますよ。
0819817NGNG
本ではなく、WEBページでも結構です。
宜しくお願いします。
0820デフォルトの名無しさんNGNG
そういうのを知る必要がないしコンパイラごとで違うので誰も知らない


アセンブラコードでも吐かせて見てみるか
0821デフォルトの名無しさんNGNG
でも煽りじゃなくソース読むのがてっとりばやくないか?
0822デフォルトの名無しさんNGNG
自分の考えを確かなものにする裏付けが欲しいのだろうか
0823デフォルトの名無しさんNGNG
そうだろうな。
ttp://openbsd.secsup.org/src/lib/libc/stdio/
0824デフォルトの名無しさんNGNG
だいたいリダイレクトはC言語じゃなくてシェルの機能だし
0825デフォルトの名無しさんNGNG
パブリックドメインのprintfやscanfの実装ってありませんかね?
0826デフォルトの名無しさんNGNG
>>817
>リダイレクトしたときに、入出力関数の動きがどのような仕組みで変わるのか

単にstdoutの指す先が変わるだけじゃないの?
0827817NGNG
>>818
私、最近勉強始めたばかりで、
ほんとにまだ最初の方で、fprint()、scanf()のところでもう壁にぶち当たっています。

scanf()は、キーボードからの入力を変数に代入する関数であると説明がありますが、
エコーバックは、何がどのようにうやってくれているんだ?
scanf()がやっているのではないのか?
そして、それはリダイレクトするとどうなるんだ?
ってことがわかりません。

簡単な概要を取り敢えず知りたいのですが・・・
0828デフォルトの名無しさんNGNG
dup2やpopenや、あとなんだろう
0829817NGNG
>単にstdoutの指す先が変わるだけじゃないの?

出力関数の場合、論理出力装置が変わるだけだと思うのですが、
入力関数の場合、エコーバックしたり、しなかったりという動きの変化は
どなっているのでしょう?
0830817NGNG
あれ・・・
すみません。「論理出力装置」っていう用語ありませんでしたね。
yahooで検索しても引っかからない。
私の記憶違いでした。
0831デフォルトの名無しさんNGNG
そこまでくると、C言語の範疇じゃなくなるな
エコーバックはOSが勝手にやっててCがエコーバックしてるわけじゃないし。
//今はINT21とかやらないからなー
0832デフォルトの名無しさんNGNG
UNIXなら
http://www.slayers.nu/~kumasaka/Gyoumu/kbdhit.html
ここらへんを参考に関係ありそうなキーワードをひたすらググれば出てくるかも
0833デフォルトの名無しさんNGNG
VC++のcrtのソース見てたら・・・



gotoが・・・・・
0834デフォルトの名無しさんNGNG
>>833
何か問題でも?
0835デフォルトの名無しさんNGNG
俺は構わんが
0836デフォルトの名無しさんNGNG
誰も構わないだろう。
0837デフォルトの名無しさんNGNG
>>833
オマエのソースだってどーせ break の嵐だろ
0838デフォルトの名無しさんNGNG
この前見たソース、

for (;;) {
...;
...;
if (...) {
break;
}
...;
...;
break;
}

って感じだった。ループさせる意図が無いならgotoか、
さもなくばswitchかせめてdo whileにして欲しいと思った。
0839デフォルトの名無しさんNGNG
挿入法のソートのアルゴリズムなんですけど、参考書ではif文のあと
にelse{break;}をいれてるんですけど、これはいるもんなんでしょうか
いれずにしても、ちゃんとソートしました。
#include <stdio.h>
void main(void){
・・・・・int gakusei[]={165,158,170,156,175};
・・・・・int i,j;int temp;
・・・・・・for(i=0; i<5; i++){
・・・・・・for(j=i-1;j>=0;j--){
・・・・・・・if(gakusei[j]<gakusei[j+1]){
・・・・・・・temp=gakusei[j];
・・・・・・・gakusei[j]=gakusei[j+1];
・・・・・・・gakusei[j+1]=temp;}}}

・・・・・for(i=0; i<5; i++){
・・・・・printf("%d\n",gakusei[i]);}}
0840デフォルトの名無しさんNGNG
>>839
頼むから初心者スレに行ってくれ……
0841デフォルトの名無しさんNGNG
つか、バブルソートじゃ?
0842デフォルトの名無しさんNGNG
なぜelse でbreak文がいるんですか?
for文で条件があわなくなったら勝手にぬけるんじゃ?
0843デフォルトの名無しさんNGNG
>>842
勝手に抜ける前に終了させてるんでしょ。
0844デフォルトの名無しさんNGNG
>>813
全てが2バイト文字ならEUCも無問題なんだが。
0845デフォルトの名無しさんNGNG
>>839
どこの参考書だ?それは挿入ソートとは違う。
0846デフォルトの名無しさんNGNG
>>844
文字の組み合わせで、2バイト目と1バイト目が別の文字と被る、
と、そもそも806のレスがあるでしょうに。
0847デフォルトの名無しさんNGNG
>>846
全てが2バイト文字なら文字位置が偶数番目か奇数番目かで
2バイト目か1バイト目かがすぐに分かるだろ。
0848デフォルトの名無しさんNGNG
>>845
まじですか?c言語で学ぶアルゴリズムとデータ構造
って本です。挿入ソートのアルゴリズムでのってました
0849デフォルトの名無しさんNGNG
解説では一気に挿入位置をきめてるのではなく一つのデータの
挿入位置が決定するまで末尾から先頭にむかって値の交換を
くりかえしていると解説しています。
0850デフォルトの名無しさんNGNG
よーしパパ2バイト文字しか使わない言語作っちゃうぞー
main() {
  printf(”Hello, World.¥n”);
}
0851デフォルトの名無しさんNGNG
改行コードが入ってる
0852デフォルトの名無しさんNGNG
これ?
http://www.amazon.co.jp/exec/obidos/ASIN/4816335110/249-9712723-5290710
0853デフォルトの名無しさんNGNG
>>850
突然「全てが2バイト文字」という前提を持ち出した >>813 がアフォ
0854デフォルトの名無しさんNGNG
なんで850にフォローしてるんだ?
0855悲しい。NGNG
http://nakagawamasaharu.hp.infoseek.co.jp/index.html
ちょっとフォローしている人を見ると悲しくなるのは何故でしょうか?
0856デフォルトの名無しさんNGNG
親衛隊でも出没したのか
0857sageNGNG
>>838
do { } while(0); だと警告が出るんですよ。VCの/W4だと。
0858デフォルトの名無しさんNGNG
ふつうUTF-8
0859838NGNG
>>857
大丈夫、for (;;) {...}でも最後にbreakしたら大抵警告出るから。
do {..} while (0) を使えといっているわけではないことに注意してくれ。
0860デフォルトの名無しさんNGNG
ここでも見とけ
http://pc5.2ch.net/test/read.cgi/tech/1063177450/l50
0861デフォルトの名無しさんNGNG
警告(857): 頭悪スレへ逝ってよし。
0862sageNGNG
>>859
>大丈夫、for (;;) {...}でも最後にbreakしたら大抵警告出るから
そんなコンパイラあんのかよ
0863デフォルトの名無しさんNGNG
warning: warning oriented programming is now obsolete.
0864デフォルトの名無しさんNGNG
>>859
今、Visual C++とBorland C++ Compilerで試したら出なかったが。
0865デフォルトの名無しさんNGNG
> do { } while(0); だと警告が出るんですよ。VCの/W4だと。

常識的に for (; ; )

do { } while (1); や while (1) は使わない。

それと同じ理屈だ。
0866デフォルトの名無しさんNGNG
for(;;)かwhile(1)か、そんなのは何も考えずに会社のコーディング規則に
従えばそれでいいと思うが。
0867デフォルトの名無しさんNGNG
> 挿入法のソートのアルゴリズムなんですけど、参考書ではif文のあと

っていうか、まずそのまぬけな本の名前を言えよ!

void mainなんていう書き方してる時点でだめだめだし、
初心者が間抜けな勘違いをしそうなインデントをわざわざしてるあたりが
間抜けな本だ。

まず書名を書け!
0868デフォルトの名無しさんNGNG
まずスレを嫁!
0869デフォルトの名無しさんNGNG
>>867
空気読め
0870デフォルトの名無しさんNGNG
#include <stdio.h>
#define MAX 5

main()
{
・・int g[MAX] = {165, 158, 170, 156, 175};
・・int i, j, t;

・・for (i = 0; i < MAX; i++) {
・・・・for (j = i - 1; j >= 0; j--) {
・・・・・・if (g[j] >= g[j + 1])
・・・・・・・・break;
・・・・・・else {
・・・・・・・・t = g[j];
・・・・・・・・g[j] = g[j + 1];
・・・・・・・・g[j + 1] = t;
・・・・・・}
・・・・}
・・}

・・for (i = 0; i < MAX; i++)
・・・・・printf("%d\n", g[i]);
}
こうかけば、そういう間抜けな勘違いをするやつもでてこない。
0871デフォルトの名無しさんNGNG
> for(;;)かwhile(1)か、そんなのは何も考えずに会社のコーディング規則に

いいえ、どちらもだめです。
0872デフォルトの名無しさんNGNG
>>871
なんか冴えに欠けるなw
0873デフォルトの名無しさんNGNG
みんな突っ込みどころ違うんじゃないのか?

do{
}while(0);

間にcontinue入れたらわからんでもないが、
これじゃループにもならんがな('A`)
0874デフォルトの名無しさんNGNG
>>873
レス読み返せ
0875デフォルトの名無しさんNGNG
>>862
Solaris2.8のccは警告が出た。
曰く、ループの終端に辿り着けないとさ。
0876デフォルトの名無しさんNGNG
来年就職し、C言語を使うといわれたのですが
勉強しとくのはVCとかC++でも大丈夫ですか?
何やっとけばいいかわからないんですけど、なにか作ったほうがいいでしょうか?
0877デフォルトの名無しさんNGNG
>>876
何を作ってる会社かも知らんのか!?
お前の人生それでいいのか!?
0878デフォルトの名無しさんNGNG
どんなのを作ってるのかは知ってますけど、どうゆう受注でなんの言語を使ったかは知りませんが
普通入社前でも知ってるものなんですか?
0879デフォルトの名無しさんNGNG
>>876
このへん、おすすめ
http://www.kumei.ne.jp/c_lang/

題材ははっきり言ってえり好みしてても意味がない
所詮は付け焼刃ってとこ忘れていい気になってると一番痛いカウンターもらう

とにかく、色々ちゃらちゃら見て、やりたいのから逝け
有料製品でリッチにやるもよし、フリーでハングリーにいくもよし
まさしくあんたの人生だ、思うようにいけばいい
0880デフォルトの名無しさんNGNG
>>878
当たり前だ。自分がどんな仕事するかわからん所に行けるか!
0881デフォルトの名無しさんNGNG
>873

do{ 〜 }while(0)(最後に ; をつけない)なら
複数の文を含む関数っぽく使えるマクロ組むときに使うな。
 #define HOGE(i) { foo(i); bar(j); }
と定義すると
 if(〜)
  HOGE(i);
 else
  piyo();

とするとコンパイルエラーになる
そこで、後に ; がつけられて、ループしないdo{ 〜 }while(0)を使って
 #define HOGE(i) do{ foo(i); bar(j); }while(0)
とやればちゃんとコンパイルできるようになる。
0882デフォルトの名無しさんNGNG
それ専用
0883デフォルトの名無しさんNGNG
途中でbreak;かませば最後まで行ってくれる。gotoなし。
0884デフォルトの名無しさんNGNG
int (*poly[5])[3];
これは、どう読めばいいのでしょうか?
0885デフォルトの名無しさんNGNG
do{
  一回しか実行しないけど括弧でくくりたい(==breakを書きたい)処理
}while(0);

でいいんじゃないの?
0886デフォルトの名無しさんNGNG
>>884
ポインタの配列の配列
0887デフォルトの名無しさんNGNG
>>884
int poly[3]へのポインタの配列(要素数5)
0888デフォルトの名無しさんNGNG
>>887
それは
int poly[5][3];
かも
0889デフォルトの名無しさんNGNG
>>888
それはintの配列の配列
0890デフォルトの名無しさんNGNG
int [3]へのポインタの配列poly(要素数5)と書くべきか
polyは配列名だし
0891デフォルトの名無しさんNGNG
配列(要素数3)のポインタの配列(要素数5)
0892デフォルトの名無しさんNGNG
int oreryu[3];
int (*donden)[3]=&oreryu;
int (*daichan[5])[3];
daichan[4]=donden;
0893デフォルトの名無しさんNGNG
>>886
2次元配列って言いたいのか?
0894デフォルトの名無しさんNGNG
>>885
何も言わずにただカッコでくくるだけじゃ物足りないの?
{
// 1回だけだよ〜
}
0895デフォルトの名無しさんNGNG
つまりintポインタの2次元配列?
0896デフォルトの名無しさんNGNG
>>894
>>881

マクロにしないならそれでいいけど。

>>895
違うって。配列は一次元。
0897デフォルトの名無しさんNGNG
>>894
breakは?
0898デフォルトの名無しさんNGNG
>>896
むずい・・
(*poly[5])が3つあるってことだよね。
でも、そのpolyはintポインタが5つ。
0899デフォルトの名無しさんNGNG
>>898
違う。
配列へのポインタ(配列を指すポインタ)って分かる?
int a[3]で&aとすると得られるものの型なんだけど。
それの5つの配列。

int (*poly)[3];
これが配列へのポインタ(あくまでもポインタで配列ではない)で、それを配列にするとint (*poly[5])[3];


うまく伝わりそうにないなぁ。
0900デフォルトの名無しさんNGNG
そこでtypedefですよ
0901デフォルトの名無しさんNGNG
なんでこんな基本的なことでいまさら盛り上がるのか。
C言語が難しい言語なのか、
それともここにいるやつらが馬鹿なのか。
0902デフォルトの名無しさんNGNG
CなのにC++の//のコメントを書くのが気に入らない。
便利なのは分かるがCではない。
そうだ、Cのソースファイルの // を /* に置き換えて行末に */を追加する処理を
作ってくれないか。ただし、ダブルクォーテーションで囲まれた文字列リテラルは
無視するように。
0903デフォルトの名無しさんNGNG
【ビギナ】初心者が習うべき言語は? part6【必読】
http://pc5.2ch.net/test/read.cgi/tech/1092932484/
0904デフォルトの名無しさんNGNG
>>902
ギコCを作るスレ
http://pc5.2ch.net/test/read.cgi/tech/1090324689/
0905デフォルトの名無しさんNGNG
>>902
C99
0906デフォルトの名無しさんNGNG
>>902
簡単だよ。マクロ作ればいいじゃん。

#define //(comment) /* comment */
0907デフォルトの名無しさんNGNG
プリプロセッサの出力ファイルをまた保存して新たなソースに・・・
余計なところまで展開されて・・・
0908デフォルトの名無しさんNGNG
struct kouzoutai *kouzoutai

構造体のポインタは

struct kouzoutai kouzoutai

kouzoutai.変数=100;

こういうのはできないの?
0909デフォルトの名無しさんNGNG
>>908
struct kouzoutai *p;
p->hoge = 100;
0910デフォルトの名無しさんNGNG
>>909
ぬ、ぬる、
0911デフォルトの名無しさんNGNG
ぽーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
0912デフォルトの名無しさんNGNG
>>910-911
正確にはNULLではなく不定なわけだガッ!!
0913デフォルトの名無しさんNGNG
> CなのにC++の//のコメントを書くのが気に入らない。

いいえ。Cのコメントです。
私はBCPLの時代のくせで//ばかりでしたが、
Cで15年ほど前から//が使えるように拡張されている処理系が多かったのは
うれしかったです。
5年前に標準規格にもとりいれられたのは「いまさら」って感じです。
0914デフォルトの名無しさんNGNG
↑それ、「C++の真似でそうなってるとか思ってるやつはボケだ! むしろ先祖返り」って、
日下部先生も本に書いてたよね。
0915デフォルトの名無しさんNGNG
やっぱりコメントは○○じゃなきゃ落ち着かない。
って人も、

#define REM //
#define rem //
#define ' //
#define # //
#define ! //
#define ; //

これで万事解決だね!
0916デフォルトの名無しさんNGNG
#define Rem //
0917デフォルトの名無しさんNGNG
char rem;
if (rem != '#') rem='$';
0918デフォルトの名無しさんNGNG
>>913
ネタニマジレスカコワルイ
0919デフォルトの名無しさんNGNG
>>916-918

>>915 の最後のオチに気づいてやれよ
0920デフォルトの名無しさんNGNG
int main(void)
{
char buf[64];
char **p=0;

fgets(buf, 64, stdin);

*p = (char *)malloc(sizeof(char) * 64);
p[0] = strtok(buf, " ");

printf("%s\n", *p);
free(*p);
}
こんな感じでポインタのポインタを使って、動的
に領域を確保したいんですけどどこらへんが
だめなんですかね、プログラムの途中で終
わってしまうんですけど。
0921デフォルトの名無しさんNGNG
*p = (char *)malloc(sizeof(char) * 64);
の前に一行
p = (char **)malloc(sizeof(char *));
入れとけ
0922デフォルトの名無しさんNGNG
>>921
親切な人ありがとう。
0923デフォルトの名無しさんNGNG
>>920
>921したらfree()も忘れずに。
#キーワード抽出にはstrtok()よりもsscanf()使用をお奨め。
0924デフォルトの名無しさんNGNG
> >>915 の最後のオチに気づいてやれよ

このぼけって、最後の1つしかネタだと思わなかったわけだな...
0925デフォルトの名無しさんNGNG
*p = (char *)malloc(sizeof(char) * 64);
p[0] = strtok(buf, " ");
     ↓
p[0] == *(p + 0) == *p
     ↓
*p = (char *)malloc(sizeof(char) * 64);
*p = strtok(buf, " ");
...
free(*p)


………あれ?
0926デフォルトの名無しさんNGNG
> char **p=0;
>
> *p = (char *)malloc(sizeof(char) * 64);

まず、ここで間違い。

> free(*p);

NULLかもしれないものをfreeしてる時点でまちがい
0927デフォルトの名無しさんNGNG
> これで万事解決だね!

これのことだろ
0928デフォルトの名無しさんNGNG
p = (char **)malloc(sizeof(char *));
で確保した分はfree(p)
*p = (char *)malloc(sizeof(char) * 64);
で確保した分はfree(*p);で解放。
でいんですか?
0929デフォルトの名無しさんNGNG
> これのことだろ

ちがうだろ。その上の5行の中の違いに気づかないのかよぼけ
0930いんですか?NGNG
いんですか?
0931教えてNGNG
文字列にループで数字を入れていくにはどうすればいいですか?
例えば、file001,file002,file003・・という風につけていきたいのです。
0932デフォルトの名無しさんNGNG
sprintf()
0933デフォルトの名無しさんNGNG
>>931
sprintf
0934デフォルトの名無しさんNGNG
sprintfで我慢してください
0935デフォルトの名無しさんNGNG
3連コンボワロタ
0936教えてNGNG
ありがとうございます!!!
0937デフォルトの名無しさんNGNG
>NULLかもしれないものをfreeしてる時点でまちがい

こいつ ぼけ
0938デフォルトの名無しさんNGNG
struct test {
int num;
};

struct test *t;

としたとき、tの中のnumのアドレスをとるには、どう記述すればいいですか?
0939デフォルトの名無しさんNGNG
&(t->num)
0940デフォルトの名無しさんNGNG
#include <stdio.h>

struct test {
int num;
};

void func(struct test *t)
{
int a = 10;
t->num = a;
printf("%d\n", t->num);
return ;
}

void func2(struct test *t)
{
int a = 10;
&(t->num) = &a;
printf("%d\n", t->num);
return ;
}

int main(void)
{
struct test t;

func(&t);
func2(&t);
return 0;
}

としたとき、func2がエラーになるのはなぜですか?
0941デフォルトの名無しさんNGNG
>>940
頼むから初心者スレに行ってくれ。
0942デフォルトの名無しさんNGNG
int i,j;
int *p;
j=1;
で、

i=j;
がOKで
&i=&j;
がNGなのとおなじ。
(変数のアドレスは書き換えられない)

やるなら
p=&j;
0943デフォルトの名無しさんNGNG
やたら初心者スレ逝けって言ってる奴なんなんだ?
質問スレに何故居るんだ。
0944デフォルトの名無しさんNGNG
>>943
一応回答しているし、説明するのが面倒なんだろ。
#だったら放置すりゃいいのにとは思うが。
0945デフォルトの名無しさんNGNG
>>939,942
どうもありがとうございました。
0946デフォルトの名無しさんNGNG
>>941
ほら質問者に無視されてる。
0947デフォルトの名無しさんNGNG
まあ、初心者スレ行けと言っておけば、
・自分が回答できないということを言いつつ
・相手より自分のほうが知識があると思わせることが出来る
矮小な自我を守るために必死なんですよ。(・∀・)ニヤニヤしてあげましょう
0948デフォルトの名無しさんNGNG
つか、宿題スレ行きだろ。
0949デフォルトの名無しさんNGNG
ニヤニヤ
0950デフォルトの名無しさんNGNG
>>941はきちんと回答していると思うが…。
0951デフォルトの名無しさんNGNG
わかったから初心者じゃない高尚な話題ふれよ(・∀・)ニヤニヤ
0952デフォルトの名無しさんNGNG
あまりにも初心者的な質問は
【初心者歓迎】C/C++室 Ver.10【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1097416187/
こういう名前のスレがあるからこっち逝けって意味なんじゃないの?
0953デフォルトの名無しさんNGNG
ここのスレは何の話題やるんだ?
0954デフォルトの名無しさんNGNG
>>920
int main(void)
{
char buf[64];
char *p=0;

fgets(buf, 64, stdin);

p = (char *)malloc(sizeof(char) * 64);
strncpy(p, strtok(buf, " "), 64);

printf("%s\n", p);
free(p);
}

君のやりたいことはこれで充分。
64 はマジックナンバーだから #define すれ。
0955デフォルトの名無しさんNGNG
ここでstrtokはリエントラントじゃないぞと無意味に絡むのがこのスレの流儀
0956デフォルトの名無しさんNGNG
>>953
C言語について語るスレですが。
0957デフォルトの名無しさんNGNG
main関数だろ、なんでリエントラントの話に
0958デフォルトの名無しさんNGNG
どこでも同じだろ。
0959デフォルトの名無しさんNGNG
あのソースでリエントラントがあるとどう困るんだ?
0960デフォルトの名無しさんNGNG
リエントラントになってるほうがうれしい
0961デフォルトの名無しさんNGNG
テストコードだから、サンプルだから、そう理由をつけて糞コード書く香具師に限って
製品コードでも似たような糞コード書くんだよな。
#つーか、コメントに1秒ウェイトと書いてSleep(2000)なんて書くんじゃねぇよ(鬱
0962デフォルトの名無しさんNGNG
で、それがこの場合にどう関係するんだ?
0963デフォルトの名無しさんNGNG
>962
HTなんだよ、きっとw
0964デフォルトの名無しさんNGNG
>>963
で、HTが何の関係あるんだ?
0965デフォルトの名無しさんNGNG
リエントラントにこだわることないじゃん。
0966デフォルトの名無しさんNGNG
return 0; が無いぞと無意味に絡むのはこのスレに相応しいですか?


あ、それはコンパイラが絡んでくれるからいいのか。
0967デフォルトの名無しさんNGNG
お前はふさわしくない
0968デフォルトの名無しさんNGNG
大学でC習ってるんですが、今時Cの案件なんかあるんですか?
0969デフォルトの名無しさんNGNG
>>968
てめえ喧嘩売ってるのかコラ
0970デフォルトの名無しさんNGNG
>>968
持ってるところは持ってるし、持ってないところは持ってない。
0971デフォルトの名無しさんNGNG
そうなんですか?
今時Cの案件なんか組み込み系CPUの一部でしかないと思ってました。
禿ですらプログラミング言語C++でCイラネって言ってるんでどんなもんなのかと
0972デフォルトの名無しさんNGNG
イランと思うなら勉強せず、その単位も捨てとけ。
お前以外の誰も困らない。
0973デフォルトの名無しさんNGNG
>>971
組み込み系がマイノリティという前提での発言か?
0974デフォルトの名無しさんNGNG
次スレたててくる。
0975デフォルトの名無しさんNGNG
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1097984684/
0976デフォルトの名無しさんNGNG
間違った。
こっちだ。
http://pc5.2ch.net/test/read.cgi/tech/1098007606/
0977デフォルトの名無しさんNGNG
>>975-976
わざとだろw
0978デフォルトの名無しさんNGNG
実行ファイルのインスタンス数は圧倒的に組み込みの方が多いかも・・・
0979sageNGNG
>>859
>大丈夫、for (;;) {...}でも最後にbreakしたら大抵警告出るから
なんてコンパイラになんてコンパイルオプション付けたら出んのか書いてみろよ
0980デフォルトの名無しさんNGNG
>>875は?
0981デフォルトの名無しさんNGNG
次スレあったよ!
http://pc5.2ch.net/test/read.cgi/tech/1065535118/
0982デフォルトの名無しさんNGNG
つまんねぇんだよボケが
0983デフォルトの名無しさんNGNG
ヘッダを全部合わせて、"all.h"とか作ったら怒られますか?
0984デフォルトの名無しさんNGNG
>>983
意味が解からない。
想像するには、
hoge1.h
hoge2.h
hoge3.h
というのがあって、
all.hの中身が、

/* all.h */
#ifndef __ALL_H_
#define __ALL_H_

#include "hoge1.h"
#include "hoge2.h"
#include "hoge3.h"

#endif /* __ALL_H_ */

というものを使っても良いか否かということを聞いているのかな。
だとすると、うん、それはもちろんOK。
0985デフォルトの名無しさんNGNG
本物の大学生は「案件」なんて言わない。
0986デフォルトの名無しさんNGNG
9bitの2の補数を正しくintに変換するにはどう書けばよいでしょうか?
0987デフォルトの名無しさんNGNG
>>985
大学生でもいろいろいる。
業界に片足突っ込んだ学生もいるし。
0988986NGNG
ちなみに元の値はchar *型です。
下位9bitを用いた数値をint型変数に置き換えてプログラムで使用したいと
思ってます。

int new
char *old;

------

new = (int)(old[0] & 9)

とかしても失敗でした。
よろしくです。
0989デフォルトの名無しさんNGNG
>>988
9の下位9ビットは1なのかね?
0990989NGNG
そのまえに普通charは8ビットだよな。
0991デフォルトの名無しさんNGNG
>>990
いいえ。
0992デフォルトの名無しさんNGNG
>>990
charは7ビットです。
0993デフォルトの名無しさんNGNG
charは普通8bitだろう
0994デフォルトの名無しさんNGNG
>>993
いいえ。
0995デフォルトの名無しさんNGNG
ビットフィールド
0996デフォルトの名無しさんNGNG
>>993
charは16ビットです。
0997デフォルトの名無しさんNGNG
記念カキコ v(^o^i)d
0998デフォルトの名無しさんNGNG
↓999
0999デフォルトの名無しさんNGNG
↓1000ゲット厨必死だなw
1000デフォルトの名無しさんNGNG
(((;;;:: ;: ;;          ;; ;:;::)) ::)
   ( ::: (;;   ∧_,∧   );:;;;)) )::: :; :))
    ((:: :;;  (´・ω・)っ旦;;;; ; :))
     ((;;;  (っ ,r どどどどど・・・・・
          i_ノ┘

 ((;;;;゜;;:::(;;:  ∧__,∧ '';:;;;):;:::))゜))  ::)))
 (((; ;;:: ;:::;;⊂(´・ω・`)  ;:;;;,,))...)))))) ::::)
  ((;;;:;;;:,,,." ヽ旦⊂ ) ;:;;))):...,),)):;:::::))))
   ("((;:;;;  (⌒) |どどどどど・・・・・
         三 `J

         .∧__,,∧   ;。・
       ⊂(´・ω・`)⊃旦
    ☆   ノ   丿 キキッ
      ヽ .ノ  (⌒) 彡
       と_丿=.⌒

         .∧__,,∧ゼェゼェ
        (´・ω・;)
         ( o旦o )))   お茶どうぞ
         `u―u´


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