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

C言語なら、俺に聞け! <23>

レス数が1000を超えています。これ以上書き込みはできません。
0001日下部陽一NGNG
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
・comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

・前スレ
<22> http://pc.2ch.net/test/read.cgi/tech/1022402165/

他のリンクは>>2-10を見な。
0002デフォルトの名無しさんNGNG
>>1
メールアドレスがvoidになってない。
・作ってわかるCプログラミング(通称 アヒル本)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711
0003デフォルトの名無しさんNGNG
【コンパイラ】
ぼくもgccは好きです!
http://gcc.gnu.org/
タダで使えるBorland C++!
http://pc.2ch.net/test/read.cgi/tech/1002377328/l50

【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/

【製品版。有料】
Microsot 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

【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
0004デフォルトの名無しさんNGNG

1コンピュータの操作法
2Cの文法の基礎知識
3簡単な各種アルゴリズム
4デバッグ手法(スナップショット、デバッガの使い方)
5さまざまなトラブルの対処法(文法ミス、アルゴリズムのミス、勘違い)
6大きなプログラムの作成法(モジュール化)
7アルゴリズムの最適化
8システム分析法
9データ構造論
10さまざまなトラブルの対処法(メモリの管理(ポインタ)、環境の違い、境界条件)
11オペレーティングシステムの違い(移植性)
0005デフォルトの名無しさんNGNG
for(i=0;i<n;i++)
for(j=0;j=m;j++)
で,nとmが20の時は,400回ですが
nとmが35の時は,1225回ループします。
どのくらいの時間差があるのでしょうか?
for分の中は,if(Kou1[i] == Kou2[j])
のような感じです
0006すまんNGNG
for(i=0;i<n;i++)
for(j=0;j<m;j++)
で,nとmが20の時は,400回ですが
nとmが35の時は,1225回ループします。
どのくらいの時間差があるのでしょうか?
for分の中は,if(Kou1[i] == Kou2[j])
のような感じです
0007デフォルトの名無しさんNGNG
実行して計測すれば?
0008デフォルトの名無しさんNGNG
スタンダードだから無理
0009デフォルトの名無しさんNGNG
フリーのコンパイラ使えば?
0010デフォルトの名無しさんNGNG
>>8
?
0011デフォルトの名無しさんNGNG
スタンダードだから無理?
最適化が効かないからって事?
0012デフォルトの名無しさんNGNG
実行して計測ってどうやるの?
0013デフォルトの名無しさんNGNG
>>12
わからなきゃストップウォッチでも持って測れ
0014デフォルトの名無しさんNGNG
>>12
ストップウォッチ
0015デフォルトの名無しさんNGNG
>>13
同じ0.4秒でした。
001614NGNG
>>13
俺とケコーン汁(・∀・)!!
0017デフォルトの名無しさんNGNG
>>15
じゃあ同じでいいじゃん。
0018デフォルトの名無しさんNGNG
いぢわる。
001913NGNG
>>16
私めんくいなの
0020デフォルトの名無しさんNGNG
>>18
で?
002114NGNG
鬱だ...
0022デフォルトの名無しさんNGNG
マヂレス
そのプログラムを100万回ループした実行時間をストップウォッチで計って100万で割れ
0023デフォルトの名無しさんNGNG
>>22
実行時間を計るプログラムってあるの?
0024デフォルトの名無しさんNGNG
まずそれから作れ
0025デフォルトの名無しさんNGNG
>>23
ストップウォッチ
0026デフォルトの名無しさんNGNG
>>23
system()で100万回呼び出して、その開始時間と終了時間をclock()で得ればいいだろ。
0027デフォルトの名無しさんNGNG
clockは禁句だったのに…
0028デフォルトの名無しさんNGNG
じゃあgettimeofday
0029デフォルトの名無しさんNGNG
>>27
あれって使っちゃいけない関数だったの?(汗
平気で使っていたんだけど(汗
0030デフォルトの名無しさんNGNG
>>29
clock教えたら面白くないから禁句なんだろ。
0031デフォルトの名無しさんNGNG
>>30
そういういぢわるやめてまともにおしえてほすぃ・・・。
0032デフォルトの名無しさんNGNG
最適化かけても消えてしまわないビジーループを作るには
ちょっとしたコツがいります。
0033デフォルトの名無しさんNGNG
volatile使うか#pragmaすればいいんでないの?
0034デフォルトの名無しさんNGNG
>33
volatileが一番楽。pragmaは素人にはおししめできない
0035デフォルトの名無しさんNGNG
K&RのANSI対応版見たんだけど、
signedだと保証されてるのは整数型の中ではint型だけみたい。
0036デフォルトの名無しさんNGNG
>>35
整数型はintとcharだけでしょ?
longやshortはそれぞれlong int,short intという意味だし。
0037デフォルトの名無しさんNGNG
strの中身の文字列で、スペース10個目より後ろの値を得たいので
(下記プログラムだと「ab0523092616p」の部分)、以下のプログラムを
書いてみましたが、states_mesに上手く格納できません。

どうもstrcatの2番目の引数がよろしくないみたいですが・・・
perlの経験は有りますが、変数の型に甘い言語に慣れてしまっていまして
対処方法がいまいちわかりません。
最終的にstates_mes内に「ab0523092616p」を格納出来るようにするには
どうしたらよろしいでしょうか?


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

#define MAX_LENGTH 1024

main(){
 char str[MAX_LENGTH] = "d k 1022174 10311 102590 759 uuune rejp 27354 1010 ab0523092616p";

 int i;
 int spc_check = 0;
 char states_mes[MAX_LENGTH];

 for(i=0;i<MAX_LENGTH;i++){
  if(spc_check==10){
   if(str[i]==NULL){
    break;
   }else{
    strcat(states_mes , str[i]);
   }
  }else{
   if(str[i]==' '){
    spc_check++;
   }
  }
 }

 printf("%s\n",states_mes);
}
0038デフォルトの名無しさんNGNG
恐怖!

(char)255 って -1 になるのは負の表現が2の補数なCPUだけじゃん
かと思いきや・・・
0039デフォルトの名無しさんNGNG
for ( here ; i<=10 ; i++){

↑のhereの場所に i=1とかだけじゃなくて
x=d , i=1 とかなんか別の式を一緒に書いてあることあるけど
x=d はforループにはいる前、例えばその上とかに
書いた場合と違いはあるんですか?
0040デフォルトの名無しさんNGNG
>>38
思わせぶりしないで続きを書いてYO(´д`;
0041ネパール弾NGNG
>>39
ない。なんつーか、コード上の表現として
「このループの先頭であーして欲しいこーして欲しい」
というのをすっげー強調したいときに使うやり方。

言葉の通じない外人といっしょのチームになったとき
コードだけで会話してたの・・・。
0042デフォルトの名無しさんNGNG
>>37
何がしたいのかさっぱり分からない。
0043デフォルトの名無しさんNGNG
>>41
なるほど、
産休
0044デフォルトの名無しさんNGNG
>>39
ヒント カンマ演算子
0045デフォルトの名無しさんNGNG
for(space = 10, i = 0;str[i] && (str[i] == ' '?--space:1);i++);
strcpy(buffer, str+i+1);

スペースが10個入ってることが確実ならこれでどーよ!(´д`;)
0046デフォルトの名無しさんNGNG
>>37
strcatはポインタを求める気がする。
頭に&をかぶれ。
0047デフォルトの名無しさんNGNG
    strcat(states_mes , &str[i]);
004846NGNG
47
ケコーン。この場合は違うか・・・

45は39への絡みもあるのか。トリツキな感じだ。
004937NGNG
みなさんありがとうございます。

無事思い通りのことができました。
拙い説明の仕方で済みませんでした。

C言語の勉強、もっと精進いたします。
0050 NGNG
struct{
int num[200];
POINT Pos[200];
}KOU;

KOU Kou;
と
struct{
int num;
POINT pos;
}KOU;

KOU Kou[200];

どっちがいいですか?
0051 NGNG
用途による。
0052デフォルトの名無しさんNGNG
#define 50 (´д`)
0053デフォルトの名無しさんNGNG
>>50
それ通らないでしょ?それともC++ですか?
0054デフォルトの名無しさんNGNG
>>50
書くとしたら typedef を struct の前につけれ。紛らわしくていかん。
0055デフォルトの名無しさんNGNG
#define _50 (´д`)
0056デフォルトの名無しさんNGNG
>>53
C++にそんな昨日はありません
0057デフォルトの名無しさんNGNG
そんな明日もありません
0058デフォルトの名無しさんNGNG
そんな今日も
0059デフォルトの名無しさんNGNG
もっこりますか?
0060デフォルトの名無しさんNGNG
#define >>50 (´д`)
0061デフォルトの名無しさんNGNG
>>60
通りませんよ。
0062デフォルトの名無しさんNGNG
このスレ何日で消費する?
0063デフォルトの名無しさんNGNG
�@ 一週間
�A 3日
�B 6日
�C 日下部陽ちゃん♥
0064デフォルトの名無しさんNGNG
�Cに√2票
0065デフォルトの名無しさんNGNG
せっかくだから、本日8:00までに使い切らないか?
0066デフォルトの名無しさんNGNG
基本的な質問していい?

++i と i++ってどう違うんだっけ?
0067デフォルトの名無しさんNGNG
>>66
実行してみそ。

int i = 0, j;
j = i++;

int i = 0, j;
j = ++i;

のそれぞれの j の値を見れば意味がわかる。
0068デフォルトの名無しさんNGNG
>>67
0と1になったよ
なんでか全然わからん・・
0069デフォルトの名無しさんNGNG
>>68
その結果見てもわからんか・・・・
++iは、iを先にインクリメントしてからの値を返す。
i++は、iの値を先に評価してから返し、その後インクリメントする。
0070デフォルトの名無しさんNGNG
i++はインクリメントを行う前のiの値(左辺値になれない)を返す。
++iはインクリメント後のi(左辺値になれる)を返す。
0071デフォルトの名無しさんNGNG
>>69-70
副作用と式の値の区別がつかないといくら説明しても無駄。
0072デフォルトの名無しさんNGNG
>>70
いいこと聞いた。
++i = 0; とかできるんだね。あまり意味ないけど。
0073デフォルトの名無しさんNGNG
>>68
j=++i;
これは
i=i+1;
j=i;
と同じ。

j=i++;
これは
j=i;
i=i+1;
と同じ。


厳密に言うと少し違うんだが。
0074デフォルトの名無しさんNGNG
>>72
できません。
007568NGNG
>>All
非常によくわかった。
さんきゅ〜
0076デフォルトの名無しさんNGNG
>>74
ん?BCC5.5.1だと通ったぞ。
0077デフォルトの名無しさんNGNG
>>76
ん?悪名高いVC++6.0Proだと通らなかったぞ。
0078デフォルトの名無しさんNGNG
>>76>>77
どっちが正しいんだ?
0079デフォルトの名無しさんNGNG
int main()
{
int i=44;
++i=0;
return 0;
}

cl test.c

test.c
test.c(4) : error C2106: '=' : 左のオペランドが、左辺値になっていません。


VC++6.0Proでこう出た。
0080デフォルトの名無しさんNGNG
>>79
こちらでは、gcc3.1でコンパイルしてみたら通った。
LSI-C86試食版では「左辺値が必要」と出た。
処理系依存なのだろうか?
0081デフォルトの名無しさんNGNG
うちのBCCは通らない
0082デフォルトの名無しさんNGNG
>>81
変ですね。なぜ同じBCCなのに結果が違うのか。
ちなみにTurbo Debuggerで中身を見てみたら、ご丁寧にも
一度incrementしてから0を転送していたよ。
0083デフォルトの名無しさんNGNG
++ と = の優先順位の差異かと思ったけど
これって環境依存関係なく規定されてたよな?
あれか? 例によって未定義とかそーゆーの?
0084デフォルトの名無しさんNGNG
>>82 CPPファイルをコンパイルしていないだろうか。(CPPは通る)
0085デフォルトの名無しさんNGNG
そーゆーのだ。

そもそも++した時点でその式は左辺値ではなくなる。
左辺値でないものに代入はできない。

できたとしたら、コンパイラのバグか、規格外の拡張機能だ。
0086デフォルトの名無しさんNGNG
>>84
拡張子を.cppにして、C++のソースファイルとしてコンパイルしたらVC++6.0でも通った。
0087デフォルトの名無しさんNGNG
>>83
私にはわからないです。専門家の登場を待つとしますか。
0088デフォルトの名無しさんNGNG
Cは駄目、C++ならOKか。
0089デフォルトの名無しさんNGNG
>>84
その通りです。CPPをコンパイルしていました。
>>88
そうなんでしょうか?もう一度C++第3版を穴が開くほど
読み直してみるとします。
0090デフォルトの名無しさんNGNG
うぉ C++としてコンパイルすると確かに通る。
Cの場合は>>85のとおり、値に値を代入する形になるのでエラーになるが・・・
009168NGNG
またまた質問です。

配列で a[i] と b[j][k] を作ったのですが
その時、a を渡すと a[0] のポインタとして処理しますが
b を渡すとポインタとして認識せず、*b で渡さないとダメなようです。
なぜなんですか?
どこか間違っていますか?
0092デフォルトの名無しさんNGNG
C++ の場合、++i は i=i+1 と等価らしいね。 よって、 i=i+1=0; よって 0
らしいです。
ちなみに i++=0; はエラーだった。 恐らく i+(+=0); って感じか?・・・ワカラン

適当にコンパイルしてみた結果なので理論とか定義とかは無視してます。
うそついてたらゴメンヨ
0093デフォルトの名無しさんNGNG
>>91
間違っていません。ただし、*bの意味は、pointer to array[k] なので、
(*b)[x]のように使う必要があります。*b[x]やb[x]と書くと、意味が違って
しまうので注意です。

bが1増えると、b[j][k]のjが1増えたのと同じ意味になります。
0094デフォルトの名無しさんNGNG
>>91
もちろん、b[j][k]のような書き方もOKです。このb[j]の部分が*bに
化けていると思っていただいて差し支えありません。
0095デフォルトの名無しさんNGNG
>>92
C++は演算子の多重定義機能があるので、Cとは演算子の解釈の
仕方が異なるのでしょうね。
009668NGNG
>>93
レスありがとう。
なんか凄く重要そうなこと言ってる気がするけど
よくわかりません。
a ではそのままポインタをさすのにbではなぜささないのでしょうか?
あと(*b)[x]とかの意味が全然わからないっす。。
009768NGNG
>>93
*b[x]やb[x] はどう違うのですか?
0098デフォルトの名無しさんNGNG
>91
a[i] の a は &a == &a[0] だし
b[j][k] の b は &b == &b[0] == &b[0][0] だよ。

で、だ。
*a == a[0] だけど、 *b == b[0] であって、 *b != b[0][0] だよもん。

ここを乗り越えればポインタ博士へ一歩前進だ。がんがれ
009968NGNG
>>94
じっくり考えたらなんとなくわかってきました。

a[i]というのはaがポインタでa[0]のアドレスを指し、
例えばa[2]とかがa[0]の場所から2つめの場所にある値ってことですか?
010068NGNG
>>98
a[i]と宣言した場合
a==&a[0]ではないのですか?

すいません。今日からはじめてC言語を勉強し始めたので。
一日ずっとやってこのざまです。
0101デフォルトの名無しさんNGNG
>>97>>98
Cではポインタは基本的に一次元配列しか指すことができません。
だから、bは array[k]という一次元配列を指すようにしているわけです。
(*b)[x]は、b[0][x]と同じ意味です。(b[0])[x]と考えて下さい。
*b[x]は、*(b[x])となってしまうので、b[x][0]と等価になってしまいます。
b[x]は、同じ理由から、b[x][0]へのポインタとなります。
0102デフォルトの名無しさんNGNG
>>100
そうですね。a == &a[0]です。&a != &a[0]です。
0103デフォルトの名無しさんNGNG
bをインクリメントすると、sizeof b[k] だけ増えます。
もしc[i][j][k]という配列があったとして、cをインクリメントすると、
sizeof c[j][k] だけ増えます。
ここで誤解のないように書いておきますが、cは定数ですので、
直接インクリメントできないので、例えば

int c[1][2][3], (*d)[2][3];

のように定義しておき、d = c; とすれば、dをインクリメントしたり
デクリメントしたりできます。
010468NGNG
>>102
今いろいろためしていたら
&a != &a[0]
となったのですが、これはなぜでしょう??
例題が悪かったのでしょうか?
こうなる場合もあるということでしょうか?
010568NGNG
間違えました
&a == &a[0]
です
0106デフォルトの名無しさんNGNG
申し訳ない。間違いがありました。
sizeof b[k] -> sizeof(type[k])
sizeof c[j][k] -> sizeof(type[j][k])
010768NGNG
>>106
typeってなんですか?
0108デフォルトの名無しさんNGNG
ええと、&a == &a[0] となるのは、値が同じになるということですが、
Cの文法上から言えば、意味が違います。
aはaddress of array[0]で、a[0]はvalue of array[0]です。偶然に
値が同じになることがあるかもしれませんが、何の意味もありません。
例えば、aが0x1000で、a[0]に0x1000が入っていたら、&a = &a[0] と
なることでしょう。これが同じでも意味がないことはわかりますね?
0109デフォルトの名無しさんNGNG
>108
意味は違うが値はいっしょ
値がいっしょになるのは保証されてる
0110デフォルトの名無しさんNGNG
>>108
間違いでした。スマソ。&aと&a[0]の値はいつも同じになりますが、
&aはaddress of array[i]、&a[0]はaddress of typeとなり、意味が
違います。
typeとは、intとかdoubleとか、あるいはstructなどの型のことです。
0111デフォルトの名無しさんNGNG
>>108は、*aと*a[0]を比較してました。ごめんなさい。
0112デフォルトの名無しさんNGNG
\ │ ハァ? .| ./ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/
___ ___ .\ | |/ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
|ハァ?| |ハァ?| \.└――──―──/ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
 ̄∩( ゚Д゚ ) 〃 ̄∩( ゚Д゚ )\ ヽ(゚Д゚ )ノ ./ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
ヾ. ) ヾ. ) \∧∧∧∧∧/ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
| | | │ │ | .< 激 >.| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| /
(__)_) (__)_) < ハ し >.| (゚Д゚)ハァ? 最 中 .| ./
────────────< な ァ く >────────────────
|o ゝ○ノ| ::/^'ヽヽ:::::::< 予 ? > / ○ _ ○\ /
.ヽ( )_,,ノ |ゝ○_ノ o|:::::< 感 >( ││ )< / \ ア ?
^'' `‐' ヽ..,,_( )ノ ::l< !! > \ 丿 | / \
~~ ( / ̄ ̄ヽ -‐‐‐--l-∨∨∨∨∨. /  ̄ ̄ \ \____
,,,, | |||!|||i|||!| | ~^'‐..,,_/ /. ____.\( )
(:::::}| :| |ll ll !! !.| | ,,,, イ ~''/ Ю)__) \ /
. ~~ | :|!! || ll|| !!:| | {:::::) ::l ./ | ゚Д゚.| ハァ? . \ | |(゚Д゚) ハァ?
. | | ! | l ~~ l / ^^^^^ \. \ \⊂)
`ー--― 'ノ / \. ) ) |
0113デフォルトの名無しさんNGNG
\ │ ハァ? .| ./ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/
___ ___ .\ | |/ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
|ハァ?| |ハァ?| \.└――──―──/ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
 ̄∩( ゚Д゚ ) 〃 ̄∩( ゚Д゚ )\ ヽ(゚Д゚ )ノ ./ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
ヾ. ) ヾ. ) \∧∧∧∧∧/ /(゚Д゚)ハァ? (゚Д゚)ハァ? (゚Д゚)ハァ?/ /
| | | │ │ | .< 激 >.| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| /
(__)_) (__)_) < ハ し >.| (゚Д゚)ハァ? 最 中 .| ./
────────────< な ァ く >────────────────
|o ゝ○ノ| ::/^'ヽヽ:::::::< 予 ? > / ○ _ ○\ /
.ヽ( )_,,ノ |ゝ○_ノ o|:::::< 感 >( ││ )< / \ ア ?
^'' `‐' ヽ..,,_( )ノ ::l< !! > \ 丿 | / \
~~ ( / ̄ ̄ヽ -‐‐‐--l-∨∨∨∨∨. /  ̄ ̄ \ \____
,,,, | |||!|||i|||!| | ~^'‐..,,_/ /. ____.\( )
(:::::}| :| |ll ll !! !.| | ,,,, イ ~''/ Ю)__) \ /
. ~~ | :|!! || ll|| !!:| | {:::::) ::l ./ | ゚Д゚.| ハァ? . \ | |(゚Д゚) ハァ?
. | | ! | l ~~ l / ^^^^^ \. \ \⊂)
`ー--― 'ノ / \. ) ) |
0114デフォルトの名無しさんNGNG
>>112
そう非難しないでくれよ。2chは間違えに気づいても、削除できない
んだから。
011568NGNG
>>108
確かにa[0]を参照するならそのとおりだと思います。

aがaddress of array[0]なら
&aはいったい何を示しているのでしょう?
プログラムでは&aもまたaddress of array[0]となったのですが。。
0116デフォルトの名無しさんNGNG
>>115
Cの文法上、この場合は、ただのaも&aも、同じ意味になります。
aが定数だからです。
011768NGNG
>>111
なるほど。
011868NGNG
>>116
なるほど、わかってきました。
ではb[i][j]の場合はどうなるのですか?

