[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 00:45 / Filesize : 237 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 23



1 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:49:22 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 22
pc11.2ch.net/test/read.cgi/tech/1196489491/

教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 101
pc11.2ch.net/test/read.cgi/tech/1197132472/

654 名前:デフォルトの名無しさん [2008/01/08(火) 03:46:36 ]
>>652
面白くなってきたのか!!
良いことだ!!
ただ油断するなよ。
scanfの仕様をもう一度確かめるんだ!!
不具合が多くて嫌になるぜ!!

655 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 05:02:29 ]
>>653
ほとんど使わないのかよ!

>>653
printfとかだとなんか字がでてくるだけでつまらなかったけど
scanfだとキーボード側から入力できて面白くなってきたぜ
しかし練習問題やったら、doubleなのに変換仕様を%fにしてたり
変数の前に&入れてなかったりとミス多発\(^o^)/

質問スレなのにすいません

656 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 05:50:55 ]
>>655
scanfは正しい入力をしているならまだいいが、ひとたび間違った入力が来ると簡単にバグの原因になる。
整数(%d)を欲しいところで文字列なんて打っちゃった日にはもう・・・
まぁ外に出すようなものじゃなければ気にしなくてもいいけどね。
慣れてきたらそこらへんも勉強してみるといいと思うよ。

657 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:03:25 ]
>>651
0 == feof(fp)

658 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 10:07:45 ]
!feof(fp)
だろ。それじゃ4バイトも無駄になる。

659 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 10:15:14 ]
とりあえず、入力と出力ができるようになってからいろいろ試せるんだし
scanfから入るのもいいんじゃない?そのうち使わなくなるだけで

660 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:18:16 ]
>>658
どこでどんな4バイトが無駄になるんですか?

661 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:40:14 ]
>>656
それは返り値でなんとかなるだろ
いやscanfで値取得がだめなのはもちろんなんだがな、オーバーフローは検知不可能できないし

そもそも>>658は誰宛なんだよwww

662 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:48:35 ]
>>661
>オーバーフローは検知不可能できないし
検知できるんですか? できないんですか?
そもそも、その「オーバーフロー」とはなんのことですか?



663 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 13:49:56 ]
知らない言葉が出てきたら自分で調べる癖つけないといつまでたっても上達せんよ

664 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:04:00 ]
>>662
オーバーフローとは
風呂にお湯を張るとき、止めるのを忘れたときに起こる奴

665 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:07:58 ]
エウレカ!エウレカ!

666 名前:662 mailto:sage [2008/01/08(火) 14:57:16 ]
>>663
「オーバーフロー」の意味は判るのですが、整数値の入力でどんなオーバーフローが起きるのかと思いまして。

667 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:07:06 ]
intの最大値は(4バイトの場合)2147483647でこれ以上大きい数値は格納できない。
longもunsignd intもcharもそれぞれに最大・最小値があるから、それを超える値を入力されると困る。

668 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:38:01 ]
char *foo[] = {"C/C++", "は", "市ね"};
のような文字列の配列があった場合に、この配列の長さ(上の例では3)を
取得するにはどのようにすればできるでしょうか?

length のような関数があるのではないかと思うのですが、、、

669 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:39:06 ]
sizeof(foo)/sizeof(*foo)

670 名前:662 mailto:sage [2008/01/08(火) 15:49:00 ]
>>667
なるほど。で、それは検知不可能なんですね?
では検知できる入力関数はあるのでしょうか。
或いは、桁数制限してしまえばオーバフローは回避できますよね。

671 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:55:39 ]
getsとかで数字を文字列として読み込んで、atoiとかで文字列を数字に変換する、とか。
文字列としてならいくらでも大きい数値を入れられるし、atoiはオーバーフローを検知してくれる。

672 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:12:32 ]
>>669 ちょっとダサイけど、thx!



673 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:16:36 ]
>>671
getsはない。

674 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:19:02 ]
んだ。今度はバッファオーバーフローだな。

675 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:20:31 ]
scanfでも桁数制限できるだろ

676 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:24:41 ]
>>650
if(!num) はif(num == 0)と
if(num) はif(num != 0)と同じ意味

while(!feof(fp))はfeofの返り値が0になるまでって意味

677 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:32:53 ]
ごめん
feofの返り値が0の間

678 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:38:00 ]
>>671
果てしなく無意味なオーバーフロー対策だなwwwwwwwww

679 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:39:34 ]
プロンプトで入力待ちするプログラムなんて練習のときくらいしか使わんからなんでもいいべ
リダイレクト前提のやつはこの限りでもないが。

