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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

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

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

前スレ C言語なら俺に聞け! Part 〈58〉
http://pc2.2ch.net/test/read.cgi/tech/1056109884/
http://www.darkcat.on.arena.ne.jp/cgi-bin/dknbbs2/bbs.cgi?usr=hello_world82563#
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/

【ライセンスや機能などに問題あり】
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


0003955NGNG
>>1
乙
0004デフォルトの名無しさんNGNG
return の意味が分かりません。
何冊本を読んでも、何回検索して調べても分かりません。
簡単に説明してもらえませんか?
0005デフォルトの名無しさんNGNG
>>4
呼び出し元へ戻る
0006デフォルトの名無しさんNGNG
>>4
呼び出し元へ戻る
00074NGNG
呼び出し元に戻るってのは・・・。
return 0;や
return a;
の時のときもですよね?
0008デフォルトの名無しさんNGNG
>>7
そうだ。
00094NGNG
で呼び出し元っていうのは?
0010デフォルトの名無しさんNGNG
>>9
その関数を呼び出したところへ
00114NGNG
>>9は漏れじゃないです。
でもそれも気になるけど・・
00124NGNG
戻ったら終了ですか?
0013デフォルトの名無しさんNGNG
>>12
main関数から戻れば
00144NGNG
mainのときの呼び出し元とはどうなるでしょう?
00154NGNG
>>14も漏れじゃないです
0016デフォルトの名無しさんNGNG
>>14
os
00174NGNG
>>12も漏れじゃないです
00184NGNG
>>4も漏れじゃないです
0019デフォルトの名無しさんNGNG
returnの中の人も大変だな
00204NGNG
return 0;の時の0はOSに戻るってこと?
return a;なら・・・
00214NGNG
>>20
mainからのreturnは。
0022returnの住民NGNG
おい、おまいら。
漏れたちreturnを使うんじゃない。
めんどくさいんだよ。いちいち戻るのが。
0023デフォルトの名無しさんNGNG
脳がタリーンってことで
0024デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>23
0025returnの住民NGNG
ぬるぽん。ぬるぽん。ぬるぽん。
00264NGNG
returnを使わないで戻れますか?
0027デフォルトの名無しさんNGNG
>>4
その程度調べられないんじゃ、もうやめとけ。
勉強するだけ無駄!!
0028デフォルトの名無しさんNGNG
>>26
伝家の宝刀「longjmp」
00294NGNG
色々と検索してここを発見。
0030デフォルトの名無しさんNGNG
>>4
本読んでもreturnが分からないようじゃ
プログラムはやめたほうがいいね!
00314NGNG
本には「return 0;」は絶対に書くものだと
覚えておけばいいでしょうだとさ
0032デフォルトの名無しさんNGNG
>>31
その通り

size_t strlen(const char *str)
{
for(;*str;str++)
;
return 0;
}
00334NGNG
>>30
プログラミングは続けるけどね!
0034デフォルトの名無しさんNGNG
void のいみないじゃん
00354NGNG
void型のポインタってどういうときに使いますか?
0036デフォルトの名無しさんNGNG
使うな、そんなもん
0037デフォルトの名無しさんNGNG
メモリ動的確保
00384NGNG
近所のお姉さんと和姦したいのですが?
0039デフォルトの名無しさんNGNG
なんか、偽者の4が多いような気がする。
0040デフォルトの名無しさんNGNG
気のせい
00414NGNG
C言語に文字列型はないんですか?
0042デフォルトの名無しさんNGNG
     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <>>41 文字の配列という考えしかないようです(゜∇゜)/
  =〔~∪ ̄ ̄〕                 「ウンマンコ」
  = ◎――◎  
00434NGNG
なんでかエラーが出ます。

char moji[100];
moji = "abc";
0044デフォルトの名無しさんNGNG
     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <いや、ですから moji[0]='a' とかしないと・・(゜∇゜)/
  =〔~∪ ̄ ̄〕                        「ウンマンコ」
  = ◎――◎  
00454NGNG
なんでか動作がおかしいです。

if ( a < x < b ) {
    ...
} else {
    ...
}
0046デフォルトの名無しさんNGNG
char moji="abc";
ならいけるよ
0047デフォルトの名無しさんNGNG
>>46
コンパイルエラーの予感
0048デフォルトの名無しさんNGNG

     ∧∧Λ
ピュ.ー ( ゜∇゜ )つ <いや、ですから a<x&&x<b とかしないと・・(゜∇゜)/
  =〔~∪ ̄ ̄〕                        「ウンマンコ」
  = ◎――◎  
004947NGNG
警告か
0050デフォルトの名無しさんNGNG
こっちだった
char moji[]="abc";
0051デフォルトの名無しさんNGNG
>>45
アホだ
if ( a < x < b ) ×
if ( a<x && x<b ) ○
00524NGNG
a++と++aの違いは何ですか?
005347NGNG
整数型とポインタなら一応は互換性があるということか。
double d="abc";ではエラーだしな。
0054デフォルトの名無しさんNGNG
>>4って
わざとか!
00554NGNG
mainにreturnもexitもない場合何がosに返りますか?
0056デフォルトの名無しさんNGNG
>>47
キャストすれば?
0057デフォルトの名無しさんNGNG
 a < x < b

って、

 (a<x) < b

と等価だっけ?
00584NGNG
引数が評価される順番は決まってますか?

void func(int a, int b, int c)
printf("%d, %d, %d", a, b, c);
}

a = 0;
func(++a, ++a, ++a);
0059デフォルトの名無しさんNGNG
すっかりネタスレかよ。本スレたてようか?
0060デフォルトの名無しさんNGNG
>>ALL
もうそろそろ、ネタはやめようよ
0061デフォルトの名無しさんNGNG
>>59
頼む
0062デフォルトの名無しさんNGNG
>>61
了解。試してみる。
00634NGNG
------------------------------------------------------------------
ここまでテンプレ
0064デフォルトの名無しさんNGNG
ちぃ、、、立てられなかった。
0065デフォルトの名無しさんNGNG
>>59==62
スレ削除依頼出すなら良いけど
そうじゃないなら、立てちゃ駄目だよ
0066デフォルトの名無しさんNGNG
65=偽4
0067デフォルトの名無しさんNGNG
マ、100越える頃には落ちつくだろ。
よくあることだ。おおらかにいこう。
00684NGNG
答えられないからってねた扱いですか。
0069デフォルトの名無しさんNGNG
>>66
俺は4を騙ってないし、常識的な事を言ってるだけだが?
0070デフォルトの名無しさんNGNG
(=´Д`=)
0071デフォルトの名無しさんNGNG
data = malloc(sizeof(DataRec));
・・・;
・・・;
if (!fp) {
printf("%sが開けません。\n", path);
exit(EXIT_FAILURE);
}
・・・;
・・・;

で、終了しちゃった場合、mallocで確保された領域は
どうなるんでしょうか?
0072デフォルトの名無しさんNGNG
>>71
もし、解放されるとしたら解放しない気でつか?
00734NGNG
>>71
osが開放します。
0074デフォルトの名無しさんNGNG
>>73
だから、もうネタは良いんだって
007571NGNG
早めに答えてもらえませんか?
さもないと本当にあなたたちを無知だと見なしますよ。
007671NGNG
>>4, 72
即レス有り難う御座います。

>>72
同じ関数内なら忘れず解放するんですが
他で確保してる領域はどうなるのかと
思いまして・・・。

>>4
OSが解放してくれるんですか
今夜は熟睡できそうでつ

有り難う御座いました。
007771NGNG
うぅ!?

>>4もとい、>>73はネタでつか?
それに、漏れがもう一人・・・。

今日は早めに床につきまつ。
お邪魔しますた。
007872NGNG
>>75
オマエガナー
00794NGNG
本物の>>4なんですけど・・・。
俺のせいですごいことになってしまった。
俺ってすごい釣り師? 
反省してます。
0080デフォルトの名無しさんNGNG
>77
>73が正しい
0081デフォルトの名無しさんNGNG
このスレ的には環(以下略
0082デフォルトの名無しさんNGNG
osを監禁します
00834NGNG
おまいら、もうネタは良いって。
0084デフォルトの名無しさんNGNG
>>77&80
マジレスすると、解放するのはOSとは限らないし(そもそもOSが無いとか)
atexit()とか使ってると、exit()で終了するとも限らない
00854NGNG
そういうことにしとくか。
008649&4NGNG
マジ最高。
こんなにつれたのはじめてでつ
00874NGNG
そういうことにしとくか。
0088デフォルトの名無しさんNGNG
http://www.geocities.co.jp/HeartLand-Suzuran/6071/main.mid
008971NGNG
>>80,84
そっそうですか、取り敢えず
回収してくれるんですね。

>>84
atexit()は知りませんでした。
標準ライブラリも奥が深い。

精進しまつ。
有り難う御座いました。
0090デフォルトの名無しさんNGNG
二分木の再起処理を頭で整理しようとすると脳内がオーバーフローしそうなんですが
他に再起が必要な場面ってありますか?
0091デフォルトの名無しさんNGNG
>>89
fcloseは自動的に行われることになっているが
freeが自動的に行われるとはどこにも書いてないぞ

ここ重要
↓
だから自分で調べろと言うのだ

規格票なり作者の発言なり1次情報にアクセスしろ
伝聞についてくる尾ひれにはトンデモが混じってる
0092デフォルトの名無しさんNGNG
>>90
再帰を『使いたくなる』場面なら色々ある。パーサ、ディレクトリ、ソート、メッセージ、etc...
だが、あなたが聞いているのは再帰が『必要な』場面だよな。

それは『ない』。
0093デフォルトの名無しさんNGNG
fopenも終了時にストリームは自動的に閉じられるけれど、fopen内でmallocを使っていたとしたら、その領域が開放される保証はないな。
0094デフォルトの名無しさんNGNG
fopenがmallocを使っているのに
fcloseでfreeが行われないとしたら
それはバグだろ

while(???) {
fp = fopen(???);
...
fclose(fp);
}
これができないことになる
0095たくNGNG
コンパイルできません。どこが間違っているのか教えてください。
#include <stdio.h>
main()
{
int count = 0;
int gyo;
char file[20];
int a = count + 1 - gyo;
int b = 0;
int fp;
puts("表示したい行数を入力");
scanf("%d", gyo);
puts("表示したいファイル名を入力");
scanf("%s", file);
FILE *fp;/*ファイルポインタ*/
char buffer[500];
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
}
次に続く
0096デフォルトの名無しさんNGNG
>>94
fcloseを呼ばずに終了した場合の話
0097たくNGNG
while((fgets(buffer, 500, fp) != NULL))
{
count++;
}
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
} 次に続く
0098たくNGNG
while((fgets(buffer, 500, fp) != NULL))
{
if(b >= a)
{
printf("%s\n", buffer);
}
b++;
}
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
return 1;
}次に続く
0099たくNGNG
コンパイル時に表示されたメッセージ
head.c 18: Warning: 'gyo' used before set
head.c 27: Warning: 'fp' used before set
head.c 27: illegal type combination (*)
head.c 29: syntax error near 'char'
head.c 29: 'buffer' undefined
head.c 31: Warning: illegal pointer combination (=)
head.c 37: 'buffer' undefined
head.c 37: Warning: illegal pointer combination (param)
head.c 43: Warning: illegal pointer combination (param)
head.c 49: Warning: illegal pointer combination (=)
head.c 55: 'buffer' undefined
head.c 55: Warning: illegal pointer combination (param)
head.c 59: 'buffer' undefined
head.c 67: Warning: illegal pointer combination (param)
0100デフォルトの名無しさんNGNG
>>96
fopenしたストリームを閉じるのに
直接にも間接にもfcloseを使わないってことか

仮にそういう実装があったにしても
そういう実装をする者がfcloseを使った場合と
同等の結果を保証することに全責任を負うべきだ
0101デフォルトの名無しさんNGNG
int a = count + 1 - gyo;
このときのaがいくつになることを『意図している』?

万が一、この問いに答えられないようなら
コードを書き始めたこと自体が間違っている。
この場合は設計に戻るべき。
0102デフォルトの名無しさんNGNG
なんかfpの宣言が2つあるな
0103たくNGNG
このプログラムは指定された行数を
最後の行からさかのぼって出力することを目的に書きました。
int a = count + 1 - gyo;
はb>aのときから表示させることにより
最後の行からさかのぼって指定された行を表示させようとしています。

if(b >= a)
{
printf("%s\n", buffer);

0104デフォルトの名無しさんNGNG
>>103
だから、具体的にいくつだよ?
エラーメッセージがそうなってるだろ
0105デフォルトの名無しさんNGNG
>>103
自動変数はきちんとプログラマが値を入れてやらないと何が入るか分からないよ。

> 'gyo' used before set
これはgyoに値をセットする前に使ったという意味。
0106デフォルトの名無しさんNGNG
まずは英和翻訳ソフトを買うなり、オンライン英和翻訳サービスを利用するなりして、エラーメッセージの内容を理解するべきだろ。
0107デフォルトの名無しさんNGNG
日本語でメッセージが表示されても分からない予感
0108デフォルトの名無しさんNGNG
こんくらいの英語は自力で嫁ろ
ISOやIEEEの原文が読めないと勝負にならん
0109デフォルトの名無しさんNGNG
ネットで稼ぐならこれ。完全無料!!
リンクスタッフになれば小遣い稼ぎができます!!(左下に詳しい説明があります)
[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に1000円の報酬
キャンペーン・・・今なら登録するだけで1000円プレゼント
間接報酬・・・紹介者が得た報酬の25%を加算いたします
プレミアム・・・優秀サイトには、報酬に応じてボーナス有り

単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると1000円もらえるので
1日5人スタッフを紹介できたとして1000×5×30=150000円
30000+15000=180000!!間接報酬などもありますのでどんなに悪くても一ヶ月に10万円以上は必ず稼げます!!
http://www.santa.ac/~comtec/linkstaff/cgi/click.cgi?id=3007        
ぜひ一度覗いて見てはいかがでしょうか?
0110デフォルトの名無しさんNGNG
> 30000+15000=180000
0111デフォルトの名無しさんNGNG
>int gyo;

この宣言を見た時、「ギョ」って何?
とオモタ。
素直に「line」にしようよ(w
0112デフォルトの名無しさんNGNG
とりあえず、全部コメントアウトして一行ずつ外していってコンパイル通るかしていけ。
0113デフォルトの名無しさんNGNG
iostream.hとstdio.hの違いがよくわかりません。
教えてください!
0114たくNGNG
皆さんレスありがとうございます。
とりあえず直したのですが、
fpとaを定義したにもかかわらす以下のようなメッセージが出ます。
どこが間違っているか教えてください。

head.c 18: 'fp' undefined
head.c 20: 'fp' undefined
head.c 26: 'fp' undefined
head.c 30: syntax error near 'int'
head.c 30: 'a' undefined
head.c 32: 'fp' undefined
head.c 38: 'fp' undefined
head.c 44: 'fp' undefined
head.c 46: 'a' undefined
head.c 56: 'fp' undefined
0115たくNGNG
#include <stdio.h>
main()
{
int count = 0;
int gyo;
char file[20];
int b = 0;
char buffer[500];
puts("表示したい行数を入力");
scanf("%d", &gyo);
puts("表示したいファイル名を入力");
scanf("%s", file);
0116たくNGNG
FILE *fp;
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
}

while((fgets(buffer, 500, fp) != NULL))
{
count++;
}
int a = count - gyo + 1;
0117たくNGNG
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
if((fp = fopen(file, "r")) == NULL)
{
puts("read open error");
return(-1);
}
0118たくNGNG
while((fgets(buffer, 500, fp) != NULL))
{
if(b >= a)
{
printf("%s\n", buffer);
}
b++;
}
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
return 1;
}
0119デフォルトの名無しさんNGNG
少しは自分で考えれ!
0120デフォルトの名無しさんNGNG
たくくたばれ
0121デフォルトの名無しさんNGNG
>>114
2つの変数の宣言をアタマに持って毛。
0122たくNGNG
>>121
ありがとうございます。無事コンパイルと実行ができました。
所でナンデ上に持ってくだけでコンパイルできたのですか?
0123デフォルトの名無しさんNGNG
Cは変数定義をブロック({と}で囲まれた部分)の先頭にまとめないといけないから。
0124たくNGNG
>>123
しりませんでした。勉強になりました。
ありがとうございます。
0125たくNGNG
>>120
おまえがな!
0126120NGNG
お前もな。俺はくたばる
0127FLA1Abe019.tky.mesh.ad.jpNGNG
ttp://.jp/staff/in.cgi?id=13675
01284=たくNGNG
しかし良く釣れるな(藁
0129デフォルトの名無しさんNGNG
>127
別の意味で釣れた
0130デフォルトの名無しさんNGNG
超初心者です。
>>50
char moji[]="abc";
はい、できますた。ここで、0から3までの4個の要素が定義されてますね。
ここで、
char moji[4]="def";
とやると、コンパイルエラーになりますが、なぜだめなのですか。
文字列配列の要素は、1文字2バイトしか使えないのですか。
0131デフォルトの名無しさんNGNG
超初心者です。
openという名前の関数を作ったところfopenの動作がおかしいのです。
どうしたでしょうか。
0132デフォルトの名無しさんNGNG
>>130
どうせ>>123だろ
0133デフォルトの名無しさんNGNG
文字列ぶちこむのは
sprintf(&moji[0],"def");
にしとき。
01344NGNG
strcpyだろ
0135たくNGNG
たびたびすみません。実行するときに head 20 a.c
と入力し、a.cというファイルの中身を逆からさかのぼって
20行表示させようとしています。
head1.c 55: Warning: 'file' not used
と出てしまうのですがどこが悪いのでしょうか?

#include <stdio.h>
main(int argc, char *argv[])
{
FILE *fp;
int a;
int b = 0;
int count = 0;
char file[20];
char buffer[500];次に続く
0136たくNGNG
if((fp = fopen(argv[2], "r")) == NULL)
{
puts("read open error");
return(-1);
}
while((fgets(buffer, 500, fp) != NULL))
{
count++;
}
a = count - *argv[1] + 1;
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}次に続く
0137たくNGNG
if((fp = fopen(argv[2], "r")) == NULL)
{
puts("read open error");
return(-1);
}
while((fgets(buffer, 500, fp) != NULL))
{
if(b >= a)
{
printf("%s\n", buffer);
}
b++;
}次に続く
0138デフォルトの名無しさんNGNG
警告とエラーの区別がつかないアフォ
0139たくNGNG
if(fclose(fp) == EOF)
{
puts("Close error");
return(-1);
}
return 1;
}
0140デフォルトの名無しさんNGNG
>>130
エラーになるかい?
0141デフォルトの名無しさんNGNG
>>140
char moji[]="abc";
char moji[4]="def";

とか

int a=0;
a+=4;
char moji[4]="def";

とかやれば。
0142デフォルトの名無しさんNGNG
>>141
変数名が重複してる・・・
0143デフォルトの名無しさんNGNG
>>142
だからエラーになる。
0144_NGNG
http://homepage.mac.com/hiroyuki44/jaz10.html
0145デフォルトの名無しさんNGNG
>>135
>>105をミロ!!
0146デフォルトの名無しさんNGNG
初心者です
丁度文字列の話が出てるので質問したいのですが
strcpyの関数を使う時の関数の宣言って何ですか?
教えてください
0147130NGNG
>>132
| >>130
| どうせ>>123だろ
そんなー、人に意見が言えるような偉い人じゃあーりません。
エラーじゃなくて警告でしたが、実行してみると、
>>138,>>140
segmenation faultだって、Cってなんでこんなにメンドイの。

0148130NGNG
いけね、行がずれた。メンゴ。
ちなみに漏れはawk→perlとやってます。楽でよかった。
0149132NGNG
>>147
>>123という理由でエラーになったんだろうという意味なんだが。
Segmentation Faultは別の場所で起きていると思うけど。

それと>>138は>>135へのレスだろ。多分。
015071NGNG
>>91
アドバイス有り難う御座います。
早速、漁ってみます。
0151デフォルトの名無しさんNGNG
>>146
プロトタイプ宣言 というキーワードで google
C言語の解説サイトを嫁
0152130NGNG
>>149
あらー、またまた誤解スマソ。
ダイヤルアップなんで、今度は、2・3時間後にきます。
0153130NGNG
到着。
0154デフォルトの名無しさんNGNG
part60 になってからツマんなくなったな。
0155130NGNG
130です。
お勉強すれで紹介されている「配列とポインタの完全制覇」行って
勉強してきました。で、成果は、特にない。今晩、寝ずに考えて見末。
皆さん、ありがとうございました。ダイヤルアップなんで・・・
0156デフォルトの名無しさんNGNG
あるチャットのタイムアウト(ユーザーでは設定できない)防止対策用に
自動発言させるプログラムを作りたいのですが、
どのようにしてTABキーを押させるようにすればいいのでしょうか?
計画としては、テキストボックスまでTABで移動させて、
そこに任意のメッセージを入力、Enterキーを押させて発言させようと思っています。

超初心者的な質問ですいません。よろしくおねがいします。
0157デフォルトの名無しさんNGNG
そんなチャット使うな。
0158デフォルトの名無しさんNGNG
>>156
アームロボット買ってきて、キーボードを押すようにプログラミングするとか。

などと言う冗談はさておき、スレ違いなんでとっとと消えましょう。
0159デフォルトの名無しさんNGNG
>158
それ、何の本に載ってたっけ?たしか、IBMが
「プログラムの改修にン億円かかります」とかって
答えた話だよね。
0160デフォルトの名無しさんNGNG
>>1
http://www.darkcat.on.arena.ne.jp/cgi-bin/dknbbs2/bbs.cgi?usr=hello_world82563#
0161貧乏脱出!これであなたはお金持ちNGNG
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

. . . . . . . . . .
0162デフォルトの名無しさんNGNG
>>156
ハード作れ
0163デフォルトの名無しさんNGNG
あるファイルを読み込んで処理するプログラムを考えています。
たとえば、あるファイルの内容が

one
two
three

だったとすると、行数は3行、1行あたりの最大文字数は5文字、ということで
struct text{
word[6]
} line[3]

と宣言したいのです(構造体になっているのは、実際は行ごとにいくつかの
単語を評価するからです)。しかし、実際にプログラムを書くと、ファイル
操作の前の段階で、word[6]やline[3]などの具体的な数字を要求されて
しまいます。ファイルの内容を読み込んでから、それに最適な構造体を
定義するには、どのようにすればよいのでしょうか。

どうかよろしくお願いします。
0164デフォルトの名無しさんNGNG
>>163
普通のやり方じゃできない。

無理やりやるならば前もって最大文字数と行数をカウントして、Cのソースを吐き出し、
コンパイルするってやり方を考えたけど、アクロバット過ぎるし実用にならんだろうなw

そういう場合は、

struct text {
char *word;
} line;

とか定義しておいて、mallocなどを使ってやりくりするしかあるまい。
0165デフォルトの名無しさんNGNG
>>163
Cって不便ね。Perlなら簡単よ。
0166デフォルトの名無しさんNGNG
Perlって汚いわね。PHPなら綺麗よ。
0167デフォルトの名無しさんNGNG
>>164
>普通のやり方じゃできない。
mallocを使った動的メモリ確保は普通では?
0168デフォルトの名無しさんNGNG
>>166
> PHPなら綺麗よ。
眼科に行きましょう。
0169163NGNG
課題の指導書の参考関数に malloc が入っている訳がわからなかったのですが、
そのようにするのですか。どうもありがとうございました。

ところで、この例について
struct text{
char word1[10];
char word2[10];
…
} line[20]

と先に決めてしまい、ファイルの内容について「20行以下、1単語につき
9文字以下」と約束をつくる、というやり方も考えました。これを一般的な
プログラミングの慣習からみると、スマートとはいえないやり方なのでしょうか?
(20行に満たなかった場合など、かなりメモリを無駄に浪費するような気が…)
0170デフォルトの名無しさんNGNG
その程度は別に無駄とも思わん。
メモリをたくさん使ってもプログラムが簡単に書けてスピードも速くなるなら
トレードオフが成立する。
むしろ20行を超えたとき動かないのがよくない。
0171デフォルトの名無しさんNGNG
>>169
構造体のメンバのサイズ固定はそこそこよくある実装だと思うが、
行数制限はよくない。構造体を必要な数だけmalloc()するくらいがよくある実装。
0172デフォルトの名無しさんNGNG
#include <stdio.h>
void main(){
int n;
char ch;

printf("数字を入力してください\n");
scanf("%d",&n);
printf("文字を入力してください\n");
scanf("%c",&ch);

printf("\n\n");
printf("入力された数字は%dです。\n",n);
printf("入力された文字は%cです。\n",ch);
}

このソース間違ってますか?途中で文字入力が
飛ばされるのですが。。
0173デフォルトの名無しさんNGNG
>>172
多分scanf("%d",&n);の時に入力した改行がscanf("%c",&ch);で拾われている
0174デフォルトの名無しさんNGNG
バッファとかよく分かりません。
どこを変えたらよいでしょうか?
0175デフォルトの名無しさんNGNG
>>174
ストリームのバッファならsetvbufで
0176デフォルトの名無しさんNGNG
>>172
scanf(" %c", &ch);
0177172NGNG
すごい!なぜですか?
空白を入れるなんて思いつきませんでした。
0178デフォルトの名無しさんNGNG
>>172
釣りは帰れ
過去スレよめ
0179デフォルトの名無しさんNGNG
過去スレ・・・( ´_ゝ`)プッ
おっと釣られちゃったかな
0180デフォルトの名無しさんNGNG
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
このサイトでCの勉強しようと思ったんですが、
サンプルコードに滅茶苦茶なのがたくさんあるんだけど、
目の錯覚ですか?
0181172NGNG
うほっ いい男!
0182デフォルトの名無しさんNGNG
>>180
どこら辺よ?
0183デフォルトの名無しさんNGNG
>>180
キエテ。キエテ。キエテ。キエテ。キエテ。キエテ。
0184デフォルトの名無しさんNGNG
>>180
滅茶苦茶なのがわかってるならそのサイトに用はないだろ
素直にメールでもだして注意してやればいいだろ