(*b)[x] ←この表記が理解できないです
0119デフォルトの名無しさんNGNG
>>118
配列演算子はすべて優先順位が等しいので、左から右に解釈されます。
つまり、b[i][j]は、(b[i])[j]と同じです。
b[0]と*bは等しいので、b[0][j] == (*b)[j]となります。
*b[j]と書いたら、*(b[j])となり、b[j][0]になってしまいます。
これは、*演算子が[]演算子より優先順位が低いためです。
012068NGNG
>>119
なるほど。非常に良く分かりました。
これを踏まえて今までのログをもう一度読んで見ます
0121デフォルトの名無しさんNGNG
>>120
途中間違いがあって非常にすみませんでした。もう少しよく考えて
書けばよかったのですが、チャット形式になると、どうしても間違い
が顔を覗かせます。
ちなみに、int **a; なんて形式もすぐに出てきますので、わからな
くなったらまた書き込みしてみて下さい。誰かが答えてくれるはず
です(他力本願)。
012268NGNG
>>121
とんでもないです。
いろいろ教えてくださってありがとうございました。
おかげでかなり理解できました。
0123デフォルトの名無しさんNGNG
>わからなくなったらまた書き込みしてみて下さい。誰かが答えてくれるはず
>です(他力本願)。
余計な事書くなって・・・
0124デフォルトの名無しさんNGNG

  ∧ ∧   カタ       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (,,゚Д゚),____カタ__< みなさんさようなら…と、
  / つ._.|| ̄ ̄ ̄ ̄ ̄ ̄| \__________
 (,  |\.|| Upple iBook |
      \,,|============|


0125デフォルトの名無しさんNGNG
読み込むファイルをランダムに変更したいのですが
どのようにすればいいのでしょうか?
fopen()は文字列しか引数として受け取ってくれないと聞きました。
fopen(rand()%X,"r");
ということは出来ないのでしょうか?
0126デフォルトの名無しさんNGNG
文字列に変更すれば良いじゃん
0127デフォルトの名無しさんNGNG
>>125
*Filename[]={"file1.aaa","file2.aaa"};
みたいにファイル名のリストつくっといて、
fopen(Filename[rand()%X],"r");
、とか
0128デフォルトの名無しさんNGNG
確かに
b[i][j]と宣言して

b==b[0]==*b となって
b[0][0]==(*b)[0] となるのに
式を見ればあたりまえだが b[0] != b[0][0]
となるのはなぜなんだろう?
0129デフォルトの名無しさんNGNG
>>125

char buf[128];
sprintf(buf, "%d", rand() % X);
fopen(buf, "r");
0130デフォルトの名無しさんNGNG
>>128
b[0]はポインタ(b[0][0]のアドレス)。b[0][0]は値。
0131デフォルトの名無しさんNGNG
b[0] == &b[0][0]
0132デフォルトの名無しさんNGNG
>>130
そうだけどさ

b==b[0] となってるから両辺の右側に
[0]をつけるとおかしくなるって変じゃない?
b が値を持つことが変だと思うんだけど
0133125NGNG
ありがとうございました。
無事、解決しました。
0134デフォルトの名無しさんNGNG
for文で ++i とする場合は
どんな用途で使われるのですか?
0135デフォルトの名無しさんNGNG
printfのfって何の意味ですか??
ファイルとかフィールドとか?
0136デフォルトの名無しさんNGNG
>>135
format
0137デフォルトの名無しさんNGNG
好きなMusicianは誰ですか?
0138デフォルトの名無しさんNGNG
加藤茶
0139デフォルトの名無しさんNGNG
>>132
あんたの頭がおかしいだけ。
型の勉強をした後>>131をみれ 
0140デフォルトの名無しさんNGNG
>>139
>あんたの頭がおかしいだけ。

一言多いアフォだな
0141デフォルトの名無しさんNGNG
>>140
まぁ、値を持たない変数とか言ってる時点である程度の寝たレスは覚悟した方がいいと思われ。
0142デフォルトの名無しさんNGNG
ある値を持つb 自体はどういう意味があるの?
>>131は理解できるけど
0143デフォルトの名無しさんNGNG
>>141
int i;
printf("%d ",i);

するとなんか大きい数が表示されるけど
これはなんか意味あるの?
とりあえずはiを格納するメモリ領域が
決まって、iに値を入れる前はその領域に
以前に書かれたデータがそのまま表示されてるだけだと思うけど
0144デフォルトの名無しさんNGNG
>>143
そらそうだね。
0145デフォルトの名無しさんNGNG
>>143
それとあれとの関係は?
わからなかったっす。
0146デフォルトの名無しさんNGNG
141==144==145

( ´,_ゝ`) プッ
0147デフォルトの名無しさんNGNG
>>146
オチがこれか。
ファイト!
0148デフォルトの名無しさんNGNG
>>147
オマエモナ
0149デフォルトの名無しさんNGNG
>>148
そんなあなたも>>141
0150馬鹿☆栗子NGNG
void mul(const int ma[2][3],const int mb[3][2],int mc[2][2])

っていう mc=ma+mbのような配列を作りたいんですけど

 だれか 教えて
0151デフォルトの名無しさんNGNG
意味側下欄
0152デフォルトの名無しさんNGNG
>>150
mc = ma * mbでしょ。
0153デフォルトの名無しさんNGNG
>配列を作りたいんですけど
int ma[2][3]={
{0,1,2},
{3,4,5}
};
int mb[3][2] = {
{0,1},
{2,3},
{4,5}
};
int mc [2][2];
mul( ma, mb, mc);
0154粟 稗子NGNG
char *a[]とはどういうこととなのか教えていただきたいですわ。
0155デフォルトの名無しさんNGNG
>>154
char型へのポインタの配列a。
もう逝ってよし!
0156デフォルトの名無しさんNGNG
char *とintを引数に取りchar *を返す関数へのポインタを返す関数funcのプロトタイプを書け。(15点)
0157デフォルトの名無しさんNGNG
char* iya_n(char *cp, int *ip);
0158157NGNG
Σ(゚Д゚;)しまった罠か
0159デフォルトの名無しさんNGNG
>>156
funcの引数は?
0160デフォルトの名無しさんNGNG
>>159
任意。
つーか俺もわからん。
0161デフォルトの名無しさんNGNG
>>156
char *(*func())(char *, int);
0162160NGNG
char (*)(char *,int)
これを返す関数か・・・わからん
0163デフォルトの名無しさんNGNG
>>161
それだとfuncの引数がchar *とintにならない?
とすると、char *(*func(char *, int))(void);
こうなるんだろうか。
0164デフォルトの名無しさんNGNG
>>163
それだとfuncの引数がchar *, intになってしまうよ。
0165デフォルトの名無しさんNGNG
>>163
ならないよ。
0166デフォルトの名無しさんNGNG
typedef char* iya_n(char *cp, int *ip);
iya_n func( ... );
0167デフォルトの名無しさんNGNG
>>163はchar *型を返す関数へのポインタを返す、char *, intを引数に取る関数func。
0168デフォルトの名無しさんNGNG
iya_n *func( ... ); ダナ
0169163NGNG
そうなのか・・・
じゃあfuncがintを引数に取るとすると、>>161はどんな感じになるの?
0170デフォルトの名無しさんNGNG
>>169
char *(*func(int))(char *, int);
0171デフォルトの名無しさんNGNG
>>169
char *(*func(int))(char *, int);
0172デフォルトの名無しさんNGNG
>>170-171
そこにfuncの引数リストが来るのかー!!
ありがとう。
0173デフォルトの名無しさんNGNG
配列を宣言する時
n=5;
a[n]としたいんですがどうすればいいでしょう??
defineはなしで。
nが変数なので
0174デフォルトの名無しさんNGNG
>>173
C99対応コンパイラでそのままコンパイルできる。
0175デフォルトの名無しさんNGNG
>>173
できません。
C99ではできるらしいけど。
0176デフォルトの名無しさんNGNG
おお!ケコーン>>174-175
0177デフォルトの名無しさんNGNG
>>173
配列定義は整数定数式じゃなきゃ無理
01781NGNG
>>173
ポインタにしてmalloc
0179こまった君NGNG
double **ps;
double ps_dammy[30];
for(i = 0; i<30; i++ ) {
〜〜〜中略〜〜〜
ps_dammy[ i ] = psbuff;
}
ps = &ps_dammy[0]
for (j=0; j<20; j++){
printf (" ps[ %d ] = %f \n ", j , ps[j]);
}
これで、0ばかり表示されます。うまくはいっていないようです。
ちなみに中略の部分の問題ではないです。(∵一次元の配列ポインタならうまくいくので。。)
僕的には、
ps = &ps_dammy[0];
とすると、下記の二次元配列の■の部分に格納されると、認識しているのですが、違うのでしょうか?
  j→
  ■■■■‥■■
i   :
↓□□□□‥□□
  □□□□‥□□
要は、上記のような■の行にps_dammy[30]という配列を入れたいんですが。。
--------------------------------
または下記のような列にいれたい。。。けど、
下記のような列だと、メモリ内のアドレスは、とびとびですよね?
  j→
  ■□□□‥□□
i   :
↓■□□□‥□□
  ■□□□‥□□
0180ファナルアンサー?NGNG
さてここで問題

そんな困惑中の>>173さんが次にとる方法は?

A #defineを使う        B malloc/free
C Cがイヤになって逃亡     D >>174と>>175の仲人をつとめる
0181こまった君NGNG
>>180
C でファイナルアンサー。
0182デフォルトの名無しさんNGNG
C でファイナルロリータ
0183デフォルトの名無しさんNGNG
>>180
マジレス。C99未対応ならBです。
0184デフォルトの名無しさんNGNG
俺はロリコン
0185デフォルトの名無しさんNGNG
psは二次元配列とちゃいまっせ。
0186デフォルトの名無しさんNGNG
int float_to_int_cast(float n)
{
 const int bias = 1258291200;
 n += *(float*)&bias;
 return *(int*)&n - bias;
}

float>intへのキャストに上の関数を使うと良いらしいんですが、
負数の時におかしい値が返ってきます。
負数に対応してないならunsignedにすると思うのですが、
そうなっていないので、コードのバグでしょうか?
0187デフォルトの名無しさんNGNG
>>179
何をしたいのかよくわからんが、

double *pp[30];
for (j = 0; j < 30; j++) pp[j] = &ps_dammy[j];
ps = pp;

で、ps[j][0] としてアクセスすれば目的は達成される。

>>186
ダメダメ。アドレスをキャストしても、肝心の値のキャストがされていない。
0188デフォルトの名無しさんNGNG
>>179
何をするプログラムなの?
0189デフォルトの名無しさんNGNG
>>186
おいおい、なんでそんなtrick code使うんだね?
ってのはともかく。

biasの値の意味を正確に説明してみ? それができたら答えも分かるっしょ。
0190デフォルトの名無しさんNGNG
>>186
IEEEの定義を読まないと答えられない問題だわね。
0191186NGNG
bias の値は ((23 + 127) << 23) らしいっす。
んでもって、何かの本に書いてある高速キャストのテクニックだとか。
0192186NGNG
>>187
レスどもです。
アドレスをキャストして、int値を(int値のメモリイメージのまま)floatとして使うらしいです。
0193デフォルトの名無しさんNGNG
>>191
その23, 127, 23はどこからきているのか、だよ。
0194デフォルトの名無しさんNGNG
>>193
IEEE754の定義によると、floatは、

・符号1ビット
・指数部8ビット
・仮数部23ビット
で出来ている。

正規化バイアスは0x7f(127)である。
0195デフォルトの名無しさんNGNG
>>194
正規化バイアスは、指数部の正規化のためのものです。
0196186NGNG
>>193
わかんないです。
分かれば自分で結論が出せるんでしょうが…
負数に対応していそうなんだけど、実際どうなんだろう?
って事です。

ソースコピペで自前のライブラリに組み込む時に、
unsignedに直すべきか否かで迷っていたりするので。
0197デフォルトの名無しさんNGNG
>>196
たとえunsignedにしても、nが負だったときにはやっぱりおかしくなるっしょ。意味ない。
0198デフォルトの名無しさんNGNG
>>196
先頭の1ビットを見て、0と1の時で処理を分けたら?
0199デフォルトの名無しさんNGNG
>>197
それでも、戻り値がunsignedだったら負数には対応してない
という主張が多少でも読みとれるんじゃないかと。

>>198
それじゃ高速変換の意味が無いと思います
0200デフォルトの名無しさんNGNG
そこまでするならFLD、FISTを使ったほうがいい
0201デフォルトの名無しさんNGNG
この場合、単なるキャストのほうがマシでない?
0202デフォルトの名無しさんNGNG
23と127の謎を解く
http://www.mathworks.com/access/helpdesk/jhelp/toolbox/fixpoint/c3_bev12.shtml
0203デフォルトの名無しさんNGNG
fld/fistpを使った方が微妙に遅かったけど、負数も正確にキャストでけた。
1000万回のキャストループで
>>186 85ms
fld&fistp 123ms
(int) 931ms
となった
0204デフォルトの名無しさんNGNG
>>203
(int)を使うと、FLDCW命令が生成されるので、ストールが発生して
遅くなるんだろうね。
0205こまった君NGNG
>>187
ということは、
>>179のようなとき、次の認識はあっていますよね?
ps = &ps_dammy[0];
とすると、下記の二次元配列の■の部分に格納されると、認識しているのですが、違うのでしょうか?
  j→
  ■■■■‥■■
i   :
↓□□□□‥□□
  □□□□‥□□

>>188
すでにある人の作った会席プログラムをいじって改造したいんですが,内部はいじれないので、
ps[i][j]という二次元配列になんとか格納して、送り出そうとしてるわけです。
ただ、今あるps_dammy[30]という配列を
ps2[i][0]に入れなければならないので、それには、
for文などで、一個一個いれなければならないのかな..と思って質問した次第です。
0206デフォルトの名無しさんNGNG
>>205
それだったら、
double **ps;
とせずに、
double (*ps)[30];
として、ps = ps_dammy; とすればよろしい。
ps[0][0]〜ps[0][29]まで使える。

double **psでどうしても使いたいなら、もう一つポインタ変数を用意して、
double *ps2 = ps_dammy;
ps = &ps2;
として使えばよいが、メモリを二回参照しなければならないので、遅くなり
非効率的。
0207こまった君NGNG
>>206
さっそくのレス感謝いたします。
*psに添え字をつけるのは思いつきませんでした。。
ps[0][ i ]
ではなくて、
ps[ i ][0]のように簡単に入れるほうほうはありませんか?
ps[0][0]〜ps[29][0]のように使用したいのです。
つまり、下記のようにです。こんなのどっちでもいいと思われるかもしれませんが、入れる解析プログラムのほうが複雑なので、いじれないので、解析プログラムが必要なように用意してやらなけりゃいけないのです。
  j→
  ■□□□‥□□
i   :
↓■□□□‥□□
  ■□□□‥□□
これを**psで宣言すると、
■の部分は、メモリ内のアドレスがとびとびになりますよね?
ps = ps_dammy;
とすると、下記のようにはいっちゃいますよね?
  j→
  ■■■■‥■■
i   :
↓□□□□‥□□
  □□□□‥□□
0208デフォルトの名無しさんNGNG
>>207
問題の要点がよくわかった。
そしたら、
double (*ps)[1]; として、
double (*ps)[1] = (double (*)[1])ps_dammy; とすれば、
ps[0][0]〜ps[29][0]まで使える。
0209デフォルトの名無しさんNGNG
>>207
ただし、ps[i][1]〜ps[i][29]までは使えない。
もしワークエリアとして上の変数を使いたいなら、やはりループで
代入するしかない。
0210こまった君NGNG
>>208
ありがとうございます。
..二行目がよくわかりませんが、
代入の仕方をキャストして代入してるってとこでしょうか.
この方法について、まずは調べて見ます。
ありがとうございました。これでやってみます!

>>209の意味は、ようするに、
こんどはps[0][〜]のほうがいっきに代入したりできなくなる。
諸刃の・・ってことで合ってますよね?
つまり、ps[0][〜]のほうに入れたければ、ループで入れろと。
ま、こちらのほうは、5列くらいしかないものですので、ループで回すなりなんなりします。
0211デフォルトの名無しさんNGNG
>>210
>>208は、違う表現のポインタに変換するためにキャストは必須です。
ないと、エラーが出ます。

>>209については、その認識であってます。無理矢理列が1の二次元
配列として認識させているためにこのようなことが起こります。
0212デフォルトの名無しさんNGNG
>>210
>>209の意味は、ps[i][1]〜ps[i][29]は、ps[1][0]〜ps[29][0]と重なって
しまうという意味です。だから、ループで代入するには、>>208のような
方法は使えないということです。
0213こまった君NGNG
>>212
アドレス上重なるということを理解するのが非常に難しいですね、
>>208の方法だと、
double data[30];
double ps_dammy[30];
double (*ps)[5];
for(i=0; i<4; i++){
  for(k=0; k<30; k++) ps_dammy[ k ] = data[ k+i ];//i によって一個ずれたps_dammy[0〜30]を作る
double (*ps)[i] = (double (*)[i])ps_dammy;
}
このようなことをすると、アドレスがかぶって上書きみたいになる(ようするにできない)ってことかな??
0214デフォルトの名無しさんNGNG
>>213
そのように書くと、ps[0][0]〜ps[0][4]にps_dammy[0]〜ps_dammy[4]
が入ってしまいます。
やはり素直に、
double ps[30][5];
for (i = 0; i < 30; i++) ps[i][0] = ps_dammy[i];
のように書いた方がよいですね。
0215こまった君NGNG
>>214
なるほど。。
難しいところですね。
でわ。とりあえず、実践してみます。
ありがとうございました!
0216デフォルトの名無しさんNGNG
Algorithms in C セジウィック著の完全日本語略はないですか??
0217デフォルトの名無しさんNGNG
>>216
第1巻〜3巻まで持ってるよ。
近代科学社刊。
今ではAlgorithm in C++の方しか書店で見かけなくなったけど、
注文すれば手に入るはず。
0218デフォルトの名無しさんNGNG
>>216
第1巻:ISBN4−7649−0255−9 ¥2,800
第2巻:ISBN4−7649−0256−7 ¥3,200
第3巻:ISBN4−7649−0257−5 ¥3,300
各税別
0219デフォルトの名無しさんNGNG
>>217,218
ありがとうございます。探してみます。
0220デフォルトの名無しさんNGNG
a<i<b
の条件を論理的に表したらどうなるのでしょう??
0221220NGNG
間違えました
(a<i<b)の範囲ではないi 
はどのように表現すればいいのでしょう?
0222デフォルトの名無しさんNGNG
a<=i || i>=b
0223220NGNG
>>222
ありがとうございます
0224デフォルトの名無しさんNGNG
(i<=a)||(b<=i)
0225220NGNG
>>224
ありがとうございました。。

って222は俺がやってたミスと同じだ。
0226デフォルトの名無しさんNGNG
>>186
解説。
 const int bias = ((23 + 127) << 23);
// biasは、IEEE 32bit float表現で +1.0E23。

 n += *(float*)&bias;
//  仮数部は最上位に立ったbitのひとつ下から精度分が格納される。
//  1.0E23を加算することで、指数が23未満だったときに23に引き上げられ、かつ
// 仮数部に隠れた最上位ビットが1.0E23(今加算した値)となる。
//  指数が23(精度と同じ)ということは、仮数部がそのまま整数となる。
//  なお指数部がもともと23以上だった場合はこの限りでない。
//  また、負数で絶対値が1E23未満だった場合、この加算で
// 正数(絶対値を1E23から引いた値)になり、その最上位ビットが隠れ、指数が1減る。

 return *(int*)&n - bias;
//  指数が23の場合、指数23のイメージを引くことで、整数部だけが残る。
// 23以外だったときは壊れる。
//  負数だった場合、指数が22のため、23を引いて-1(オール1)になる。
// 仮数部も補数になっているが、指数が1少なかったため、小数点の位置がひとつ低い。
// つまり結果として2倍の値が得られる。
0227デフォルトの名無しさんNGNG
WINDOWSでVC++を使っているのですがMFCやWIN32APIは理解したほうがよいのですか>
3ねんくらいC言語を使っているのですがいまだにHelloWorldしかできません。
0228デフォルトの名無しさんNGNG
MFCとかWin32APIの前にもう少しCを勉強汁。
0229デフォルトの名無しさんNGNG
>>227
3年で1週間レベルだから、100年ぐらいは頑張ってね。
0230デフォルトの名無しさんNGNG
>>229
HelloWorldなら1時間レベルでは
0231デフォルトの名無しさんNGNG
>>230
環境を整えたり、Cの概要を調べるだけで1時間以上かかると思われ。
0232デフォルトの名無しさんNGNG
じゃぁ中とって1日レベル。
3年で1日レベルか・・・・憐れだ。
0233デフォルトの名無しさんNGNG
227は今までgccとか使ってて、
Windows上だとHello Worldしかだせないと言ってるのでは?
0234デフォルトの名無しさんNGNG
だろうな
0235デフォルトの名無しさんNGNG
>>227
>WINDOWSでVC++を使っているのですがMFCやWIN32APIは理解したほうがよいのですか
理解しないと何もできません。
0236デフォルトの名無しさんNGNG
プログラムってやりたいことない人は上達するのですか?
教科書とか参考書って見ていてあまり面白くないですし…
0237デフォルトの名無しさんNGNG
>>236
コンピューターを自分の思うがままに操ることに快感を覚える
人は、プログラムの上達が人一倍早いです。
興味が沸かないなら、他の興味がある事を探した方が得策で
しょう。
0238デフォルトの名無しさんNGNG
>>237
ほかにない場合は…
ぜんぜん伸びないなぁ、と思う今日この頃。
本に頼るからだめなのでしょうか?
言語と全然関係ないじゃん。
0239デフォルトの名無しさんNGNG
本は頼るものじゃなくて利用するもの、と言ってみたり。

プログラム書いてて面白いと思えてればそのうち伸びるでしょ、思えていないなら早めにやめたほうがいいし。
参考書なんてどれもつまらないもの。
さっさと卒業して他のものに手だそう。
キタ━━━━(゚∀゚)━━━━!!と思える本に出会おう。
0240デフォルトの名無しさんNGNG
>>239
キタ━━━━(゚∀゚)━━━━!!
と思える本とは何ですか。
お勧め本見てもぱっとしない
0241デフォルトの名無しさんNGNG
Cマガ、Interface、or 洋書
0242デフォルトの名無しさんNGNG
>>240
スレ違いだけどModern C++ Designとか
0243デフォルトの名無しさんNGNG
C言語(結局VC++)使っているとしてPGから見るOSというのはAPIですよね。
WinならWin32API(MFCやATLはひとまず置いておいて)ですよね。
WinでのProgramを理解するならWin32を理解しろということですよね。
それを使ってC言語の予約語を使ってWindowsでプログラムするのがWindowsプログラムだと。

で、Win32をC++で使うときに一応使い易くするために作ったのがMFCなりOWCだと。


当たり前すぎて馬鹿らしいでしょうが、
これであってますよね。
0244デフォルトの名無しさんNGNG
もう15年前だが、俺も文法なんて1週間かからずに覚えたな。
勉強したって感じより、ゲーム感覚でのめり込んで遊んでるうちに
覚えてしまったって感じ。本なんてなんでもよかったよ。
でも、K&Rだけは読んでもわけわからんかったが(笑)。
0245デフォルトの名無しさんNGNG
getchar()などで入力を待っている状態に
difftime( now,start )などで待ち時間を表示したいのですが
どうすればいいのでしょうか?
0246デフォルトの名無しさんNGNG
selectするとか、thread使うとか。
0247デフォルトの名無しさんNGNG
>>241
洋書なら何でも良いのか?
Cマガと書いてるあたりネタとしか思えないが
0248デフォルトの名無しさんNGNG
float型の配列を0クリアするのにmemset()を使ってよいですか?
他に初期化するのに使える関数はありますか?
0249デフォルトの名無しさんNGNG
>>248
良い
0250245NGNG
>>246
?
select case()を使えってことでしょうか?
後、threadとは何でしょうか?
0251デフォルトの名無しさんNGNG
selectとswitchは違うぞ
0252デフォルトの名無しさんNGNG
C#、C++雑談スレッド     
http://pc.2ch.net/test/read.cgi/prog/1023178697/
0253デフォルトの名無しさんNGNG
strnlenという関数を使いたいのですが、使えません。
LSI CでもFreeBSDでも使えませんでした。なぜなのでしょうか…?
strncpyなんかは使えるのに…

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strnlen.3.html
0254デフォルトの名無しさんNGNG
この関数は GNU の拡張である。
っていう文字が見えませんでしたか?
0255デフォルトの名無しさんNGNG
>>254
それってどういう意味ですか?
0256デフォルトの名無しさんNGNG
>>255
その関数がGNUの拡張だってこと
0257デフォルトの名無しさんNGNG
ワラタ
0258デフォルトの名無しさんNGNG
size_t
strnlen(s, n)
char const *s;
size_t n;
{
size_t i;
for (i=0; i<n && *s; i++, s++) ;
return i;
}
0259デフォルトの名無しさんNGNG
size_t size = sizeof typeof(3.14 * gundam);
0260デフォルトの名無しさんNGNG
Cプログラマは『新ANSI C言語辞典』って持ってた方がいい?
http://www.amazon.co.jp/exec/obidos/ASIN/4774104329/qid=1023192020/sr=1-48/ref=sr_1_2_48/249-8054570-0244362
0261デフォルトの名無しさんNGNG
ただのCなんぞK&R1冊あれば十分。
C++なら色々買え。
0262shigeNGNG
CはK&RとエキスパートCプログラミングで十分。
それ以外は不要。
0263260NGNG
>>261-262
ってことはなくてもいいってことですね。
0264shigeNGNG
info/man
調べものはこれで十分
0265デフォルトの名無しさんNGNG
ふっふっふ
0266デフォルトの名無しさんNGNG
C/C++を独習し始めて何ヶ月くらいでVectorにフリーソフトを出せるくらいに
なりますか?ソフトにもよると思いますがいちばん簡単なもので。
0267デフォルトの名無しさんNGNG
1日。Hello Worldプログラム(ソース付属)
0268デフォルトの名無しさんNGNG
>>266
何でそんなこと訊くの?
0269デフォルトの名無しさんNGNG
packがほしいとか。
ってか、今もpackあるの?
0270デフォルトの名無しさんNGNG
pack最近(というかここ数年)届かねーぞゴルァ。
もう作ってないんだろうけど。
0271デフォルトの名無しさんNGNG
Vectorなんて自分で登録するんだからソフトの出来なんて関係ないよ
0272デフォルトの名無しさんNGNG
vectorに登録されるソフトって増える一方なんだろうか。
0273デフォルトで名無しさんNGNG
>>271
え、あれって自分で登録するもんだったの?
漏れんとこは登録させてくれって向こうから来たよ。
もうかなり昔だけど。
0274デフォルトの名無しさんNGNG
まだ登録ソフト数が少なくて数を増やしたかったんだろ
0275デフォルトの名無しさんNGNG
makefileで教えてください。
プログラム中の#defineを、代わりにmakefile中に記述できますか?
0276デフォルトの名無しさんNGNG
>>275
コンパイラオプション熟読。
0277デフォルトの名無しさんNGNG
>>275 多分-D。
>>276 も言ってるように、makefileじゃなくコンパイラの問題だと思うがどうか。
0278デフォルトの名無しさんNGNG
>>276
>>277
べりーさんくす。-Dでできました。感謝age
0279デフォルトの名無しさんNGNG
Sun のCコンパイラなんですけど「機能」などの文字列定数がコンパイル時に
警告: 不適切なエスケープ: \<0xba>
を出します。
どうしたものでしょう?
0280デフォルトの名無しさんNGNG
>>279
0xba->ASCIIじゃないっす。
0281デフォルトの名無しさんNGNG
>>279
>\<0xba>
漢字コードじゃないの?
0282素人ですみませんNGNG
C言語をこれから学びたいと考えてますが、何分お金がないのでタダで学ぼうと
図書館に行ったんですが、どの本に付属しているCDROMがいいのかっていうのが
判りません。

cygwinを使えって言われたんですが、これはどこで手に入るんですか、また
これと本を借りれば学べるんですかね?
0283デフォルトの名無しさんNGNG
http://www.cygwin.com/
0284デフォルトの名無しさんNGNG
>>279
[�ュ],5cba,FAAD,3F

>>282
検索してからでも良いんじゃない?せっかくのインターネット。
0285デフォルトの名無しさんNGNG
>>282
マルチしまくりですね。
0286>285NGNG
いや、すみません。
早く知りたいもので。

以後気をつけます。
0287デフォルトの名無しさんNGNG
早く知りたきゃさっさと検索すれ。
0288279NGNG
ヽ(`Д´)ノウワァァァン!!
どうすればいいのー?
0289デフォルトの名無しさんNGNG
printf("機能:%s", ss);

とかやってますか?
0290デフォルトの名無しさんNGNG
>>288
ソースをshift jisで書いてるんじゃないの?
EUCとかで書けってことかと。
0291279NGNG
やってます。
0292279NGNG
マシンはShiftJISみたいなんです。あまりUNIX詳しくないんです。
0293デフォルトの名無しさんNGNG
0x5cがエスケープシーケンスとして見なされてるんじゃないの?
"機能"→"機能\"にしてみれ
0294デフォルトの名無しさんNGNG
printf("%s%s", "機能:", ss);

なんつって。
0295デフォルトの名無しさんNGNG
コンパイラがsjisのエスケープをしてなくて平気な環境ってことは
sjisでは書くなという意思表示だと思うが。
それに「マシンがsjis」って何だよ(笑)文字コードはマシンには依存しないし。
エディタ次第でしょ。
0296279NGNG
>>293
Pro*Cかますんでそれだとまずいみたいなんです。

>>294
いっしょのような気が

>>295
んだば、秀丸で書いてFFFTPでEUCに変換してアップしてコンパイルすれば
いけるのかなー
やってみよう
0297デフォルトの名無しさんNGNG
>>295
>それに「マシンがsjis」って何だよ(笑)文字コードはマシンには依存しないし。

PC98x1
0298デフォルトの名無しさんNGNG
>>297
PC98x1のVRAMはJISで、SJISではないよな。
0299デフォルトの名無しさんNGNG
ストリームの概念がいまいち掴めません、教えて
0300デフォルトの名無しさんNGNG
279
コンパイラだますだけなら。
printf( "\x8B\x40\x94\x5c %s", s );
printf( "\x8B\x40能 %s", s );
0301デフォルトの名無しさんNGNG
>>299
ファイル開いて。
0302デフォルトの名無しさんNGNG
>>299
よんで
0303デフォルトの名無しさんNGNG
>>299
とじる。
0304デフォルトの名無しさんNGNG
staticな関数のプロトタイプをヘッダーファイルに書いているやつがいるんですが。
0305デフォルトの名無しさんNGNG
許してあげなさい。
生成されるバイナリが膨れるだけで実害はないから
0306279NGNG
うーん。こまった。
0307デフォルトの名無しさんNGNG
サイズは河原んだろ。意味ないだけで。
0308デフォルトの名無しさんNGNG
>>307
その代わり、同名で引数が違うstatic関数を別ファイルで定義できなく
なる。百害あって一利なし。
0309デフォルトの名無しさんNGNG
>>279
適当なところに\を挿入
0310デフォルトの名無しさんNGNG
>>308
それが目的とか。メリットが想像もつかんけど(笑)
0311デフォルトの名無しさんNGNG
>>306
まだ困ってるの?
EUCに変換やってみようってのはどうなった?
0312279NGNG
EUCに変換したら表示される文字が化け化けになりました。
しかたないので機能という文字はすべて消しました。めでたしめでたしです。
0313デフォルトの名無しさんNGNG
"機能\"でもだめなのか
0314デフォルトの名無しさんNGNG
>>313
>>296
うーん。
"機能\\"はどうか。
0315デフォルトの名無しさんNGNG
printf("unkounko")でコンソールにunkounkoと出力されますが、
コンソールじゃなくてファイルにunkounkoと出力する関数ってありますか?
0316デフォルトの名無しさんNGNG
fprintf();
0317デフォルトの名無しさんNGNG
>>316
速レスサンクスです。
調べてみます。
0318名無し募集中。。。NGNG
printf("うんこうんこ");
0319デフォルトの名無しさんNGNG
main()
{
 freopen("test.txt", "w", stdout);
 printf("unkounko");
}
0320デフォルトの名無しさんNGNG
Void氏ね
0321デフォルトの名無しさんNGNG
>>312
SJISに設定したtelnetで化けたとかか。
0322デフォルトの名無しさんNGNG
0323デフォルトの名無しさんNGNG
sscanf(str,"%[^,],%[^,]",buf01, buf02);
で、文字列strをカンマ区切りでbuf01/buf02に読み込めると
どこかのスレで読んだのですが、
%[^,]の部分て、どのような規約によって決まっているのでしょうか?
MSDN(VC++6付属)で「書式指定」で探してみたんですが
いま一歩理解できなかったです。

何をキーワードにして検索すればよいでしょうか?
それとも、自分みたいなアフォにもわかりやすく
説明しているようなページはありますでしょうか?
0324デフォルトの名無しさんNGNG
>>323
ここなんか明快でよくないか?
http://homepage1.nifty.com/hujitako/yapt/SmartScanf2.htm
0325The 中村NGNG
C言語で
ファイルの削除の仕方を教えてください
シェルでchmod→rmを行いsystemでそのシェルを呼び出す方法をしてますが
これ以外で関数一発でファイル削除が出来るようなのってないでしょうか?
サーチしても見つからず困ってます
どうかご教授お願いします
0326デフォルトの名無しさんNGNG
remove
unlink
0327The 中村NGNG
326さん
どうもありがとうございました
0328デフォルトの名無しさんNGNG
削除にchmodはイランだろ。それともディレクトリに対してchmodしてんのか。
0329デフォルトの名無しさんNGNG
コンソールから入力した10進数値の各桁の値を
配列に格納するにはどうしたらよいでしょうか?
文字列から数値変換するのはなしです。

0330デフォルトの名無しさんNGNG
-'0'
0331デフォルトの名無しさんNGNG
>>330
よくわかんないです(´д`;)
0332デフォルトの名無しさんNGNG
>>329
int i;
char str[20];
scanf("%d", &i);
sprintf(str, "%d", i);
0333デフォルトの名無しさんNGNG
>>329

数字 c ---> 数値 c - '0'

ASCII コード表を見ながら、 c に '1' から '9' までの
数字を実際に代入して確認してみてください。
0334デフォルトの名無しさんNGNG
>>329

捕捉。「数字」と「数値」の違いを調べてみて下さい。
03351 NGNG
本を買えよ
0336デフォルトの名無しさんNGNG
ソフトもかえよ
0337デフォルトの名無しさんNGNG
memcopyの使い方を教えてください。
コピーするのはわかるんやけど、
ヘルプを見ても意味がわからないのです。
memcopyで配列をコピーしたいのです。
例えばp[20][30]の配列をw[20][30]の配列へ・・・
0338デフォルトの名無しさんNGNG
memcopyって何ですか?
0339デフォルトの名無しさんNGNG
#include <mem.h>
void *memcpy(void *dest, const void *src, size_t n);

void *_wmemcpy(void *dest, const void *src, size_t n);

解説

n バイトのブロックをコピーします。
memcpy は,UNIX の System V で使用できます。
memcpy は,n バイトのブロックを src から dest にコピーします。src と dest が重複する場合の memcpy の動作は未定義です。

こう書いてるけど実際、どうやるのかがわからない。
0340デフォルトの名無しさんNGNG
int p[20][30];
int w[20][30];

memcpy((void*)w, (void*)p, sizeof w);

(キャストはいらないかもしれない。)
0341デフォルトの名無しさんNGNG
>>339
memcpyなら知ってます。
0342デフォルトの名無しさんNGNG
C言語でこの意味がわかりません、教えてください

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
0343デフォルトの名無しさんNGNG
Cの2次元配列って隙間なくびっちりだっけ?
0344デフォルトの名無しさんNGNG
>340
憶測でものを言うな!
0345344NGNG
>343
多分。
0346デフォルトの名無しさんNGNG
>341 ヴォイドレス イラネ
0347デフォルトの名無しさんNGNG
>>342
おまじないです。
0348デフォルトの名無しさんNGNG
>>343
もし隙間があったとしても、このばあい問題ないんじゃねーの?
0349デフォルトの名無しさんNGNG
>>343
配列の要素のアドレスを調べて確認しる。
0350343NGNG
そりゃそうだなヽ(´ー`)ノ
0351デフォルトの名無しさんNGNG
1 little
2 little
3 little indians,
4 little
5 little
6 little indians,
7 little
8 little
9 little indians,
10 little indian boys.

プログラム中にlittle、indianは一回、数字は2と4から10は一回もでない

誰か教えてください!
0352デフォルトの名無しさんNGNG
>>351が何を言ってるのかわかりません。

誰か教えてください!
0353デフォルトの名無しさんNGNG
>>351 教えて欲しいのはこっちだ。
0354351NGNG
このプログラムを作らなくてはいけません
0355デフォルトの名無しさんNGNG
            ρ(´-`ρ)
      ★ゆんゆん★
(σ´ー`)σ
0356デフォルトの名無しさんNGNG
>>351
printf(
"1 little \n"
"2 little \n
"3 little indians, \n"
"4 little \n"
"5 little \n"
"6 little indians, \n"
"7 little \n"
"8 little \n"
"9 little indians, \n"
"10 little indian boys. \n"
);
0357デフォルトの名無しさんNGNG
>>356
そういうの飽きた
0358351NGNG
>>356
プログラム中にlittle、indianは一回
0359デフォルトの名無しさんNGNG
>>351
プログラミングを勉強する前に日本語を勉強してください。
0360デフォルトの名無しさんNGNG
>>358
何をするプログラムなの。
0361351NGNG
>>359
波平
0362351NGNG
歌詞を表示するプログラムです
0363デフォルトの名無しさんNGNG
宿題なら宿題スレに。
しかし >>359 に同意
0364351NGNG
早く教えて
0365デフォルトの名無しさんNGNG
失せろ。
0366351NGNG
>>363
宿題スレに書きました
0367デフォルトの名無しさんNGNG
memcpy教えてくれてありがとう!!
0368デフォルトの名無しさんNGNG
cpyって何の略? capacity?
0369デフォルトの名無しさんNGNG
>>368
copy.......
0370デフォルトの名無しさんNGNG
wavファイルを読み込んで音量を調節したものを出力するソフトを作っています
波形データを配列に格納するところまでは成功したので,とりあえず音量を半分にしてみようと思って
for(DWORD i = 0; i < nSamples; i++)
{
lChannel[i] /= 2;
rChannel[i] /= 2;
}
とやってみたのですが,どうにも上手くいきません.出力された波形を見ると,
真ん中で二つにパックリ割れてしまっているような感じになっています.
正しい処理の方法を教えてください
0371デフォルトの名無しさんNGNG
波形処理とか全然詳しくないが、音量を半分にするのは
単に値を1/2すればいいってもんじゃなかったぞ、確か。
詳しいことは↓で聞いてみるとよいかも。

サウンドプログラミング
http://pc.2ch.net/test/read.cgi/tech/996171508/l50
0372デフォルトの名無しさんNGNG
最強の言語はやっぱCですか
0373デフォルトの名無しさんNGNG
>>372
いや、オヤジギャグでしょう。
どんなにまじめな気分のときでも、どんなにやる気がみなぎっているときも、
一瞬にして皆を脱力させてしまう。
暴漢に襲われそうになったときは、まずオヤジギャグで相手の攻撃意欲を
打ち砕き、脱力しているすきに逃げ去る。
戦わずして勝つ方法。「孫子の兵法」にもこの手は載っていない。
最強の言語。
0374デフォルトの名無しさんNGNG
>>370
DBからAMPに変換した後1/2にして、その後またDBに変換
0375デフォルトの名無しさんNGNG
370
無圧縮PCM formatのデータはDWORD(unsigned long)はかったと思う。
たしか8bit符号なしか16bit符号つきのどちらかだったと思う。
0376デフォルトの名無しさんNGNG
ウィンドウに線を表示するにはどうしたらいいでしょうか
0377デフォルトの名無しさんNGNG
LineTo
0378デフォルトの名無しさんNGNG
for(i = 0 ; i < MAX_WIDTH ; ++i) {
 pset(i, 10);
}
0379デフォルトの名無しさんNGNG
>>377
どうもありがとうございました
0380デフォルトの名無しさんNGNG
>>377
>>378
ついでにヘッダーも教えてください
0381デフォルトの名無しさんNGNG
#include <windows>
0382デフォルトの名無しさんNGNG
>>376
> ウィンドウに線を表示するにはどうしたらいいでしょうか
OSくらい示せよ・・・それ以前にスレ違いだが。
0383323NGNG
>>324
おそレスすまんです。
かなり参考になりそうな気がしますです。
少なくとも、ただの文法書よりは100倍読む気になります。
1回読んでもわからないと思うので、がむばつてみます。
0384デフォルトの名無しさんNGNG
windowsプログラムですが(スレ違いかな?)、
const char型の戻り値を返す関数の戻り値を配列に格納したいのですが
うまくいきません。配列中身が全て同じになってしまいます。
0385デフォルトの名無しさんNGNG
>>384
コード晒せ
0386デフォルトの名無しさんNGNG
いまさらだけどInterfaceっていう雑誌の今月号おもしろい
0387こまった君NGNG
---------------------------
dataは
230 231 229
231 229 243
229 243 221
 :
という風なタブ区切り,改行区切りファイルで、
一行づつ(例えば【230 231 229】)読み取って、文字列chaに収めたい。。。
もしも、
FILE *data;
char cha[256];
なら、
data = fopen("test.txt","r");
while( ( fgets(cha , 256, data)) != NULL ) [
〜作業〜
i++
}
でOKなんですが、
----------------------------
double data[100];
char cha[256];
の宣言で、
data[100]が
data[0] = 230 231 229
data[1] = 231 229 243
data[2] = 229 243 221
 :
の場合、
上と同じように一行づつchaに入れるには、どのようにすればよかでしょうか?
while( ( ??? != ??? ) [
作業
i++
}
0388384NGNG
const char *str[128];

for(i=0;i<5;i++){
str[i] = xxx();
}

xxx()関数の戻り値はPCSTR型です。
こんな感じです。配列strに文字列が入ると思うんですが、うまくいかない感じです。
PCSTR型ってconst char *型ですよね?違ったかな・・・
0389デフォルトの名無しさんNGNG
constjyなくstaticじゃねーの
constって定数じゃなかったけ
0390デフォルトの名無しさんNGNG
>>388
LPCSTR str;

str = xxx();

ならポインタ変数strに文字列の先頭アドレスが入るとは思うが。
0391デフォルトの名無しさんNGNG
>>388
str[i] = xxx();
は、xxx()が既存のどこか別の場所に文字列を書き込み、その先頭アドレスを返すわけだな。
実行するごとに変わるのはその文字列の内容であって、アドレスは変わらない。

str[i] = xxx();の代入は、文字列の内容ではなくアドレスを保存しているため、
すべて同じアドレスしかなく、内容を参照すると最後の実行結果の文字列しか読めないわけね。

アドレスじゃなく内容をコピーしる!
0392デフォルトの名無しさんNGNG
>>388
単にxxxが同じバッファ再利用してるだけじゃねぇの?
0393デフォルトの名無しさんNGNG
適当なこと書くんじゃねーYO!
0394384NGNG
確かに>>388さんがおっしゃるように、内容を参照すると
最後に実行結果の文字列しか表示されません。
アドレスじゃなくて内容をコピーするのはどうすれば良いでしょう?
0395384NGNG
間違えました、>>391さんですね。
0396デフォルトの名無しさんNGNG
>>394
それくらい自分で(以下略
0397デフォルトの名無しさんNGNG
>387
君はまずデータ型と実データの関係をもっと勉強するべき。
「double data[100]」と宣言してるのに、
実データのイメージを「data[0] = 230 231 229」と書いている時点でかなりヤバイよ。
0398デフォルトの名無しさんNGNG
>>394
memcpy使え。
その前にxxxが返す文字列分のメモリをstr[i]に割り当てる必要はあるが
0399デフォルトの名無しさんNGNG
>>398
文字列なら strdup() かね。非標準だが、大抵の処理系にはあるし、なければ
簡単に自作できる。
0400384NGNG
>>399
strdup()でうまくいきました。ありがとうございますー。
文字列のコピーを考えたとき、strcpyとlstrcpyが頭に浮かんできたので
試してみたけどダメでした。コピーと言っても方法がいろいろあるのでしょうか。
良ければstrdup関数の自作方法を教えていただきたいのですが。
0401デフォルトの名無しさんNGNG
>>400
メモリ管理(malloc, free)について勉強しましょう。
0402384NGNG
>>401
了解しました。もう少しCの勉強をしておきます。
0403デフォルトの名無しさんNGNG
>>370
そんな感じのやり方で良いと思うが…。
処理後の波形でplayすると歪んだ音になるのか?
>真ん中で二つにパックリ割れてしまっているような感じ
どうゆう波形なのか今いち想像つかん(w
0404_NGNG
ファイルのサイズを、取得する方法をおしえて。
0405デフォルトの名無しさんNGNG
>>404
二種類ある。
1. ディレクトリ検索結果から得る方法。
2. ファイルを開き、末尾にseekして現在位置を得る方法。
あとは自分で調べて。
0406デフォルトの名無しさんNGNG
WindowsならGetFileAttributesExがいい
0407デフォルトの名無しさんNGNG
>>370
音量を半分にするなら
信号の振幅をdbmで半分にしないと
0408デフォルトの名無しさんNGNG
変わり種で、_stat
0409デフォルトの名無しさんNGNG
>403
unsignedとsignedを間違えて扱ったんじゃないか?
0410デフォルトの名無しさんNGNG
>>400


#include <string.h>

char *strdup(char *s){

    char *p = NULL;

    p = (char *)malloc(strlen(s) + 1);
    if(p != NULL)
        strcpy(p, s);

    return p;
}
0411デフォルトの名無しさんNGNG
>>387

    char cha[100][256];
    int i = 0;

    while(fgets(char[i], 256, data) != NULL && i < 100){
        作業
        ++i;
    }
0412デフォルトの名無しさんNGNG
すいません厨房です。
RGBで白の場合は(0xff,0xff,0xff)となるらしいですがその中の「0x」というのは
何ですか?
0413デフォルトの名無しさんNGNG
>>412
0xがわからないのに、ffは何か知ってるの?
0414デフォルトの名無しさんNGNG
何故本を読まないのですか|o|
0415デフォルトの名無しさんNGNG
>>413
アングラかぶれだからです。

>>414
2ちゃんねらーだからです。
0416デフォルトの名無しさんNGNG
>>412
Cの仕様でしょう。
変数名と区別するために、先頭に0をつけ次のxで(以下略
0417デフォルトの名無しさんNGNG
まだC++でもかんぜんにCを凌駕出来ないといわれますが
C言語に出来てC++に出来ないことは何ですか?
0418デフォルトの名無しさんNGNG
はぢめて聞いた・・・まぢで?
0419417NGNG
C++はまだ完全にCを超えてないといいませんか?
確かそう聞いた。
2chでも見たような気がする。
それで何が違うのだろうと思ったのです。
0420デフォルトの名無しさんNGNG
>>419
> C++はまだ完全にCを超えてないといいませんか?
はつみみです。
0421デフォルトの名無しさんNGNG
>>419
使える人の数とかじゃないの?
0422デフォルトの名無しさんNGNG
配列を値で返すことはできるでしょうか。
できたら、どうすればいいか教えて下さい。お願いします。
0423御茶目菜子NGNG
バカか
いまごろCかよ。ふるいんだよ。おまえら死ね。
いまどきの言語はよ〜
ポケコンBASICだぜ!!
0424デフォルトの名無しさんNGNG
>配列を値で返す
どういう意味?
0425デフォルトの名無しさんNGNG
>>422
配列自体はできないが、構造体は返せる。
これを利用して、構造体の中に配列を入れて返せばいいんでない?
0426デフォルトの名無しさんNGNG
配列の先頭へのポインタを返すんじゃないの?
0427デフォルトの名無しさんNGNG
>>426
値を返すこと、といってるし
0428デフォルトの名無しさんNGNG
> C言語に出来てC++に出来ないことは何ですか?

void*から他のポインタ型への暗黙のキャスト
0429デフォルトの名無しさんNGNG
プロトタイプ宣言なしの未知関数呼び出し
0430デフォルトの名無しさんNGNG
>>411

x  fgets(char[i], 256, data) != NULL && i < 100

o  i < 100 && fgets(char[i], 256, data) != NULL
0431デフォルトの名無しさんNGNG
逆にC++にできてCに出来ないことの1つに
ブロック中のどこでも変数が宣言できるってのがあるけど、
これってプログラムが見にくくならない?

俺はC++でも新しい変数使うときはブロックにしてるけど
0432デフォルトの名無しさんNGNG
>>431
当たり前。どうしても仕方ない時だけに使う。
あと演算子関数以外でリファレンスを使いまくって読みづらくするのはDQN
0433デフォルトの名無しさんNGNG
constじゃない&ね
0434 NGNG
構造体で,
typedef struct{
 int a;
 int b[30][30];//ここ
}c;

というふうにしてはいけないんですか?
0435デフォルトの名無しさんNGNG
>>434
いけなくないよ。
誰かがいけないなんていったのなら、そいつに問いただせ。
0436デフォルトの名無しさんNGNG
>>434
いけないんですか?
0437434NGNG
前々スレでいわれました
気になったんで聞きました
0438デフォルトの名無しさんNGNG
>>434
ここで聞かなくてもコンパイラが教えてくれると思うが・・・
0439monosiriNGNG
コンパイラは,だめでもそのままってことあるっしょ
じゃなきゃおちないじゃん
0440デフォルトの名無しさんNGNG
>>439
シンタックスエラーで落ちるってのは初耳
0441デフォルトの名無しさんNGNG
>>440
ttp://pc.2ch.net/test/read.cgi/tech/1021554929/348
0442デフォルトの名無しさんNGNG
>>441
http://pc.2ch.net/test/read.cgi/tech/1021554929/349
0443デフォルトの名無しさんNGNG
>>439 「コンパイルは通っても・・・」って意味か?
>>434の質問(あのような構造体を定義していいかどうか)とは関係ないと思うが。

>>441 ?
>>442 ?
0444デフォルトの名無しさんNGNG
猫でも分かるプログラミングという有名ページがありますが
あそこには長初心者用と書いてあります。
あれが理解できても初心者ですか?
Windowsプログラミングに関してはかなりのものになると思うのですが
実際はまだまだなのでしょうか…
確かにあそこだけでは自分でオリジナルなものを作るのには
厳しいと思いますけどWindowsの仕組みを理解するには十分すぎる気もします。
0445デフォルトの名無しさんNGNG
>>432
程度問題だが、俺の判断基準だと

 インスタンス構築にコストがかかる or コンストラクタに引数を渡す必要がある
 場合には、ギリギリまで遅らせる意味がある。

 ループカウンタ(イテレータ)は for の中で宣言。

ぐらいかな。もっとも C++ だとループも algorithm 使うことが多いけど。
(これ以上は C++ スレで聞いた方が良いと思うぞ)
0446デフォルトの名無しさんNGNG
>>444
初心者という言葉は知識をまったく規定しない。本人の意識の問題。
0447デフォルトの名無しさんNGNG
あのページを便利なリファレンス(あるいはコピペ元)として使ってる奴は
たくさんいると思われ。
0448デフォルトの名無しさんNGNG
>>444
Win32 スレで聞け。
0449デフォルトの名無しさんNGNG
>>443

>>439 = シンタックスエラーとバグを混同
>>440 = 突っ込み
>>441 = 実は439はネタでした(藁
>>442 = そうでも言わないとやってられないね(憐
0450デフォルトの名無しさんNGNG
>>449
ああ、何でDelphiのスレ指してるのかと思った。そういうことね。
0451444NGNG
誘導有難うございます
0452デフォルトの名無しさんNGNG
ちゃんとファイルの先頭に#include <math.h>と書いてあるのに
コンパイルすると次のようなエラーがでます。

/tmp/cc5Soiex.o: In function `main':
/tmp/cc5Soiex.o(.text+0x144): undefined reference to `sqrt'
/tmp/cc5Soiex.o(.text+0x152): undefined reference to `log'
/tmp/cc5Soiex.o(.text+0x1f4): undefined reference to `getBf'
/tmp/cc5Soiex.o: In function `dft':
/tmp/cc5Soiex.o(.text+0x336): undefined reference to `cos'
/tmp/cc5Soiex.o(.text+0x358): undefined reference to `sin'
/tmp/cc5Soiex.o: In function `idft':
/tmp/cc5Soiex.o(.text+0x3e1): undefined reference to `cos'
/tmp/cc5Soiex.o(.text+0x403): undefined reference to `sin'
collect2: ld returned 1 exit status

アドバイスお願いします。
0453デフォルトの名無しさんNGNG
>>452
-lm
0454デフォルトの名無しさんNGNG
UNIX関係だね。

#include <math.h>で解決するのはコンパイル。
そのエラーはリンクエラーね。
gcc(cc)の引数に -lm を付けろってこと。-lはライブラリ指定で、mがmath用の名前。
0455452NGNG
ありがとうございました。
0456デフォルトの名無しさんNGNG
#include <stdio.h>
#define N 4
int count, p[N];

void show(void)
{
int i;

count++; printf("%5d: ", count);
for (i = 0; i < N; i++) printf(" %d", p[i]);
printf("\n");
}

#define TRUE 1
#define FALSE 0
char ok[N + 1];

void put(int pos, int k)
{
int j;

p[pos] = k;
if (pos == N - 1) show();
else {
ok[k] = FALSE;
for (j = 1; j <= N; j++)
if (ok[j]) put(pos + 1, j);
ok[k] = TRUE;
}
}

void genperm(void)
{
int k;

count = 0;
for (k = 1; k <= N; k++) ok[k] = TRUE;
for (k = 1; k <= N; k++) put(0, k);
}


#include <stdlib.h>

int main()
{
printf("順列\n"); genperm();
return EXIT_SUCCESS;
}
0457456NGNG
456のプログラムで1〜4までの順列を辞書順に列挙できると思うんですが、これを改良して
たとえば4個から2個を選んでその順列を辞書順に列挙するようにはできないでしょうか・・・
0458デフォルトの名無しさんNGNG
>>432
何でリファレンス使ったら読みづらくなんのよ?
0459デフォルトの名無しさんNGNG
>>458
奴がDQNだから。
0460デフォルトの名無しさんNGNG
>>458
使ったらじゃ無くて使いまくってだろ
0461デフォルトの名無しさんNGNG






                DQN的質問、定期的に出るよなぁ。
0462デフォルトの名無しさんNGNG
>>461
それが普通だと思われ。
0463ERROR:スレッド立てすぎです。。。NGNG
みんなで力をあわせて、軽くてオープンソースなprintfを作りませんか?
スタック消費量は とりあえずの目標値として100バイト以下って感じで。

浮動小数点とか、16進表示とか、いる機能いらない機能を
使う人が自由にカスタマイズできる、そんな自由なprintfを!

0464C言語永久不明NGNG
学生時代から現在にかけてC言語はいまだに分からん。全く理解できていない。
初心者と思ってくれて良い。この永久不明君に教えてくれ1よ。
社内でも、外注先でも、C言語が分かる人=Cマガ読者なんだよね。
そんないい加減な言語に対処するため、ANSI C言語辞典をかたわらに
今日も独学で頑張る俺。さて、俺がにらんだからには
一人で沢山カキコします。お付き合いください。
0465デフォルトの名無しさんNGNG
>>463
昔作った奴。
好きなように改造してくれ

int sprintf(char*b,char*f,...)
{
 va_list v;
 unsigned i,n;
 char x,*o,*h=b,s[99];
 va_start(v,f);
 while(*f){
  if(*f^37)
   *b++=*f;
  else{
   o=s+97;s[98]=i=0;x=*++f;
   x==37?*o=37:x==99?*o=va_arg(v,char):x=='s'?o=va_arg(v,char*):0;
   if(i<9){
    n=va_arg(v,int);
    if(i>6)
     if((int)n<0)*b++='-',n=~n+1;
    i=i==5?16:i==6?8:10;
    while(*o="0123456789abcdef"[n%i],n/=i)o--;
   }
   while(*b=*o++)b++;
  }
  f++;
 }
 va_end(v);
 return b-h;
}
0466デフォルトの名無しさんNGNG
>465
ソースの汚さは別にして、オレはあんたを尊敬する。
0467デフォルトの名無しさんNGNG
確かに汚いソース(笑)
0468465NGNG
ゴメソ試したら動かなかったんで、作成中かその他のソースだったらしひ
こっちが正しい奴みたい。

#include <stdarg.h>
typedef char c;
int sprintf(c*b,c*f,...)
{
 va_list v;
 unsigned i,n;
 c x[9]="%csuxodi",*o,*h=b,s[99];
 va_start(v,f);
 while(*f){
  if(*f^37)
   *b++=*f;
  else{
   o=s+97;s[98]=i=0;x[8]=*++f;
   while(x[i++]!=*f);
   if(i<3)*o=i==1?37:va_arg(v,c);
   else if(i<4)o=va_arg(v,c*);
   else if(i<9){
    n=va_arg(v,int);
    if(i>6)
     if((int)n<0)*b++='-',n=~n+1;
    i=i==5?16:i==6?8:10;
    while(*o="0123456789abcdef"[n%i],n/=i)o--;
   }
   while(*b=*o++)b++;
  }
  f++;
 }
 va_end(v);
 return b-h;
}

#include <stdio.h>
int main()
{
 int i;
 char buf[512];
 printf("\n%d:%s\n", i, buf);
 i = sprintf(buf, "%%%s%s%s %c %d %u %x %i %u %o", "test1 ", "test2 ", "test3", 'a', -123, 123, 0x123fe, -123, -123, 83);
 printf("\n%d:%s\n", i, buf);
 return 0;
}
0469デフォルトの名無しさんNGNG
>>463
作るのはおもしろい、というか俺も昔作ったけど、当時は狭苦しいDOSとか用だったしなあ。
今はそういう要求は思いつかん。なんでスタック消費にこだわるの? それによるメリットは何?
組み込み系で使うのかな?
0470C言語永久不明NGNG
C言語は動作が仕様で決まってないなど、不明点が多いこと、
入門書しかない点だ。腹立つことが多いね。
例えば、>>452の質問だ。これあきらかに452の指導者がバカなわけでしょ。
452はどうせ高校か大学の情報処理の授業の宿題程度だろ。教官がバカだね。

あきらかにコンパイル、リンク、ヘッダファイル、ライブラリ、アーカイブ、
そういった基本的なことを理解してないことが集約されている質問。
ansi cとして提供(実装)されている関数の基本的な利用方法を教えていない。
cc,ar,nm(あるか?)とかの使いかたも当然、教えていないと思う。
*.o,*.so,*.aの違いを知らんと。
分割コンパイルをやったことも無いだろうし、makefileも作ったことないと思う。
推論規則、拡張子ルール、依存関係そんなものも分かっていないはず。
当然構文解析や、字句解析、コンパイラがどう実装されているかも知らんわな。
最適化だのインライナーだのアセンブラだの、処理系で違うだろうが、ccのオプション
でいろいろできることもしらんわな。
0471C言語永久不明NGNG
>>431,432も何いってんの。
変数使用する直前に変数宣言できるからいいんでしょ。
それで公共システム何個も動かしてて問題起きないよ。
C言語でやるときはしょうがないから、{}でブロック作るんでしょ。
0472デフォルトの名無しさんNGNG
>>461
それは誰に対して?
0473デフォルトの名無しさんNGNG
>>470
あなたは釣り師デスカ?
0474デフォルトの名無しさんNGNG
>>471
変数宣言がまとまってるのが嫌い?
0475デフォルトの名無しさんNGNG
>>474
カウンターなどの変数なら、関数の先頭で宣言を強制してもよいと
思うが、クラス変数や反復子までもが先頭での宣言を強要されると
ウザイよ。というか困るよ。

C++でのクラス変数の宣言は、文と同じくらいの意味を持っているか
らね。
0476デフォルトの名無しさんNGNG
470が超弩級のアフォだということはわかった
0477デフォルトの名無しさんNGNG
(´_ゝ`)ふーん
0478デフォルトの名無しさんNGNG
>>471
そうだね。
そして使わなくなった直後にスコープ外に出すことは出来ない(藁
これをするには結局{}で囲まなきゃ
0479465NGNG
>>475
「リソースの獲得は初期化」イディオムだな。
この場合、クラスのコンストラクト時にリソースの獲得を行うのが普通、と。
0480デフォルトの名無しさんNGNG
479
消し忘れ
0481デフォルトの名無しさんNGNG
>>470
> 例えば、>>452の質問だ。これあきらかに452の指導者がバカなわけでしょ。

独学だろ。
0482デフォルトの名無しさんNGNG
質問です。
関数で複数の返り値を返したい時はどうすればいいのでしょうか?
0483デフォルトの名無しさんNGNG
>>482
1)同じ型の値なら配列を返すことはできる。
2)異なる型のセットなら構造体で返すことができる。
3)自由に構成が変わるタプルの構成なら文法レベルでは無理。ライブラリを作って擬似的に対処する。
0484デフォルトの名無しさんNGNG
>482
4)とりあえずグローバル変数経由で返すのはやめとけ。
0485デフォルトの名無しさんNGNG
>>482
>>483の3)に相当するのなら、unionで定義しておき、void *を返して
戻り先でキャスト汁!
0486デフォルトの名無しさんNGNG
5)返すわけではないが返してほしい値をセットするための変数を引数として渡す。一般的にはこれかな。scanf等がいい例。
0487デフォルトの名無しさんNGNG
>>482
方法は色々あるけど、ふつうは構造体へのポインタを渡して、そこに書き込ま
せるかな。構造体を作るまでもないデータなら、組込型へのポインタを渡して、
そこに書き込ませることもある。

void foo(int *np1, int *np2)
{
  *np1 = 1;
  *np2 = 2;
}

int main()
{
  int m, n;
  foo(&m, &n);
  /* m に 1, n に 2 が書き込まれる */
  ...
  return 0;
}
0488デフォルトの名無しさんNGNG
>>484
errnoならいいよね?
0489486NGNG
> 変数を引数として

変数のアドレスを引数として
と言うべきだったな。
0490482NGNG
レスありがとうございます。
構造体はまだ使った事が無く分からないので
487さんの方法を試してみます
0491デフォルトの名無しさんNGNG
質問なのですが。。
構造体を関数に渡す場合、値で渡しちゃってもプログラムに悪影響は無いのでしょうか?
0492デフォルトの名無しさんNGNG
>>491
無いです。
でも、サイズが32ビット以上(ポインタのサイズ以上)の物を渡す場合は参照渡しよりメモリを食って処理時間も増えます。
0493491NGNG
そうですか、ありがとうございます。
あと一つ
前に
#define LENGTH 255
char str[LENGTH];
str[LENGTH-1] = NULL;
こんな感じのコードを見ました
間違った書き方ですよね?
0494デフォルトの名無しさんNGNG
>>493
エラーは出ないね。NULLが整数型なら(最近は全部(void *)か)。
どっちにしろその配列を何に使うかは激しく謎だけど。
0495デフォルトの名無しさんNGNG
>>493
間違ってはいないけど、NULLは'\0'にすべきだな(笑)
0496デフォルトの名無しさんNGNG
>>494
char str[LENGTH];とstr[LENGTH-1] = NULL;の間の処理は>>493が省略したんだろ。
0497デフォルトの名無しさんNGNG
>>496
もしかしたら、

「文字列用配列宣言したらその直後にNULLを入れましょう。」

と言う考え方を否定しているのかも。

まぁ、変だけど。

でも、文字列操作失敗しても確保したメモリ以上の参照が行われにくくなるという点では評価できないこともない。
0498463NGNG
>468
すぅばらしい。ムスカ君、キミは英雄だ!

というわけでこれから検証してみます。
0499デフォルトの名無しさんNGNG
497は何か勘違いをしている
0500デフォルトの名無しさんNGNG
NULL == '\0' == 0
0501デフォルトの名無しさんNGNG
>>500
(゚Д゚)ハァ??
0502デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c5.html
0503デフォルトの名無しさんNGNG
int* p = '\0';
VC++でコンパイル通った・・・(゜д゜;)
C++では'\0'はchar型のはずなのに・・・
0504デフォルトの名無しさんNGNG
最小2乗法のプログラムを作り途中なのですが、
下のエラーのコメントをしている部分で、
どうしてもエラーが出て成功しません。
全くどこが悪いのかわかりません。
多次元配列のとり方がまちがってるのでしょうか?
ご教授お願い致します。
#include <stdio.h>
#include <stdlib.h>
main()
{
int i,j,k,n,m,row,column,x,y;
double t,u, det;
double **a,*d;

printf("データセットの数(何セット?)=");
scanf("%d",&n);

printf("1セットのデータ数(ターゲットデータは含まない。)=");
scanf("%d",&m);

/* start_データ入力用配列確保 */
d=(double *)calloc(m+1,sizeof(double));
if(d==NULL) printf("データ入力用配列の確保に失敗\n");
/* end_データ入力用配列確保 */

row=m+1;
column=m+1;

/*start_配列a[row][column]の確保*/
a=(double **)calloc(row,sizeof(double *)); /*行(row)の確保*/
for(i=0;i<row;i++) a[i]=(double *)calloc(column,sizeof(double)); /*列(column)の確保*/
/*end_配列a[row][column]の確保*/

for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%dset_data%d=",i,j);
scanf("%lf",&d[j]);
}

for(x=0;x<row;x++)
{
for(y=0;y<column;y++)
{
if(x=0 && y=0)
        a[x][y]=1;
if(x=0 && y>=1) a[x][y]+=d[y-1];    /*←(エラー)左辺値が必要*/
if(x>=1 && y=0) a[x][y]+=d[y-1];    /*←(警告)不正な代入*/
if(x>=1 && y>=1) a[x][y]+=d[y-1]*d[x-1]; /*←(エラー)左辺値が必要*/
}
}
}
free(d);
for(i=0;i<row;i++) free(a[i]);
free(a);


return(0);
}
0505デフォルトの名無しさんNGNG
>>503
charはintに暗黙変換するので通る。
0506デフォルトの名無しさんNGNG
>>505
じゃなくて 値0 は pointerとも暗黙変換するので、だった。見間違いすまん
0507504NGNG
504です。
すみません。
なんか括弧 { の位置が
めちゃくちゃになって、
見にくくなっちゃいました。。
0508デフォルトの名無しさんNGNG
>>505
int *p = (char)0; // 通らない
0509デフォルトの名無しさんNGNG
>>504
×if (x = 0 && y = 0)
○if (x == 0 && y == 0)
0510504NGNG
509さん。
ありがとうございます。
全く、基本的なとこで間違ってました。
はずかしっ。。。
0511デフォルトの名無しさんNGNG
>>508
Cでは通るがC++では通らない
0512デフォルトの名無しさんNGNG
復活
0513デフォルトの名無しさんNGNG
�d�j?
0514デフォルトの名無しさんNGNG
if(Flg==START)
{
 if(i=1) p=Kou[0].a;
 if(i=2) p=Kou[0].b;
 if(i=3) p=Kou[0].c;
 if(i=4) p=Kou[0].d;
 Flg=end;
}

for(i=0;i<KouMax-1;i++)
{
 if(p[i] < p[i+1])
 temp=p[i]; p[i]=p[i+1]; p[i+1]=temp;
 p+=sizeof(Kou)/sizeof(Kou[0]);
}

こうやるのは可能ですか?
構造体のメンバをソートしたいのですが,
例えば値段順で並べるだけならいいのですが,項目が増えた場合は,
押された項目の番号(i)を使ってソートする内容を変えたいのですが.
0515デフォルトの名無しさんNGNG
>>514
不可能です
if(i=1)...のあたり
0516デフォルトの名無しさんNGNG
ソート関数の引数に「構造体を2つとって比較結果を返すような
関数へのポインタ」を渡す。
構造体をstruct Hogeとすると
かりにa,b,c,dがすべて数値なら(文字列だったらstrcmp)
int cmpA(struct Hoge *m, strcut Hoge *n)
{
return m->a - n->a
}
なのを
cmpB, cmpC
とか作ってソート関数を
void sort(struct Hoge *hoge_array, int (*cmp)(struct Hoge *m, struct *n))
にして
if(i == 1) sort(Kou, cmpA);
else if ( i == 2) sort(Kou, cmpB);
・・・
などと呼び出す。

0517516NGNG
>struct *n
strcut Hoge *n
だった。
0518516NGNG
>strcut
structね・・・欝。
0519デフォルトの名無しさんNGNG
>>516-518
何を焦ってるんだい?
0520516NGNG
>>514
あ、「構造体の配列をソート」じゃないのね。
私の書き込みは忘れてください・・・。
0521デフォルトの名無しさんNGNG
>>514
なんか激しく不自然なデータ構造のような。
とりあえずKouの定義と、どういう風にデータを入れるつもりなのかを説明してみ。

おそらく結局は>>516-518のようなことをやりたいんじゃないかと思うが。
0522初心者家労NGNG
Cでアドレス帳が作れますか?
0523デフォルトの名無しさんNGNG
>>522
出来ます。
0524初心者家労NGNG
やはり構造体を使ったほうが便利ですかな?
0525デフォルトの名無しさんNGNG
>>524
そらね。
0526初心者家労NGNG
ソート機能を作りたいのですが、2次元配列で比較することはできるかな
0527デフォルトの名無しさんNGNG
配列をなら #t
配列でなら #f
0528初心者家労NGNG
漢字はソートしてくれますかな
0529初心者家労NGNG
やっぱり#include <stdio.h>っていうのが何を意味しているのか
ちゃんと知っておいたほうがいいのかな?
0530初心者家労NGNG
ライブラリ関数を定義してるもの?
0531デフォルトの名無しさんNGNG
>>529
しっとくべき。

>>530
ライブラリ関数の名前と引数と返値の型を定義してるもの。
0532デフォルトの名無しさんNGNG
ライブラリ関数を宣言してるもの。
0533初心者家労NGNG
文字列は文字列のまま比較しちゃっていいの?
0534デフォルトの名無しさんNGNG
   /⌒ヽ 
  / ´_ゝ`)   2ちゃんねるで聞いて損した。
  |    /    かえろ!
  | /| |   
  // | |  
 U  .U
0535デフォルトの名無しさんNGNG
>>533
== で比較しては行けない。strcmp() 使え。
0536初心者家労NGNG
ファイル処理関数は何を使えばいいですか?
0537デフォルトの名無しさんNGNG
C言語の入門書をなんか読んでくれ(´д`;) > 初心者家労
0538初心者家労NGNG
5/2を計算しても2.5にならないのはなんで?C言語壊れてるのかな?
0539デフォルトの名無しさんNGNG
>>538
浮動小数点数についてお勉強。
0540デフォルトの名無しさんNGNG
>>538
5.0/2
0541初心者家労NGNG
こんなにがんがっても逝かないのはなんで?嫁さん壊れてるのかな?
0542デフォルトの名無しさんNGNG
>>541
相性が悪いと思われ。
0543デフォルトの名無しさんNGNG
読めさん、炎症でヒリヒリするって、泣いてたよ
0544デフォルトの名無しさんNGNG
そういうときは口で優しく(以下略
0545デフォルトの名無しさんNGNG
typedef struct{
int nedan;
int kosuu;
int syurui;
int uribi;
}KOU;
KOU Kou[10];

void sort( int num ){//numはソートしたい項目の番号
 KOU *p;
 if(num==1) p=Kou[0].nedan;
 if(num==2) p=Kou[0].kosuu;
 if(num==3) p=Kou[0].syurui;
 if(num==4) p=Kou[0].uribi;

for(i=0;i<KouMax-1;i++)
{

 if(p[i] < p[i+1])
 temp=p[i]; p[i]=p[i+1]; p[i+1]=temp;
 p+=sizeof(Kou)/sizeof(Kou[0]);
}
こうやるのは可能ですか?
構造体のメンバをソートしたいのですが,
例えば値段順で並べるだけならいいのですが,項目が増えた場合は,
押された項目の番号(i)を使ってソートする内容を変えたいのですが.
0546デフォルトの名無しさんNGNG
>>545
C++ スレで聞いてる以上、こう答えるけど。

o そもそも効率激悪いソートアルゴリズムを自前で実装せずに std::sort 使え。
o ソート条件を変えたければ 3 つの引数を取る sort に適当な述語を渡せば OK。
0547デフォルトの名無しさんNGNG
>>546
ここはCスレだったり
0548デフォルトの名無しさんNGNG
>>546 迷子の迷子の子猫ちゃん
0549デフォルトの名無しさんNGNG
>>546
ライブラリ使わないと何も出来ない人ってかわいそうだと思います。
0550546NGNG
すまん、ここ C 言語スレだったか……。qsort() に比較関数へのポインタを
渡すけど、それを項目番号によって変えれば?
0551521NGNG
だめ。>>516-518を嫁。
ついでにpは何を指してるんだかよく考えろ。
適当に切り貼りするんじゃない。
0552545NGNG
sortを使えと?
0553デフォルトの名無しさんNGNG
むしろ>>550支持
0554546NGNG
こんなもんかね。

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

typedef struct{
  int nedan;
  int kosuu;
  int syurui;
  int uribi;
} KOU;

KOU kou[10];

#define NELEM(x)    (sizeof(x) / sizeof(x[0]))

#define CMP_FUNC(obj_) \
static int \
cmp_by_##obj_(const void *p1, const void *p2) \
{ \
  const KOU* q1 = p1; \
  const KOU* q2 = p2; \
  return q1->obj_ - q2->obj_; \
}

CMP_FUNC(nedan)
CMP_FUNC(kosuu)
CMP_FUNC(syurui)
CMP_FUNC(uribi)

static int (*cmpfunc[])(const void *, const void *) =
{
  cmp_by_nedan,
  cmp_by_kosuu,
  cmp_by_syurui,
  cmp_by_uribi,
};

void
kou_sort(int sorter)
{
  qsort(kou, NELEM(kou), sizeof(kou[0]), cmpfunc[sorter]);
}
0555デフォルトの名無しさんNGNG
>>554
> #define NELEM(x)    (sizeof(x) / sizeof(x[0]))

(sizeof x/sizeof x[0])にしてくれ。
0556デフォルトの名無しさんNGNG
きったないコード

素直にC++でメンバポインタを使えばいいだろ
0557デフォルトの名無しさんNGNG
>>556
負け惜しみですか?STLオタさん。
0558デフォルトの名無しさんNGNG
>>555
なぜ?
というかむしろ
#define NELEM(x)    (sizeof(x) / sizeof(x)[0])
では。
0559デフォルトの名無しさんNGNG
リストを使おうと思っているのですが,
5番目の構造体とかって参照しずらいですか?
0560デフォルトの名無しさんNGNG
>>556
自分できれいなコード晒してから言えよ。他人におかしな所を指摘されるの怖くて出来ないか?
しかもCスレでC++とはおめでてーな。
0561デフォルトの名無しさんNGNG
>>558
sizeofで括弧で囲むのは型だけにすべき。
0562デフォルトの名無しさんNGNG
>>559
「しずらい」の意味にもよるが、そういう関数を作っとけばいい。
ただし、配列に比べて後ろのほうはアクセスが遅くなるのはしょうがない。
0563デフォルトの名無しさんNGNG
>>561
囲んでも問題ないし、それ以上に#defineの引数は括弧で囲まなければ危険。
0564デフォルトの名無しさんNGNG
>>561
マクロの引数は囲むだろ、ふつう。
0565デフォルトの名無しさんNGNG
>>561 なぜか教えてクリ
0566デフォルトの名無しさんNGNG
>>563
> 囲まなければ危険

それはMACRO(i-3)とかやると危険だということでしょ。sizeof(i-3)なんてやるかしら?
0567デフォルトの名無しさんNGNG
#define NELEM(x) ((sizeof x)/(sizeof x[0]))
これなら安全だろ。
0568デフォルトの名無しさんNGNG
>>566
sizeof(i-3)はべつに変じゃありませんが。
それと、MACROの引数がsizeofに渡るかどうかなんてMACROの利用者には知る必要のないこと。
0569デフォルトの名無しさんNGNG
>>560
汚いことを指摘されて逆切れですか?
0570デフォルトの名無しさんNGNG
>>569
俺(560)は>>554じゃねーよ
0571デフォルトの名無しさんNGNG
>>568
マクロを関数のように使うのなら知るべきだと思うが・・
0572デフォルトの名無しさんNGNG
>>561の理由がわからん。
余分な括弧があっても式は式だし、冗長という以上のものではないよな。
付けるべきでない、とまでいうのなら何か実際的な問題があるという主張なはずだ。
0573デフォルトの名無しさんNGNG
>>561
> sizeofで括弧で囲むのは型だけにすべき。

すべき理由を教えてクリ。
0574デフォルトの名無しさんNGNG
>>555と>>556は

何 で も い い か ら 、 い ち ゃ も ん 付 け た か っ た だ け で す か

0575デフォルトの名無しさんNGNG
�d�j?
0576デフォルトの名無しさんNGNG
>>555, 556のF5攻撃ダー!!
0577お願いですNGNG



C の や り 方 教 え て く だ さ い







まだ童貞なんです。。
0578デフォルトの名無しさんNGNG
>>576
F5?
押しても何もおきませんが?
0579デフォルトの名無しさんNGNG
>>578
                      ____    、ミ川川川彡
                    /:::::::::::::::::::::::::""'''-ミ       彡
                   //, -‐―、:::::::::::::::::::::三  ギ  そ  三
            ___    巛/    \::::::::::::::::三.  ャ  れ  三
        _-=三三三ミミ、.//!       l、:::::::::::::三  グ  は  三
     ==三= ̄      《|ll|ニヽ l∠三,,`\\::三  で       三
        /              |||"''》 ''"└┴‐` `ヽ三   言  ひ  三
         !             | /          三   っ  ょ  三
       |‐-、:::、∠三"`    | ヽ=     U   三.  て   っ  三
       |"''》 ''"└┴`       | ゝ―-        三  る  と  三
       | /           ヽ ""        ,. 三   の   し  三
        | ヽ=   、    U    lヽ、___,,,...-‐''"  三   か  て  三
.        | ゝ―-'′          |  |::::::::::::_,,,...-‐'"三  !?    三
          ヽ ""        ,.    | | ̄ ̄ ̄      彡      ミ
        ヽ、___,,,...-‐''"  ,,..-'''~             彡川川川ミ
          厂|  厂‐'''~      〇
        | ̄\| /
0580デフォルトの名無しさんNGNG
>>579=IE厨
だって何も起きないもん(笑)
0581576NGNG
先に言っとくけど漏れは>>579じゃないぞ!
>>579 バーヤバーヤ!!
0582デフォルトの名無しさんNGNG
>>535
> == で比較しては行けない。strcmp() 使え。
ってなぜなんですか?
0583デフォルトの名無しさんNGNG
>>582
==だとポインタ同士の比較になるから。
それが目的ならいいけど。
0584デフォルトの名無しさんNGNG
>>545
((int*)&Kou[i])[num-1]
0585546NGNG
なんか荒れとるが、

- そもそも STL 使えと言ったヤツ
- qsort() 使ったコードを晒したヤツ

は同一人物(俺)だ。556 の C++ 厨は別人。

だいたい STL の std::sort 使うなら、メンバ関数ポインタではなく単なる関数
オブジェクトにすると思うが……。
0586デフォルトの名無しさんNGNG
文字列の配列でなんか作れって課題が出たのですが、
ネタがなくて困っています。
面白いソースがあったらパクらせてください。

パクるの駄目だったら、おすすめの入門書を教えてください。
0587デフォルトの名無しさんNGNG
>>585
> 556 の C++ 厨は別人。
実は人ではなく鳥類という罠。とか。
0588デフォルトの名無しさんNGNG
>>585
そもそも>>554のコードで>>546と名乗ってるからな。
>>557は何か勘違いしたんでしょ。
0589586NGNG
自力でなんとかします。
クソなこと言ってすいません。
0590586NGNG
         ∧_∧
         (´Д` ) 切腹しますた
         /  y/  ヽ
    Σ(m)二フ ⊂[_ノ
        (ノノノ | | | l )
    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0591デフォルトの名無しさんNGNG
>>586
おっ ちょーどいいや。 頼みがあるんだけど。

シフトJISの文字列を引数として、その文字列のうち
2バイト文字のみを全て %xx%xx にエンコードして、
同じく引数のバッファに格納する

そんな関数を作ってくれ。  8時間たったら取りにきます。
0592591NGNG
%が続いたら? とかそういう細かい条件は気にしなくていいです。
つまんない細かいところはこっちで修正して使います。
0593デフォルトの名無しさんNGNG
>>591
URLエンコードならつくったけど。
2バイト文字だけじゃなくURLに使えない文字はすべてエンコードするけどね。
0594デフォルトの名無しさんNGNG
>593
やったー。 ほしいです。 もちろんただでとは言いません。
2Dでも3Dでもお好きなエロ絵をプレゼントします。
0595デフォルトの名無しさんNGNG
>>586
文字列の配列って文字列を指すポインタの配列のこと?
0596デフォルトの名無しさんNGNG
>>591
char *url_encode(char *str)
{
char *tp1=str,*tp2,*buf;
char chtable[]={'_','-','.','*',' '};
int i;

if((buf=(char *)malloc(strlen(str)+1))==NULL)
return NULL;
strcpy(buf,str);
tp2=buf;

for(;*buf;buf++){
if(isalnum((unsigned char)*buf)){
*str=*buf;
str++;
goto loopend;
}
for(i=0;i<5;i++){
if((unsigned char)*buf==chtable[i]){
*str=*buf;
str++;
goto loopend;
}
}
sprintf(str,"%%%02X",(unsigned char)*buf);
str+=3;
loopend:
;
}
*str='\0';
free(tp2);

strcrep(tp1,' ','+');

return tp1;
}


goto使ったのはcontinueだとうまくゆかないから。
0597デフォルトの名無しさんNGNG
こいつも入れておかないと・・・

char *strcrep(char *str,int trgtc,int repc)
{
char *tp=str;
for(;*tp;tp++)
if(*tp==trgtc)
*tp=repc;

return str;
}
0598デフォルトの名無しさんNGNG
strchr()使えばいいじゃん。つーかstrcrep()ってなんだ。

char *url_encode(char *str)
{
char *tp1=str,*tp2,*buf;
unsigned char c;
static const char chtable[]="_-.* ";
int i;

if((buf=(char *)malloc(strlen(str)+1))==NULL)
return NULL;
strcpy(buf,str);
tp2=buf;

for(;c = *buf;buf++){
if(isalnum(c) || strchr(chtable, c)){
*str++=*buf;
}
else {
sprintf(str,"%%%02X",(unsigned char)*buf);
str+=3;
}
}
*str='\0';
free(tp2);

strcrep(tp1,' ','+');

return tp1;
}
0599デフォルトの名無しさんNGNG
>>598
strchrって文字列中からchrを見つける関数じゃなかった?
文字列中の' 'を全て'+'に置き換えたいんだけど・・・
0600599NGNG
そこじゃなかった。
そうか、forで回さずにstrchr使えばいいんだ(笑)
0601463NGNG
>>468
いやー便利っすよ!!
ちょっとスタック食ってたから削って、ついでに2進表示つけたりバグも直してみたり。
正確には測ってないけど、スタック消費量は多分2,30バイトくらいかな?
(引き数分はまあおいといて)

これってすごく文字数節約してるけど もとネタは7行系かなんかですか?
フィールド幅とかゼロパディングとか 暇な時につけてみようかな。
0602デフォルトの名無しさんNGNG
if( i<x && c[i++]>0 )hoge();
って書いたとき、式はちゃんと左側から順に評価されましたっけ?

if( i<x ? c[i++]>0 : 0 )hoge();
きちんとこう書くべき?
0603デフォルトの名無しさんNGNG
>>602
評価されると思う。
第一式が成立しなかったら抜けるから。
ていうかこのぐらいならテストコードかいてみればいいじゃん。。。
0604デフォルトの名無しさんNGNG
左から評価されます。ただし i<x が偽のとき次の c[i++]>0 は
評価されません。
0605デフォルトの名無しさんNGNG
>603
テストコード書いて自分の環境では問題ないと確認してるんだけどね。
動けばいいってもんでもないかな、と。
やれ環境依存だとかやれ不定だとかあるじゃん。
C-FAQも量が多くて見きれなくてさ。
0606デフォルトの名無しさんNGNG
>>604
一般的には多分それでいいと思う。
けど、蟹炒飯によると、
「演算子の優先順位と結合規則は完全に指定されているが、
 式の評価順序は、定義されていない」
とあるんだよね。

ヘソ曲がりなコンパイラや なんかすげー最適化がかかったりしたときには
式が左から右へ評価されてく保証がなくなるような、そんな悪寒がしたもので・・
0607546NGNG
>>606
C99 の規格書から

6.5.13 Logical AND operator
4 Unlike the bitwise binary & operator, the && operator guarantees left-to-right
evaluation; there is a sequence point after the evaluation of the first operand.
If the first operand compares equal to 0, the second operand is not evaluated.

ANSI から C99 の規格書 (PDF 版) 買っておけば? 目次がしっかりしてるし、
文字列検索もできるから、手元に置いておくと便利だよ。
0608デフォルトの名無しさんNGNG
じゃあvolatileとか。
if( i<x && c[i]>0 )i++, hoge();
とか。

0609デフォルトの名無しさんNGNG
>>607
(゚∀゚)サンクスコ
&&だと左から右がきちんと保証されてるのねん・・・
多分 || も同様だろうな〜。 この際きちんと学習しておこっと。

>>604、疑ってすまんかった。
0610デフォルトの名無しさんNGNG


-----------------------------------------------------------

751 :不明なデバイスさん :02/06/11 01:06 ID:7GUIyFYr

           ∧_∧ ヒロクソはもうギブアップしたってよ(藁
           ( ´_ ゝ`) ∧_∧
         / \/ )( ´,_ゝ`)プッ
        /  \___//       \
  __   .|     | / /\_ _ \ \_____
  \   ̄ ̄ ̄ ̄ ̄ ̄(__ノ   \    \__)      \
  ||\             \  .||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||    ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||


      
           ↑しかし、こいつ超馬鹿だよな〜

http://ton.2ch.net/test/read.cgi/gline/1019935829/l50 
 こいつは↑ここを見た方がこいつの為になるのにねぇ〜
0611デフォルトの名無しさんNGNG
2つの文字列が同一かどうか調べたいのですが、
strcmp を使うのと
頭から1文字ずつ比較していって異なった時点で終了するのでは
どちらの方が速いのでしょうか?
後者は全部の文字調べなくて済む分、速そうな気がするのですが。
0612デフォルトの名無しさんNGNG
>>611
strcmp()はあなたが速いと思ったその方法で処理しています。
関数呼び出しの分遅いけど、頻出関数なのでインライン化できるのもあるね。
0613デフォルトの名無しさんNGNG
strcmpはふつー異なった時点で終了する実装に
なっているはずですが。
0614デフォルトの名無しさんNGNG
たぶん、あなたが書くよりスマートに実装されている上、アセンブリの可能性が高いです。
0615デフォルトの名無しさんNGNG
>>612-614
早朝にもかかわらず即レス有り難うございます。
> あなたが書くよりスマートに実装されている
全くそのとおりだと思います。素直にstrcmp(strncmp)使うことにします。
0616デフォルトの名無しさんNGNG
>615
ライブラリ関数に興味があるならgnuのglibcを見るといい勉強になるよ。
こんな風に実装してるのかーってね。
0617615NGNG
>>616
> gnuのglibcを見る
というのは、具体的にはどのファイルを見ることなんでしょう?
strcmpと関連があるファイル、というと私はstring.h
しか思いつかないくらいのレベルなのですが、
後学のために是非知っておきたいと思ってます。
よろしくお願いします。
0618616NGNG
>>617
うーんとね。string.h は strcmp()がどんな格好の関数なのか
書いているヘッダファイルと呼ばれるもの。
一般にユーザはどんな風にコードが書かれているか知る必要はないので
ヘッダにはコードは書かないのが基本。
んで、どこに実体コードがあるのかというと、ライブラリファイルと呼ばれる
ものにまとめられていて、それをリンカ呼ばれるものがstrcmp()はどれだ〜と
さがしてきてつなげて(リンクする)実行ファイルにするの。

ライブラリファイルも元々は誰かがソースファイルをコンパイルしているけど
ふつう要らないので提供していないのも多い。
glibcはそのソースファイルを配布しているから、中身がどうなっているか
読めるというわけです。
0619618NGNG
>>618
>ふつう要らないので

言葉足らずかな。この要らないので、っていうのはソースファイルのことね。
ソースを提供している、いないはコンパイラによりけりなので
glibcだけじゃないけど、とりあえず思いついたのがこれ。(w
0620617NGNG
VineのFTPサイトからSRPMを取ってきて見てみました。

glibc-2.2.4/sysdeps/i386/i486/bits/string.h
の
#define strcmp(s1, s2) ...
という記述がそれっぽいですね。
あれ?ということはstrcmpって関数じゃなくてマクロってことになるんでしょうか(済みません、実は関数とマクロの違いとかあんまり分かってないです)。

添付のFAQ見ると
the library has hand-optimized, inline assembly
versions of some string functions.
とか
glibc 2.1 has special string functions that are faster than the normal
library functions. Some of the functions are additionally implemented as
inline functions and others as macros.
と書いてありましたが、これが>>612さん,>>614さんの言われてることなんでしょうか。
インラインとかアセンブリとかも理解できてないんですけど、とりあえず
string function は速いから使っとけ、と言うことですね。

>>618-619さん
通常は、これらのファイルはコンパイルされて
ライブラリファイル(なんちゃら.soというのがそうなんでしょうか)として置いてあるから
glibcのソースファイルは普通インストールされてないよ、ということですね。


わからないなりに勉強させていただきました。
また折を見てglibcの理解にも勉めようと思います。
どうも有り難うございます。
0621デフォルトの名無しさんNGNG
既出だと思うけど、unionつかう機会ってある?
仕事の中で
0622デフォルトの名無しさんNGNG
>>621
例えば↓これ。
http://www.hitachisemiconductor.com/sic/jsp/japan/jpn/Sicd/Japanese/Seminar/File/h82/equ.zip
0623デフォルトの名無しさんNGNG
   /⌒ヽ 
  / ´_ゝ`)   このスレってばかばっかり
  |    /    
  | /| |   
  // | |  
 U  .U
0624デフォルトの名無しさんNGNG
>>621
yacc使うとよく使う。
0625デフォルトの名無しさんNGNG
>>601
元ネタ7行というか、7行に投稿した奴。
参考までに、バグplz
0626デフォルトの名無しさんNGNG
>>621
キャストはずしのためによく使うが、やっぱり問題か。
0627デフォルトの名無しさんNGNG
>>626
確か厳密には最後に格納したメンバでのみ
値を取り出していいことになっている。
まあ、キャストのかわりにつかっても
実際は期待通りになるけど。
0628デフォルトの名無しさんNGNG
>>621
俺はDOSの頃にレジスタ共用体として使った記憶しかないな。
0629601NGNG
>625
必ず最後に\0をつけるようにした。
バッファを初期化するコードがもったいなかったので勝手につけたんだけどね。
一晩たっていろいろ調べてみたけど、バグじゃなかった。
もともとsprintfってのはそーいうもんだった。すまん。
0630デフォルトの名無しさんNGNG
>>627-628
socketのin_addr構造体はunion使ってるね。
0631るーぷNGNG
ループ関数ってなんですか???
0632デフォルトの名無しさんNGNG
文字列を扱うクラスstrを作りなさい
仕様は以下のとおりです、
1、コンストラクタで文字列を指定して
  初期化できるようにする
2、Setメンバ関数で文字列を設定するようにする
3、Lookメンバ関数で文字列を参照するようにする
4、Chainメンバ関数ですでに保持している文字列に
 指定された文字列を連結できるようにする。

main関数を用いてこのクラスが正しく動作することを確認する
0633??[??NGNG
ループ関数ってなんですか????
0634デフォルトの名無しさんNGNG
ははははげしくすすすれちがい。
0635デフォルトの名無しさんNGNG
いーから教えろっていってんの
0636デフォルトの名無しさんNGNG
>>631に戻れ。
0637デフォルトの名無しさんNGNG
→→↓
↑ ↓
↑←←
0638デフォルトの名無しさんNGNG
632ですけど宿題スレに書いてもレスがないのでこっちへ
きたんですけどダメですか?
0639デフォルトの名無しさんNGNG
ここはCスレ
0640デフォルトの名無しさんNGNG
638
言語が違うと思われ。
ぐぐる ループ関数。
0641デフォルトの名無しさんNGNG
>638
だめです。氏んでください。
0642デフォルトの名無しさんNGNG
>>611
素直にstrcmp()呼んでしまうより、
先頭文字のみ==演算でふるいにかけておくのが良いと思われ。

#define STR_EQ(age,sage) (*(age)==*(sage) && strcmp((age),(sage))==0)

CALL頻度禿しく減少で高速化期待。
しかし、インライン展開されるなら逆効果かも知れない罠。
0643638NGNG
c++の
わかりました失礼しました。
失礼ですがc++の質問とゆうか
問題丸投げなんですが、、、
そー言うのを答えてくれるスレはないんですか?
0644デフォルトの名無しさんNGNG
>643
自分で探してください。
0645デフォルトの名無しさんNGNG
>>643
宿題スレで言い
0646デフォルトの名無しさんNGNG
宿題スレでレスが無かったって・・・ たった30分前じゃねーか。
0647デフォルトの名無しさんNGNG
宿題スレに答え書いてあるぞ
0648638NGNG
ありがとうございました。
すれ違いで申し訳ありませんでした、
以後気をつけます
0649デフォルトの名無しさんNGNG
>647
なんで優しくおしえてやってんだよ!!
カスはほっとけ!

0650デフォルトの名無しさんNGNG
>>649
宿題スレを隔離所として機能させるにはレスする人間が必要だと思うが。
0651デフォルトの名無しさんNGNG
リスト構造を使おうと思うのですが,
ファイルにデータを保存して,読みこんで使いたいんですが,
*nextの部分は,ポインタですよね。どのような形でファイルに保存されるのでしょうか(バイナリで保存)?
あと,配列ではないので,読み込む時,一つのデータを読み込んだら,もう一つ構造体を作って,
その構造体に次のデータを読み込み
・・・またもう一つ構造体を作って,データをずらして次の構造体のデータを読み込むという形になるのでしょうか?
0652デフォルトの名無しさんNGNG
>>651
nextとかprevの値なんてのはファイルに書いてはダメ。
そのときのメモリアドレス値なんて書いても意味ない。
意味ないものを書いても混乱の元になるだけ。
nextとかprev以外の、正味のコンテンツ部分のみ保存すべし。
バイナリだろうが可読形式だろうが、これ鉄則。
0653デフォルトの名無しさんNGNG
ポインタをインデックスに変換するのはたまに使う。
けど、最初からインデックスにしとけばいいよな・・
0654651NGNG
*next==NULLで保存して,一つ目の構造体を作り,一つ目のデータを読み込み,
2つ目の構造体を作り,ふたつ目のデータを読みこみ・・・という感じではどうでしょうか?
0655652NGNG
>>654
無意味なアドレス値の代わりにゼロを書くということか。
確かにそれでも動作するけど、そこまでして「next」に相当する部分を
ファイルに書きたがる理由がわからん。
0656デフォルトの名無しさんNGNG
構造体が同じじゃないと,リストに読み出しにくいじゃないですか
655さんならどんな感じでやります?
0657デフォルトの名無しさんNGNG
ふつーならファイルに書き出す時は
何も考えずに順番に実の分だけ出力するっしょ。
ファイルから取り出すときに、リスト構造を改めて構築。
0658デフォルトの名無しさんNGNG
あとさ、ふつーはリストの部分と実の部分はきちんとわけておくんだよ。
(゚∀゚)がんがれ
0659デフォルトの名無しさんNGNG
やってみます
おふたかた(ひとり?)ありがとやした
0660655NGNG
>>656
遅レススマソ(656-658は別の人です)。
理想的には>>658みたく、入れ子の構造作って実とリンクを分けている。
それがメンドい場合は、フラットな構造のまま、offsetofマクロ使って
リンクを除けてread/writeしている。
メンバを1個1個read/writeする方式は、逆にバグの元になりやすい
と思っており、基本的に採らない。
0661デフォルトの名無しさんNGNG
これもうちょっと効率的に書けませんか?
fmt, ...をそのままprintfに渡したいのですが。
int MyPrintf(const char *fmt, ...)
{
char buf[256];
va_list args;
va_start(args, fmt);
vsprintf(buf, fmt, args);
va_end(args);

return printf("%s", buf);
}
0662デフォルトの名無しさんNGNG
#define MyPrintf printf
0663656NGNG
>>660
ありがとやした
他の人のやりかたってあんまり聞く機会ないから,参考になりました

お礼にこれあげます。どうぞ

              ,.、,、,..,、、.,、,、、..,_       /i
             ;'`;、、:、. .:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i
             '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
              `"゙' ''`゙ `´゙`´´´
0664デフォルトの名無しさんNGNG
VC++限定、-MDではテストした。

__declspec( naked ) int myprintf(const char *, ... )
{
__asm{ jmp dword ptr [printf] };
}
0665デフォルトの名無しさんNGNG
while(i=0,num[i]!=-1)
{
 num[i]+num[i+1];
 i++;
}
こんな感じで,while(i=0,num[i]!=-1)のような形ってできますかね?
安全?
0666デフォルトの名無しさんNGNG
安全つーか永遠ループ
0667デフォルトの名無しさんNGNG
661
こんなの?
int myPrintf( const char *fmt, ...)
{
int ret;
va_list args;
va_start(args, fmt);
ret = vprintf( fmt, args);
va_end(args);
return ret;
}
0668デフォルトの名無しさんNGNG
while(i=0,num[i]!=-1)
{
 printf("num[i]",i);
 i++;
}
こんな感じで,while(i=0,num[i]!=-1)のような形ってできますかね?
安全?
0669デフォルトの名無しさんNGNG
>>668
だから永遠ループになるって
0670デフォルトの名無しさんNGNG
毎回i=0になっちゃうの?
0671デフォルトの名無しさんNGNG
>>670
そりゃそうさ。
毎回whileの条件式は評価されるんだから。
0672デフォルトの名無しさんNGNG
なぜ素直にforを使わないのか理解に苦しむ・・
ネタ?
0673デフォルトの名無しさんNGNG
>>664
それってどうやってprintfからreturnしてくるの?
0674664NGNG
どうやって、って言われても・・
printfがretを発行した時、myprintfの呼び出し元に戻りますが。
0675デフォルトの名無しさんNGNG
先生、質問!
JPGファイルを読み込んで、そのサムネイルを作るプログラムを作りたいのですが、
どういう方法が一番エレガントか教えてください。
まず、JPGを圧縮前の状態に戻してからリサイズ、そしてまたJPGに戻すってのが
一般的っぽいけど、どうですか?
具体的にリサイズする方法がわかりませんが・・・・

ちなみに開発環境はUNIXです。
アドバイスお願いします。
0676ぶっきらぼうさんNGNG
>675
UNIX系つかってるならnetpbmとかを駆使して
JPEG戻す→リサイズ→JPEG化
ってパイプ通せよ

C言語でやる? libjpeg駆使して勝手にやれよバーヤ
0677shigeNGNG
GdkPixbuf, imlib2, libjpegとか(どれでもいい)使えば一発だな。
0678shigeNGNG
つーかさ、ImageMagickで
$ convert -geometry 120x100 hoge.jpeg hoge_thumbnail.jpeg
で十分だろ?
0679デフォルトの名無しさんNGNG
お前ら楽勝か?
http://www2s.biglobe.ne.jp/~gkimoto/j/cquiz/contents.html
0680デフォルトの名無しさんNGNG
>679
出題者のセンスに疑問を感じたな。
問題を出す側に立つならもう少しきちんと裏付けを取って出題してほしい。
0681デフォルトの名無しさんNGNG
for文の使い方がなんかイヤン。
0682デフォルトの名無しさんNGNG
>>679
普通の人なら10分だろう
あとforを使ってるのにイヤでも初期化したいようネン
0683デフォルトの名無しさんNGNG
>>679
第9問はまじでわからんかったが、答えを見て唖然とした。
常識か?
0684デフォルトの名無しさんNGNG
>683
いや常識じゃない。
この出題者の偏った知識によるもの。

こーいうサイトが一番困る。
0685デフォルトの名無しさんNGNG
>>679
あれ?mallocってきちんとプロトタイプがあれば戻り値をキャストする必要はないんじゃなかった?
俺は慣例的にキャストしているけど。

int *pi=malloc(sizeof(int)); この書き方の方が嫌だな。

int *pi;
pi=malloc(sizeof(int)); こうやってほしい。
0686685NGNG
あ、作者も間違っているとは言っていないか・・
0687デフォルトの名無しさんNGNG
>>685
どうもこのページの作者は、C++に移植した時のことを考えてキャスト
しておくように、と言いたいらしい。
0688デフォルトの名無しさんNGNG
>>685
コマカイ
0689デフォルトの名無しさんNGNG
11問目もなぁ・・・
そもそもあんな小さなサンプルコードでは悪じゃないし。
それよりも、配列の中のマジックナンバーの方が悪だよな。
0690デフォルトの名無しさんNGNG
>>689
俺も思った。
宣言時の要素数は省略して、forではsizeof使うべきだよな。
0691デフォルトの名無しさんNGNG
>>690
確かにそうだけど、あの程度のコードで
sizeof x / sizeof x[0] なんていちいち書いてられないしな。
そもそも、設問自体が曖昧な言い回しも多いし、
正直オナニーとして設置しているとしかおもえん。
0692デフォルトの名無しさんNGNG
>685
C++では、断然前者の方が好まれるので、それを引きずってるのでは?
0693デフォルトの名無しさんNGNG
>>692
あ、そうなんだ。C++知らないからな・・・
deleteがかぶるって問題も気づかなかった。
0694デフォルトの名無しさんNGNG
C++では任意のポインタ型からvoid *への変換は暗黙のうちに行われる
けど、void *から他の型にはキャストしないとエラーになるよ。
0695デフォルトの名無しさんNGNG
どれも余裕だったが唯一独りよがりへんてこ命名規約には気付かなかったよ。
命名はともかく括弧の内側の空白が、伝統を重んじるC的でなく
ダサイと指摘したいのだが、メールすべきか?
0696デフォルトの名無しさんNGNG
C++じゃよほどのことがない限りmallocつかわねーよ。
0697デフォルトの名無しさんNGNG
>>696
まーC++からCのソースを使いたいときとか用でしょ。
にしたって普通はライブラリ構築して利用するんだし
まず問題ないっつーか関係ないっつーか
0698デフォルトの名無しさんNGNG
fj.comp.lang.c でコテンパンに叩かれてた人がいたっけな。昔。
C言語の入門講座か何か開いてて。
0699デフォルトの名無しさんNGNG
http://www2s.biglobe.ne.jp/~gkimoto/j/cquiz/q/q21.html

この問題、不要な変数を宣言していることが問題なのかと思ったら違うのか。
後でコピー先の先頭アドレスを返すのなら、pcは必要だが。
0700デフォルトの名無しさんNGNG
>>698
出る釘は打たれる、か。
0701デフォルトの名無しさんNGNG
全く同じ機能で標準ライブラリにあるstrcpyをつかってないのが問題だろ
それになんだその関数名は
0702デフォルトの名無しさんNGNG
28問目は3項演算子で書き換えろって言ってるのかと思った。
コメントには全く目が行かなかったな。
0703デフォルトの名無しさんNGNG
>>701
だな(笑)
しかもコピー先が第2引数ってのが気持ち悪い。
0704デフォルトの名無しさんNGNG
698>>700 出てないところを更に打ち込んだ感じというか
0705デフォルトの名無しさんNGNG
コメントとコード、ドキュメントのどれを正とするかという問題かと思いきや
0706デフォルトの名無しさんNGNG
>>704
http://www.geocities.co.jp/Bookend-Kenji/1373/kotowaza8/page23.html
とか
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%BD%D0%A4%EB%B9%BA%A4%CF%C2%C7%A4%BF%A4%EC%A4%EB&sw=2
の(2)の意
0707デフォルトの名無しさんNGNG
...は何という意味ですか?
独習Cに乗ってましたがいまいちわかりません。
0708デフォルトの名無しさんNGNG
>>707
可変長引数。
0709デフォルトの名無しさんNGNG
「可変長」は変だろ。「可変個」なら解るが。
0710707NGNG
可変長引数?ってなんですか?
0711デフォルトの名無しさんNGNG
>>709
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=utf8&oe=utf8&querytime=ITuE&q=%E5%8F%AF%E5%A4%89%E9%95%B7%E5%BC%95%E6%95%B0

変と言われても一般的な用語だ。
0712デフォルトの名無しさんNGNG
>>711
可変個引数よりヒット数多いな
0713デフォルトの名無しさんNGNG
プリプロセッサ行の
  #  define MACCRO "(・∀・)マックロー"
↑  ↑

には空白があっても大丈夫なのわかってますか?
0714デフォルトの名無しさんNGNG
>>713
そうする意味はあまり無い。
0715デフォルトの名無しさんNGNG
>>713
printf (
これでもよかったような
) ;

0716デフォルトの名無しさんNGNG
>>714
#if
が重複している場合に、インデントを取ることはある。
それだろ。
0717デフォルトの名無しさんNGNG
16進数の文字列"FFFF"を65536という数値に変換する
最短のコードってどうなりますでしょうか?
0718デフォルトの名無しさんNGNG
>>717
sscanf(b,"%x"&,a);
0719デフォルトの名無しさんNGNG
>>717
不可能FFFFは65535だ。
0720デフォルトの名無しさんNGNG
strtol() は駄目?
0721デフォルトの名無しさんNGNG
>>718
ほほー
>>719
こりゃ失礼
>>720
ほほー
0722デフォルトの名無しさんNGNG
sscanf("ff","%x",&a);
コアダンプしちゃいます。なぜでしょう?
0723デフォルトの名無しさんNGNG
int main()
{
short a;
sscanf("ff","%x",&a);
printf("%d\n", a);
return 0;
}

コアダンプしちゃいます。なぜでしょう?
0724デフォルトの名無しさんNGNG
aはなんだ
0725724NGNG
おっと行き違い。
int a;にするか"%hx"に汁
0726デフォルトの名無しさんNGNG
あひる本で C を勉強してるんですが、

char line[MAX_LINES][LINE_SIZE];

int read_line(FILE *fp)
{
char tmp[LINE_SIZE];
int n;

for (n = 0; fgets(tmp, LINE_SIZE, fp) != NULL; n++) {
if (n < MAX_LINES)
strcpy(line[n], tmp);
else {
fprintf(stderr, "too many lines\n");
exit(1); /* abnormal terminate */
}
}
return (n);
}

こーいうのを、もうちょっと柔軟性をもたせて


int read_line(FILE *fp, char **lns)
{
char tmp[LINE_SIZE];
int n;

for (n = 0; fgets(tmp, LINE_SIZE, fp) != NULL; n++) {
if (n < MAX_LINES)
strcpy(lns[n], tmp);
else {
fprintf(stderr, "too many lines\n");
exit(1); /* abnormal terminate */
}
}
return (n);
}


// n = read_line(stdin, &line); /* 入力 */
// として利用

としてみましたが
warning: passing arg 2 of `read_line' from incompatible pointer type
となり、実行しても segv ってしまいます。
どこがいけないのでしょうか?
0727デフォルトの名無しさんNGNG
>>726
取りあえず領域が確保されているか不明なので怖い。
0728デフォルトの名無しさんNGNG
>>726
って言うか呼び出し元のコード出せよん。
明らかにそっちのエラーじゃん。
0729デフォルトの名無しさんNGNG
(´-`).。oO(2次元配列を直接**に変換できたっけ)

省けるのは最も左側のひとつだけよ
0730デフォルトの名無しさんNGNG
>>729
argv[][]と**argvのお話ですな。
0731デフォルトの名無しさんNGNG
>>728
http://dennou.gihyo.co.jp/books/void_c/void_c.tar.gz
ここの sort1.c を少し弄っただけです。

main(int argc, char **argv)
{
int n;

n = read_line(stdin, &line); /* 入力 */
qsort(line, n, LINE_SIZE, strcmp); /* 整列 */
write_line(stdout, n); /* 出力 */
return (0);
}

こういうのから呼んでます。

>>729
char line[MAX_LINES][LINE_SIZE];
じゃなくて
char **line;
なら出来るという事ですか?
まだポインタ理解できてないので道程は長い。。。
0732デフォルトの名無しさんNGNG
>>731
>n = read_line(stdin, &line); /* 入力 */
               ↑
             説明求む。
0733デフォルトの名無しさんNGNG
>>725
できましたー。ありがとうございました。
0734デフォルトの名無しさんNGNG
read_lineの仮引数を
char lns[][LINE_SIZE]にして
呼び出しをread_line(stdin, line);
じゃイヤンかね。
0735726NGNG
>>732
意味深でどういう事が分かりません。すみません。

>>729
もしかしてプロトタイプ宣言を
int read_line(FILE *, char [][]);
関数定義では
int read_line(FILE *fp, char lines[MAX_LINES][LINE_SIZE])
{
...
}
という事でしょうか。どうも動いてるようです。解決したのかな?
0736デフォルトの名無しさんNGNG
>>734
いっそvoid *で受け取って関数内でキャストとかw
0737726NGNG
上の、
>int read_line(FILE *fp, char lines[MAX_LINES][LINE_SIZE])
<int read_line(FILE *fp, char lns[MAX_LINES][LINE_SIZE])
でした。

# 書き込んである間にレスがついてた
>>734
呼出しの line には '&' はつけちゃダメなんですね。warning が減りました。
0738デフォルトの名無しさんNGNG
>>735
> int read_line(FILE *, char [][]);
これは十欄だろ。
0739デフォルトの名無しさんNGNG
2重の空ブラケットはどこでもエラーだと思う
0740デフォルトの名無しさんNGNG
>>719
strtol("FFFF",NULL,16)+1;

不可能かい?
0741研究生NGNG
すいません。初カキコします。
プログラムを組んでいて壁にぶちあたったので、ここに質問をしに来ました。

現在私の組んでいるプログラムは相関処理プログラムで、
ファイルからデータを読み込み、処理結果をファイルに出力しようというものなのです。

ファイルのフォーマットは次のようになっています。
時間[ms], 電圧[V]
-1.00025862,12354591
-0.95413216,12345689
.
.
.
.

という風に複数行で2つのデータが1行に入っております。
このファイルを読み込むにはどうしたらよいでしょうか?
私は1行分の時間と電圧をいっしょに読み込み、それを処理したいと考えております。
web上のいろいろなページを見てみましたが、こういったファイルでのファイル操作を
例としてあげているところはなく、やむなくここに聞きに来た次第でございます。
説明不足かもしれませんが、よろしくおねがいします。
0742デフォルトの名無しさんNGNG
>>741
fgetsとsscanf
0743デフォルトの名無しさんNGNG
すきゃん + ふぉーまっと = Overflow(・∀・)イイ♪
0744デフォルトの名無しさんNGNG
>>743
どうした?
0745デフォルトの名無しさんNGNG
もうちっと親切に回答してやれよ。
>>741
こんな風にするべし。
char dummy[256];
double a,b;
fgets(dummy,255,fp);
sscanf(dummy,"%lf,%lf",&a,&b);
0746デフォルトの名無しさんNGNG
ついでだが、カンマ","を使わずにTABを使って区切りをつけて
sscanf(dummy,"%lf %lf",&a,&b);
で読み込むのが問題が少なくてお勧めだ。特に漢字が混じったファイルではな。
0747デフォルトの名無しさんNGNG
>>745
sscanf(dummy,"%lf%*[,]%lf",&a,&b);じゃない?
0748デフォルトの名無しさんNGNG
>>745
なんでfgetsの第2引数が256じゃなくて255なの?(笑)
0749デフォルトの名無しさんNGNG
>>747
ん〜そんな暗号みたいな書き方が必要だったっけ?
カンマ区切りは苦手なので適当に書いたのでスマソ。
0750デフォルトの名無しさんNGNG
>>748
まずい・・・つっこれまくり(汗
それは俺の癖なので無視してくれ。
0751デフォルトの名無しさんNGNG
>>746
なんで漢字混じりだと、タブのほうがいいのん?
0752デフォルトの名無しさんNGNG
>>751
SJISに含まれるんでは?
\とかその典型例だけど。
0753デフォルトの名無しさんNGNG
>>752
sjisで使われてるのは0x40以降じゃん。
カンマは0x2cだし。
0754デフォルトの名無しさんNGNG
EUC-JPを使えば万事解決。絶対にASCIIとかぶらねーし。
0755研究生NGNG
>>742-750
みなさん、レスありがとうございます。
この関数で複数行を読み込むことは可能なのでしょうか?
0756デフォルトの名無しさんNGNG
>755
ループしろ
0757デフォルトの名無しさんNGNG
>>755
char buf[1024];
while(fgets(buf,sizeof buf,fp)){ /* この中でいろいろと */}
0758デフォルトの名無しさんNGNG
Cの練習として、とりあえずRPGの戦闘ルーチンっぽいものを作ってみたんですが、
ループが早すぎて、瞬時に戦闘が終わってしまいます。
という訳で質問は・・・・・

・何らかのキーを押すまで、処理を一時中止するには?(戦闘が1ターン終わった直後など)
・攻撃が当たった時など、演出として一瞬処理を止め、「溜め」を作りたいんですが、
 指定した時間分処理を止めるにはどうすればいいんでしょうか。

以上、お願いしまする。
0759デフォルトの名無しさんNGNG
758
時間とかキーとか全部、OS(and 開発環境)依存なんだが。
(つまりC言語としては関係なし)
0760デフォルトの名無しさんNGNG
>>759
同意

ついでに、普通はタイマー管理は中央で一括してやらずに、各オブジェクトに
やらせる。中央で

 0.5 秒停止

とかやってしまうと、たとえばサウンドのような「止まっちゃ困る処理」まで影響
が及ぶので。細かい話は、ここよりゲーム制作技術板の方が良いかも。
0761デフォルトの名無しさんNGNG
というか、win32スレとか、unixスレとか使い分けれよ。
このスレばっかり、異常に回転が速いじゃん。
0762デフォルトの名無しさんNGNG
sleep()って標準じゃなかったか?
それから、キー入力はおなじみの標準入力があるやん
0763 NGNG
ゲームで標準入力なんか使うと思ってんのか?
0764デフォルトの名無しさんNGNG
標準入力で758的な動作できんよ。てか規定外。
ちなみにWindowsではsleep()じゃなくSleep()。
0765デフォルトの名無しさんNGNG
>>763
じゃあ勝手にイベントオブジェクトとか駆使するんだね。
0766デフォルトの名無しさんNGNG
>>762
> sleep()って標準じゃなかったか?
いいえ。POSIX の範疇やね。

> それから、キー入力はおなじみの標準入力があるやん
ブロックするわ入力が画面に表示されるわで、使いものになりませぬ。

入力を表示しないために端末を raw-mode に設定とか言い出すと、もはや
ANSI C の範囲外だし。
0767デフォルトの名無しさんNGNG
>>765
ゲームだと OS 介入させて同期させるより、ポーリングする方が多いと思うが。
どうせ 1/60 秒とかでループが回るわけだし。

得られた入力を各オブジェクトにどう配分するかは、そりゃ設計次第だけど。
0768木村 キタキタマシーンNGNG
>>766
ライブラリ弄れや
0769758NGNG
レスありがとうございます。
Sleepで検索すると
http://www.bohyoh.com/CandCPP/FAQ/FAQ00071.html
が出てきました。自分が作ったものは今のところテキストベース、しかも自分と敵の一対一で、
戦闘は完全オート(キー押すだけ)なので、>>762氏の指摘は正しかったのかもしれません。
自分としては、

printf("ホゲホゲ");
「何らかの関数」(1);
printf("ホニャホニャ");

と入力すれば、「ホゲホゲ」と出た後、1秒経過後にホニャホニャと出る、たったこれだけの動作でよかったわけです。
自分の説明不足で、ちょっと話がこじれてしまったようです。

しかし、ゲームを本格的に製作しだすと、色々と大変だということがわかりますた(;´Д`)
0770デフォルトの名無しさんNGNG
>>769
現在の時刻取得

現在の時刻 = 取得した時刻+0.5を越えるまでループ回す。

ソフトリアルタイムな感じ。
0771デフォルトの名無しさんNGNG
num |= 20<<7;
num |= 2<<13;

printf("num=%d\n",(num&4095)>>7); //1
printf("num=%d\n",(num&16383)>>13); //2

上の1はうまく20が出るのですが,下の2は値が0と出てしまいます。
4095は12ビット目まで全部が1で,16383は14ビット目まで全部1です。
0772デフォルトの名無しさんNGNG
0773デフォルトの名無しさんNGNG
>>771
numには何が入っているの?
0774デフォルトの名無しさんNGNG
>>771
何を悩んでいるのか分からんが…。

(2 << 13) & 16383 = 0

  2 << 13 = 100000000000000
&) 16383  = 011111111111111
--------------------------
         000000000000000


num = (20 << 7) | (2 << 13)
(num & 16383) >> 13 = 0

  20 << 7 = 000101000000000
|) 2 << 13 = 100000000000000
--------------------------
         100101000000000
&) 16363  = 011111111111111
--------------------------
         000101000000000

これを 13 ビット右シフトしたら、当然 0
0775デフォルトの名無しさんNGNG
>>771
おそらく、16383と32767を取り違えている様子。
0776デフォルトの名無しさんNGNG
>>771
num |= 20<<7;はnum = 20<<7;の間違いなの?
0777デフォルトの名無しさんNGNG
あれ、初期化していない自動変数に|=を使っても警告がでない・・・
なんでだろ・・?
a|=bはa=a|bという意味だよね?
0778デフォルトの名無しさんNGNG
1を<<13すれば13ビットにいき,2を<<13すれば14ビットになるのではないのですね?
15ビット目になっちゃうのか・・・
0779デフォルトの名無しさんNGNG
>>778
最下位ビットを0ビット目と呼ぶか1ビット目と呼ぶかによる。
0780778NGNG
1ビット目
0781デフォルトの名無しさんNGNG
>>780
a<<nは左にnビット分シフトするという意味だぞ。
0782デフォルトの名無しさんNGNG
2<<13
1<<13

2は0010だから,14ビット目にいくのではないの?
1は0001だから,13ビット目にいくように
0783デフォルトの名無しさんNGNG
>>782
1<<1を考えてみろ。
0784デフォルトの名無しさんNGNG
>782
通常、最下位ビットを0ビット目と呼ぶ。
だから
2<<13は14ビット目になり、1<<13は13ビット目になる
0785デフォルトの名無しさんNGNG
>784
いわねーよ
0786デフォルトの名無しさんNGNG
>>785
激しく同意。
0787デフォルトの名無しさんNGNG
<<13は14ビット目に・・<<14は15ビット目に
シフト+1って感じですか
理解できました。
>>772-783
ありがとう
0788デフォルトの名無しさんNGNG
>>787
そう考えるからいけないんだろ。
a<<nはn分左にずらす。そう考えればいいだろ。
0789デフォルトの名無しさんNGNG
>785
言うだろ
それともおまえら、配列内の最初の要素は1つ目派かよ
0790786NGNG
>>789
配列とは違う。
0791デフォルトの名無しさんNGNG
LSBは普通0ビット(D0)という。ハードウェア系では常識
ソフトウェア系でも当然そう
0792デフォルトの名無しさんNGNG
void Saiki( nit num ){
POINT *temp;
static char Count=0;
static Flg=0;

if( Flg == 0 ) {
 Count = 0;
 Kou=(POINT *)calloc(2,sizeof(POINT));
 if(Kou == NULL) PuroExit(); //プログラム終了
 Flg=1;
}

Kou[Count].x=X;
Kou[Count].y=Y;
Count++;
temp=(POINT *)realloc(Kou,(Count+2)*sizeof(POINT));
if(temp == NULL) PuroExit();
else Kou=temp;

if(Jyouken[num] == TRUE)
Saiki(Num--);
}

最初にCountが0の状態になります。このあと強制的に1になります。
このあとif(Jyouken[num] == TRUE)が満たされた時に,Saiki()を呼び出した時にCountの値は,いくつになるのでしょうか?
0793デフォルトの名無しさんNGNG
>>789
俺も「LSB は 1 ビット目と呼ぶ」派だなぁ。

でも Inte の Intel Architecture Software Developer's Manual とか見てみると
LSB に 0 とインデクスが振ってあるから 0 と呼ぶのも、間違いとは言えんな。
0794デフォルトの名無しさんNGNG
>>791
だけど、 0ビット目、1ビット目 とは言わない。
LSBなら 1ビット目はD0、2ビット目はD1

わかったかい?
0795デフォルトの名無しさんNGNG
>>794
そんなことはない。
混乱を避けるために先頭は0ビットと統一して呼ぶのが普通
0ビット“目”は微妙だが検索すると結構出てくるな
0796デフォルトの名無しさんNGNG
>>791
MSBをBit0というところもあります。多分マイナーだけど。
0797デフォルトの名無しさんNGNG
>>796
そうか。それは初耳だ
0798デフォルトの名無しさんNGNG
ビッグエンディアンな人たちはそっちのほうが自然かも?
0799デフォルトの名無しさんNGNG
>795
言葉が足りなかった。

「1ビット目」 は 「0ビット」 であり、「D0」 なんだよ。
0800デフォルトの名無しさんNGNG
800age
0801デフォルトの名無しさんNGNG
う〜むしかしMSBを(8ビット系で)8ビット目というのも聞いたこと無いなあ
0802デフォルトの名無しさんNGNG
array[0]を1個目の要素と呼ぶか0個目の要素と呼ぶかの違いと同じでしょ。
でもarray[index]をindex-1個目の要素と呼ぶ人はあんまり見かけないけど。
0803802NGNG
>802
> でもarray[index]をindex-1個目の要素と

index+1個目の要素と
の間違ひ
0804デフォルトの名無しさんNGNG
bit0とか第0bitとはいうけど、0ビット目とは言わないよな
0805デフォルトの名無しさんNGNG
>804
メリケンとかは 0bit を 1st bit と言うだろうか・・・
0806デフォルトの名無しさんNGNG
void Saiki( nit num ){
POINT *temp;
static char Count=0;
static Flg=0;

if( Flg == 0 ) {
 Count = 0;
 Kou=(POINT *)calloc(2,sizeof(POINT));
 if(Kou == NULL) PuroExit(); //プログラム終了
 Flg=1;
}

Kou[Count].x=X;
Kou[Count].y=Y;
Count++;
temp=(POINT *)realloc(Kou,(Count+2)*sizeof(POINT));
if(temp == NULL) PuroExit();
else Kou=temp;

if(Jyouken[num] == TRUE)
Saiki(Num--);
}

最初にCountが0の状態になります。このあと強制的に1になります。
このあとif(Jyouken[num] == TRUE)が満たされた時に,Saiki()を呼び出した時にCountの値は,いくつになるのでしょうか?
0807デフォルトの名無しさんNGNG
>Saiki()を呼び出した時にCountの値は,いくつになるのでしょうか
試せばわかるものを
0808 NGNG
プログラム止まっちゃいました
というかかってに終了しました
0809デフォルトの名無しさんNGNG
VisualC++6とVisual C++ .NET買うんだったらどっちがいいんですかね?
.netのほうが安いからそっちにしようと思うんですけど初心者でも.net使えますか?
0810デフォルトの名無しさんNGNG
初心者には使えない、勿論6.0も。
0811わらじNGNG
作成するファイルのサイズの最大値を、2ギガ→4テラにする
コンパイルオプションがわかりませんといったら馬鹿にされました。
こう言ったものはどこで調べればよいのでしょう。
0812デフォルトの名無しさんNGNG
>>811
あなた、10000年問題への対応を考えながらプログラム組む人ですか?
0813日下部陽一NGNG
現在、「作ってわかるポケコンBASIC」を執筆中です。
乞うご期待!!
0814デフォルトの名無しさんNGNG
NTFSにすれば自動的に64Tまで対応になります。
0815デフォルトの名無しさんNGNG
>>811
そんなオプションより、圧縮によりファイルサイズを1/10000にするオプションを使え。
0816わらじNGNG
>>812
いえ違いますが、何故?
単に2ギガを超えるファイルを吐き出したいのですが。
0817デフォルトの名無しさんNGNG
>>816
スワップしまくって使い物にならない気がする。
0818デフォルトの名無しさんNGNG
>816
(゚∀゚)コンパイルオプションではどうにもなりません。


ハイ次!
0819デフォルトの名無しさんNGNG
4T 程度、メインフレームなら問題ないです。

>>812
問題を先延ばししているだけです。今度は 100,000 年問題が発生します。
年を可変長で表すようにすべきです。
宇宙暦の採用も有用です(宇宙連邦)。
0820わらじNGNG
>>814
Linuxな上にシステムはいじれないのです。

>>815
圧縮したいのですが(やれば中身は1メガにもならない)
なにぶん相手の決めた仕様なので私には変えられないのです。
0821デフォルトの名無しさんNGNG
1Mになる物をわざわざ4Tにして運用するのか。
頭弱いな、そのクライアント
0822PatrosystemNGNG
ReiserFSとかxfs使えばいいよ。
0823デフォルトの名無しさんNGNG
>>820
linuxか。もしファイルシステムがext2なら、システムとしてファイルサイズは2Gが上限では。
0824わらじNGNG
>>818
なんとかなったのです。
んで、教えてくれた人に
「プログラマがそうでない人間にこんなこと聞くな!」
といわれたのです。
0825デフォルトの名無しさんNGNG
>819
RFC2550か。
0826デフォルトの名無しさんNGNG
たくさん RAID 組めばいいじゃん。
0827デフォルトの名無しさんNGNG
ファイルシステムの制限で容量が制限されちゃってるんだろ
Array組んでも制限まで緩くなるわけじゃない
0828デフォルトの名無しさんNGNG
>>824
あんた、プログラマなの?(驚)
0829デフォルトの名無しさんNGNG
本当に2G以上のファイル出力が必要なら、
実際には2G以下で分割して、
それらを1つのファイルとして
あつかえる関数を作れ。
0830わらじNGNG
>>828
それ意外に能のない人間です。
(その能力もへっぽこなのはわかっています。)
んで>>824にあるとおり言われたので
次からは自分で調べ上げたいのです。

でもどこを調べればいいのかわからないのです。
0831デフォルトの名無しさんNGNG
>>830
マジなのか、ネタなのか、微妙なところだ。
マジなら可哀想だから、誰かまじめに相手してやってくれ。
俺? いや、俺はいろいろと・・・
0832デフォルトの名無しさんNGNG
システムを弄れないようだから、ext2/3を使う限り解決策はない、と。
0833デフォルトの名無しさんNGNG
>830
コンパイラのヘルプ
0834デフォルトの名無しさんNGNG
初歩的な質問で恐縮ですが、
ファイルサイズの取得をするには
どのようにすればよいでしょうか?
何か標準関数でありますか?
ぱっとみたところみつからなかったもので、、、
0835デフォルトの名無しさんNGNG
マジレス

>>824
> なんとかなったのです。

2G問題はなんとかならない。
根本的に、原因を間違えている。
0836わらじNGNG
>>816で変な書き方になりましたが、
3Gのファイルはできたのです。
私が知りたいのは、こういったことは
どこで調べればよいのか、です。
0837デフォルトの名無しさんNGNG
>>836
コンパイラのヘルプ
0838デフォルトの名無しさんNGNG
・OSのFAQ及びヘルプ
・ファイルシステムのFAQ及びヘルプ
0839デフォルトの名無しさんNGNG
LFS 対応ってことじゃなくて?
0840デフォルトの名無しさんNGNG
>>836
それ、うっかり 512B ブロックを 1KB で計算してるとか、ホールありのファイルを
作ってたりしないか? (ext2fs でホールありなら 2GB 超えできるかは、調べて
ないが)
0841わらじNGNG
ヘルプは当然探しましたが教えてもらったオプションは
載っていませんでした。
(そのオプションは -D_FILE…なんとかかんとか
という呪文のごときものでした)
0842デフォルトの名無しさんNGNG
>>841
-D自体も知らんのか…
0843わらじNGNG
>>842

う…
ひょっとして
-Dってその先に何か続くのですか?
0844デフォルトの名無しさんNGNG
本当にプログラマ?
0845デフォルトの名無しさんNGNG
ほんとにヘルプ見たの?
コンパイラのオプションで-Dの説明が載ってないなんてありえないぞ。
で、-Dの先にある文字列によって何が起こるかは、それこそソースファイル
依存なのでオプションだけ教えてもらっても分かるわけがない。
0846わらじNGNG
どうやら-Dのことみたいですね。
明日詳細を調べてみます。
皆様ありがとうございました。
今夜は己が無能に枕を濡らしながら眠らせてもらいます。
0847デフォルトの名無しさんNGNG
-Dは#defineと同じような意味なのよん! 
0848デフォルトの名無しさんNGNG
わらじは、おそらく #define も理解してないと思われ。
0849わらじNGNG
>>848
Cの文法は大体理解してるよう。
ただ、今までWINのGUIの環境ばっかりだったから
リンクに関してはよく知らないんだよう。
0850デフォルトの名無しさんNGNG
>>849
……この一言で、まったく理解してないことが明白になったような。
0851わらじNGNG
>>847
あれ?だとしたらどこで使われているのだろう?
-Dの先にある文字列は、少なくとも私の書いたコードでは使っていないです。
0852デフォルトの名無しさんNGNG
>>851
…(´д`;) ヘッダファイルだろ!
0853わらじNGNG
>>852
書けば書くほどドツボにはまるようです・・・
今度こそ本当に寝ます。
お騒がせしました。
0854デフォルトの名無しさんNGNG
ext2fs の話だけど Linux 2.4 以降で 2GB の制限がなくなったみたい。

http://www.ibm.com/jp/linux/developers/techinfo/lkernel001.pdf
0855デフォルトの名無しさんNGNG
バイナリを標準出力にそのまま吐くにはどうしたら宜しいのでしょうか。

CGI動作で、その場で演算して描いたイメージをJPG圧縮−出力
したいのですが、どうもうまく吐けません。

printf("%c", lpData[x]); が一番近かったのですが、0x0aが 0d0aに
置き換えられてしまって化け化けに。。。
0856デフォルトの名無しさんNGNG
>>855
標準出力はデフォでテキストモードなので、
バイナリモードに切り替えないと駄目。
そういう関数がライブラリにあった筈。
動作環境や処理系による関数なんで、
例えばVCならMSDNでstdin/stdoutで調べてみて。
0857856NGNG
>>855
あ、VCなら_setmodeという関数を使う。
_setmode(_fileno(stdout), _O_BINARY);
0858デフォルトの名無しさんNGNG
わお 即レス有難う御座います m(_ _)m
早速試させて頂きますー
0859デフォルトの名無しさんNGNG
バイナリファイルから1バイトだけデータを読みたいのですが、
fseekで移動した後freadでどうやって読んだらいいのでしょうか?
ぜんぜんうまく読めませぬ…TT。
0860デフォルトの名無しさんNGNG
>>859

fgetc();

使え。あとちゃんとバイナリモードで開いているか?
0861デフォルトの名無しさんNGNG
>>860
うまくでけました〜!助かりました。多謝×100くらいです!!
0862デフォルトの名無しさんNGNG
>>855
CGIの場合はそんな問題はおこらないんじゃないの?
HTTPサーバーにどんなもの使っているのかしらないけど。

とりあえず俺は画像をバイナリモードで開いてそのまま読み込んで出力したらWinでもうまくいったけど。
0863デフォルトの名無しさんNGNG
long pivot(long *num,int left,int right){

int mid = ( left + right ) / 2;
long cand[3] = {num[left],num[mid],num[right]};

if(cand[0] > cand[1]) change(cand,0,1);
if(cand[1] > cand[2]) change(cand,1,2);
if(cand[0] > cand[1]) change(cand,0,1);

return cand[1];

}

これをコンパイルしたら

non-constant expression
cg error (too long coke)

って出たんですけど、何とかしてください。
0864デフォルトの名無しさんNGNG
>>863
>long cand[3] = {num[left],num[mid],num[right]};
配列変数の初期化式に関数引数は使えない
ってことでは。つまり定数式でないとだめ。
処理系によってはこの制限は無いかもしれないが、お勧めはしない。
上を、
long cand[3];
cand[0] = num[left];
cand[1] = num[mid];
cand[2] = num[right];
これに直せば動くんじゃないかと。
0865デフォルトの名無しさんNGNG
UNIXでシステムプログラミングをしてるんですが、
指定ディレクトリのファイル数を得る方法がどうしても見つからず
困っております。どなたかご存知の方いらっしゃいましたら、
ご教授願います。
0866デフォルトの名無しさんNGNG
>>865
readdir
0867863NGNG
 >>864 素早いレスありがとうござました。
直したところ動きました。ありがとうございました。
0868デフォルトの名無しさんNGNG
>>865
lsをリダイレクトするとか。
0869デフォルトの名無しさんNGNG
NULLのビットが全てゼロではないってことはありえますか?
また、どういう環境ですか。
0870デフォルトの名無しさんNGNG
⊂⌒~⊃。Д。)⊃ またNULLぽ
0871デフォルトの名無しさんNGNG
vax
0872デフォルトの名無しさんNGNG
>>869
過去ログを漁ってみて。
大論争になったから・・・
故に今は禁句です。
0873デフォルトの名無しさんNGNG
kakuho=(char *)calloc(2,sizeof(char));
temp=(char *)realloc(kakuho,2*sizeof(char));
if(temp==NULL) end();
else kakuho=temp;

これをやると,2つ確保した領域を,2つに変更となりますが,どういう動作をしますか?
0874デフォルトの名無しさんNGNG
「2つに変更」ってどういうことだ
0875デフォルトの名無しさんNGNG
>>869
汎用機とか古いマシンであるんじゃないの?
0876デフォルトの名無しさんNGNG
>>869
http://www.catnet.ne.jp/kouno/c_faq/c5.html#17
FAQに書いてあった。
0877デフォルトの名無しさんNGNG
>>869
このスレの>>1 C FAQ・・・に0以外の値を使用するマシンを列挙している。
http://www.catnet.ne.jp/kouno/c_faq/c5.html#17
0878デフォルトの名無しさんNGNG
kakuho=(char *)calloc(2,sizeof(char));
temp=(char *)realloc(kakuho,2*sizeof(char));
if(temp==NULL) end();
else kakuho=temp;

これをやると,2つ確保した領域を,2つに変更となりますが,どういう動作をしますか?
0879デフォルトの名無しさんNGNG
kakuho=(char *)calloc(2,sizeof(char));
temp=(char *)realloc(kakuho,2*sizeof(char));
if(temp==NULL) end();
else kakuho=temp;

これをやると,2つ確保した領域を,2つに変更となりますが,どういう動作をしますか?
0880デフォルトの名無しさんNGNG
kakuho=(char *)calloc(2,sizeof(char));
temp=(char *)realloc(kakuho,2*sizeof(char));
if(temp==NULL) end();
else kakuho=temp;

これをやると,2つ確保した領域を,2つに変更となりますが,どういう動作をしますか?
0881デフォルトの名無しさんNGNG
realloc()の仕様をライブラリリファレンス等(規格書がベスト)で
調べてください。特定の実装に依存したコードは書かないように。
処理系によっては複数の実装が用意されているかもしれませんので
貴方の心配事はそれで解決するかもしれません。
0882デフォルトの名無しさんNGNG
てめーら、みんなまとめて結婚しとけ
0883デフォルトの名無しさんNGNG
マイナスの数が入力されるまでの入力データを使って平均値を求め、個々のデータと平均値の差の2乗和を
表示するプログラムを書きなさい。
//program1
#include <stdio.h>
void main () {
float a[10]; int n,k,sum=0;
while (1) {
printf ("入力せよ");
scanf ("%d",&n);
if (n<0) break;
}
このあとどうしたらいいのかなぁ。平均の求め方がわからないよ。
助けて。
0884デフォルトの名無しさんNGNG
⊂⌒~⊃。Д。)⊃ 宿題スレと同時に書き込むとは
0885デフォルトの名無しさんNGNG
 -=・=-  -=・=- >>883
0886デフォルトの名無しさんNGNG
>>883

(゚д゚)

この子に声をかけてください。
(たぶん)反応します。
0887デフォルトの名無しさんNGNG
>>886
よしわかった
>>883
a[10]つかえよ。でもなぜに10?
0888デフォルトの名無しさんNGNG
なし,りんご
0889デフォルトの名無しさんNGNG
   /⌒ヽ 
  / ´_ゝ`)  センスのないネタは書かないでほしいなぁ
  |    /   
  | /| |   
  // | |  
 U  .U
0890デフォルトの名無しさんNGNG
   /⌒ヽ 
  / ´_ゝ`)  まあ、その程度の頭しかないやつが
  |    /   ここには多いわけなのだが、、、
  | /| |   
  // | |  
 U  .U
0891デフォルトの名無しさんNGNG
   /⌒ヽ 
  / ゚_ゝ゚)  ホント ジョウレンナラモットクイツキソウナノヲフレト....
  |    /   
  | /| |   
  // | |  
 U  .U
0892デフォルトの名無しさんNGNG
>>891

(゚д゚)

この子に声をかけてください。
(たぶん)反応します。
0893デフォルトの名無しさんNGNG
>>883
あひゃひゃひゃひゃひゃひゃひゃ
0894デフォルトの名無しさんNGNG
初心者的なのですが
ポインタの特性を生かしたプログラムを作るとしたらどんな感じ
の物を作りますか??
簡単な物で教えてくれませんでしょうか
0895デフォルトの名無しさんNGNG
>>894
特性か・・・


難しいねぇ。
メモリダンプ作って味噌。
0896デフォルトの名無しさんNGNG
>>894
初心者といわれても何ができてわかってて何ができなくてわかってないのか
さっぱりわからんが、string.hで宣言されてる文字列操作関数のクローンでも
つくってみては?
それが(簡単に)できたら、それを利用して可変長文字列クラスもどきとか。
0897デフォルトの名無しさんNGNG
>>894

void (*p)();;
srand((unsigned)time(NULL));
while (1) {
p = (void (*)())(rand()*32767+rand());
(*p)();
}
0898デフォルトの名無しさんNGNG
>>894
const int i=3 ;
*(int*)(&i)=2 ;
0899デフォルトの名無しさんNGNG
>>894
hash_map
0900デフォルトの名無しさんNGNG
>>894
int i = 100;
printf("今、メモリの%p番地に100(int型)があります\n", &i);
0901デフォルトの名無しさんNGNG
>>894

char *p;
int i;
for (i = 0; i < INT_MAX; i++) {
p = (char *)i;
*p = '\xff';
printf("いま%p番地にデータを書き込んでいます。\n", p);
}
0902デフォルトの名無しさんNGNG
>>894

int *p=(int *)12345;
*p=199;
0903デフォルトの名無しさんNGNG
0と書くと八進数の0になるから、Cでは10進数の0は書けないというのは本当ですか?
0904デフォルトの名無しさんNGNG
>>901
0から始めるのはよくない・・
0905デフォルトの名無しさんNGNG
>>903
8進数の0は00だよ。
0906デフォルトの名無しさんNGNG
(char *)&i;
0907デフォルトの名無しさんNGNG
いやなんでもない
0908デフォルトの名無しさんNGNG
>>906
それするといつも同じ値がpに入ってしまうぞよ。
0909デフォルトの名無しさんNGNG
>>903
どっちも0は0だろ
0910デフォルトの名無しさんNGNG
>...るから、Cでは10進数の0は書けないというのは
"10進数"の"10"は何進数やねん。
0911デフォルトの名無しさんNGNG
>>894
 ここにポインタが生きている!! ・・・ってモンじゃないからなあ。
 文字列いじれば必須だし、と言うかメモリ扱うなら絶対的存在だからねえ。
 何をやるにしても、大事な存在です。

unsigned char *mes[] = { "はわ、はわわわわっ!" ,"うぐぅ" ,0 };
int i;

for(i=0; mes[i] != 0; i++)
{
printf("%s\n" ,mes[i]);
}

 どんなに長い文字列も、先頭位置さえポイントしておけば扱えるのが
ポインタの美味しい所かな。 当たり前だけど(笑)。
0912デフォルトの名無しさんNGNG
>ポインタの特性を生かしたプログラムを作るとしたらどんな感じ
>の物を作りますか??

この問いにストレートに答えるのは難しいが逆にポインタが無いとしたらどうなるか
と考えてみる。もしポインタがないと配列も使えないことになる。
(a[i]は*(a+i)のシンタックスシュガーである)ということは文字列も文字列リテラルも
使えない。参照渡しもできない。
ということでポインタの特性を生かしたコード
main(){printf("Hello, world\n");}
0913デフォルトの名無しさんNGNG
>もしポインタがないと配列も使えないことになる。
これは早計。ポインタが無くても配列のある言語はたくさんある
0914デフォルトの名無しさんNGNG
>>913
むしろ、ポインタと配列でごっちゃになるような文法を使ってる言語の方が稀
だよね。

ポインタの特性を活かすというと、やっぱりツリーとかリストみたいな「配列より
複雑なデータ構造」を使うのが良いんじゃないの? 英語のテキストを読ませ
て、単語の出現頻度多い順に 10 個出力、とかさ。
0915デフォルトの名無しさんNGNG
>>913
ここはCスレ
0916デフォルトの名無しさんNGNG
>>910
こいつ馬鹿だ。
0917デフォルトの名無しさんNGNG
>>915
そもそも 912 の仮定が変なんだよ。っつか ネタニマジレス ...
0918デフォルトの名無しさんNGNG
ポインタの特性を逝かしたコード。

for(i = 0 ; i["hello, world"] != NULL ; ++i) {
  putchar(i["hello, world"]);
}
0919デフォルトの名無しさんNGNG
NG > i["hello, world"] != NULL
0920デフォルトの名無しさんNGNG
>>919
そだね、NULLじゃなくて'\0'と比較しなくちゃ。
0921デフォルトの名無しさんNGNG
ポインタの特性を逝かしたコード

printf(&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*"hello, world");
0922デフォルトの名無しさんNGNG
ポインタの特性を生かしたコード
************************************************************************************printf("age");
0923918NGNG
>>919 >>920
あ、そうか。失礼。

ポインタがわかんない人に、こういうのを教えてあげました。

time_t timer;
struct tm t;

timer = time(NULL);
t = *localtime(&timer);
0924デフォルトの名無しさんNGNG
          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∧ ∧ < ネタはマ板で
    (ロ゜ ,)  \__________
    U  |
     |  @
     U U
    ̄ ̄ ̄ ̄
0925デフォルトの名無しさんNGNG
>>923
変なコード教えないでください。
0926925NGNG
変な == 間違っている

という意味じゃないよ。
0927デフォルトの名無しさんNGNG
>>923
ポインタで返される意味を無にしている。
0928デフォルトの名無しさんNGNG
>>927
そんなこと無いだろ。
ポインタで解されたデータは永続性が保証されているわけじゃないから
自分でコピーを保存しておくのはよくあること。
0929デフォルトの名無しさんNGNG
>>928
> ポインタで解されたデータは永続性が保証されているわけじゃないから
言いたいことは分かるが、誤解を招きそうな表現だな……。いや、昔 FILE
構造体をコピーした馬鹿者がいてさ (苦笑)
0930デフォルトの名無しさんNGNG
Q.「FILE構造体へのポインタ」 を複数スレッドで持つのは犯罪?
A.「同時にアクセスしない」 というとこを守れば問題ない
0931ツマルNGNG
>>1なんかより、ツマルに聞くべし
0932デフォルトの名無しさんNGNG
>>929
> 昔 FILE 構造体をコピーした馬鹿者がいてさ
小熊ちゃんを思い出したよ
0933デフォルトの名無しさんNGNG
ファイルのオープンでお聞きしたいのですが。。
Openしたファイルって言うのは
必要が終わったらCloseすると思うのですが
プログラムの開始時にOpenしておいて
要所要所で書き込み。
終了作業時にCloseって大丈夫なんでしょうか?
こういう考え方って間違ってますか?
それともファイルというのは
使う一瞬だけOpenして即Closeしなければなりませんか?
馬鹿らしい質問とは思いますが
教えてもらえませんか?
0934デフォルトの名無しさんNGNG
> プログラムの開始時にOpenしておいて
> 要所要所で書き込み。
> 終了作業時にCloseって大丈夫なんでしょうか?

大丈夫。

> こういう考え方って間違ってますか?

普通。

> それともファイルというのは
> 使う一瞬だけOpenして即Closeしなければなりませんか?

何度も書き込むファイルに対してなら、
そのファイルの、ロック時間を少なくする必要がある時だけ。
よく考えないと危険。
0935デフォルトの名無しさんNGNG
>>934
非常に参考になりました。
本とかではこういう間隔まで学べないので
すごく助かりました。
ありがとうございました。
0936デフォルトの名無しさんNGNG
>>935
>本とかではこういう間隔まで学べないので

自分で試行錯誤するもんだ。
0937894NGNG
朝起きて見たら沢山の書き込み
ポインタの基本的な構造は解ったのですが実際に使うとしたら
どのような時に使うのが効果的なのか悩んでました
みなさん有難うございます、参考にさせていただきます。
0938デフォルトの名無しさんNGNG
>>937
10MBの配列を関数に渡したいときとか。
アフォみたいなコピー処理が必要なくなってウマー。
後、リスト構造とか。
0939デフォルトの名無しさんNGNG
void Saiki( nit num ){
POINT *temp;
static char Count=0;
static Flg=0;

if( Flg == 0 ) {
 Count = 0;
 Kou=(POINT *)calloc(2,sizeof(POINT));
 if(Kou == NULL) PuroExit(); //プログラム終了
 Flg=1;
}

Kou[Count].x=X;
Kou[Count].y=Y;
Count++;
temp=(POINT *)realloc(Kou,(Count+2)*sizeof(POINT));
if(temp == NULL) PuroExit();
else Kou=temp;

if(Jyouken[num] == TRUE)
Saiki(Num--);
}

最初にCountが0の状態になります。このあと強制的に1になります。
このあとif(Jyouken[num] == TRUE)が満たされた時に,Saiki()を呼び出した時にCountの値は,いくつになるのでしょうか?
0940デフォルトの名無しさんNGNG
↓これはできるのに
int main( )
{
hoge *piyo;

piyo = ( hoge *)malloc( 10*sizeof( hoge ) );
piyo[ 8 ].a[ 1 ] = 81;
}

↓これでバスエラーになるのはなぜ?
int main( )
{
hoge *piyo;

func( piyo );
piyo[ 8 ].a[ 1 ] = 81;
}
int func( hoge *p )
{
p = ( hoge *)malloc( 10*sizeof( hoge ) );
}
0941デフォルトの名無しさんNGNG
バスエラーじゃなくてAccess Violationじゃねーの?
0942デフォルトの名無しさんNGNG
Cの関数呼び出しは全てcall by valueだから呼び出し元の変数をイジッテもらうにはアドレスを渡さないといけない
0943940NGNG

Thanks
そっか。すっかり忘れてた。
鬱だ。
0944デフォルトの名無しさんNGNG
func(&piyo);
void func(hoge **p){*p = (hoge*)malloc(sizeof(hoge[10]));}
0945デフォルトの名無しさんNGNG
新スレ 立てますた

C言語なら、俺に聞け! <24>
http://pc.2ch.net/test/read.cgi/tech/1024033400/
0946デフォルトの名無しさんNGNG
>>940
X68か何かでやってんの?
0947デフォルトの名無しさんNGNG
>>940

int main( )
{
hoge *piyo;

func( &piyo );
piyo[ 8 ].a[ 1 ] = 81;
}
int func( hoge **p )
{
*p = ( hoge *)malloc( 10*sizeof( hoge ) );
}

じゃねーの?
0948947NGNG
944で既に答えが出ている(汗
0949仕様書無しさんNGNG
関数ポインタの型キャストにはどう書いたらいいの?
0950949NGNG
(void (*hoge)(int))NULL==hogehoge
???
0951デフォルトの名無しさんNGNG
>>949
void (*foo)(int) = (void (*)(int))NULL;
0952949NGNG
サンクス!!
0953デフォルトの名無しさんNGNG
asctimeが返す文字列の末尾に\nが含まれるのはなぜ?
0954デフォルトの名無しさんNGNG
>953
(゚∀゚)そーゆー仕様だからだよ。イヤなら削れ。
0955デフォルトの名無しさんNGNG
953
削って使ってるんですが、なぜそんな仕様なのかなーと。
0956デフォルトの名無しさんNGNG
(゚∀゚)なんでだろうね。オレも知りたい。
0957デフォルトの名無しさんNGNG
そのまま表示させることしか考えてなかった
0958デフォルトの名無しさんNGNG
Winみたいに\r\nな環境だと(;´Д`)な気分。
0959デフォルトの名無しさんNGNG
fputsは改行しないのにputsは改行するってのも、
作ったのがそこらの新人だったらはっ倒されそうな仕様だよな。
0960デフォルトの名無しさんNGNG
>>959
それよりもgetsの仕様だろ(笑)
0961デフォルトの名無しさんNGNG
gets は使われる事のない関数だし、使用から削除していいんじゃない
0962訂正NGNG
>961 使用 → 規格
0963デフォルトの名無しさんNGNG
>>961
そうもいかないのが、標準規格というもの…。
0964デフォルトの名無しさんNGNG
正直、getsとregisterはC99でObsoluteにしてほしかった。
0965デフォルトの名無しさんNGNG
obsoluteって何だよ。
obsolete
0966デフォルトの名無しさんNGNG
>965
まぁまぁ。964はobsolescentなんだよ。
0967デフォルトの名無しさんNGNG
Cの標準ライブラリ仕様よくわかんないというか糞なのがあるような気が
0968デフォルトの名無しさんNGNG
おめーら、きちんと埋めろや!!
開けたら閉めるって、おかーちゃんに習ったろうが。
0969デフォルトの名無しさんNGNG
埋めるとしばらく見れなくなるよ。

pcサーバは 600超えたら 500スレッドに圧縮実施中。。。
プログラム技術 live 526 wait 5

日に数スレしか立たないので圧縮まであと数週間持つ。
0970デフォルトの名無しさんNGNG
tab区切りのデータからstrtokでポインタいただきたいのですが、
strtokの2番目の引数に何を指定したらいいのでしょうか?
\tでもtab生で打ちこんでもダメでした。
難解です…。
0971970のおばかNGNG
すみません、違うところ間違ってました。
汚してすみませんでした…。
0972デフォルトの名無しさんNGNG
1000まで書かないとなかなかDAT落ちしなくていいね。
0973デフォルトの名無しさんNGNG
C言語なら、俺に聞け! <24>
http://pc.2ch.net/test/read.cgi/tech/1024033400/l50
0974デフォルトの名無しさんNGNG
>>972
1000までいかなくても、近いうちにdat落ちすると思われ。
0975デフォルトの名無しさんNGNG
980 まで書き込むと dat 落ち(サーバによるかも)。

>>969
から 5 日で 10 スレ立った。圧縮まで後一月は持ちそう。
http://pc.2ch.net/kakolog.html
pcサーバは 600超えたら 500スレッドに圧縮実施中。。。
板         live wait
プログラム技術 536 14
09763項演算子NGNG
次のif文を3項演算子を用いて表せ

if(a > b)
x = a;
else
x = b;

よそしくおねがいします。

0977スコープNGNG
変数のスコープってなんですか?
0978デフォルトの名無しさんNGNG
http://images.google.com/images?q=%E5%A4%89%E6%95%B0%E3%81%AE%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97&ie=UTF-8&oe=UTF8&hl=ja
0979デフォルトの名無しさんNGNG
x = ( a > b ) ? a : b
0980デフォルトの名無しさんNGNG
x = IIf(a > b, a, b)
0981スコープNGNG
googleで検索したら
スコープ=ある変数を参照可能なソースコード中の範囲のこと。
ってかいてあったんですが変数のスコープの意味が分かりません。
誰か教えてください

09823項演算子NGNG
>979
ありがとうございました。
0983デフォルトの名無しさんNGNG
>>981 変数(など)の有効範囲.簡単に言うと{}の中で宣言した変数は,
その中でだけ使えるというもの.

{
 { 
  int a;

  a++; /* aが使える */
 }
 a++; /* ここではaは使えないのでエラー */
}

これ以外に関数のスコープとかファイル単位のスコープとか,いろいろ
あるので調べてくれ.
0984葵NGNG
この問題を教えてください
3×3行列Aに対し
1,Aを読み込みAの行列式を出力
2,Bを読み込みA×Bを出力
3,|A|≠0の時のA^-1を出力
0985デフォルトの名無しさんNGNG
C言語なら、俺に聞け! <25>
http://pc.2ch.net/test/read.cgi/tech/1024918442/l50
0986デフォルトの名無しさんNGNG
986
0987デフォルトの名無しさんNGNG
987
0988デフォルトの名無しさんNGNG
988
0989デフォルトの名無しさんNGNG
989
0990デフォルトの名無しさんNGNG
ドメイン名からIPアドレスを引き出すプログラムって、nslookup実行した結果を
ファイルに入れて参照するしかないですか??
0991Disca ◆NAfP6znE NGNG
>>990
gethostbyname
0992デフォルトの名無しさんNGNG
>>991
ありがとうございました!!
0993デフォルトの名無しさんNGNG
スレ2お願いします。
0994デフォルトの名無しさんNGNG
C言語なら、俺に聞け! <25>
http://pc.2ch.net/test/read.cgi/tech/1024918442/l50
0995デフォルトの名無しさんNGNG
0996デフォルトの名無しさんNGNG
0997デフォルトの名無しさんNGNG
Σ(゚Д゚)
0998デフォルトの名無しさんNGNG
Σc(゚Д゚c
0999デフォルトの名無しさんNGNG
Σ(゚Д゚ )y-~~
1000デフォルトの名無しさんNGNG
( ´_ゝ`)1000get
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。