680 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:56:16 ]
for(i=0; i < 10; i++){
printf("%d %d\n",x++,x);
}
だと表示される値は2つとも一緒なのに
printf("%d %d\n",x,x++);
に変えるとなぜ左側のほうが大きくなるのでしょうか?
後ろに++を付けているのだから右側が大きくなるべきだと思うのですが

681 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:57:05 ]
なんだべきって

682 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:58:08 ]
>>680
それ未定義動作
まあ理由としては、引数は後ろからスタックに積むから後ろの式を先に評価するケースが多いからだろうな。



683 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:03:12 ]
>>681
「べき」って使いませんか?
「大きくならなければならないと思うのですが」というニュアンスです。

>>682
素早い回答有り難うございます。

684 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:10:17 ]
681は日本語を勉強するべきだろう。

685 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:49:24 ]
SEになりたくて、IT企業に就職しても、
途中で挫折する人がいて退職する人も多々いると聞きます。
そう言われてる箇所は、だいたいどういう箇所なのか
具体的に教えてくれませんか?

686 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:50:06 ]
人間関係

687 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 18:03:14 ]
マ板で聞け
pc11.2ch.net/prog/

688 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 20:04:43 ]
UNIX Cシェルのmakefileで、
外部の環境変数が設定してあるファイルを
makefileの中から読み込むことって出来ますか?
出来るなら方法を教えてください。

689 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 20:17:37 ]
さすがにそれはシェルスクリプトのスレかmakeのスレで聞いた方がよくね

690 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 20:29:21 ]
>>689
ありがとうです
makeスレがないですね
シェルはあまり関係なさそうだし・・
うーん。どこがいいんだろ・・

691 名前:688 mailto:sage [2008/01/08(火) 20:38:44 ]
それっぽいスレ見つけました
そちらで聞いてみます。どうもありがとうでした。

692 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:03:00 ]
fopenの書き込みモードで第1引数(?)にC:\save.txtのように入れたのですが、指定したフォルダを探してもファイルがありませんでした。
エラーは出なかったのでおかしいと思って、読み込みモードで同じフォルダを指定すると読み込むことができました。
あれ?と思いそのフォルダを開いてみたのですが、ファイルは見当たりませんでした。
これはどういうことなんでしょうか?



693 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:04:03 ]
>>692
C:\\save.txt

694 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:05:43 ]
え?ファイルが無いのに読み込めたの?

695 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:08:09 ]
>>693
ありがとうございます!
ファイルを保存できました。

>>694
そうなんです
これはなぜだったんでしょうか?

696 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:35:54 ]
>>695
書き込みモードで起動したときにファイルを作成したと思う。

697 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:51:47 ]
>>692
別のフォルダでsave.txtというファイルをまず作ってくれ
それをお前さんが指定したフォルダにコピーできるか試してみてくれ
あと使っているOS教えてくれ
見えないというのはGUIを使っているということでいいのか?

698 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:13:51 ]
>>697
コピーできました。
OSはWindowsXPです。
GUIです。

D:\save.txtで書き込むとちゃんとファイルが出来ました。
指定したフォルダはCの中にあり、その奥に既にsave.txtがあったのが問題だったのでしょうか?
勝手に探してくれたということだと思うのですが。

699 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:25:38 BE:314515679-2BP(294)]
上のほうでfeof()で終了判定してるやつがいるけど、どこの素人だよ。
fscanf()がEOFを返したときに終了するのが普通。

700 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:08:51 ]
>>698
何も解決にならないでこんなこというのもなんだが
画面に絵とかファイル名とかが表示されてないだけで実際はファイルが生成される現象かな
Windows使ってる友人から以前聞いたことある
ブラウザからテキストの内容を見ることできると言っていたかな
力になれなくてすまん

701 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:16:15 ]
>>699
なら>>645のためにも
>>648よりスマートに書いてみろよw

702 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:36:51 BE:29954423-2BP(294)]
feof()の仕様って欠陥だろ。
なんでこんな使いどころのない関数があるんだよって感じ。



703 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:39:32 ]
エラー時に、ファイル終端に到達したのか
エラーが発生したのかチェックするために使うんじゃね。

704 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:05:44 ]
バイナリファイルはfeofで、特に他では使うなとか聞いたな

705 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:07:24 ]
>>704
それを言ってた奴は馬鹿。

706 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:10:05 ]
読み込みエラーが発生して、ずっとエラーから復帰できなかったら、
永遠にファイル終端に達しないから、エラーチェックしないと feof は危険。
しかし、そのエラーチェックでファイル終端も分かるから・・・。

707 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 10:00:41 ]
feofが単独で存在するのは読まずにチェックすることがあるからで、
読んでるのなら使うことはないな。

708 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 16:03:33 ]
まあ、読まないとEOFフラグセットされないわけだが

709 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 22:44:54 ]
0バイトのファイルを開いた直後の状態でもEOFではないでしょうか?