晒したいなら晒したいと素直にいおうね
0185デフォルトの名無しさんNGNG
>>179
自分がでけへんことを人に言いなや (プ
0186デフォルトの名無しさんNGNG
次のページの問題がよくわかりません、課題11-1はできたんですが・・・
誰かわかる人お願いします。
http://www.laser.ee.kansai-u.ac.jp/lecture/kisopro/report11.htm
0187デフォルトの名無しさんNGNG
宿題スレへGO
0188デフォルトの名無しさんNGNG
>>180の紹介したサイト、嘘だらけだね。
作った人間の馬鹿さ加減が偲ばれるいいサイトだ。
0189デフォルトの名無しさんNGNG
>>188
例えば?
0190デフォルトの名無しさんNGNG
>C言語には複素数を直接扱うデータ型はない
あるので
===終了===
0191デフォルトの名無しさんNGNG
>>189
scanf()の説明とかファイル操作関連とか、
規格をよく判っていないで書いているのがありあり。
0192デフォルトの名無しさんNGNG
>>190
それはC++だろ
0193デフォルトの名無しさんNGNG
>なお、低水準入出力関数を使用するためには、<io.h>をインクルードする必要があります。
このへん氏んでいい
0194なまおNGNG
おら、かかってこい!!
0195デフォルトの名無しさんNGNG
>>192
C99
0196デフォルトの名無しさんNGNG
>>192
C99にあるよ。現実として無いも同然だけど
0197デフォルトの名無しさんNGNG
http://www5c.biglobe.ne.jp/~ecb/c/00_01.html
> 1972年、B.W.Kernighan氏とD.M.Ritchie氏により 考案され、

カーニハンがC言語の開発に携わったの?
0198デフォルトの名無しさんNGNG
配列のサイズ指定には定数しか使えないと言ったらつっこまれるかな。
0199デフォルトの名無しさんNGNG
C99なんて実装されても誰も使わないよな?
なんか、Cに求められてるものとはかなり違う気がするよ。
0200デフォルトの名無しさんNGNG
snprintfくらいなら使う
0201デフォルトの名無しさんNGNG




毎年、約1万組の日韓結婚。
それに伴なう朝鮮化した混血児。
年間、日本の新生児約100万人のうち、
約1〜2万人の新生児に
容赦の無い朝鮮人の血が流し込まれている。




0202デフォルトの名無しさんNGNG
//とか使う
0203デフォルトの名無しさんNGNG
なまおってトンデモなC言語講座を開いてfjのお兄さまたちに
タコ殴りにされてた彼か。
0204なまおNGNG
gcc知らんらしいなこのガキどもは
0205デフォルトの名無しさんNGNG
>>203
なまおクンのサイトだったのか。懐かしい…
にしても、トップページのJavaアプレットがうざ。
http://hp.vector.co.jp/authors/VA000124/intro.html
にTeXがプログラミング言語じゃないようなこと書いてあるけど、
プログラミング言語だよなあ、あれ。
0206デフォルトの名無しさんNGNG
マークアップ言語じゃね?
0207デフォルトの名無しさんNGNG
ネットwatchか
0208デフォルトの名無しさんNGNG
>>206
条件判断とか変数とかあるよ。立派なプログラミング言語。
もっともその言語仕様はこれよりクソなものを見たことないくらいクソ。
0209デフォルトの名無しさんNGNG
使用目的からいってマークアップ言語じゃね?
条件判断とか変数とかはあんま関係ないっしょ。多分。
0210デフォルトの名無しさんNGNG
構造体の一部を共通にしたい場合に、以下のようなソースを見つけたのですが、
VC++ではエラーになってしまいました。
この方法は使用できないのでしょうか?

typedef struct _HEADER{
     int name;
}HEADER;

typedef struct _BOXA{
      HEADER; //ここで中身の無い構造体エラー
      int a;
}

typedef struct _BOXB{
      HEADER;
      int b;
}

int main(){
     BOXA c;
     c.name云々;   
     BOXB d;
     d.name云々;   
}
0211210NGNG
typedefの名前書き忘れました・・・すみません。
0212デフォルトの名無しさんNGNG
typedef struct _BOXA {
 HEADER h;
 int a;
};
とでもせんと。
0213デフォルトの名無しさんNGNG
面罵名は?
0214デフォルトの名無しさんNGNG
typedefで定義する新しい名前が指定されていない気が・・・・
型だけでメンバー名が指定されていない気が・・・
0215デフォルトの名無しさんNGNG
気持ちはわかるな。
確かに面罵名いらんって言いたいときがある。
C++なら(ry
0216デフォルトの名無しさんNGNG
>>215
そんなことしたらメンバーにアクセスできないよ??
0217216NGNG
あ、わかった。そういうことを言いたいのか。
0218デフォルトの名無しさんNGNG
PostScriptがプログラミング言語だと知ったときの驚き
0219_NGNG
http://homepage.mac.com/hiroyuki44/hankaku10.html
0220デフォルトの名無しさんNGNG
>>209
スレ違いだからここまでにするけど、おれもマークアップ言語だと思ってるよ。
ただプログラミング言語では全くないといわれたら、そりゃ違うだろってだけ。
0221デフォルトの名無しさんNGNG
C++なら、210は、
struct HEADER{ int name };
struct BOXA : public HEADER{ int a };
struct BOXB : public BOXA{int b};
とか(邪悪やなぁ)。
0222デフォルトの名無しさんNGNG
#define MACRO1 int n;\
char *p

typedef struct{
MACRO1;
double d;
}KOZOTAI1;

typedef struct{
MACRO1;
int i;
}KOZOTAI2;
0223デフォルトの名無しさんNGNG
継承関係まちがえた。
0224デフォルトの名無しさんNGNG
>>221
publicいらんでえ
0225210NGNG
>>212-224
有難う御座います。

私もメンバ名が無いのは承知していて、不思議だったので、
色々調べてみたのですがどーしてもわからず、質問させていただきました。

マイクロソフトのDDKのサンプルソースにさっきの様なのが含まれていました。、
ということは、サンプルのコードが妖しいということになるのかな???
0226デフォルトの名無しさんNGNG
freopenなんて
0227デフォルトの名無しさんNGNG
使わないよ!!
0228デフォルトの名無しさんNGNG
>>227
うん、使わなくていいよ
少なくとも君だけは永久にw
0229デフォルトの名無しさんNGNG
>>225
MSのサンプルはC++だろ不通
0230デフォルトの名無しさんNGNG
つーても面罵名ないのは変だよな
0231デフォルトの名無しさんNGNG
ま、あれか。
こういうとこ読むときと同じで
行間嫁ってことか。
わざわざ自然言語で書かにゃならんとき
つい入っちまうからな、動作確認してないソース。
0232デフォルトの名無しさんNGNG
あんなミスをC使いがするものか。
0233デフォルトの名無しさんNGNG
そういうのが動くコンパイラもあるってことなんだろうか?
0234デフォルトの名無しさんNGNG
入力した数値が数字だけでできてるか判断させる関数作りたいんですけど
これ以上わかんない。どう直したらいいんでつか?省略のところも書いてほしいです。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h>
BOOL NumCheck( char *pcData, int iLen );
//呼び出しもと
int main( void )
{
BOOL t;char ten[1][7];
do{
/*省略*/
t = NumCheck( &ten[0], strlen(&ten[0]) );
}while( t == FALSE );
/*ここにatoi()でint型にする方法も教えてください*/
return 0;
}
//pcData チェックする文字列
//iLen 文字の長さ
//戻り値 TRUE:全部数字、FALSE:数字でない文字がある
BOOL NumCheck( char *pcData, int iLen )
{
int i;BOOL bRet = TRUE;
//チェックする文字数分ループ
for( i=0; i < iLen; i++ ){
//数字なら次をチェック
if( isdigit( pcData[i] ))
continue;
//数字でない文字があったのでエラーを表示して
//ループ終了
printf( "数字ではありません。再度入れ直してください。\n" );
bRet = FALSE;break;}
return bRet; //結果を返します
}
0235デフォルトの名無しさんNGNG
#include <ctype.h>
int suujidake(const char *str)
{
for(;*str;str++)
if(!isdigit(*str))
return 0;

return 1;
}

テストしていないし、符号も許さない。
0236デフォルトの名無しさんNGNG
>>234
2ch には意地悪なものが多いということを踏まえて、こんな感じで。

BOOL NumCheck(char *pcData)
{
 if(*pcData == '\0')
  return TRUE;
 if(!isdigit(*pcData))
  return FALSE;
 return NumCheck(pcData + 1);
}

これでも別に悪くは無いけど、あんま C っぽくない。
C 風に組んだ場合のコードはヒントあげるから考えてみ。


1. 数字なら次をチェックするのではなく、
  数字でなければ return FALSE; という風にすれば楽。
2. 文字列の終わりには '\0' があるので、いちいち iLen なんぞ使わんでもいい。
3. NumCheck は数値かかどうかをチェックする関数なんだから、
  「再度入れ直してください」なんて出力は NumCheck にはさせない方がいい。
0237デフォルトの名無しさんNGNG
NumCheckは完成している気がするんだが。
0238デフォルトの名無しさんNGNG
>>236
ワラタ
意地悪だなあw
0239デフォルトの名無しさんNGNG
再帰(T_T)
0240デフォルトの名無しさんNGNG
Lisper ですかw
0241デフォルトの名無しさんNGNG
>>234
俺の場合
int NumCheck(char *s)
{
    const char *h = s;
    for(;*s;++s){
        if('0'<=*s && *s <='9'){
            if(*(s-1) == '-') return s - h - 1;
            return s - h;
        }
    }
    return -1;
}

int main(void)
{
    char s[] = "abcd-1234abcde";
    int t = NumCheck(s);
    if(t<0) return 0;
    printf("%d",atoi(s+t));
    return 0;
}
0242デフォルトの名無しさんNGNG
>>241
> if('0'<=*s && *s <='9'){

if(isdigit(*s)){でいいと思います。
0243デフォルトの名無しさんNGNG
>>241
> if(*(s-1) == '-') return s - h - 1;

ここおかしい。
0244デフォルトの名無しさんNGNG
教えてください
strstr は検索範囲が文字列ということで先頭から 0までですが
単純に char*型のメモリから検索したいです。
for (i=0;i<100-2;i++) if (buf[i]=='a'&&buf[i+1]=='b')
上記を関数一発で行いたいですがあります?
0245デフォルトの名無しさんNGNG
>>244
ない。
ただしmemcmpというのがあるからこれを使えば比較的楽に書けるんじゃないかな。
0246デフォルトの名無しさんNGNG
>>245
やはり無いですか
memcmpを一文字づつずらすしか ないですね
ありがとうございました。
0247デフォルトの名無しさんNGNG
>>246
それだと効率悪いから、せめてmemchr()で先頭を見つけてからにしよう。
0248デフォルトの名無しさんNGNG
unsigned int sjis2euc(unsigned int sjis)
{
unsigned int hib, lob;

hib = (sjis >> 8) & 0xff;
lob = sjis & 0xff;
hib -= (hib <= 0x9f) ? 0x71 : 0xb1;
hib = (hib << 1) + 1;
if (lob >= 0x9e) {
lob -= 0x7e;
hib++;
}
else if (lob > 0x7f) lob -= 0x20;
else lob -= 0x1f;

hib |= 0x80;
lob |= 0x80;

return (hib << 8) | lob;
}
この関数にcharの配列を渡したいんですけど
可能ですか?
そしてどのようにすれば実現できるのでしょうか?

char hoge[80]にはハンカクカナが入っています。

厨な質問でつが宜しくご教授お願い致します。
0249デフォルトの名無しさんNGNG
C言語人気サイトランキング。
ここで学びましょう。

http://ranking.yi-web.com/yuugi/ranklink.cgi?id=glayid
0250デフォルトの名無しさんNGNG
>>248
無理だろう。for文使え。
0251デフォルトの名無しさんNGNG
>>248
ポインターを勉強してください。
0252デフォルトの名無しさんNGNG
>>248
そもそも、その関数は半角カナに対応してない
0253デフォルトの名無しさんNGNG
C言語で、外部プログラムを呼び出すのってどうするんですか?
分かりやすく書いてあるサイトとかってありますか?
0254デフォルトの名無しさんNGNG
system
0255デフォルトの名無しさんNGNG
systemを知ったとき、もうなんでもできる気がした。
0256_NGNG
http://homepage.mac.com/hiroyuki44/hankaku10.html
0257名無し@沢村NGNG
文字列のことをどうして椅子(char)というのですか?
0258デフォルトの名無しさんNGNG
>>257
chair
0259デフォルトの名無しさんNGNG
>>253
とりあえず標準では system 。
他に凝った事したければそれぞれの環境のスレに行くがよろし。
0260デフォルトの名無しさんNGNG
popenが標準だったら良かったのに
0261デフォルトの名無しさんNGNG
C言語でファイルを削除する方法を教えてください。
作成はfopenでできるようですが。
0262デフォルトの名無しさんNGNG
あるソースで、
#include <WinLib.h>
とあったんですが、これって何ですか?
0263デフォルトの名無しさんNGNG
>>262
コンパイルに先立ってWinLib.hの中身をそこに展開する
0264デフォルトの名無しさんNGNG
WinLib.hってなんですか?
0265デフォルトの名無しさんNGNG
>>261
remove

>>264
そういうファイルがあるんだろう、としか。
0266デフォルトの名無しさんNGNG
>>264
おいらが作ったエロエロライブラリのヘッダー
0267デフォルトの名無しさんNGNG
>>264
ボーランドのヘッダー
0268デフォルトの名無しさんNGNG
(σ・∀・)σゲッツ!!ならココ!
http://www3.kcn.ne.jp/~barozza/
言語を英語にすると見れるんだ
0269デフォルトの名無しさんNGNG
>>267
プ
0270デフォルトの名無しさんNGNG
ttp://www5c.biglobe.ne.jp/~ecb/c/06_01.html

> printf("変数nは%x番地に確保されました\n", &n);
0271デフォルトの名無しさんNGNG
printf("変数nは%p番地に確保されました\n", &n);
0272デフォルトの名無しさんNGNG
http://www5c.biglobe.ne.jp/~ecb/c/06_01.html
0273デフォルトの名無しさんNGNG
指定されたデータを削除する配列のプログラムはどうしたらいいんですか?
削除して空いた場所に、最後のデータを移動するのと、
後のデータを1個ずつずらすものをつくりたいです。配列は順序よく並んでいません。
デリートを使ってお願いします
0274デフォルトの名無しさんNGNG
C++?
0275273NGNG
あ・・・スレ違いですね・・・
逝ってきます
0276デフォルトの名無しさんNGNG
>>273
後者はmemmoveで。
つーかそういうものは線形リストを使うのが一般的だと思うけど。
0277デフォルトの名無しさんNGNG
>>274
なんで?
0278デフォルトの名無しさんNGNG
>>277
delete
のことじゃないか?
0279デフォルトの名無しさんNGNG
>>278
ああなるほど・・・・
じゃあ配列じゃなくてリストかなにかじゃん(配列なら丸ごと消えてしまう)・・・
0280デフォルトの名無しさんNGNG
CでAPIを使いたいんですけど、
解説サイトお願します。
0281デフォルトの名無しさんNGNG
>>280
関数に適切な引数を与えて呼ぶだけでしょ?
0282デフォルトの名無しさんNGNG
>>280
猫、MSDN
0283デフォルトの名無しさんNGNG
WIN32APIをAPIと略すのはやめて
0284280NGNG
まずは簡単に文字色やカーソルの位置でも
変えてみようと思うのですがね
0285デフォルトの名無しさんNGNG
>>284
DBのクライアント?
0286デフォルトの名無しさんNGNG
>>282
猫といって誰が何のことだと分かると思いますか?
玄人ぶるのはやめなさい。
0287デフォルトの名無しさんNGNG
そんなに玄人っぽい?
0288デフォルトの名無しさんNGNG
>>282
APIといって誰が何のAPIのことだか分かると思いますか?
玄人ぶるのはやめなさい。
0289ごばくったNGNG
>>280
APIといって誰が何のAPIのことだか分かると思いますか?
玄人ぶるのはやめなさい。
0290280NGNG
猫ってのは
「猫でもわかる・・・」ですよね
0291デフォルトの名無しさんNGNG
多分本人には分かるんじゃない?
0292デフォルトの名無しさんNGNG
分かってるジャン(プ
0293デフォルトの名無しさんNGNG
>>290
猫
http://www.gochomuseum.net/neko/
0294デフォルトの名無しさんNGNG
main関数を呼び出すとき、
int main()や
main()、
void main(void)とか何なんですか?
違いはあるんですか?戻り値との関係はあるのですか?
0295デフォルトの名無しさんNGNG
違いはある。戻り値と関係ある。
0296デフォルトの名無しさんNGNG
猫でも〜よりこっちのサイトの説明のほうがわかりやすいと俺は思う
http://black.sakura.ne.jp/~third/system/winapi/win.html
0297デフォルトの名無しさんNGNG
hensuu1 = abc
hensuu2 = xyz
などが書いてあるファイルを読み込んで
char hoge []= "abc"
などとする場合には、fgets で1文字づつ読んで
hensuu1 が見つかったら = の後全部を temp に入れて、
hoge = temp;
にするしかないのでしょうか?
1文字ずつ読み込ませたり、マッチングの部分を書くのは
めんどくさいのですが・・・。
perl みたいにサクッとマッチングが取れて、
必要部分を変数に代入できる方法を教えていただけると助かります。
お願いします。
0298デフォルトの名無しさんNGNG
fgets で一文字づつ読むのは激しく無駄な行為です。
0299デフォルトの名無しさんNGNG
>>297
fgetsで一行読み込んで、
strchrまたはstrrchrで'='の位置を取得して、それ以降をstrcpy。
無駄なブランクは適宜除いてください。
0300名無し@沢村NGNG
>>290
「猫でもわかる」は本人の頭には「ザコでもわかる」という発想があったはずだ。
だがザコというと問題があるので、「ザコ」に似た言葉「ネコ」が採用され、結局「猫でもわかる」になったものと、おれは想像している。
0301デフォルトの名無しさんNGNG
>>300
ただ単に猫飼ってるだけだろ
0302デフォルトの名無しさんNGNG
>>301
相手すんなって
0303(つД`)NGNG
教えてください。
画像上の点Piは二次元の点で、この場合点Piで2ペアの点の中点を結んだものが
対称線となります。この線の方向ベクトルを求めるプログラムです。
どう書けばいいのか、さっぱりです。お願いします。
0304デフォルトの名無しさんNGNG
void (*signal)(int) という宣言では、
signal は int を引数にもつ、戻り値のない関数へのポインタですよね?

しかし
void (*signal(int signum, void (*handler)(int)))(int);
という宣言の意味が分かりません。
(int signum, void (*handler)(int)) はどういう意味なんでしょうか。
0305デフォルトの名無しさんNGNG
関数の前にcrtとつくものはどういう機能があるのでしょうか?
0306297NGNG
>>299
strchr って、1文字のマッチングでその先頭のポインタを返すのですよね。
1文字だと、他にも = が何度も出てくるファイルから読み込む場合、
使えなくないですか?
文字列(できれば正規表現)とのマッチングのできるものってないのですか?
0307デフォルトの名無しさんNGNG
☆頑張ってまーす!!☆見て見て!!☆
http://endou.kir.jp/betu/linkvp2/linkvp.html
0308デフォルトの名無しさんNGNG
>>304
戻り値の型も第二引数の型もvoid (*)(int)
戻り値の型が関数ポインタだとそこまで醜くなる。
0309デフォルトの名無しさんNGNG
>>300-301
わらた
0310デフォルトの名無しさんNGNG
>>303
>この場合点Piで2ペアの点の中点を結んだものが対称線となります。
ここ何度読んでもわかんない。「2ペアの点」ってことは、後4つ点が出てくるの?それで対称「線」って?

>>304
signalの引数じゃないの?
0311デフォルトの名無しさんNGNG
typedef void (*sighandler_t)(int);
sighandler_t signal(int,sighandler_t);

うーん・・・すっきり!
0312デフォルトの名無しさんNGNG
関数ポインタはtypedefが基本

じゃないと俺が読めない
0313デフォルトの名無しさんNGNG
>>306
バッファ内容壊していいんなら strtok でも。
そうでないなら、何度も strchr を使って、
地道に strncpy で文字列を切り出すべし。
0314デフォルトの名無しさんNGNG
sscanf
0315デフォルトの名無しさんNGNG
>310
「あるペアの中点と、別のあるペアの中点を結ぶとできる
対称線の方向ベクトル」がほしいんじゃないの?
0316(つД`)NGNG
>310
315さんの言うとおりです〜
説明下手ですいません_| ̄|○
0317デフォルトの名無しさんNGNG
>>303
それってプログラムが分らないのではなく、数学のベクトルが分らないんでしょ?
typedef struct tag_vector {
float x, y;
}vector;

vector A, B, AB;
float unit;

A.x = 1.0f; A.y = 1.0f;
B.x = 4.0f; B.y = 2.0f;

//AベクトルとBベクトルを位置ベクトルとし、ABベクトルを求める
//B - A = AB
AB.x = B.x - A.x; AB.y = B.y - A.y;

//これを方向ベクトルとするには単位化が必要
unit = (AB.x * AB.x) + (AB.y * AB.y);
AB.x = AB.x / unit; AB.y = AB.y / unit;

こんな感じ。でも、君の場合数学調べた方が速いと思うよ。
0318(つД`)NGNG
う・・・たしかにその通りかも・・・。
ありがとございましたー
0319304NGNG
>>308, >>310
ようやく分かりました。
最後の (int) は引数ではなく関数 signal の戻り値
void (*)(int) を表しているんですね。。。
ありがとうございました。
0320デフォルトの名無しさんNGNG
じゃんけんをするプログラムを組んでみました。コンパイルもできました。
以下のプログラムを組んでみたのですが、問題がときどき発生してしまいます。
「ときどき」発生するのがなぜなのか、また、どこが悪いのかご指摘お願いします。
#問題1、「〜手を選んでください…」のあとに「1,2,3」いずれかをタイプ、Enterを押すと、「ときどき」じゃんけんが実行されないで再度「〜手を選んで…」と出力される。
#問題2、間に敗けを挟んでいるのに、「最多連続勝ち回数」と「勝った回数」が一致していることが「ときどき」ある。

長くなってもうしわけありませんが、よろしくお願いします。

#include<stdio.h>

main()
{
int first,cpu,oni,kachi,combo,max;

kachi=0;
combo=0;
max=0;
oni=100;
srand(time(0));
//オープニング文章
printf("\n\nあなたは桃太郎です。鬼ヶ島にいる鬼は,じゃんけん
に自信を持っているそうです。鬼達は,じゃんけんに負けるとショック
死してしまうことが知られています。鬼の数は100匹です。何匹まで減
らせるか頑張ってください。\n\n");
0321320続きですNGNG
do{
printf("あなたの出す手を選んでください。:[グー:1][チョキ:2][パー:3]");
scanf("%d",&first);

if(first < 1 || 3 < first) /* これが終了条件 */
{printf("\n\n桃太郎は疲れたので帰ることにしました。
以下が今回の成績です。\n\n");
printf("あなたは%d回勝ちました。\n",kachi);
printf("残りの鬼は%d匹です。\n",oni);
printf("最多連続勝ち回数は%d回です。\n",max);
exit(0);
}
else
0322320続きですNGNG
cpu = rand()%3;

if(first ==1 && cpu ==1)
printf("あいこ!鬼は驚いています。\n");
else if(first ==1 && cpu ==2)
{printf("勝ち!鬼は息耐えました。\n");
oni=oni-1; //鬼が一匹減る。
kachi=kachi+1; //勝ち回数+1
combo=combo+1; //連続勝ち回数+1
if(max < combo)max=combo; //最多勝ち回数の判定
}
else if(first ==1 && cpu ==3)
{printf("負け!鬼は喜んでいます。\n");
combo=0; //連続勝ち回数消去
}
else if(first ==2 && cpu ==1)

〜〜〜中略〜〜〜

}while(1);
exit(0);
}
0323デフォルトの名無しさんNGNG
do{}while(1);なんて書き方するくらいならwhile(1){}とかけば??
0324_NGNG
http://homepage.mac.com/hiroyuki44/
0325デフォルトの名無しさんNGNG
> cpu = rand()%3;
cpu は 0, 1, 2
0326デフォルトの名無しさんNGNG
>>320
もしや、3×3=9個のif 〜 else if 〜 を並べているのか?
どうせどこかで combo = 0 を忘れているとか、
条件式が間違ってるとか、そういう事だろう。
つか、そういう汚い作りをするのが原因とも言える。
if (first == cpu) {
  // あいこ
}
else if (first == cpu - 1 ||
  first == 3 && cpu == 1) {
  // 勝ち
}
else {
  // 負け
}
0327デフォルトの名無しさんNGNG
勝敗判定は関数にしたいな
0328デフォルトの名無しさんNGNG
>>326
テーブル作ってもいいかもね。
0329デフォルトの名無しさんNGNG
>>323は若造かな?
0330デフォルトの名無しさんNGNG
そもそも while(1)を書くな。
for(;;)にすべき。
0331デフォルトの名無しさんNGNG
>>330
なぜ?
0332デフォルトの名無しさんNGNG
>>329
do{}while(1);とwhile(1){}はどう違うの?
0333デフォルトの名無しさんNGNG
>>332
アホですか?
do{}while(1);doのスコープが絶対処理される。
while(1){}whileのスコープが絶対処理される。
while()は条件によっては処理されないことがあるが常に真なのでdo-whileと
おなじ・・・
0334デフォルトの名無しさんNGNG
>>332
一回は実行するという do-while の仕様により
一回は実行するというプログラムの性質を強調できる、と。
そういうコードでは拡張するうちに条件を加えたくなった場合にも
多分 while じゃなくて do-while にすることになると思う。
0335(´・ω・`)NGNG
ご指導お願いしたい・・・このアフォな俺に・・・_| ̄|○
3次元上の点でp1,p2,p3,p4があるとする。p1,p2は水平で、p3,p4も水平であり、
この2線は平行している。p1,p2を結んだ中点とp3,p4を結んだ中点を結んだものが
対称面となる。
このとき、この法線ベクトルを求めるプログラムを書きなさい。
お願いします〜(つД`)
0336_| ̄|○ NGNG
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
_| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○ _| ̄|○
0337デフォルトの名無しさんNGNG
>>335
だから、それは数学だって。
0338デフォルトの名無しさんNGNG
>>335
プログラミングの為の数学と算数
http://pc2.2ch.net/test/read.cgi/tech/997150743/l50
0339デフォルトの名無しさんNGNG
>>335
もしかして >>303 と同じ問題じゃない?
回答は >>317 にあるよ。
0340デフォルトの名無しさんNGNG
>>333
ま、先にwhile(1)とか書いて「無限ループっすよ」と読む側に
注意を促しといてくれるほうが嬉しいな。do〜whileだと、
ループの終了条件ははるか下のほうにあるから面倒だな。
0341デフォルトの名無しさんNGNG
>>331
高速に打てるぞ
0342デフォルトの名無しさんNGNG
>>332
ノーbraの方がカワイイじゃん
0343デフォルトの名無しさんNGNG
while(0120-444-444) { ... }
0344デフォルトの名無しさんNGNG
>>341-343
さて、訳の分からん連中が出てきたところで・・・

age
0345デフォルトの名無しさんNGNG
S・O・G・E さげ〜♪
0346デフォルトの名無しさんNGNG
この程度がわからんとは。
それでもプログラマか。
0347デフォルトの名無しさんNGNG
つーかコーダーがほとんどだろ、こんなとこ
0348デフォルトの名無しさんNGNG
コーダーとプログラマとSEの違いをおしえてください
0349デフォルトの名無しさんNGNG
スコットランドの伯爵サマらしいが。。。
0350デフォルトの名無しさんNGNG
精神ハクジャクかおまいは
0351デフォルトの名無しさんNGNG
>>331
while(1)では、評価式が常に真ですという警告を出すコンパイラがある



らしい。
0352デフォルトの名無しさんNGNG
漏れの中では
SE=Sound Effect
ですが、何か?
0353320-322NGNG
返事が遅くなってすみませんでした。

>>325
ΣΣ(゚д゚lll)ズガーン!!最初は、自分の出す手を「0,1,2」にしたのですが、「0」だけ離れているので「1,2,3」に変えたんです。その時に、cpuの数も変えてしまったようです。おそらく、問題1はこれで解決されると思います。ありがとうございます。

>>326
学校でC言語を習い始めて2日なので、色々考えてこうなったのです。326さんのやり方のほうがスマートですね。もっともっと勉強したいとおもいます。
「combo=0」は、全ての負け条件の時にいれてあります。が、美しくないので、条件部分を書き直します。ありがとうございました。
0354デフォルトの名無しさんNGNG
------rand.h---------
#define IA 16807
#define IM 2147483647
#define AM 1/IM
#define IQ 127773
#define IR 2836
float rand(long *idum);
------rand.h---------

------rand.cpp-------
#include <rand.h>
float rand(long *idum){
long k;
float ans;
k=(*idum)/IQ;
idum=IA*(*idum-k*IQ)-IR*k;
if(*idum<0) *idum+=IM;
ans=AM*(*idum);
return ans;
}
------rand.cpp-------
borlandでrand.cppをコンパイルしたんですけど、どうもうまくいきません
'long'が'long *'にできないというエラーが出ます。
学校のUNIXではうまくいけるのに、理由がわかりません
0355デフォルトの名無しさんNGNG
何行目?
0356デフォルトの名無しさんNGNG
*idum=IA*(*idum-k*IQ)-IR*k;

こうじゃないの?
0357デフォルトの名無しさんNGNG
> idum=IA*(*idum-k*IQ)-IR*k;
これがまちがい。
学校のうにくすは、ポインタへ整数値を警告なしで
代入できるんだろう。
0358デフォルトの名無しさんNGNG
つーかなんでidumはポインタなんだ?
値渡しでいいじゃん。
0359デフォルトの名無しさんNGNG
変更させたいんだろ。
0360デフォルトの名無しさんNGNG
なんでfloatを使うんだろうね
0361358NGNG
ああ、メモリ上を次々に移動しながら値を拾っていくのか。
0362デフォルトの名無しさんNGNG
>>361
ハァ?
0363デフォルトの名無しさんNGNG
361 vs 362
宿命の対決
0364354NGNG
>>355-359
仰せの通りidumに*忘れたのが間違いでした
今度はできました
0365358=361NGNG
ああ、いや引数のidumのポインタを関数内で変更して、
変更後のポインタが指している値を次の乱数シードにす
るのかと思ったんだけど違ったみたいね・
0366デフォルトの名無しさんNGNG
>>365
それをどうやったら>>361みたいな書き方が出来るんだ?
素直に間違ってましたって書けよ。
036735NGNG
アタシのために喧嘩するのはやめて・・・
0368デフォルトの名無しさんNGNG
>>335
先ずp1とp2を結ぶベクトルを求める。
次にp1とp3を結ぶベクトルを求める。
ココでp1p2//p3p4なので、p1p2ベクトルとp1p3ベクトルは同一平面上である。
よってp1p2ベクトルとp1p3ベクトルの外積を求めればよい。

normal.x = p1p2.y * p1p3.z - p1p2.z * p1p3.y;
normal.y = p1p2.z * p1p3.x - p1p2.x * p1p3.z;
normal.z = p1p2.x * p1p3.y - p1p2.y * p1p3.x;

この求まったベクトルを単位化すれば、法線となる。
ただし、この外積計算は左手系の場合。
何度も言わせないでね、数学をやるべき。
全然プログラム処理は大した事ない、数的理解のみでしょ。
0369デフォルトの名無しさんNGNG
>>366
そこまで言ったら理解して欲しいな。
シードを指すポインタを次々に変更して値をとるってのを、メモリ上を移動していくと表現したのだが。
0370デフォルトの名無しさんNGNG
fp=fopen("/etc/passwd","a");とやっているんですが、必ず失敗します(;_;)
なんで?(;_;)
0371デフォルトの名無しさんNGNG
>>369
ハァ?
0372デフォルトの名無しさんNGNG
>>371
どこがおかしいのか指摘もできないんだね。
0373デフォルトの名無しさんNGNG
>>369
ポインタは変更されてませんが、何か?
0374デフォルトの名無しさんNGNG
>>370
あなたの環境で、そのストリームを開けないから
0375デフォルトの名無しさんNGNG
>370
多分君がrootぢゃないから。
CというよりUNIXの話だと思われ。
0376デフォルトの名無しさんNGNG
>>373
アラ本当だ。藁
0377デフォルトの名無しさんNGNG
>>374-375
そういうことですか(;_;)
いたづらできないようになっているんですね(;_;)
0378デフォルトの名無しさんNGNG
すまん、私の勘違いでした。

これで満足?
0379デフォルトの名無しさんNGNG
2次元配列の要素を動的に追加していくにはどうしたらよいでしょうか?
最終的にはhoge[n][10]って感じの配列になるんですが、nの数がわからない。
配列に格納すべきデータが見付かるたびに、要素を追加していくって感じ
の処理なのですが。
0380デフォルトの名無しさんNGNG
>>379
mallocタン(^o^=)
0381デフォルトの名無しさんNGNG
*hoge[10] で宣言してmalloc
0382380NGNG
追加してゆくのか。じゃあreallocも混ぜる(ただし一定数ごとに)かリストで。
0383デフォルトの名無しさんNGNG
>>381
今さら、そんなネタ出さなくても…
0384デフォルトの名無しさんNGNG
**hoge 宣言?
0385デフォルトの名無しさんNGNG
(*hoge)[10];
が正解
0386354NGNG
--------random1.cpp--------
#include <stdio.h>
#include <rand.h>
#define seed 20030416
#define r 1000
int main(){
int i;
long s;
float x;
FILE *a;
a=fopen("pre0.txt","w");
s=seed;
for(i=0;i<r;i++){
x=ran0(&s);
fprintf(a,"%d, %f\n",i,x);
}
fclose(a);
}
--------random1.cpp--------
これと修正したrand.cppをそれぞれコンパイルしてリンク、実行したんですけど
実行結果で0から1までの乱数群が出て来ずに
... 1, 0.000000\n2, 0.000000\n .... \n 999 0.000000 ...(\nで改行)と出てきました
... 1, 0.254542\n2, 0.647889\n .... \n 999 0.913525 ...のように出てくるにはどうしたらいいでしょうか?
0387デフォルトの名無しさんNGNG
1/2147483647ってさ答えは0だよね
0388デフォルトの名無しさんNGNG
しかしなんでまたfloatを使うのかね。
0389デフォルトの名無しさんNGNG
ran0 って何だらう?
0390387NGNG
>>386
ran0の戻り値を確認してみれば分かると思うよ。多分常に0.0が返ってくる思う。

ans=AM*(*idum);を展開してans=1/2147483647*(*idum);。1/21...は0だから*idumとかけても0。
それをansに入れて返すんだから常に0
#define AM 1/IMを#define AM 1.0F/IMにすれば解決するはず。他にも問題ありそうだけど。
0391デフォルトの名無しさんNGNG
GUNDAM の SEED ?
0392デフォルトの名無しさんNGNG
>391
FF8だろ?
0393デフォルトの名無しさんNGNG
'aaa'とかを#defineで100とかに置き換えるにはどうしたらいいでしょうか?
最初と最後の『 ' 』も含めて'aaa'です
0394デフォルトの名無しさんNGNG
>>393
できん
0395デフォルトの名無しさんNGNG
printfなんか30分もあれば実装できるだろ。
0396デフォルトの名無しさんNGNG
>>393
unix系のコマンドラインが使えるなら、
sed/awkなどで書き換えてからコンパイルするようにmakefileを書けばできるけど。

で、なんでそんな意味不明なことしたいの?
0397デフォルトの名無しさんNGNG
>>395
口だけじゃなく、やって見せろ!!
0398デフォルトの名無しさんNGNG
int printf(const char* format, ...)
{
 int ret;
 va_list args;
 va_start(args, format);
 ret = vprintf(format, args);
 va_end(args);
 return ret;
}
0399デフォルトの名無しさんNGNG
>>398
やると思った。
0400デフォルトの名無しさんNGNG
mallocとfreeみたいにfopenしてないFILEポインタをfcloseするとまずいですか?
0401デフォルトの名無しさんNGNG
>>400
当然ながらまずい。
ついでにいうと、freeと違ってNULLを渡すのもまずい。
0402デフォルトの名無しさんNGNG
実数Aに任意の正の整数を代入し、その1の桁を四捨五入して表示するプログラムを作ってもらえないでしょうか
0403デフォルトの名無しさんNGNG
>>402
ばーか
0404デフォルトの名無しさんNGNG
>>402
>ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
0405デフォルトの名無しさんNGNG
すいません
0406400NGNG
FILEポインタにNULLとかいれて

FILE *p;
p = NULL;

if(p=NULL)fclose(p);

とかやっても大丈夫ですか?
0407デフォルトの名無しさんNGNG
>>406
そのコードならOK(ワラ
0408400NGNG

FILE *p;
p = NULL;

if(p != NULL)fclose(p);

でした
0409デフォルトの名無しさんNGNG
>>404
 どこにあるの??
0410デフォルトの名無しさんNGNG
>>408
「p = NULL;」と「if(p != NULL)fclose(p);」の間に何もないのならOKだけど、
何かあるなら、そのなにかによってはまずい。
0411400NGNG
ip = fopen(i_name,"r");
op = fopen(o_name,"w");

fgetcとか
fputcとか

opとipは別々のファイルポインタで、ファイルポインタに触れるのはこれくらいです
やっぱ、まずいですか?
0412デフォルトの名無しさんNGNG
>>411
fopenの戻り値ならOK
0413デフォルトの名無しさんNGNG
>>409
そんくらい自分で探せ。
0414デフォルトの名無しさんNGNG
>>413
ないでしょ。
0415400NGNG
ありがとうございました
0416デフォルトの名無しさんNGNG
>>414
自分が無能で見つけられないものは無いってか?w
0417デフォルトの名無しさんNGNG
これからCをやろうと思っている、全くの素人なんですが
オススメの入門書ありますか?
0418デフォルトの名無しさんNGNG
>>417
http://www.amazon.co.jp/exec/obidos/ASIN/487734537X/250-1622258-0824212
0419デフォルトの名無しさんNGNG
>>417
参考図書スレへ Go!
0420デフォルトの名無しさんNGNG
char unko[5];

unko[0] = 'a';
unko[1] = 'b';
unko[2] = 'c';
for(int i=0;i<10;i++){
 unko[3]=i;←
}
みたいなことをやりたいんですけど
どうしたらいいかおわかりの方教えていただけないでしょうか
bcc使ってます
0421デフォルトの名無しさんNGNG
超能力者募集中。
0422デフォルトの名無しさんNGNG
>>420
いまいちよくわからないんだけど。それでもコンパイルできるし(iの宣言場所がCとしてはまずいけど)動くし。
何をしたいの?
0423_NGNG
http://homepage.mac.com/hiroyuki44/hankaku06.html
0424デフォルトの名無しさんNGNG
>>422
型が違うかなっと思ったんですけど
通るんですか?
0425エスパーNGNG
>>420
俺にも読み取れないとは・・・
0426デフォルトの名無しさんNGNG
>>424
charもintも整数だから互換性があるよ。
ただしintの方が大きい場合(大抵は大きい)、データが失われる可能性があるけど。
0427デフォルトの名無しさんNGNG
>>426
コンパイル通るんですけど
なんか文字化けします
0428デフォルトの名無しさんNGNG
>>427
制御文字を表示したからでは。
0429デフォルトの名無しさんNGNG
>>427
何がしたいの?って聞かれてるのにちゃんと答えないからだよ
0430デフォルトの名無しさんNGNG
>>427
つまり、正常に動作しているわけだが。
0431デフォルトの名無しさんNGNG
http://www.mars.dti.ne.jp/~torao/program/appendix/ascii.html

最終的にunko[3]に入るのは9。ASCIIコードでHT。・・・・HTってなに?
0432デフォルトの名無しさんNGNG
>>428
文字コードのことですか?
>>429
数字を文字にしたいのです
つまりint型の1を半角数字の1にしたいのです
0433デフォルトの名無しさんNGNG
itoa
0434デフォルトの名無しさんNGNG
>>431
\tかな?
0435デフォルトの名無しさんNGNG
>>432
そういうときはASCIIなら'0'と足す。i+'0';
確か数字が連続していない文字コードはなかったと思うから、他の環境でもOKだと思うけど。心配なら面倒だけどatoi
0436デフォルトの名無しさんNGNG
>>431
解決しました
ありがとうございます
0437デフォルトの名無しさんNGNG
一桁までなら unko[3] = '0'+i;
0438デフォルトの名無しさんNGNG
>>434
ああそうか。Horizon Tabか。サンクス。
0439デフォルトの名無しさんNGNG
charをすべて使うと文字化けしてしまうのですが
どうすればいいですか?
0440デフォルトの名無しさんNGNG
知るかボケ
0441デフォルトの名無しさんNGNG
エスパー召喚
0442デフォルトの名無しさんNGNG
×charをすべて使うと
○charを使うとすべてが

です・・・
コンパイラはVC6を使ってます
0443デフォルトの名無しさんNGNG
>>437

"0123456789"[kazu%10];

一桁ならこちらの方がコードに依存しない。
0444デフォルトの名無しさんNGNG
>>442
知るかボケ
0445エスパー候補NGNG
for(char c = 0;c <= 0xff;c++){
printf("%c",c);
}
とか
0446デフォルトの名無しさんNGNG
いや
char* p ="表示";
char str[3];

strncpy(str,p,3);

printf("%s",str);

か?
0447デフォルトの名無しさんNGNG
>>442
なら、charを使うな
0448デフォルトの名無しさんNGNG
正確な乱数を発生させるには、どの関数が有効ですか?
記述のしかたもお願します。
房質問すみません。
0449デフォルトの名無しさんNGNG
>>448
釣り?
0450デフォルトの名無しさんNGNG
>>448
正確な乱数の定義は?
0451デフォルトの名無しさんNGNG
周期が超長ければいいんだろ
0452デフォルトの名無しさんNGNG
MTを多段で使えば?
正確な乱数(謎)とは言いがたいが
0453デフォルトの名無しさんNGNG
420ですが皆様のおかげで何とかできました
ttp://www.geocities.co.jp/Milkyway-Sirius/1907/index.html
どうもありがとうございました
でもなんか見た目が悪くてなんか嫌です
0454デフォルトの名無しさんNGNG
.txtでうpしる。
0455デフォルトの名無しさんNGNG
テキストにしました
ttp://www.geocities.co.jp/Milkyway-Sirius/1907/unko.txt
0456デフォルトの名無しさんNGNG
>>455
unkoの末尾に'\0'がつかないままfputsしている気がする・・・
0457442NGNG
>>443-451
てめーらシカトしてんじゃねぇ!!!!!
Cなら俺に聞けって言うから
あんまりC自体には関係ないが・・・
聞いてんじゃねぇかヴぉけ!!

だから教えてください
0458デフォルトの名無しさんNGNG
>>456
よく分かんないですけど
メモリ確保したときのデフォルトって0じゃないんですか?
とりあえず動きました
それよりできれば綺麗な書き方を教えてほしいです
0459デフォルトの名無しさんNGNG
>>457
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
for(c=0;c<=127U;c++)
if(isprint(c))
printf("%c ",c);
else
printf("(^_^;) ");
putchar('\n');
return 0;
}

0460デフォルトの名無しさんNGNG
>>458
自動変数だと明示的に初期化しないと何が入るかわからない。
char unko[8]={0};とすれば全て0に初期化される。
0461デフォルトの名無しさんNGNG
>>460
static char unko[8];
にすればいいってことですか?
0462デフォルトの名無しさんNGNG
>>460

いつから、Cの仕様が、かわったんだ?
0463デフォルトの名無しさんNGNG
>>462
1999年
0464デフォルトの名無しさんNGNG
>>463
そうか、しらんかった。ありがとう
0465デフォルトの名無しさんNGNG
>>464
なぁ、何か間違ったこと言った?指摘してくれると嬉しいんだけど。
0466443NGNG
>>457
日本語で書き直して下さい。
0467デフォルトの名無しさんNGNG
>>465
安心汁。合ってる。
配列の一部分を初期化した場合、
明示的に初期化しなかった部分は0で初期化される。
0468デフォルトの名無しさんNGNG
>>439
俺には一体どこでつまづいてんのかよー分からん。
もしかしてだけど、最初UNIX系で作ったプログラムじゃない?
0469デフォルトの名無しさんNGNG
>>457
>>466さんの言う通りにしてもらうと一番いいのだが、書いて表現するのが難しいというなら
せめてどういう入力をしてどういう出力がされたのか書いてくれ。
0470デフォルトの名無しさんNGNG
関数の定義を使う前に書いておけば問題ないと思ってたんですが、
そうすると、コンパイラが「プロトタイプのない関数を使ってる」って
警告を出します。なぜなんでしょう。
0471デフォルトの名無しさんNGNG
>>470
プロトタイプのない関数を使っているから
0472デフォルトの名無しさんNGNG
プロトタイプ宣言をしない人は給料10%カット
0473デフォルトの名無しさんNGNG
どうしてプロトタイプ宣言が必要なんでしょうか。
おれは学生です。
0474デフォルトの名無しさんNGNG
>>473
http://www.cmagazine.jp/src/kinjite/c/oldstyle.html

結構つっこみどころのおおい記事ではあるが
0475デフォルトの名無しさんNGNG
>>473
チミの質問は
「どうして = じゃなくて == なんでしょうか」
と同じ類の質問だな。
仕様なんだからどうしてとか言われても答えようがないわな。
0476デフォルトの名無しさんNGNG
仕様になった理由を聞きたいんだろ・・・・・・
0477デフォルトの名無しさんNGNG
>>475
仕様上はプロトタイプは必要ないぞ。

あと、どうしてその仕様がその言語に追加されたのかを知っていると、
その仕様の活用の度合いが変わってくる。
なぜ、と問うことは決して無駄なことじゃない。
0478デフォルトの名無しさんNGNG
>>475
プロトタイプの存在はその例ほど単純なものじゃない。

・コンパイラは前方参照しない
・型宣言のない関数はintを返す
・関数に渡すパラメータは一定の法則で型変換される

といったもともとのCの仕様があって、型の不整合によるバグが相次ぎ、
しかもそれを検出する手段がほとんどなかった(lintなんてのはあった)。
その経験上の反省からC++にプロトタイプという関数の型を宣言する
機能が生まれ、それがCにも輸入されたという経緯がある。

プロトタイプの存在意義が初心者にわかりづらい側面があるのは
こういった複数の要因から成り立っているからだと思うな。
0479デフォルトの名無しさんNGNG
前方参照って言葉がいつもよく分かんない。
前方って先の方ってこと?
それとも以前の方のこと?
0480デフォルトの名無しさんNGNG
>>479
ファイルの終端方向が前方。
0481デフォルトの名無しさんNGNG
>>480
了解。
ホンマ分かりにくい言葉だ。
というか、日本語が分かりにくいのか。
0482デフォルトの名無しさんNGNG
>>481
うん。わかりづらいんだよね。おれもはじめてみたときは面食らったもの。
一応テクニカルタームなのでそのまま使ったけど、ひどい訳語だと思う。
0483デフォルトの名無しさんNGNG
>>482
ファイルを基準にするのと
ファイルポインタの進行方向を基準にするので
どっち方向も前にも後ろにもなりうるんだよね。
どっちかというとファイルを基準にしたほうが分かりやすいと思うんだけど、
一体誰がこんな訳語を考えたのか。

俺なら未来参照と訳すかなぁ...。
0484デフォルトの名無しさんNGNG
俺は先入れ先だしが納得いかない。

先(に)入れ(たものを)先(に)だし

と補完しないと意味不明になる

0485デフォルトの名無しさんNGNG
double型の値を小数点以下四捨五入してint型にするのはどうやったらいいんですか?
(値を格納している変数は変えずに)
本で調べてものってなかったです。くだらない質問ですが教えてください。
0486デフォルトの名無しさんNGNG
>>485
整数部がそれほど大きくなければ、(int)((d*10+5)/10) /* dはdouble型 */
0487486NGNG
まてよ・・・四捨五入用の関数があったかも
0488486NGNG
http://www.catnet.ne.jp/kouno/c_faq/c14.html#6

・・・・。0.5を足せばいいんじゃないか・・・・なにやってんだろ俺。
0489デフォルトの名無しさんNGNG
forward - 順方向に向かう
backward - 逆方向に向かう

日本語だと前は手前も先のほうにも解釈できてややこしいな
0490デフォルトの名無しさんNGNG
forward pointer【コンピュータ】正方向ポインタ
goo辞書はこう訳しているみたいだ。前方よりはいいかも。
0491485NGNG
>>486ありがとうございます!
0492486NGNG
>>491
まて。
>>488のリンク先の方法でやった方がいい。
(int)(d+0.5)
0493デフォルトの名無しさんNGNG
宿題スレに同じ質問あったな・・
0494485NGNG
>>492
ふう、できました。どうもです。
0495直リンNGNG
http://homepage.mac.com/maki170001/
0496デフォルトの名無しさんNGNG
struct hoge{
int i;;
char a;
}aho[100];

とかのすべてのiに0とかの初期値を入れたいのですがforとかで回して入れるしかないんでしょうか?
0497デフォルトの名無しさんNGNG
>>496
>>460>>467
0498デフォルトの名無しさんNGNG
0以外なら、100個全部書くか、for
0499デフォルトの名無しさんNGNG
泣けますぜ、おまいら

http://pc2.2ch.net/test/read.cgi/hp/1004494535/l50
0500デフォルトの名無しさんNGNG
前方参照
手前参照
0501デフォルトの名無しさんNGNG
int insert(int data , NODE **ptr)
{
NODE *tempptr = *ptr , *newptr ;
if(tempptr == NULL) {
newptr = malloc(sizeof(struct node)) ;
newptr->leftptr = NULL ; newptr->rightptr = NULL ;
newptr->data = data ; *ptr = newptr ; return 1 ;
}
while(tempptr != NULL) {
if(tempptr->data == data)
return 0 ;
else {
if(tempptr->data > data)
tempptr = tempptr->leftptr ;
else
tempptr = tempptr->rightptr ;
}
}
newptr = malloc(sizeof(struct node)) ;
if(newptr == NULL) {
printf("\n out of memory \n") ;
exit(0) ;
}
else {
newptr->data = data ; newptr->leftptr = NULL ;
newptr->rightptr = NULL ; tempptr = newptr ; return 1 ;
}
}
これで挿入した二分探索木を走査すると論理エラーになりますんでよろ。
0502デフォルトの名無しさんNGNG
int insert(int data , NODE **ptr)
{
while(*ptr != NULL) {
if((*ptr)->data == data) return 0 ;
if((*ptr)->data > data)
ptr = &(*ptr)->leftptr ;
else
ptr = &(*ptr)->rightptr ;
}
*ptr = malloc(sizeof(NODE)) ;
if((*ptr) == NULL) {
printf("\n out of memory \n") ;
exit(0) ;
}
(*ptr)->leftptr = NULL ; (*ptr)->rightptr = NULL ;
(*ptr)->data = data ;
return 1 ;
}
0503デフォルトの名無しさんNGNG
>>502
質問なんですが
6行目や8行目の
ptr = &(*ptr)->leftptr ;
の部分を
*ptr = (*ptr)->leftptr ;
とコーディングしてもいいんでしょうか?
0504デフォルトの名無しさんNGNG
>>503
そのココロは…?
ptr=...
*ptr=...
が同じことをするようには見えないけど
0505デフォルトの名無しさんNGNG
>>504
自分には*ptr=... でも
同じようになぞってるように見えるんですが
0506デフォルトの名無しさんNGNG
>>505
じゃあ、それでOK
0507デフォルトの名無しさんNGNG
>>505
ptr = ...  → ptr の値を変更する
*ptr = ... → ptr の参照先の値を変更する

全然違う。

>>506
死
0508デフォルトの名無しさんNGNG
>>507
よく読め。
ptr = &(*ptr)->leftptr ;
の「ptr」はポインタのポインタだろうが
0509松井NGNG
型が合えばいいというものなの?
0510デフォルトの名無しさんNGNG
>>508
だから?
0511デフォルトの名無しさんNGNG
もし引数のptrが二分木のルートだとしたら、間接参照して書き換えるのはまずいと思うんだけど・・・
0512デフォルトの名無しさんNGNG
「XwasyGraphic」を用いて、画像の表示を試みています。
#include<stdio.h>
#include<XeasyGraphic.h>

float bkack[] = {0.0};
float orange[] = {0.8, 0.8, 0.0};
float purple[] = {0.8, 0.0, 0.8};

main()
{
int x,y,r;
id w;

printf("中心のX座標を指定してください。 >");
scanf("%d",&x);
printf("中心のY座標を指定してください。 >");
scanf("%d",&y);
printf("円の半径を指定してください。>");
scanf("%d",&r);

w = GrWindow(100.0, 100.0, 500.0, 500.0);
GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

getchar();

exit(0);
}
このように書いて、コンパイルしようとしたのですが、
「c.21(GrCircleの行らへん):parse error before '%'」とエラーになってしまいます。
どこが間違っているのでしょうか?よろしくおながいします。
0513デフォルトの名無しさんNGNG
>>512
GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

ここの%d。
21行目だと教えてくれているじゃないか・・・・
0514デフォルトの名無しさんNGNG
GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);
0515デフォルトの名無しさんNGNG
http://www.ics.kyoto-su.ac.jp/~oomoto/lecture/program/C/XeasyGraphic.html
0516512NGNG
>>513
>>514
指定した数をscanfで「%d」に代入されて、printfで表示させる方法と同じ方法で書いたものなので、なぜ間違っているのかがわからないのです。どう直せばよいのか、ご指導お願いします。

>>515
実は、京産からアクセスしていたりします。
0517デフォルトの名無しさんNGNG
>>516
scanf は、指定された変換フォーマット(ここでは %d )に従い入力を変換し、
対応するパラメタをポインタとして取り出してオブジェクトを格納するんだよ。
ようするに、値は x, y, zに入っているから、それを直接パラメタにしていいんだよ。
0518デフォルトの名無しさんNGNG
>>516
>指定した数をscanfで「%d」に代入されて、printfで表示させる方法と同じ方法で書いたものなので
printfで表示させる方法ってなんのことやらわからん。

GrCircle(w, %d, %d, %d, 1.0, Gr_RGB, black,x,y,r);

でprintfフォーマット文字列のようなものを使ってるけどそのことか?
文字列でさえないんだけどな。
0519デフォルトの名無しさんNGNG
>>516
scanfの"%d"はあくまでも文字列。
%dと裸のまま書いたらエラー。%は割ったあまりを求めるもので、項が二つ必要だからね。(あとdが未定義だし)
0520519NGNG
あとさ、コンパイルエラーにはならないけど、scanfでfloat型に入れるときは%fだよ。
0521520NGNG
なんでもないです(^_^;)
見間違えた
0522512NGNG
>>517-521
ありがとうございました。無事、コンパイル、実行することができました。
が、値を入力して、画像が表示された直後に画像が消えてしまいました。
ためしに、「getchar();」を2つにしてみたところ、任意のキーを押すまで画像が消えなくなりました。
これはなぜなのでしょうか?
重ね重ねすいません。おながいします。
0523デフォルトの名無しさんNGNG
scanfのとらなかった入力のあまりを、getcharが受けるからだろ。
0524522NGNG
>>523
では、どうすればよいのでしょうか?
本当に初心者なものでして、よくわかりません(泣。
ここに来たのも、色々調べてのことなのです。よろしくおながいします。
0525デフォルトの名無しさんNGNG
>>524
画像がすぐに消えるのも嫌。任意のキーを押すまで消えなくなるのも嫌。
じゃあどうしたいの?一定時間表示させたいとか?
0526522NGNG
>>524
あ、いえ、任意のキーを押すまで消えなくさせたいのですが、大学の抗議では、
「getchar();は、任意のキーを押すまで表示させておく命令です」と教わっているので、
getchar();を2つ入力することに抵抗があるのです。
getchar();を2つ入力するままでよろしいのでしょうか?
0527デフォルトの名無しさんNGNG
>>526
その教授を窓から投げ捨てよう。
0528526NGNG
>>527
何となくわかりました<w
ありがとうございました。
0529デフォルトの名無しさんNGNG
>>528
犯行予告?
0530デフォルトの名無しさんNGNG
(((( ;゚Д゚)))ガクガクブルブル
0531デフォルトの名無しさんNGNG
教師を疑うのも才能のうち。
0532デフォルトの名無しさんNGNG
無茶なこと教えるやつもいるんだなw
0533デフォルトの名無しさんNGNG
大学の小テストで、こういう scanf の使い方をしたら×になりました。

 int x[3], i;

 for(i=0; i<3; i++)
   scanf("%d", x+i);

解答では x+i じゃなくて &x[i] になってたんですけど、
x+i でも普通に実行できると教授に抗議したら嫌そうな顔で○にしてくれました。
x+i だと何かいけないんでしょうか?
0534デフォルトの名無しさんNGNG
>>533
その教授を窓から投げ捨てよう。
0535デフォルトの名無しさんNGNG
こんなのばっかかよ
日本の大学授業ってレベル低いのな・・・
0536533NGNG
>>534
´Д`)マジっスカ
「ホントに実行できたんか?」と念押しされたんで、
処理系に依存しているとかの問題があるのかと思ったのに。
今見たらK&Rでも使われてるし……。
0537デフォルトの名無しさんNGNG
CPUの周波数によって表示を変えたり
メモリーの容量で表示を変えたり
HDDの容量で表示変えたり
OSによって表示変えたり実行できるOS制限したり

できませんか?
0538デフォルトの名無しさんNGNG
>>537
>>1
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!
0539デフォルトの名無しさんNGNG
>>536

なんら問題はない。
むしろ、その方がスマートかと。

ちなみに、その場合の「x+i」は
配列 x の先頭アドレスから i 個目の要素を指す。
0540デフォルトの名無しさんNGNG
だから日本の大学は世界中からナメられんだよ

&x[0]を知らない博士サマが
真面目な反論にろくに検証もせずに嫌な顔って?

fjにもいたけどよ、意見合わないとすぐバカとか猿とか言い出す助教授サマ
まさにこの親にしてこの子ありだよな

嘆かわしい限りだ
0541デフォルトの名無しさんNGNG
C初心者です
猫でも分かるプログラミングの
ISBNを作ろうでつまずいてるんですけど
やばいっすか?
0542デフォルトの名無しさんNGNG
&a[i]派とa+i派ってどちらが多いんだろう。
俺はa+iを使うけど。
0543デフォルトの名無しさんNGNG
&i[x]で○くれないかな。
0544デフォルトの名無しさんNGNG
>>543

x+i で貰えない様だから無理じゃないの?
合ってるけどな(w
0545デフォルトの名無しさんNGNG
よくscanf関数は学習用だと聞くんですが、
通常は入力関数に何を使うんですか?
0546デフォルトの名無しさんNGNG
>>545
弱虫はfgets
漢はgets

そのあとsscanfなどを使って処理する。
0547デフォルトの名無しさんNGNG
>>545
状況による
0548デフォルトの名無しさんNGNG
fgetc, fgets, fread
0549デフォルトの名無しさんNGNG
perlを使う。
0550546NGNG
一文字ならgetchar
一定バイトごととかならfread
0551デフォルトの名無しさんNGNG
http://gametui.hp.infoseek.co.jp/tetoris.zip
このテトリスってどうやって作ってるんですか?
API使ってるの?
標準C?
0552デフォルトの名無しさんNGNG
>>561
しらねーよ。
実行ファイルだけじゃCと関係ないし。
0553デフォルトの名無しさんNGNG
>>551
しらねーよ。
実行ファイルだけじゃCと関係ないし。
0554デフォルトの名無しさんNGNG
>>551
スレ違い
0555デフォルトの名無しさんNGNG
>>546-550
分かりました。
sscanfは初耳なんでちょっと調べてみまつ。
0556デフォルトの名無しさんNGNG
sscanfはポインタを返せない
データをこぼす点でgetsと同類
0557デフォルトの名無しさんNGNG
>>551
怖いから実行しないで想像で答えるけど、グラフィック使ってるなら、API使ってる。
(もしくは標準以外のライブラリか)
0558デフォルトの名無しさんNGNG
>>556
はぁ?
0559pNGNG
この宿題を解いてください。

GNU MPライブラリを用いて二項係数 nCkを求める関数
void my_mpz_binom(mpz_t rop, int n, int k) を作成し、
70 C 13 を求めよ。
0560デフォルトの名無しさんNGNG
>>558
コドモは寝る時間だ
高尚なギャグを邪魔するな
0561デフォルトの名無しさんNGNG
>>559
宿題は自分でやるものだ。
0562デフォルトの名無しさんNGNG
>>559
C/C++の宿題・・・のほうに解を書いときました。
当方 GNU MPライブラリは初めてなので間違ってるかも。
でも大体あってると思います。
マニュアル↓
http://mirrors.theonlinerecordstore.com/gnu/Manuals/gmp/html_mono/gmp.html#Function%20Classes
0563デフォルトの名無しさんNGNG
>>561
宿題は写すものだ
0564_NGNG
http://homepage.mac.com/hiroyuki44/jaz08.html
0565デフォルトの名無しさんNGNG
自分でやる = 自分で写す
0566デフォルトの名無しさんNGNG
>>565 警告: おそらく不正な代入
0567デフォルトの名無しさんNGNG
足してn(自然数)になる自然数の組み合わせを表示するプログラムを教えてください。
具体的には n=5 のとき 自然数の組み合わせは
5, 41, 32, 311, 221, 2111, 11111 です。
つまり、自然数の組み合わせの中に 1 がk_1個、 2 がk_2個、…、 n がk_n個あるとすると
k_1,k_2,…,k_n が
 k_1 + 2 * k_2 + … + n * k_n = n
という方程式を満たす0以上の整数解を持てばいいのですが、どういうアルゴリズムで
k_1,k_2,…,k_n を求めるかわかりません。お願いします。
0568デフォルトの名無しさんNGNG
再帰
0569デフォルトの名無しさんNGNG
>>568
再帰だとちょっと n が大きいと止まっちゃうんじゃない?
0570デフォルトの名無しさんNGNG
>>566
ワラタ
0571デフォルトの名無しさんNGNG
>>567
C/C++の宿題スレの過去ログを見ろ。
0572デフォルトの名無しさんNGNG
  ┏俺様用セーブポイント━━━━━━━━━━━━━━━━┓
  ┃ここまで理解した                          .┃
  ┃┌─────┐ LV 10                     ┃
  ┃│  ∧ ∧. ..│ HP 100/150                  ┃
  ┃│ ( ´∀`) ..│ MP  25/50        ┌────┐  ┃
  ┃└─────┘                .│SAVE← .│  ┃
  ┗━━━━━━━━━━━━━━━━━━ │LOAD   │━┛
 ..                             └────┘
0573デフォルトの名無しさんNGNG
>>572 きゃんせる
0574デフォルトの名無しさんNGNG
int arege(char *data){
char dmy[2];
dmy[1]='\0';

int ret=0;
int data_length=strlen(data);
int i;

for(i=0;i<data_length;i++){
dmy[0]=data[i];
ret+=atoi(dmy);
}
return ret;
}

int main(){
char data[1000];
scanf("%s",data);
printf("%s is %d",data,arege(data));
}
0575デフォルトの名無しさんNGNG
http://slashdot.jp/
0576デフォルトの名無しさんNGNG
n=5ならば、
最初に、1を全部並べる。11111

data[0]とdata[1]を合計して、11111から、2111 → 311 → 41 → 5
次に、data[1]とdata[2]を合計して、2111から221→ 23, 311から32
ここで、data[n-1]>=data[n]という条件があるならば23は消せる。

結局これで得られるのは、
11111,2111,311,41,5,221,32

あとは、strlenでソートかければよろしい。
0577574NGNG
>>575 goodjob.
0578デフォルトの名無しさんNGNG
悪い、data[i-1]>=data[i]にしてくれ。
問題で与えられたnと混乱する。
0579デフォルトの名無しさんNGNG
strcpy(ptMyStr->szName,"あいうえお");

のあいうえおは、いったん確保されますよね?
関数終了と同時に領域確保されるんですか?
0580デフォルトの名無しさんNGNG
>>579
プログラムが動いている間確保されているハズだが
0581デフォルトの名無しさんNGNG
>>579
終了と同時に確保してどうする
0582デフォルトの名無しさんNGNG
>>581
間違えましたw
関数抜けたと同時になくならず、プログラム終了と同時になくなるのですか?
0583デフォルトの名無しさんNGNG
>>582
状況による。
ROM とかに確保する場合もあるんだから、電源切っててもなくならなかったりする。
0584デフォルトの名無しさんNGNG
>>583 そだね。
0585デフォルトの名無しさんNGNG
time.hってインクルードしたら
どういったことに使えるんですか?
実用的な例をお願いします。
簡単なコードもお願いします
0586デフォルトの名無しさんNGNG
保守
0587デフォルトの名無しさんNGNG
time.hを見てみれ。
0588デフォルトの名無しさんNGNG
>>585
CLOCKS_PER_SECが使えるようになる
0589デフォルトの名無しさんNGNG
srand(time(NULL));
0590デフォルトの名無しさんNGNG
計算用に関数を作るんですが(たとえばmatrixのようなもの)
計算結果は戻り値で返しますか?引数で返しますか?
これは状況によるのか個々の考えか、どっちでしょう?
0591デフォルトの名無しさんNGNG
個々の考えだし、状況による。
、
0592590NGNG
>>591
う、そうなんですか・・・。
わかりました。
0593デフォルトの名無しさんNGNG
time.h 見たの?

というのは既に出てたか。
0594デフォルトの名無しさんNGNG
お聞きしたいのですが、

char szStr1[] = "0123";
char* szStr2 = "0123";

szStr1[0] = szStr1[1]; // OK
szStr2[0] = szStr2[1]; // NG -> アクセス違反

となってしまうのが、いまいち理解できないのです…
どうしてでしょうか…?

なお、VC6 / Win2kSP3 環境下で発生しました。
0595デフォルトの名無しさんNGNG
>>594
いままで何度も繰り返された話題だからログ読みなされ
0596デフォルトの名無しさんNGNG
文字列リテラルのアドレスに書き込もうとしたからだろ。
0597594NGNG
>>595
前スレにすら、似たような質問がありましたね…
失礼しました…



とりあえず、回答(だと思う)のある過去ログへのURLでも張っておきます。

- C言語なら、ぬるぽに聞け! Part 〈53〉
http://pc2.2ch.net/test/read.cgi/tech/1048995232/275-
0598デフォルトの名無しさんNGNG
>>597
ガッ!
0599デフォルトの名無しさんNGNG
#include <stdio.h>
long int y; /* 乱数の種 */
#define a 1234
#define b 4567
#define m 16383
main(){
double n;
y=8901;
y=(a*y+b)%m;
n=(double)y/(double)m;
printf("n=%lf\n",n);
exit( 0 );
}
上記のプログラムはコンパイル時、'exit'がおかしいと出ます
なんでですか?
0600デフォルトの名無しさんNGNG
exitはstdlib.h。
まあ、mainの最後にexitがあるのもおかしいわけだが。
0601デフォルトの名無しさんNGNG
>>599
#include <stdlib.h> が無いからでないの?
0602デフォルトの名無しさんNGNG
かぶってしもった・・・
0603デフォルトの名無しさんNGNG
>>600

main関数の終了はexit関数を呼び出した時と同じ動作をする。
0604599NGNG
さっきのプログラムはstdlib入れたら解決しましたが
そのプログラムでmain(){とdouble n;の間にint z;
y=(a*y+b)%m;とn=(double)y/(double)m;の間に
z=(n*9%9)+1;を入れて再コンパイルしたら(9は適当な数です。10とかでも同じ結果でした)
浮動小数点を不正な使ってるというエラーが出ましたが、
まったくこの意味が分かりません。

0605デフォルトの名無しさんNGNG
return すりゃええやんけ。
なんでわざわざ関数を呼ぶのか分からん。
0606デフォルトの名無しさんNGNG
double で剰余演算子 % は使えん。

あと、%lf → %f ナ。
0607デフォルトの名無しさんNGNG
>>604
変数は初期化してから使用汁
0608デフォルトの名無しさんNGNG
>>607
この場合は特に初期化する必要もないと思うが。
ポインタを一応 NULL で初期化しておくことはよくするけど、
これは正しく参照できないことが保証されてるからであって、
普通の数では何で初期化すればいいのやら分からんぜよ。
0609デフォルトの名無しさんNGNG
>>608
double n;
y=8901;
y=(a*y+b)%m;
z=(n*9%9)+1; /* nは初期化すべき */
n=(double)y/(double)m;
0610609NGNG
まぁ、それ以前に%の方が問題なのだが…
0611デフォルトの名無しさんNGNG
あ、これを見落としてた。
>y=(a*y+b)%m;とn=(double)y/(double)m;の間に
確かにそうやわ。
0612デフォルトの名無しさんNGNG
いややわ〜
0613デフォルトの名無しさんNGNG
うちなめんといて〜。
0614_NGNG
http://homepage.mac.com/hiroyuki44/
0615デフォルトの名無しさんNGNG
>>608
最近のオプティマイズでは無意味な初期化は無視されるので
初期化しておくのがいいよ、ぐらいの意では
0616デフォルトの名無しさんNGNG
>>615
無意味に初期化してしまうと
>>609 のような状態で警告してくれなくなっちゃうでしょ?
0617デフォルトの名無しさんNGNG
char型は8ビット
int型は32ビット
この場合、jは初期化すべきなのか、しないべきなのか…
unsinged int decode( unsigned char *p )
{
  unsigned int i,j;
  for(i=4;i--;j=(j<<8)+p[i]);
  return j;
}
0618デフォルトの名無しさんNGNG
j=(j<<8)+p[i]); ←ここ j 初期化してないと死ぬで
0619デフォルトの名無しさんNGNG
>>618
jの中身は未定でも問題ありません(警告は出るけど)
0620デフォルトの名無しさんNGNG
>>605
そんな細かいこと気にすんなよ。

>>619
「未定義」なんだから、abort() するコード吐かれても文句は言えないよ。
0621デフォルトの名無しさんNGNG
fmodってどういう使い方するんですか。
余りを求めるんですよね?
%を使ったほうがいいと思うんですが
0622デフォルトの名無しさんNGNG
整数なら
0623デフォルトの名無しさんNGNG
普通は
int func(){
return;
}
とすると思うけど、

func(){
return;
}

こんな関数って、返り血はint型になるのですか?
0624デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0625デフォルトの名無しさんNGNG
それが警告なしで通せるコンパイラってあんのかな?
0626デフォルトの名無しさんNGNG
C++ はダメで、古い C なら勝手に int じゃなかった?C99 とかは知らんけど
0627デフォルトの名無しさんNGNG
>>623
なにが訊きたいかわからん。

とりあえず、return;だけじゃ何も返らん。
関数の返り値の型を書かないとintが仮定される。
0628デフォルトの名無しさんNGNG
>>625
int なら、省略可能
0629デフォルトの名無しさんNGNG
>>623です。
仮定されるんですか、なるほど。
今まで、int func()としないと値は返ってこないものと
思いこんでいて、本を眺めてたら、いきなり返値の指定のない
func()で書かれていたので。。
ちなみに、func(){}
として、連続してprintfで呼び出すと
1
2
2
2
て感じになったんですが、どういうことでしょう?
BCBのコンパイラです。
0630デフォルトの名無しさんNGNG
return 戻り値;
をちゃんと書けと言ってるだろうが
0631デフォルトの名無しさんNGNG
これは言語の範囲を超えるのかな?よくわかんないけど。
関数の呼び出し側に制御が戻った時に
あるレジスタに入っている値を戻りの値とみなしてるだけだったような。
0632623NGNG
>>630
func(){}
なら、return 値;書かなくても、コンパイラ通るよ。
やってみた?
VC++のコンパイラの場合は
-858993460の連続でした。
0633デフォルトの名無しさんNGNG
>>632
誰がコンパイル出来ないと言っている?
0634デフォルトの名無しさんNGNG
はぁ〜
gccだったら-Sつけて.s吐かせて関数呼び出し側のコードを見てみれ。
0635デフォルトの名無しさんNGNG
駄目だな、コイツは
0636デフォルトの名無しさんNGNG
「コンパイラ通るよ」か。
0637デフォルトの名無しさんNGNG
BCBなりVCのスレで語ってくれ
0638デフォルトの名無しさんNGNG
俺がコンパイラだったらPCあぼーんするな。
0639デフォルトの名無しさんNGNG
世に出ないよそんな奴>>638
何回実行し直しても同じ値?>>632
0640デフォルトの名無しさんNGNG
>>639
VC++はスタックを0xccで初期化するからね。
>>632
Debug版じゃなく、Release版で試してみな、値が変わると思うよ。
0641デフォルトの名無しさんNGNG
インラインアセンブラ使って eax に値を設定した時は
戻り値なし return を使うこともある。
0642デフォルトの名無しさんNGNG
鬱だ氏のう
0643デフォルトの名無しさんNGNG
  ┏俺様用セーブポイント━━━━━━━━━━━━━━━━┓
  ┃ここまで理解した                          .┃
  ┃┌─────┐ LV 10                     ┃
  ┃│  ∧ ∧. ..│ HP 100/150                  ┃
  ┃│ ( ´∀`) ..│ MP  25/50        ┌────┐  ┃
  ┃└─────┘                .│SAVE← .│  ┃
  ┗━━━━━━━━━━━━━━━━━━ │LOAD   │━┛
 ..                             └────┘
0644デフォルトの名無しさんNGNG
>>641
__declspec(naked)のときくらいだな、そんなことするのは。
もっとも、そんときゃreturnなんて使わん。
0645デフォルトの名無しさんNGNG
>>643
MP(マジックポイントかな?)ってどういうとき減るのかな?
0646デフォルトの名無しさんNGNG
マジックナンバーを使うと減っていく。
0647デフォルトの名無しさんNGNG
メモリーの量だろ?>MP
0648デフォルトの名無しさんNGNG
ダウソの仕方がわからん!
download のreleaseクリックしてもそこからどうやるかわからん!
知ってる人教えてください

【コンパイラ】
gcc
http://gcc.gnu.org/
0649デフォルトの名無しさんNGNG
>>648
どうせダウンロードもできない奴には、使えないからあきらめろ。

それ以前にスレ違いだし。
0650デフォルトの名無しさんNGNG
配列を返す関数ってどうやって書けばいいの?
0651デフォルトの名無しさんNGNG
>>648
好きなの落とせ
ftp://ftp.kddlabs.co.jp:0/pub/gnu/gcc/
0652デフォルトの名無しさんNGNG
>>650
不可能
配列をメンバーにもつ構造体を返すことはできるけど。
0653デフォルトの名無しさんNGNG
>>650
配列そのものは渡すことも返すこともできない。
配列へのポインタ、または配列の先頭要素へのポインタなら
渡すことも返すこともできる。
0654653NGNG
hoge f()[SIZE]; /* 配列を返す関数(エラー) */
hoge (*f())[SIZE]; /* 配列へのポインタを返す関数 */
hoge *f(); /* 配列の先頭要素へのポインタを返す関数 */
0655653NGNG
くだらんことのように聞こえるかも知れんが
hogeを返すこととhogeへのポインタを返すことを
混同しているようではC使いにはなれない。
0656デフォルトの名無しさんNGNG
>>651
つながらないよ。
本当にポート番号は0なの?
0657デフォルトの名無しさんNGNG
う〜むCはむづかし…
むづむづむづ…
修行してきます
0658657NGNG
とりあえず
>>653さんくすこ
0659652NGNG
なぜか煽りと思われたらしい。
0660657NGNG
いえいえ>>652さんもありがとん
ん?
0661650NGNG
あ〜なるほど!
構造体なら名前空間とかは関係ないですねぇ
いままで構造体がある言語を使ったことがなかったんで
こいつはたまげた!
0662俺的補足NGNG
構造体を使ってもいいが、配列を返したいだけだったら
大抵は、呼び出し側で予め用意した配列のアドレスを引数として渡してやると思うんだが・・・

このやり方分かってて聞いているんならいいけどさ。
0663デフォルトの名無しさんNGNG
便乗しちゃうけど、

struct abc func();

って気持ち悪いんだけど、どう?
0664デフォルトの名無しさんNGNG
べつに。
0665デフォルトの名無しさんNGNG
>664
そう。
0666デフォルトの名無しさんNGNG
typedefしているけど、標準ライブラリにも構造体を返すがあるね。divとか。
0667デフォルトの名無しさんNGNG
それみたいに構造体の規模が小さいなら我慢できるけど、俺は気持ち悪い。
0668デフォルトの名無しさんNGNG
divってなんの役に立つんだろう。
0669デフォルトの名無しさんNGNG
>>668
DIVはFORTRANの除算と同じ結果が得られるように作られた。
/%演算子とは結果が異なる場合がある。
簡単に言うと、/の商の丸め方と%の結果の符号は処理系依存だが、div()では規格で規定されている。

それに、大抵のCPUでは1命令で商と余りが同時に得られているので、
商も余りも必要な処理では実行速度の点で有利。
divはかなり遅い命令なのです。
0670デフォルトの名無しさんNGNG
制御文で「もし9の倍数なら〜」ってのはどうやって判別するんですか?
0671デフォルトの名無しさんNGNG
複雑系のリアプノフ数をシミュレーションするのに適したソフトって
ありますか?
0672デフォルトの名無しさんNGNG
#include <stdio.h>
int main(){
char a='〇',b='●';
int c,n;
for(c=1;c<=91;c++){
if(c%2==1){
printf("%s",a);
}
else if(c%2==0){
printf("%s",b);
}
for(n=1;n<=9;n++){
if(c==9*n){
printf("\n");
}
}
}
}
0673デフォルトの名無しさんNGNG
>>670
9 の倍数 → 9 で割ったあまりが 0 と考える。

>>671
この板は、ソフトを作る人のための板で、作られたソフトを探す人のための板ではない。
0674デフォルトの名無しさんNGNG
>>672 はいそこ!あちこちのスレに貼らない!
0675デフォルトの名無しさんNGNG
(0_)! (┃┃〈リ  はわわ
0676デフォルトの名無しさんNGNG
>この板は、ソフトを作る人のための板で、作られたソフトを探す人のための板ではない。

『板』を色んな言葉に置き換えて言ってやりたいドアフォが大杉!!

・・・愚痴聞きアリガトウ >>ALL
0677Nanashi_et_al.NGNG
func1からfunc2を呼び出す(使用する)とき
宣言で func1(…, double (*func2)(…), …) とサンプルでしているのですが,
別のところで func2 を宣言してるし,使えるのに
func1 の宣言を上のようにするのはナゼですか?
0678デフォルトの名無しさんNGNG
>>677
その場合のfunc2は関数ポインタ。

・・・・しっかし同じ名前を付けるのはどういうことか・・
0679Nanashi_et_al.NGNG
ん,こーゆーことだからかな???
func1から呼び出せる関数がfunc2だけでなくfunc3とかにすることができて,
使いまわしができるから,ということで納得しました。。。
0680デフォルトの名無しさんNGNG
>>672のコードを興味本位でコンパイルしてみたら
フリーズしてしまいました。
一瞬、ウイルスかと思いますた。(ぇ
0681デフォルトの名無しさんNGNG
>>672のコードって何がしたいのか教えて下さい。
0682680NGNG
めっちゃ気になります。
どうか、教えて下さい。
なぜフリーズなのか。コンパイルエラーなら分かるけど
0683デフォルトの名無しさんNGNG
printf("%s",a);
     ↑ 
0684デフォルトの名無しさんNGNG
単に市松模様を書きたいだけじゃねーの
0685デフォルトの名無しさんNGNG
学校のコマンドプロンプトの時は、bcc32 ○.c って入れると
コンパイルされるんですが、家でやると出来ないんですけどな
んででしょうか。。。
0686デフォルトの名無しさんNGNG
bccインストールしてないんだろ
0687デフォルトの名無しさんNGNG
bcc入れてないからだろ。
0688デフォルトの名無しさんNGNG
bccをインストールしてないんだきゅん
0689デフォルトの名無しさんNGNG
bcc にパスが通ってないんだろ?
0690デフォルトの名無しさんNGNG
スレ違いだろ。
0691デフォルトの名無しさんNGNG
Delphi最強!!
0692デフォルトの名無しさんNGNG
>>691 で?
0693デフォルトの名無しさんNGNG
オチがついたところで次の方どうぞ
0694デフォルトの名無しさんNGNG
下川みくに「tomorrow」
0695デフォルトの名無しさんNGNG
>>694
C言語っぽい娘だな

[下川みくに ]
■80.3.19生
■北海道 静内郡 静内町
■血液型B型
■星座・魚座
■身長 155cm
■下川みくにとは・・・
・ウソは苦手 
・感極まるとすぐ泣く 
・二つのことは同時に出来ない
・けっこうタフ 
・自分は自分、人は人 
・左手も器用 
・口説くならストレートにね 
・焼肉はハラミ、ビールはスーパードライ 
・やっぱり夏が好き!! 
・打倒ミシェルブランチ 
・淋しい時は私の歌声で癒されてね
0696デフォルトの名無しさんNGNG
シングルタスクか
0697デフォルトの名無しさんNGNG
知らなかった。。。
今入れてみたんですが、ここにXPが書いてなくて分からないんですが・・・
http://www.borland.co.jp/cppbuilder/freecompiler/faq/bccfaq4.html
どうすれば良いのでしょう?
0698デフォルトの名無しさんNGNG
何?みくにちゃん馬鹿にしてんの。プンぷん。
0699デフォルトの名無しさんNGNG
>>697
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/
0700697NGNG
aは出来ました!!!
b&cが分かりません。。。
ドコにどうやって作成するんですか?T_T
a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。
b. bcc32.cfg ファイルを作成します。このファイルは,Include
および Lib パスのコンパイラオプション(コンパイラの -I
および -L スイッチ)を設定するものです。ファイルには次の
行を含めてください。
-I"c:\Borland\Bcc55\include"
-L"c:\Borland\Bcc55\lib"
c. ilink32.cfg ファイルを作成します。このファイルは,Lib
パスのリンカオプションを設定するものです。ファイルには
次の行を含めてください。
-L"c:\Borland\Bcc55\lib"
0701デフォルトの名無しさんNGNG
>>700
ん、行動派だな。bin ディレクトリ上に(かな?)
bcc32.cfg ってファイルを作れ。
ilink32.cfg ってファイルを作れ。
内容は書いてあるとおりだ。
0702デフォルトの名無しさんNGNG
bcc32.exe があるところにメモ帳で作れ
0703デフォルトの名無しさんNGNG
ageてる時点でネタと思いたい。
0704デフォルトの名無しさんNGNG
んなこというと質問者はageづらくなるではないかい?
0705デフォルトの名無しさんNGNG
 
0706デフォルトの名無しさんNGNG
堤さやか \952
「とびっきりSUNDAY,・・・fall in love ♥」
0707680NGNG
>>672のソースに興味を持ったので少し直して実行してみました。
Cでは〇●は出力できないんですかね。変わりにa,bを置いてみました。
コードにはif((c%9)==0とあるので、9個表示したら改行するのかなぁ、と
思ったら4個で改行してるじゃないですか。>>672のマジックでつか?
それとも俺がバカなだけ?
#include <stdio.h>
int main(){
char a='a',b='b';
int c;
for(c=1;c<=91;c++){
if((c%2)==1){
printf("%c",a);
if((c%9)==0){
printf("\n");
}
}
else if((c%2)==0){
printf("%c",b);
if((c%9)==0){
printf("\n");
}
}


}
}
0708デフォルトの名無しさんNGNG
>>703
「メール欄にageと入れている時点で」に直せ。
0709697NGNG
ageないと気が付かないと思いました。。。

んと、、、binファイル内(bcc32.exeがあるとこ)にbを作ってcも作りました。
いったん、txtで保存してそれのファイル名を変えるって方法をとってみました。
しかし、コンパイルはされませんT_T
再起動は必要なのでしょうか??
他になにか問題はありますか???T_T
0710697NGNG
>>708
そういう意味だったんですか!!!T_T
0711デフォルトの名無しさんNGNG
コンパイルされないってエラーかなんか出てないの?
0712680NGNG
俺もそれは最初にすごく悩んだ。
でも、よく分からないうちにできてた。
もっと楽に設定できるフリーソフトがあったからそれ使ってみたら?
0713680NGNG
>>709
俺もそれは最初にすごく悩んだ。
でも、よく分からないうちにできてた。
もっと楽に設定できるフリーソフトがあったからそれ使ってみたら?
0714デフォルトの名無しさんNGNG
>>709
作業ディレクトリを移動したか?


メール欄を空にすればいいだろ。ここはID出ないし。
0715680NGNG
ガーソ。
ゴメソ
0716デフォルトの名無しさんNGNG
>>710
これ嫁
http://hp.vector.co.jp/authors/VA017148/pages/install/bcc.html
0717デフォルトの名無しさんNGNG
コンパイルされないだけじゃわからん、
実行してどうなったか書け。
0718デフォルトの名無しさんNGNG
ZeroMemoryとmemsetってどっちのほうを使ったらよいんだっけ?
ZeroMemoryのほうは、VC++にしか用意されていないんでしたっけ?
0719680NGNG
cというディレクトリを作って
まず、cd \c で移動。
bcc32 *.cでOK!
0720デフォルトの名無しさんNGNG
>>718
UNIXのbzeroもそうだが、移植性を高めるならmemsetを使うべき。標準関数だからね。
0721697NGNG
>>711
内部なんたらが認識されてませんって出ますT_T
0722デフォルトの名無しさんNGNG
>>718
yes

普通は
VCでコンパイルする前提ならZeroMemory、
他環境でもコンパイルする可能性があるならmemset。

それか、それらの関数のラッパーを作るか。
0723デフォルトの名無しさんNGNG
>>721
メッセージをコピペせー。
DOSプロンプトとかだったらマウスで選択して、
Enterでコピーできる。それを晒せ。
0724デフォルトの名無しさんNGNG
pathがとおってないんだろ。
0725デフォルトの名無しさんNGNG
>>721
aができてねぇっぇえええっぇぇぇぇ
0726デフォルトの名無しさんNGNG
path設定したあとDOS窓立ち上げなおしてないんじゃねーの?
0727デフォルトの名無しさんNGNG
sizeofって関数ではないんだね
sizeof演算子か・・・
どういう仕様なんでしょうか?

例:int getchar(void);
0728デフォルトの名無しさんNGNG
>>727
オペランドの大きさをバイト単位で返す演算子
0729デフォルトの名無しさんNGNG
>>727
型やオブジェクトのバイト数をsize_t型として返す。
0730デフォルトの名無しさんNGNG
>>718
ZeroMemoryはWin32API
0731デフォルトの名無しさんNGNG
配列の場合は要素数な
0732697NGNG
>>726
まじ感謝です。。。
その通りでしたT_T
そしてみなさまありがとうございましたT_T
0733デフォルトの名無しさんNGNG
>>731
char配列ならな
0734デフォルトの名無しさんNGNG
>>731
うそつくんじゃねえw
int a[32];
のとき
sizeof(a)
は32を返すのか?
0735デフォルトの名無しさんNGNG
あんまり731を追い込むなよw
0736デフォルトの名無しさんNGNG
☆頑張ってまーす!!☆女の子が作ったサイトです☆
       ☆見て見て!!
http://endou.kir.jp/betu/linkvp2/linkvp.html
0737デフォルトの名無しさんNGNG
☆頑張ってまーす!!☆女の子が作ったスレッドです☆
       ☆見て見て!!
http://pc2.2ch.net/test/read.cgi/tech/1056806789/
0738デフォルトの名無しさんNGNG
>>730
APIじゃなくってmemesetのマクロじゃねー?
0739デフォルトの名無しさんNGNG
VC++6.0ではマクロみたい。
0740デフォルトの名無しさんNGNG
>>644
naked 使わない場合はスタックフレームに関する処理が暗黙に入るので、
直接 ret を使わずに return を使うのじゃ。
0741デフォルトの名無しさんNGNG
>>734
sizeof aな
下手にカッコ書くから関数と勘違いさせちまうreturn(0)とかな

>>731
sizeof 配列名
コンパイル通らないことだってあるよな
もちろん知ってるよな?
0742デフォルトの名無しさんNGNG
>>741
>コンパイル通らないことだってあるよな
それはコンパイラが悪いだろ
0743デフォルトの名無しさんNGNG
>>738
Win32環境で用意されるという意味だ。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/zeromemory.asp
0744デフォルトの名無しさんNGNG
>>742
ふーん
じゃgcc3.2もbcc5.51もcl13.00.9466も悪いのか
0745デフォルトの名無しさんNGNG
便乗させて〜!
aでのbinとBinは一緒?
0746デフォルトの名無しさんNGNG
>>745
大文字/小文字の区別はないハズだよ
0747デフォルトの名無しさんNGNG
>>744
gcc3.2もbcc5.5.1も通るけど何やったら通らないの?
0748デフォルトの名無しさんNGNG
>>747
外部変数
0749デフォルトの名無しさんNGNG
>>748
extern汁
0750デフォルトの名無しさんNGNG
>>748
extern int a[]; で通らんのは当たり前やないか。
0751デフォルトの名無しさんNGNG
>>748
バカ丸出しだな
0752デフォルトの名無しさんNGNG
path設定って一回一回
 path c:\Borland\Bcc55\bin
ってかくんですか?メンドイ
0753デフォルトの名無しさんNGNG
>>750, >>751
答え聞くまでぐうの音も出んかったくせに
0754デフォルトの名無しさんNGNG
>>752
パスの設定は bcc パス 設定
で検索汁
windowsのバージョン別で違うから
0755デフォルトの名無しさんNGNG
>>752
環境変数設定にいれとけ
0756デフォルトの名無しさんNGNG
typedef char str[10];
とかやってて
sizeof str
が駄目だから配列は駄目だと思ってたに1ポイント
0757デフォルトの名無しさんNGNG
環境変数設定?
0758デフォルトの名無しさんNGNG
>>752
何でココで聞くのかな…
0759デフォルトの名無しさんNGNG
>>756
ワラタ
0760デフォルトの名無しさんNGNG
私とうとう脱いじゃった♪
http://alink3.uic.to/user/angeler.html
0761デフォルトの名無しさんNGNG
%>bcc32 test.c
エラー:ファイルtest.cが見つからない

何故?
0762デフォルトの名無しさんNGNG
>>761
test.cが見つからないから
0763デフォルトの名無しさんNGNG
>>761
パスとは何かを理解すれ
そして>>1-2をみれ
0764デフォルトの名無しさんNGNG
>>762
確かに存在すんだけどなぁ
0765デフォルトの名無しさんNGNG
>>763
path設定もたぶんできてるんだけど
0766デフォルトの名無しさんNGNG
>>764
>>714
0767デフォルトの名無しさんNGNG
>>761
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/
0768デフォルトの名無しさんNGNG
>>766
>>719のようにしても駄目でした(悲
0769デフォルトの名無しさんNGNG
いい加減うざがられてるぞ。
0770デフォルトの名無しさんNGNG
>>768
だから、スレが違うんだって
ココはC言語に関する質問スレで
チミの問題はBCCの使い方で、ココとは関係ない
0771デフォルトの名無しさんNGNG
path設定(xp)
・mycomputer を右クリックして以下のようにする
  プロパティ > 詳細設定 > 環境変数 > path(編集)
・;c:\Borland\Bcc55\bin を加える
0772デフォルトの名無しさんNGNG
エラーでてるからbcc32は問題ないのかな?
ただカレントディレクトリが test.c のある所じゃないんじゃないの、
bcc32 "test.cのフルパス"
でやってみれ。
0773デフォルトの名無しさんNGNG
というか、スレ違いじゃぁぁぁぁぁ!!!!
0774デフォルトの名無しさんNGNG
bcc32 とタイプしたあとにコマンドプロンプトにソースファイルをD&D
0775デフォルトの名無しさんNGNG
>>769-770
スマソ ;´Д`
他スレ(板)と比べてここの人親切だからついつい調子に乗りすぎてしまいました
0776デフォルトの名無しさんNGNG
>>772
多分、次はコンパイル出来たけど、
コンパイル後のファイルが無いって言い出すよ
0777デフォルトの名無しさんNGNG
ttp://www.birdport.jp/c-pre/free.htm
よめ
他にも検索すりゃたくさん見つかる
0778デフォルトの名無しさんNGNG
・・・といいつつ
コンパイルkita━━━(゚∀゚)━━━!!
あとはexeっしょ!?

親切に答えてくれた人も色々忠告してくれた人もマリガトー,,´∀`
0779デフォルトの名無しさんNGNG
>>778
なぁ〜んだ、つまんねぇ
mkdir test.c
とか禿藁があるんだろうと
楽しみに待ってたのに...
0780デフォルトの名無しさんNGNG
>>779
これでも一応情報工学科なんで・・・オハズカシィ
0781デフォルトの名無しさんNGNG
LPCTSTRとかの引数の関数に渡す場合、charのままではだめなの?
0782デフォルトの名無しさんNGNG
charっていうか、charの配列だね
0783デフォルトの名無しさんNGNG
>>781
#ifdef _UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif

#define FAR

typedef const TCHAR FAR* LPCTSTR;
0784デフォルトの名無しさんNGNG
>>783
OKってことですか
0785デフォルトの名無しさんNGNG
if(----)
{
textprint("うまくいきました");
}

のような場合、if関数に入らない限りうまくいきましたの文字列は、確保されないのでしょうか?
0786デフォルトの名無しさんNGNG
>>784
_UNICODE が定義されてなければ OK だけど。
NT 系でプロジェクト作ると
デフォルトで _UNICODE が定義されるようになってたと思う。
98 系でプロジェクト作ったならデフォルトで定義されない。

もし面倒ならプロジェクトの設定いじって _UNICODE を切るのも手だけど。
0787デフォルトの名無しさんNGNG
>>785
文字列リテラル(" " で囲まれた奴)は
プログラムの開始から終了の間ずっと確保される。
if(0) { textprint("..."); } のように条件が常に偽なってる場合に
確保するかはコンパイラ依存。
gcc で前確認した時には確保されてたっぽい。
0788デフォルトの名無しさんNGNG
#if 0
"うまくゆきました";
#endif
これなら確保されないな。コンパイル前に消えるんだから当たり前だけど。
0789デフォルトの名無しさんNGNG
大学で最近つくづく思うんだけどさ、
もちっとコンピュータの扱い方から教えんとダメポ、残念だけど。
これからプログラム書かなきゃならんやつがコマンドプロンプトも知らんし。
教えてもその本質を知ろうとしない。ブラックボックスのままで良しとする。

見てて効率悪すぎだし。あ〜ぁ、スレ違い。
0790デフォルトの名無しさんNGNG
>>789
オヤジっぽいな
0791デフォルトの名無しさんNGNG
>>789
同感。でも、使い方から教えてたら一年間くらい費やしそう
0792デフォルトの名無しさんNGNG
>>787
エラーのガ起こった時に、

if(エラー起こったか?)
errmessage("○○関数の値が不正値");

としているのですが、調べる箇所が増えると文字列も増えるのでちょっと鬱

まーでもよくよく考えると、初期化とかの部分ぐらいしかエラーメッセージ出さないんだけど(たぶん)
0793_NGNG
http://homepage.mac.com/hiroyuki44/2ch.html
0794デフォルトの名無しさんNGNG
誰かifは関数じゃねぇって突っ込んでやれよ
0795デフォルトの名無しさんNGNG
気付かなかった。迂闊だ。
0796デフォルトの名無しさんNGNG
#include "readme.txt"
0797デフォルトの名無しさんNGNG
#include "http://pc2.2ch.net/usr/include/lib2ch.h"
0798デフォルトの名無しさんNGNG
>>789
最近は中学高校でも情報科目が導入されているから、だんだん改善されていくんじゃないのかね。
0799デフォルトの名無しさんNGNG
中学高校の情報科目なんて IE と Word つかっておしまいだろ。
0800デフォルトの名無しさんNGNG
OutlookExpressも
0801デフォルトの名無しさんNGNG
うーん、そうなのか?
6年かけてそれだけじゃ悲しすぎるな。
0802デフォルトの名無しさんNGNG
最近は亀の子を動かすやつやらないのか?
0803デフォルトの名無しさんNGNG
xyzzy ?
0804デフォルトの名無しさんNGNG
while(fgets(str, 512, file)!=NULL){
}
のカッコの中で、str が空白行(スペース、タブと改行のみの行)であれば
continue したいのですが、その判別はどうすればよいのでしょうか。

よろしくお願いします。
0805デフォルトの名無しさんNGNG
>>804
判定のための関数を関数を作るのがよい。

int kuhakudake(const char *s)
{
for(;*s;s++)
/* if(!isspace(*s)) */
if(!(*s==' '||*s=='\t'||*s=='\n'))
return 0;
return 1;
}
0806ヽ(´ー`)ノNGNG
>>799-801
現在の教員が一週間かそこら講習受けた程度で情報の教員免許貰える制度が
あるらしいので、そう考えるとそんなもんなんだろうな。
0807805NGNG
while(fgets(str, 512, file)!=NULL){
if(kuhakudake(str))
continue;
}

こんな風に使う。
ださい関数名は自分で何とかして。
0808804NGNG
>>805
やっぱこうやって一文字ずつ確認するしかないですか?
Cって正規表現とか使えないのでしょうか?
0809デフォルトの名無しさんNGNG
標準ライブラリでは無理。
C言語はテキスト処理苦手な言語です。
0810デフォルトの名無しさんNGNG
まぁ、perlだってjavaだって内部じゃどんな文字列処理も一文づつ処理しているんだろう。
用意されているか、自分で作るかの違いでしかない。
0811810NGNG
×一文づつ
○一文字づう
0812デフォルトの名無しさんNGNG
もし構文解析の一部なら、yacc/lex を使うという手もある。
そこまで大掛かりじゃなさそうだけど。
C で書く前に、本当で C でやらなければいけないのか(Perl や
シェルスクリプトを使えないか)よく考えた方が良い。
0813_NGNG
http://homepage.mac.com/hiroyuki44/2ch.html
0814デフォルトの名無しさんNGNG
strpbrkを使えば多少はましになるが・・・
805さんのと根本的には変わりはない
0815805NGNG
>>814
そうだ。うってつけのがあったんだ。
サンキュー

if(!strpbrk(str," \t\n")) continue;
これで一発だな。
0816810NGNG
>>815
それだと、文字列の中に " " "\t" "\n" が一つも無いときにcontinue じゃないの?
0817デフォルトの名無しさんNGNG
以下のようなコードで、出力ファイルをUnicodeで保存するにはどうすればよいのでしょうか?

ofstream os; os.open("test.xml");
os << "<?xml version=\"1.0\" encoding=\"UTF-16\" ?><mtf>";
中略
os << "<mtf/>";
os.close();

あるいは、Unicodeでファイルを保存するにはofstreamを使ってはいけないのでしょうか?

titn
0818デフォルトの名無しさんNGNG
以下のようなコードでファイルを保存するときに、Unicodeで保存するにはどうすればよいのでしょうか?

ofstream os; os.open("tgt.tmp");
os << "<?xml version=\"1.0\" encoding=\"UTF-16\" ?><mtf>";
中略
os << "<mtf/>";
os.close();

あるいは、Unicodeで保存するにはofstream意外を使うのでしょうか?
0819デフォルトの名無しさんNGNG
Cと関係ない話は他所で。
0820804NGNG
これでうまくいかないのですが、なぜでしょうか?

関数側
int isemptyline(char *s){
 char *tmp = s;
 printf("this%s\n", tmp);
 for(; *tmp!='\0'; tmp++){
  printf("%c", *tmp);
  if (!(*tmp==' '||*tmp=='\t')){
   return 0;
  }
 }
 return 1;
}

呼び出し側
while(fgets(str, 512, file) != NULL){
 if ((ptr=strchr(str, '\n'))!=NULL){
  *ptr='\0';
 }
 if (isemptyline(str)){ /* skip empty line */
  printf("space line\n");
  continue;
 }
 処理
}
0821820NGNG
スペースだけの行でも、文字を含む行でも
isemptyspace が 0 を返してしまうようなんです。
0822デフォルトの名無しさんNGNG
>>821
そのままコンパイルしてうまく動きましたけど
0823デフォルトの名無しさんNGNG
>>821
順にソースを追っていって見て
0824_NGNG
http://homepage.mac.com/hiroyuki44/2ch.html
0825デフォルトの名無しさんNGNG
>802
なんだっけ。日本語プログラミングのやつっしょ?
0826820NGNG
別のファイルを読み込ませたらうまくいくことが分かりました。
が、実行したいファイルではうまくいきません。
よく分かりませんが、フォントか何かがまずいみたいです。
emacs で編集しているのですが、下のほうのバーに
実行したいファイルの方は (Text) と書かれています。
これを別のファイル名にコピーして emacs で開くと、(Fundamental) と
書かれており、^M という文字が全ての行(のおそらく改行位置)に現れます。
しかも、この ^M を手動で取り除くと、うまく動くようです。
多分、改行のフォントが異なるのだと思うのですが、
これはどうすればよいのでしょうか?
0827デフォルトの名無しさんNGNG
>>820
これはだめかな?
int isemptyline(const char *s){
//    printf("this : %s\n", s);
    while(*s == ' ' || *s == '\t') ++s;
    if(*s == '\r' || *s == '\n' || *s == '\0'){
        return 0;
    }
    for(;*s;++s) putchar(*s);
    
    return 1;
}
int main()
{
    char line[256];
    FILE *in = fopen("test.txt","r");
    while(fgets(line,sizeof(line),in)){
        if(!isemptyline(line)){
            printf("space line\n");
        }
    }
}
0828デフォルトの名無しさんNGNG
>>818
wofstream を使う。
あと、文字列リテラルの前に L を付ける。
古いコンパイラによっては自分で typedef する必要があるかも。
mbstowcs/wcstombs とかも参考に。

// typedef basic_ofstream<wchar_t> wofstream;
wofstream os;
os.open("tgt.tmp");
os << L"<?xml version=\"1.0\" encoding=\"UTF-16\" ?><mtf>";
中略
os << L"<mtf/>";
os.close();
0829828NGNG
今気が付いたけど、ここ C スレじゃん。
C++ スレと両方見てるから感覚なくなってたわ。
0830デフォルトの名無しさんNGNG
そんなもんです。
0831デフォルトの名無しさんNGNG
どなたかitoaの中身(ソース)をご存知のかたはいらっしゃらないでしょうか?
atoiの中身は分かったのですがitoaが分かりません(TT)

お願いします。
0832デフォルトの名無しさんNGNG
☆可愛い女の子たちが待ってます(^−^)☆
http://endou.kir.jp/yuminet/link.html
0833デフォルトの名無しさんNGNG
>>831
スレ違い。
つーか、マルチポストしてんじゃね。
0834デフォルトの名無しさんNGNG
>>831
atoiがわかればitoaもわかるべ
逆のことやればいいんだよ。
0835デフォルトの名無しさんNGNG
K&Rの3.6にソースが載ってる。
0836デフォルトの名無しさんNGNG
>>826
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/164linendm.html
http://linux.ascii24.com/linux/allascii/linuxmag/2001/06/09/626472-004.html

フォントは、画面に表示するときに使う書体なんで、こいつ悪くない。
文字コードだね。
0837836NGNG
ごめん、文字コードに改行文字の宣言はないから、また別物だわ。
0838デフォルトの名無しさんNGNG
>>826
空白文字と水平送り文字のほかに復帰文字も空白扱い汁。
0839805NGNG
>>816
そうかも

じゃあif(strspn(str," \t\n")==strlen(str)) continue;
これならOKかな。
0840デフォルトの名無しさんNGNG
c言語で書かれたプログラムをコンパイルした物をwin32実行ファィルに
するにはどうすればいいですか?
0841デフォルトの名無しさんNGNG
>>840
>>1-2
0842デフォルトの名無しさんNGNG
◎無修正画像をご覧下さい◎無料パスワードをゲットすれば、もっと凄い画像とムービーがご覧頂けます◎
★http://endou.kir.jp/moro/linkv.html★
0843デフォルトの名無しさんNGNG
cで書いたプログラムをwindows2kのコマンドプロンプト(cygwin bash)で実行します。
プログラム内の

 system("notepad");

はnotepad が同期呼び出しなのでここで処理がまたされます。
おなじように

 system("xyzzycli.exe");

を実行したいのですが、xyzzycli.exe は非同期で呼び出されるために、すぐに処理がもどってきてしまいます。
notepad と同じような挙動にしたいのですが、どうしたらよいのでしょうか?

コンパイラはMinGWをつかってます。
0844デフォルトの名無しさんNGNG
>>843
標準じゃ無理。
forkしてexec*
0845844NGNG
system("xyzzycli.exe &"); これはどう?
0846デフォルトの名無しさんNGNG
-waitオプションってやってみた?
0847844NGNG
質問を読み間違えていたな。待ちたいんだ。
・・・・wait?
0848デフォルトの名無しさんNGNG
C言語スレなんだから、C言語に関する質問をして欲しいのだが。

---------- test.bat ----------
xyzzycli.exe -wait a.txt
echo -waitがある場合
xyzzycli.exe a.txt
echo -waitが無い場合
pause
---------------------
a.batをxyzzycli.exeのある場所において実行して見てくれ。
0849デフォルトの名無しさんNGNG
ぶっ!a.batじゃなくて、このバッチファイルっていうことにしてくれ。
0850デフォルトの名無しさんNGNG
>>848
結局ソフトの使い方の問題だったけど、質問者はそう思っていなかったみたいだからいいんじゃない?
0851843NGNG
とりあえずプロンプトで

xyzzycli.exe -wait

とやってもすぐに帰ってきてしまいますね。

同期プログラムは新しくスレッド作ってやれば非同期に出来ますが、
非同期のすでにあるプログラムに同期処理させるのは外部からどう
がんばっても無理なのかな・・・?
0852843NGNG
>>848
ありがとうございます。
ソフトの使い方というのも、うすうすわかってましたが、cの関数内でどうにかできないかなという期待もあっての質問でした。
どこで質問しようか迷いマシた。

とりあえずそれでやってみます。
0853843NGNG
あ、できそうですね。-waitかかってます。わたしの勘違いだったようです。
cでやるなら system("xyzzycli.exe -wait filename");
でしょうか。
bat、shで十分ですけどね・・・。
0854デフォルトの名無しさんNGNG
ファイル名を指定するといいみたい。
0855デフォルトの名無しさんNGNG
通算日数計算で、例えば

2003/1/1 → 2003/1/1 = 1日
2003/1/1 → 2003/1/2 = 1日
2003/1/1 → 2003/1/5 = 4日

とするにはどうすればいいのでしょうか?
0856デフォルトの名無しさんNGNG
difftime
0857デフォルトの名無しさんNGNG
なんで戻り値がdouble型なんだ・・・
0858デフォルトの名無しさんNGNG
>>809
ライブラリ持ってないアマグラマ
ハケーン
0859デフォルトの名無しさんNGNG
アライグマって読んじゃったよ…
0860デフォルトの名無しさんNGNG
同じく
0861デフォルトの名無しさんNGNG
doubleの由来ってなんなのでしょうか?
0862デフォルトの名無しさんNGNG
>>861
倍 (double) 精度浮動小数点
0863デフォルトの名無しさんNGNG
>>862
どうもテンキュです
0864デフォルトの名無しさんNGNG
c で、ある関数funcを main を持つファイルtest.cとは
別のファイルfunc.cに実装し、main から呼び出して使いたいです。
func.c を gcc -c func.c でオブジェクトファイルにした場合、
test.c 側から呼び出すにはどうすればよいのでしょうか。
0865デフォルトの名無しさんNGNG
何か★の箇所にエラーが出るんですが・・・

#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
#define N 100
main(){
return 0;
}
int sigma(a,d){
int i,b[N];
double s=0;
seiki(a,d,b[]);          (★)
for(i=0; i<N; i++){
s = s + b[i];
}
return s;
}

seiki(a,d,b[]){      (★)
int i, seed, random,b[N];
seed = 2;
srand(seed);
for(i=0;i<N;i++){
random = rand()*4/randmax;
b[i]=sqrt(N/2/PI)/a/d/d*exp((-1)*random*N/2/a/a/d/d);
} }
0866デフォルトの名無しさんNGNG
> 何か★の箇所にエラーが出るんですが・・・

そうですか。お大事に。
0867865NGNG
>>866

処方箋下さいな
0868デフォルトの名無しさんNGNG
>>864
gcc -c -o func.o func.c
gcc test.c func.o
0869デフォルトの名無しさんNGNG
>>867
処方箋は C の参考書の関数と配列(かポインタ)の部分を
一から読み直すことだな。
0870865NGNG
できました。
ありがとうございました☆
0871デフォルトの名無しさんNGNG
>>836-837

コード体系の違いだろ。

おそらく、EUC(改行:LF)コードの環境で、
Shift-JIS(改行=CR+LF)コードのテキストを処理しようとしてるんだろ。
0872デフォルトの名無しさんNGNG
c言語で、外部プログラムを呼び出す際に、
他のマシンで実行させることなどはできるのでしょうか?
例えば、あるマシン local 上の main() から、
別のマシン remote 上で test() という関数を実行するとか、もしくは、
test というコマンドor実行ファイルを実行するとか。

ご教授お願いいたします。
0873デフォルトの名無しさんNGNG
Cの問題ではない
0874デフォルトの名無しさんNGNG
telnetでも使えば
0875デフォルトの名無しさんNGNG
処理系の話か
0876デフォルトの名無しさんNGNG
ネットワークプログラミングでも勉強シル!
0877デフォルトの名無しさんNGNG
初歩的な質問なんですがヘッダーファイルに

struct aaa {
int (*bbb)( ZZZZ *ggg, void *lll );
int (*ccc)( ZZZZ *ggg );

};

とあって
意味は構造体aaaに定義された関数が二つ
名前は*bbbと*ccc(ポインタ)でZZZZ等は引数
返り値はintと解釈するのでしょうか?

全然ちがったらごめんなさい
0878デフォルトの名無しさんNGNG
ZZZ*が引数の型
0879デフォルトの名無しさんNGNG
>>877
違う。構造体に関数そのものはもてない。

ZZZZ *とvoid *を引数に取り、intを返す関数へのポインタbbb
ZZZZ *を引数に取り、intを返す関数へのポインタccc
上記二つをメンバーに持つ構造体aaa
0880デフォルトの名無しさんNGNG
>>878
>>879
関数といってもあくまでポインタなのですね
とても良くわかりましたありがとうございます(TT
0881デフォルトの名無しさんNGNG
>>880
代入しないと使えないからな
0882デフォルトの名無しさんNGNG
>>881

Javaでいうリフレクションみたいなもの?@@
0883デフォルトの名無しさんNGNG
>>882
Javaもリフレクションも知らないけど、あくまでポインタなので、参照するもの(すなわち関数本体)のアドレスをいれてあげないと使えない。

int kansu(ZZZZ *a,void *b)
{
/* 中略 */
}

int main()
{
struct aaa obj={kansu,NULL}; /* メンバーaaaをkansuのアドレスで初期化 bbbはNULLに */
ZZZZ z;

obj.aaa(&z,NULL);

return 0;
}

こんな感じで使えるはず。
0884883NGNG
aaaなんてメンバーはないよ(鬱
struct aaaのaaa以外のaaaをbbbに置き換えて。
0885883NGNG
int kansu(ZZZZ *a,void *b)
{
/* 中略 */
}

int main()
{
struct aaa obj={kansu,NULL}; /* メンバーbbbをkansuのアドレスで初期化 cccはNULLに */
ZZZZ z;

obj.bbb(&z,NULL);

return 0;
}
0886デフォルトの名無しさんNGNG
関数や変数名には意味の判るものを付けましょう
0887デフォルトの名無しさんNGNG
>>886
そうですね^^;;

>>885
ここでbbbっていうメンバ名を指定する必要があるからヘッダー
ファイルで定義しているのですね@@(なるほど)
指定できる関数の範囲はpublicとかprivateとかで指定できるの
でしょうか?(まず関数にスコープの指定ができるのか知らない
です(?_?))

0888デフォルトの名無しさんNGNG
cにゃそんな指定子はにゃーよ。
構造体内はみんなpublic
0889デフォルトの名無しさんNGNG
Cの構造体は変数(言葉が不適切かも)の集合でしかない。
int a,char *pなどを一つにまとめたものでしかない。
0890デフォルトの名無しさんNGNG
>>888
何かもやもやしていたものがスッキリしました^^;
ありがと〜
0891デフォルトの名無しさんNGNG
>>872
標準Cでは無理。とりあえず、JDKもって、【RMI】だ。
0892デフォルトの名無しさんNGNG
学校でB木をCで組んでるのだが
正直C言語ってこんなにエゲつないものとは思わんかった・・
JAVAならもっと楽に実装できますかね?>JAVAもされてる方
0893デフォルトの名無しさんNGNG
えげつな・い

(形)
〔「いげちない」の転〕
(1)度を過ごして露骨に表現するさま。露骨で、いやらしい。
「―・いことを言う」
(2)やり方に思いやりや人情味がない。情け容赦もない。
0894デフォルトの名無しさんNGNG
適切な表現だな。
0895デフォルトの名無しさんNGNG
JAVAの半分は思いやりでできています
0896デフォルトの名無しさんNGNG
重い槍なんかいらねーよ
0897デフォルトの名無しさんNGNG
Javaってあれだろ、
Cに挫折した奴が使いやすいようにポインタを見せないようにしたって。
その所為で、まともなCプログラマからは却って使いにくくなったけど。
まぁなんだ、お蔭でC++に移行しやすくなったとも言えるがな。
0898デフォルトの名無しさんNGNG
消費メモリー削減のこつを教えてください
0899デフォルトの名無しさんNGNG
>>898
メモリー使い回す。
0900デフォルトの名無しさんNGNG
>>899
同じ変数を複数の用途に使うということですか?
0901デフォルトの名無しさんNGNG
タイミングの悪い初歩的な質問ですけど、

char s[5];
s[0]="*";

↑これって何でエラーになるんですか?
0902デフォルトの名無しさんNGNG
>>901
型が合わないから

s[0]='*';
0903デフォルトの名無しさんNGNG
>>896
言い得て妙
0904901NGNG
>>902
うひゃあ、そんな違いがあるんでっか!!!
どうもです。
0905デフォルトの名無しさんNGNG
2進数表示するのにこんなの思い付いたんだけど、
これってよく知られた方法なんでしょうか?

  for( i = INT_BIT-1; i >= 0; i-- )
    printf( "%d", !!( data & 1 << i ) );printf( "\n" );
0906デフォルトの名無しさんNGNG
>>905
三項演算子を使え。
0907デフォルトの名無しさんNGNG
iは0より小さくなるのだろうか?
0908907NGNG
ごめん勘違い。
俺は普通、iをbitマスクにして最上位からビットシフしていくな。
それと間違えた。ト
0909デフォルトの名無しさんNGNG
#include <stdio.h>
main(){
int a;

printf("正の値を打ち込んでください。");
scanf("%d",&a);
a=((a+5)/10)*10;
printf("一の位を四捨五入してみました。%d \n",a);

return 0 ;
}

こんなプログラムを作ったんですが、正の値が上限(?)かなにかを越えると
うまく作動しないんですがなぜでしょうか?
また、上限を完全に無くすことは可能でしょうか??

よろしくおねがいします。
0910デフォルトの名無しさんNGNG
>>909
分かっていて聞いているだろ?
0911デフォルトの名無しさんNGNG
int b;

/* 中略 */
b=a%10;
if(b>=5)
a+=10-b;
else
a-=b;
0912デフォルトの名無しさんNGNG
質問です。
int main( void )
{
 double *hage, *nuge;

 hage = (double *)malloc( sizeof( double ) * 10 );
 printf("\nhage : %p", hage);
 free(hage);

 nuge = (double *)malloc( sizeof( double ) * 100);
 printf("\nnuge : %p", nuge);
 free(nuge);

 return(EXIT_SUCCESS);
}

両方のポインタとも同じ値になっても良いと思うんですが
間隔があくのはなぜですか?
hageのあとに直ぐフリーしてもhageの前後には別の値が入ってて
同じ大きさしか旧hage領域に入れない…と考えれば良いですか?

あと、あいた間隔はOS(処理系?)が有効活用してくれるのでしょうか?
0913デフォルトの名無しさんNGNG
実装依存
0914デフォルトの名無しさんNGNG
予想されることとしては
main関数に到達するまでのコード(コンパイラが挿入するコード)
ですでにheapを使っており、その結果としてフラグメントが発生した。
たとえば空き領域が1000バイトと空き領域が50Mバイトなど。
hage = (double *)malloc( sizeof( double ) * 10 );
では1000バイトの空き領域がつかえるが、
nuge = (double *)malloc( sizeof( double ) * 100);
では1000バイトの空き領域を使えないので50Mバイトの
空き領域を使った。
こんなでどうでしょう。
ポイントはheapを使用するのはわれわれが書いたコード
だけではないということです。
0915914NGNG
追加
あと、heap管理プログラムがブロック(mallocのサイズ)によって
使用する空き領域を分けているということも考えられる。
数十バイト程度の要求と数K単位の要求を同じ空きブロック領域で
行うと、フラグメントの発生でheakの使用効率が悪くなる。
0916デフォルトの名無しさんNGNG
a += (a++)+a+(++a);

可能?
0917デフォルトの名無しさんNGNG
>>916
コンパイル可能だとしても、結果は未定義。
0918デフォルトの名無しさんNGNG
それが可能なのが何か意味があるのだろうか?
0919デフォルトの名無しさんNGNG
>>918
派遣先でちょちょいのちょい
0920デフォルトの名無しさんNGNG
>JAVAならもっと楽に実装できますかね?>JAVAもされてる方

氏ね。おまえは二度とCを使うな。破門だ。
0921デフォルトの名無しさんNGNG
JAVAなんてものは無いわけだが
0922デフォルトの名無しさんNGNG
Cだとめんどいけど勉強になるね
0923デフォルトの名無しさんNGNG
ポインタ使うことでどういう利点があるかわかりません
住所とかメモリの確保とかはわかるけどそれをどういうふうに使うと効果的なんですか?
0924デフォルトの名無しさんNGNG
効果的というか、ポインタじゃないと出来ない処理がある。
必要ないときは無理に使わなくてもいい。
0925デフォルトの名無しさんNGNG
ポインタを使わないなんてありえない
0926デフォルトの名無しさんNGNG
すべてコピーですませるとか
0927デフォルトの名無しさんNGNG
>> 923
機械語レベルではメモリはすべてアドレス(=ポインタ)で参照します。
プログラマがポインタを使わなくても、コンパイラはつかってます。
ポインタを使うとそれだけプログラマの自由度が増すということです。
0928デフォルトの名無しさんNGNG
プログラマがどう使うかって話だろ。
そんな内部的な話してどうすんだよ。
0929923NGNG
じゃあ具体的に言うとどういうことができるんですか?
0930【中吉】NGNG
test
0931デフォルトの名無しさんNGNG
int a,b;の内容を入れ替える関数を作るときとか。
0932デフォルトの名無しさんNGNG
わざわざ説明しなくても指差して「あれ」で済む
0933923NGNG
>>931
そんな関数を作らなければいいんですよね?マクロにすれば。
0934デフォルトの名無しさんNGNG
>>933
じゃぁ、構造体a,bの中身を入れ替える関数。
0935デフォルトの名無しさんNGNG
>>929
関数に文字列を渡すとか
0936934NGNG
マクロで出来るね。スンマソン
0937デフォルトの名無しさんNGNG
>>933
コマンドライン引数をつかうとき。
0938デフォルトの名無しさんNGNG
ポインタの有用性がわからないなら、今後ポインタをなるべく使わないようにプログラミングすることをお勧めする。
そうすればポインタがないとこまることにぶつかるから。
0939923NGNG
てかよくわかりません
ポインタでしかできない事が入ってるソースで解説してくれませんか?
0940923NGNG
>>938 そういうふうにやってると変な癖つきそうでいやです
0941デフォルトの名無しさんNGNG
標準ライブラリの文字列操作関数はみな引数ポインタなのだが。
そういうんじゃだめ?
全部自分でつくる? ポインタ使わないで(無理だけど)。
0942デフォルトの名無しさんNGNG
C使っていればポインタは使う必要が出てくると思うけどなぁ。
共用体とかビットフィールドならまだしも・・・・
0943デフォルトの名無しさんNGNG
>>940
たとえばどんな?
0944デフォルトの名無しさんNGNG
外部プログラムを実行、結果を変数に入れたいのですが、
どうすればよいのでしょうか。
よろしくお願いします。
0945デフォルトの名無しさんNGNG
どんな外部プログラム?
0946デフォルトの名無しさんNGNG
>>944
スレ違いだが、popenを使ってみぃ
0947944NGNG
自前です。
もしくは、普通のコマンド。
標準出力に結果を出します。
0948944NGNG
popen ですか?
使い方が分からないので、
使い方、もしくは参考ページを教えてもらえませんか?
0949デフォルトの名無しさんNGNG
>>940
心配するな。どんな変な癖がついても、ポインタ使わずにまともアプリは作れないから。

つまり今あんたは、まだそういうレベルに達していないと言うこと。

ポインタ以外にも覚えることはある。

そういうのをすっ飛ばしてポインタだけ覚える方が変な癖がつくと思うよ。
0950デフォルトの名無しさんNGNG
ググレって
0951デフォルトの名無しさんNGNG
>>948
マニュアル持っていないの?
標準じゃないからpopenがあるかどうかは分からない。UNIX系ならまずあるだろうけど
0952デフォルトの名無しさんNGNG
>>939
main(){
FILE *pf;
fopen(fp,"data.txt","w"); /* ファイル構造体のポインタを使わなければファイルを扱えない*/
while(fgets(fp,buf,BUFZISE)){
/* : */
}
fclose(fp)
}
0953デフォルトの名無しさんNGNG
>>952
おーい、fopenの使い方が違うぞー
0954デフォルトの名無しさんNGNG
引数違うし、戻り値を受けていないし、wなのに読んでいるし。
0955952NGNG
うほっ
0956デフォルトの名無しさんNGNG
fgetsも引数が(ry
0957デフォルトの名無しさんNGNG
>>954
可哀想だからpfとfpも突っ込んでやれよ
0958952NGNG
うほ、我ながらこりゃ酷い。
0959デフォルトの名無しさんNGNG
10行足らずのコードでそこまでまちがうって、確信犯でなければ
ある意味すごいね。
0960デフォルトの名無しさんNGNG
>>923
そんな質問しても、あんまり意味なくねー。
ポインタってもっと深い、ポインタだけで本も出てるしな、読んだことはないけど。
ここでどんな例がでてもポインタの一面を見ているにすぎない。
ポインタをポインタそのものとして受け止めれるように勉強しろ。
0961デフォルトの名無しさんNGNG
>>960
ほ、惚れた・・・・
0962デフォルトの名無しさんNGNG
CをやるならLinuxだ!
0963デフォルトの名無しさんNGNG
NULLポインタとは具体的に言うと、どこも差していないポインタということですか?

if( lp == NULL ) lpはNULLポインタが入っている
と
id( i == NULL ) iはint型

は、NULLマクロでポインタと整数値を比べていますけど、なぜこういうことが可能なんでしょうか?
0964デフォルトの名無しさんNGNG
>>923
ポインタでしか出来ない事
p=malloc(n);
0965デフォルトの名無しさんNGNG
Mac OS X という道もある。
0966デフォルトの名無しさんNGNG
ポインタいらねーとか言ってる奴って
「ええ〜? なにそれ〜、パァ子わかんな〜い」って
情報隠蔽と似て非なる思想の持ち主が多い

ソフト作るより使え、それに向いている
せいぜい配列でリストでも作って遊んでろ
0967デフォルトの名無しさんNGNG
>>963
多分
#define NULL 0
になってる処理系を使ってるんだと思うが、
だからといって NULL と整数値を比べるべからず。
0968デフォルトの名無しさんNGNG
>>963
NULLは各変数等々他の全てのポインタが取りうる値と一致しない事が保証されてる値
0969デフォルトの名無しさんNGNG
>>962
逆だろ。
0970デフォルトの名無しさんNGNG
>>963
整数値とポインタを比べることはできる。警告は出るだろうが。
0971デフォルトの名無しさんNGNG
0番地ってないんかな?
0972デフォルトの名無しさんNGNG
よく分からないんですけど、UNIXはCでできてるんですよね?
UNIXとLinuxはどちらがCの開発に向いているんでしょうか?
0973デフォルトの名無しさんNGNG
>>972
UnixとLinuxの違いを調べてきたら答えてあげる。
0974デフォルトの名無しさんNGNG
>>973
Linuxはペンギンたんでふ
0975デフォルトの名無しさんNGNG
試験期間か
0976デフォルトの名無しさんNGNG
質問がおかしいよな。
OS関係ないだろ。何を作るんだよ。
0977デフォルトの名無しさんNGNG
NULLはなんで予約語じゃなく#defineですか?
nullとかにすればいいのに
0978デフォルトの名無しさんNGNG
C言語のコンパイラを開発するんだったら、yaxx/lexがはいってるGNU環境をお勧めしてみよう。
0979デフォルトの名無しさんNGNG
>>977
予約語の意味を勉強し直して来て下さい
0980デフォルトの名無しさんNGNG
>>977
ヌルポインタは 0 で表現する、と決めちゃったから、
別な予約語を導入したくなかったんじゃないの?
0981デフォルトの名無しさんNGNG
>>963
ポインタのNULLは無効なポインタということ。
ところがポインタに無効なという情報をもてないので普通は
#define NULL 0
で0番地を犠牲にしているのです。
まあ、アプリケーションプログラムが0番地を参照することは
なかろうということからです。
よくNULLは0であることを前提にしているコードを見るがこれは
問題あり。
#define NULL 0xffffffff
でも理屈からしたらよいわけです。

>>923
ポインタはどちらかというと高度というよりは原始的なものです。
Cでポインタを使わないプログラムを作れますが、Cのよさはその
原始的なところにあるので、ぜひマスターしましょう。
0982デフォルトの名無しさんNGNG
原始的じゃなく低レベルと言いたいな。
0983デフォルトの名無しさんNGNG
>>981
だめだろ。
NULLは0か(void *)0
それのビットパターンが全て0とは限らないけど。
0984デフォルトの名無しさんNGNG
>>981
> #define NULL 0xffffffff
それはだめだ!
0985デフォルトの名無しさんNGNG
>>980
>ヌルポインタは 0 で表現する、と決めちゃったから、
その手のネタは、飽きるほどやってるから、やめて
0986デフォルトの名無しさんNGNG
釣りか?
0987デフォルトの名無しさんNGNG
>>983
0なら全てのビットパターンが0になる事は保証されてたはず
0988683NGNG
>>981
大変勉強になりました
お礼にバナクリしてきます
0989デフォルトの名無しさんNGNG
>>987
#define NULL 0かつ、int a=NULL;とかやったらね。
ポインタとして使うという意味に決まっているでしょ・・・
0990デフォルトの名無しさんNGNG
>>987
0 というリテラルを整数値として使うならそうだろうが。
こういう場合、0 だけが表示されるとは限らない。

int i;
void *p = 0;
for(i = 0; i < sizeof (void *); i++) {
 printf("%d\n", ((char*)&p)[i]);
}
0991デフォルトの名無しさんNGNG
このスレの最初の最初にリンクがあるのに。
http://www.catnet.ne.jp/kouno/c_faq/c5.html#0
0992デフォルトの名無しさんNGNG
なにも指していないことなんて保証できないよな。
ポインタであればかなら何かさしているだろ。
どんなデータだって同じメモリの中に格納できるんだから。
0993デフォルトの名無しさんNGNG
なんつーか、説明するのがメンドイから一度しか言わない
C言語ではNULLは内部的には、何処を指していようが構わない
その処理系でNULLである事が一番自然なポインタを指せば良い
また、全ての有効なポインタは0を指さない事が保証されている
また、0とNULLを比較しても等しい事が保証されている
結果、NULLを0にしてる処理系が圧倒的に多い
0994デフォルトの名無しさんNGNG
ところでお前ら、次スレは?
まだ前スレが1000行っていないというのにこちらは1000目前とは。
0995デフォルトの名無しさんNGNG
次


                ス
      レ
0996デフォルトの名無しさんNGNG
じゃぁ、次スレ

C言語なら俺に聞け! Part 59
http://pc2.2ch.net/test/read.cgi/tech/1056109884/
0997デフォルトの名無しさんNGNG
>>992
疲れるが釣られてやる。
int a; で &a とか
int* p = malloc(10 * sizeof (int)); の p とか
そういう風に得られたどんなポインタと比較しても
一致しないことが保証されているのがヌルポインタだ。
0998デフォルトの名無しさんNGNG
記念カキコv(^-^*)
0999デフォルトの名無しさんNGNG
1000かよ
1000デフォルトの名無しさんNGNG
1000だね
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。