710 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 22:46:43 ]
ではない

711 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 00:44:18 ]
別に読むのがライブラリで自分が読まないケースだってあるんだよ

712 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:27:56 ]
>645 は1行あたりのデータ数がまちまちなんだが、そもそも
>2次元配列にいれる
っていうルールはどんなんだ?



713 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:41:23 ]
連投嫌われる?
聞きたい事いいいいっぱいあるです・・・。

714 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:49:36 ]
重要度の高い順に少しずつ質問すればいいと思うよ。

715 名前:713 mailto:sage [2008/01/10(木) 02:57:50 ]
じゃぁひとつだけ><

ソケット通信用のIOを得たときや、
open などのシステムコールを使って
ファイルディスクリプタを得た時など、
これらのリソースが正数型で返されますが、
この返り値は単なる確保したIOリソース用の
管理用番号みたいなモノと考えて良いのでしょうか?
また、もしそうならば、同一の正数値を指定さえすれば、
同じリソースに対して操作が可能なのでしょうか?

716 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:02:50 ]
>>715
open()の度に更新されるから、無理。勿論、close()しない限りは変わらないが。
# 例外は、stdin, stdout, stderr, stdaux相当のディスクリプタ。

717 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:17:54 ]
>>716さん
レスありがとうございます!

>open()の度に更新されるから、無理。
これに関してはもちろんわかっています。
ただ、返り値自体がどの範囲でどういった形で、
有効なのかが解らなかったもので…。
(IOを得るのにポインタとかで操作しないのかなー?と思ったのです。)

同じプロセス上から同じ値で参照した場合。
という意味で書きました。解りにくくてすみません…。

でも
>勿論、close()しない限りは変わらないが。
ということは715は合ってると考えていいですよね?

># 例外は、stdin, stdout, stderr, stdaux相当のディスクリプタ。
参考になります!

718 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:19:37 ]
訂正です。

誤:ということは715は合ってると考えていいですよね?
正:ということはclose()しない限りは715は合ってると考えていいですよね?

結果的に連投になってしまいましたすみません><

719 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 03:30:02 ]
>>718
同じプロセス上でopenしたままの記述子なら同じ。
というかそうじゃないと全てのIOが出来ない。

720 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 04:17:52 ]
char array[256];
と宣言したら
sizeof(array);
で256が返ると思います。でも、

void print_arraysize(char *array) {
  printf("%d",sizeof(array));
}

というようにするとポインタのサイズが返ります。
呼び出される関数側から配列のサイズを知る方法はありますか?

721 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 04:22:46 ]
>>720
Cでは無理です。諦めて、その関数にサイズも渡すしかありません。

722 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 12:21:11 ]
>>720
構造体の中に配列入れて構造体を引数にすれば、関数に配列を渡せる。
ただ、関数を呼ぶときに構造体の中身の全コピーが作られるので、激しく無駄。

配列の要素数を1つ多めに作っておいて、そこに目印となる値を入れておいて、
関数側で数えるという手もある。

けど結局はfunction( array , sizeof(array) )のようにして呼び出す
関数を作るのが一番かと。



723 名前:デフォルトの名無しさん [2008/01/10(木) 13:52:06 ]
自然数n = 10, r = 0, 1, . . . , 10 に対してnCr を出力するプログラムを教えてください。もしくはそれが載ってるサイトを教えてくださいm(__)m

724 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 13:55:15 ]
>>723
C/C++の宿題を片付けます 102代目
pc11.2ch.net/test/read.cgi/tech/1199515728/

725 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:23:44 ]
くだらない質問なのですが
Cで

static int hoge;
int static hoge;

の違いって、前者が大域変数になって
後者が関数内で静的な、値を保持しつづける関数になるってことですか?

726 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:26:52 ]
違う。
staticのような修飾子と型名は順不同というだけ。

727 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:28:17 ]
>static int hoge;
>int static hoge;

その2つは一緒

>前者が大域変数になって
>後者が関数内で静的な

それは宣言する場所で変わる
関数の外で宣言すれば大域
関数の中で宣言すれば関数内のみ

728 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:39:05 ]
関数内でも大域にならない?

729 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:44:34 ]
寿命はそうだがスコープは地が宇部

730 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:49:33 ]
なんで意味合いの違うものに両方staticなんて割り当てたんだろうな。
ファイルローカルはexternに対してinternalとかにすりゃよかったのに。

731 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 20:56:39 ]
C++では無名名前空間で対処したな。

732 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:05:53 ]
>>725ですが
ちょいとまだ把握できてないです

void main(){
int hoge[400000];だとアウトで
static int hoge[400000]; だと領域が確保できて

}

教えてくれた人が「static使うと、たくさん取れるよ」と言ってくれたので調べたのですが
どうもそういうことが見当たらなくて「静的な」とか。

上のような使い方は間違ってますか



733 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:11:25 ]
それは、static つけないとスタック領域を使うし、
スタック領域は他と比べるとかなり小さいから。

まあ恒久的なプログラムじゃなくて、一時的な使い捨てプログラムのときはそうやることもある。

734 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 21:32:40 ]
つまり、staticつけると
大域変数と同じところのメモリ領域を使うということですか。



735 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:02:25 ]
そゆこと

736 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:08:02 ]
了解しました!

737 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 02:32:24 ]
>>733
メモリ制限厳しい組込みとかだと普通にやるよ。
まぁでもソコまでだと、外部変数のバッファを使いまわしてチューニングする方が多いかも。
そんなんやりたく無いんだけどね・・・ハードコスト削減には勝てんわ。

738 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:09:17 ]
音声出力のソースを作っています。
以下のソースで、ファイルは出力されるのですが、音声が出てきません。
どこを修正すればよいか教えていただけませんか?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE 22050*5
#define OFFSET 23
int main(int argc,char *argv[])
{
FILE *fp;
short int inbuf[SIZE];
short int outbuf[SIZE];
int i,f,f0,amp,PI;
f = 440;
f0 = 11050;
amp = 5000;
if((fp = fopen("test-sound-16-22.wav", "rb")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}

739 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:10:09 ]
続き

fread(inbuf, sizeof(short int), SIZE, fp);
fclose(fp);
for (i=OFFSET; i<200; i++)
printf("%d, ",inbuf[i]);
printf("\n");
for (i=0; i<OFFSET; i++)
outbuf[i]=inbuf[i];
for (i=0; i<(SIZE-OFFSET); i++){
outbuf[i+OFFSET] = amp * sin(2*PI*i*(f/f0));
}
for (i=(SIZE-OFFSET); i<SIZE; i++)
outbuf[i]=0;
if((fp = fopen("testfile2.wav", "wb")) == NULL ) {
printf("ファイルオープンエラー\n");
exit(EXIT_FAILURE);
}
fwrite(outbuf, sizeof(short int), SIZE, fp);
fclose(fp);
return 0;
}


740 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:15:12 ]
>>738

音声を出力するところがどこにもないじゃん。


741 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:15:13 ]
出力された音声はどんなふうになってる?
あとsin()の中intになってないか?

742 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:15:43 ]
音声→音声ファイルね



743 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:25:55 ]
>>738
PIの初期化してないじゃん。ちゃんとデバッグしてんの?

744 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:29:16 ]
そーだ、それも書くの忘れてたw

745 名前:738 mailto:sage [2008/01/12(土) 13:29:36 ]
これとほぼ同様のソースで、2倍の周波数(以下のソース)で出力するものは、
きちんと出力されて、音声も出ています。
正弦波の合成はなぜか出来ない・・・

>> 740
音声ファイルを出力するところがないとは?音声ファイルは出力されていますが・・・

>> 741
出力された音声ファイルは何も発音がありません。
ファイルのサイズはきちんとあるので、データは自体は出力されていると思うのですが・・・

for (i=0; i<(SIZE-OFFSET)/2; i++) {
outbuf[i+OFFSET]=inbuf[i*2+OFFSET];
}
for (i=(SIZE-OFFSET)/2; i<SIZE; i++)
outbuf[i]=0;

746 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:29:48 ]
math.hにPIが定義してあるのかとおもったが、そうでもないな

747 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:30:48 ]
とりあえずPIの定義と、sin()の2を2.0にしてみ

748 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:38:51 ]
何も言わずにコピペだとマルチうぜーとか言われそうなもんだけど、ここの住人は優しいんだな

749 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:53:05 ]
>>745
デバッガで変数の値見ながら実行すればすぐに分かりそうなもんだけど。

750 名前:738 mailto:sage [2008/01/12(土) 14:09:29 ]
解決できました。皆さんありがとうございます。

751 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 06:12:14 ]
構造体で
氏名
年齢
住所
が入る変数を宣言しその構造体の配列を10人分用意しループで順番に入力してもらい氏名、住所、年齢に
空ENTERが入るとループを終了するということをしたいのですが。

全ての項目に空ENTERが入力されるとループを終了するという所をどのように書けばいいのかわかりません。
教えて下さい。


752 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 06:37:02 ]
>>751
空ENTERが入力されたかどうか判別するプログラムは作れるのか?



753 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 10:41:06 ]
>>751
氏名をfgets関数で入力し、strlen関数で氏名の文字数を求め、それがゼロだったら終了

754 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 12:34:26 ]
fgetsってファイル関連の関数じゃないの?
文字入力として使えるの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef