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


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

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131



1 名前:デフォルトの名無しさん [2007/02/01(木) 23:08:46 ]
このスレは標準Cのみの限定スレです。
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

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

他の過去ログはここに
nssearch.hp.infoseek.co.jp/clang/
前スレ
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
pc10.2ch.net/test/read.cgi/tech/1159613789/


GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は
専門の別スレッド↓があるのでそこへさようなら。

【初心者歓迎】C/C++室 Ver.34【環境依存OK】
pc10.2ch.net/test/read.cgi/tech/1169039760/
C/C++の宿題を片付けます 82代目
pc10.2ch.net/test/read.cgi/tech/1169575464/

802 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 10:02:37 ]
規格読む→実験する→2chで煽りつつ確かめる

803 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 10:11:19 ]
規格読む前に実験した方が実感しやすいな。

804 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 10:36:58 ]
その通りだ。実験して、壁にぶち当たって、その壁をぶっ壊せ!
フラグメンテーションエラーで、メモリーもぶっ壊せ!
そして泣きながら規格読んで実感だ!

805 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 11:26:38 ]
>>804
>そして泣きながら規格読んで実感だ!
お疲れ様です。

806 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 11:51:31 ]
C++ だが、export は色んな意味で泣ける。

807 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 12:27:13 ]
俺の胸でなけ

808 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 13:02:06 ]
俺の下であがけ

809 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 14:42:57 ]
実験だけじゃ優先順位なのか結合の方向なのか解らない、と。
まぁ、&a->bくらいなら、どっちでもいいけど。

810 名前:デフォルトの名無しさん mailto:sage [2007/07/21(土) 16:25:12 ]
&a->b が (&a)->b と見做されるんだとしたら
皆 a.b と書くと思うんだわ。



811 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 00:30:44 ]
&a.bじゃないか?

812 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 00:31:41 ]
終電まで仕事してて疲れてた。>>811はお願いだから忘れて

813 名前:デフォルトの名無しさん mailto:sage [2007/07/22(日) 10:05:19 ]
CD-R に保存しました

814 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 03:59:19 ]
石版に刻みました

815 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 09:46:04 ]
DNAに移植しました

816 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 10:10:45 ]
アカシックレコードに刻まれました。

817 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:15:00 ]
C++ の STL に感動しました
C言語で STL に似たことをしたいと思ったらどうすれば良いですか?

818 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:16:19 ]
C++に乗り換える。

819 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:17:24 ]
やっぱりそれが確実ですよね

820 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 00:20:58 ]
マクロを使う。



821 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 02:11:51 ]
そういえば、templateが使えない時代にはgeneric.hってのがあったな

822 名前:デフォルトの名無しさん mailto:sage [2007/08/01(水) 21:08:58 ]
>>817
こんなんあった。かなりSTLに近いんじゃないか?
マクロを使ってるからデバッグがむずかしそうだが


>sourceforge.jp/projects/cstl
>CSTLは、C言語で使えるC++のSTLライクなコンテナライブラリです。
>vector, deque, list, set, multiset, map, multimap, stringを提供します。

823 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 10:16:24 ]
FILE *t=tmpfile();
で作成したtを
fclose(t);
してもいいですか?
なんか危なくて、こわいです。


824 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 10:24:04 ]
なんで危ないんだよw
まあ、またその内容を使うことがあるなら閉じちゃだめだが。

825 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 10:44:31 ]
ええ!
fclose(t)ってやってよかったの?

826 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 10:56:00 ]
C言語辞典見てみたけど、やっていいみたい。

827 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 11:09:09 ]
用がなくなったら閉じないとダメだろ。常考。

828 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 11:52:56 ]
tmpfile()は、そのファイルがクローズされたか、またはプログラムが終了したときに
自動的に削除されるファイルを生成し、そのストリームへのポインタを返す。

何も問題はない。

829 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 06:35:21 ]
自分ならOOライクにたとえ1行で済んだとしても生成と破棄を対にして両方の関数を作る

830 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 07:59:09 ]
なら別にC使わないで他のOO使えばいいじゃん。頭かたいね。



831 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 08:38:00 ]
生成と破棄を対にすることがOOライクだと思うくらいならそれでもいいんじゃね?

832 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 09:21:23 ]
ぷっ

833 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 11:09:16 ]
>>830
固いんじゃなく、弱いんだろう。

834 名前:デフォルトの名無しさん mailto:sage [2007/08/03(金) 23:43:24 ]
>>822
面白そうなものがあるんですね
GPLじゃないところもイイ!

ただ、著作表示だけはしないといけないようですね

835 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:29:40 ]
>>834
BSDライセンスらしいから緩いでしょ

836 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 00:34:52 ]
いや修正BSDって中のファイルに書いてるじゃん

837 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:02:02 ]
////(main.h)
#ifndef MAIN_H
#define MAIN_H
int X
#endif
////

////(main.cpp)
#include "main.h"
#include "move.cpp"
main(){
move();
}
////

////(move.cpp)
#include "main.h"
move(){
(Xを操作する処理)
}
////

ゲームプログラミングを勉強中で、大筋で感じな状況になってます。
これをコンパイルすることも実行することもできるのですが
BCCでコンパイルすると、「パブリックモジュール_Xが、main.objとmove.objの
両方で定義されている」と警告されます。
これはどういうことで何が悪いのでしょうか?
グローバル関数を使いながら、ファイルを分割してみたいのですがどうしたらいいのでしょうか?





838 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:03:42 ]
>>837
////(main.cpp)
#include "main.h"
#include "move.cpp"←いらなくね?

839 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:06:54 ]
int X;
    ~

840 名前:837 mailto:sage [2007/08/05(日) 18:15:40 ]
>>838
それを消したら、未定義の関数moveを呼び出したなどとエラーだ出ます。

>>839
掲示板に書き込む時に簡略化したら忘れてしまいました。



841 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:21:04 ]
>>837
宣言と定義の区別をしっかりと。ヘッダには変数や関数の宣言だけ置くこと。

842 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 18:23:31 ]
プロトタイプ宣言でググれ

843 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:04:20 ]
////(main.h)
#ifndef MAIN_H
#define MAIN_H
extern int X;
#endif
////

////(main.cpp)
#include "main.h"
#include "move.h"
int main(){
move();
}
////

////(move.h)
#ifndef MOVE_H
#define MOVE_H
int move();
#endif
////

////(move.cpp)
#include "main.h"
int move(){
(Xを操作する処理)
}
////

844 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 20:05:03 ]
まちがった

////(main.cpp)
#include "main.h"
#include "move.h"
int X;
int main(){
move();
}
////


845 名前:◆V92eIRyEPU mailto:sage [2007/08/14(火) 14:48:11 ]


846 名前:◆J/ZoJAt3T2 mailto:sage [2007/08/14(火) 14:50:07 ]
テスト

847 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 23:58:55 ]
>>843-844
俺なら、
extern int X; はmove.h側に入れて、int X; は move.cpp に入れて、
main.hは消すかな。細かいことですんませんね。

>>837
安心しなさい。あなたの方が、うちの元請けより優秀です!
ちゃんと #ifndef使うあたりが。

848 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/19(日) 03:09:14 ]
すいません最近c言語を習い始めたのですが、円の半径(double型)をあたえて、円周の長さと
と円の面積を表示するプログラムがどうしてもできません。
どうすればよいのでしょうか?

849 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 03:47:30 ]
お前さんが書いたコードを晒せ

850 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 04:10:29 ]
その前に初心者スレに行け。



851 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 10:50:59 ]
>>848が出来ない可能性
・scanfで&忘れ、%dを指定している
・式中にint型とかを使っている
・まともに調べてない、読んでない
・円周の長さ、円の面積が分からない

852 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 10:57:20 ]
#define PI 3

853 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:33:21 ]
ゆとりな定義だな

854 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 12:39:38 ]
#define ENSYUURITSU 3

855 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 18:23:29 ]
>>848 どぞ。

double pi = 3.14159265358979323846
double r = 1.0;
double s = pi * r * r;
double d = 2 * pi * r;
printf("s=%f,d=%f\n",s,d);

856 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:58:27 ]
どうでもいいが円周はlな方がしっくりくる

857 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 21:16:49 ]
#include <math.h>
double pi = atan(1) * 4;

858 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/20(月) 02:27:48 ]
>857
ありがとうございます。あと家でc言語使えるようにしようと思って
microsoft.net Framework version 2.0 再頒布可能パッケージ
microsoft.net Framework version 2.0 SDK 日本語版
をダウンロードしたのですが友達の話によると
microsoft.net Framework version 2.0 日本語版 language pack
が必要らしいのですがmicrosoftの公式サイトに行っても見つからないのですが
どうやったら手に入るのでしょうか?
すごい初歩的な質問ですいません。

859 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 05:52:55 ]
>>858
初歩的以前にスレ違いなんだが自覚あるか?

860 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:16:00 ]
math.hインクルードするならM_PI使ったほうが早い



861 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:20:12 ]
>>860
M_PIは標準ではない。

862 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 09:45:41 ]
ここは世界レベルでの標準に関わる内容のスレです。標準的ではない手法はお断りします。

863 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 10:10:12 ]
M_PIが無い最近の環境って何がある?

864 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 10:18:59 ]
つ MS Visual C++

865 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 10:28:00 ]
gccでもansi適合モードにするとスルーされる。

866 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 13:43:09 ]
VC++は定義されてないのがデフォで、_USE_MATH_DEFINESを定義すると使えるようだね

867 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 14:00:16 ]
関数から構造体を受けることはできたんですが,構造体を渡して,受け取る関数を作りたいのですが
どのように記述すれば良いですか

struct Initset getinfo(struct Initset *syoki2)
↑のような記述はできないですか?

868 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 14:07:52 ]
それでいいです

869 名前:867 mailto:sage [2007/08/24(金) 15:10:45 ]
>>868
できました〜。ありがとうございます

870 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/24(金) 16:41:08 ]
入力した自然数nの正の約数をすべて表示するプログラムを今、作っているのですが、
int main(void)
{
int a = 1;
int n = 500;
int f = n / a;

while(a < n) {
a += 1;
}
printf("%d\n",f);
return 0;
}
上のものは自分がわからないながらも作ったものです。
でもできませんでした。
改善点お願いします。



871 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:52:01 ]
while(a < n) { と a += 1; の間に
if (n % a == 0) {
printf("%d\n", a);
}
とか入れてみ

まあ約数なら 1/2 以上はありえないから省くとかするけどな。
入力とかはとりあえずscanfかなんかで。

872 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 16:57:44 ]
>>870
まず処理の流れ自体がわかってないだろう
もう一回教科書を読み直せ

873 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:19:39 ]
入力した自然数nの正の約数をすべて表示するプログラムを今、作っているのですが、
int main(void)
{
int a = 1;
int n = 500;
int f = n / a;

while(a < n) {
a += 1;
}
printf("%d\n",f);
return 0;
}
上のものは自分がわからないながらも作ったものです。
でもできませんでした。
改善点お願いします。


874 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 23:30:37 ]
改善というか、まずプログラムを使わずに
正の約数を全て列挙する方法すら分かってないように思える。
プログラム以前の問題。

875 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 00:30:50 ]
どういう順番での実行を予想してるんだ?

876 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/25(土) 00:41:32 ]
870ですが約数をすべて列挙する方法ってnまでの数ですべて割る条件式つくって
それが成立するやつを表示するプログラムでよいのですか?

877 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:09:54 ]
よくない

878 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:12:07 ]
「nまで」がどこからnまでなのか、まら「まで」とは未満なのか以下なのか
「全て割る条件式」とは何のことなのか
本当にわかってるか?

879 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/25(土) 01:18:28 ]
すいません。たとえば500だったら1,2,3,4,5,6,7,8、という風に
して割り切れる、割り切れないのif文を作ればよいのかと思ったのですがそれではだめですか?

880 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:22:00 ]
>>879
そこまではいい
問題は「割り切れる」の意味がわかってるかどうかだ



881 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:22:31 ]
自然数nの正の約数を列挙する

自然数nを割り切れる正の整数を列挙する

自然数nを割り切れる可能性のある正の整数すべてについて、
その数で本当に割り切れるかどうかを調べ、
割り切れるときはその数を画面に表示する

一応言っとくが「割り切れる」とは除算して余りが出ないことだからな

882 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:24:00 ]
とりあえず「nをaで割り切れるならば」を意味するif文を書いてみろ

883 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/25(土) 01:26:01 ]
ありがとうございます。実は今もう一個悩んでいるのがあってかけ算の九九の表をつくるというプログラムをやっているのですが
自分なりにつくったのは
/* kuku.c */

int main(void)
{
int a, b;

int n = 9;

for(a = 1; a <= n; a = a + 1 ){
for(b = 1; b<=n; b = b + 1 ){
printf("%d\n",a*b);
}
printf("\n");
}





return 0;
} なのですが表になりません。おとといから始めたばかりなのでちんぷんかんぷんです。
いろいろとすいませんがご指導をお願いします。

884 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:28:22 ]

 一 個 ず つ や れ


885 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:32:20 ]
>883
初心者スレ逝け

886 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:35:55 ]
>>883
printf("%d\n",a*b); → printf("%3d",a*b);
がんばれ!

887 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 01:37:43 ]
>>883
処理の流れ、つまり「まずこれが起きて、次にこれが起きて……」という順番をたどりながら考えろ。
漠然と書いて走らせて出来なかったーわかんないーじゃいつまでも理解できん。

そしてここは基本的に「ある程度Cがわかってる人」が「標準C」というものについて少しつっこんだ質問をする場所だから
まずは初心者スレへ行くことをお勧めする。

888 名前:名無しさん@お腹いっぱい mailto:sage [2007/08/25(土) 01:45:23 ]
>886
ありがとうございます。できました。

889 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 11:17:58 ]
なんだよ>>871は無視かよ

890 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 12:49:26 ]
だって約数はその数自身も含まれるから
ありえないなんて事はありえませんもん



891 名前:デフォルトの名無しさん mailto:sage [2007/08/25(土) 13:24:42 ]
まあ順番を問わなければもっと速いが

if(!n%a){
 if(n/a < a)break;
 printf("%d\n",a);
 if(n/a != a)printf("%d\n",n/a)
}

892 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 01:28:44 ]
!

893 名前:デフォルトの名無しさん [2007/09/03(月) 18:47:21 ]
bool a,b,c,d,e,f;
とか
int a,b,c,d,e,f;
みたいに並べて書いた変数を一気に同じ値で初期化する書き方ってありますか?
あったら教えてください。

894 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:55:12 ]
a = b = c = d = e = f = 0;

895 名前:デフォルトの名無しさん [2007/09/03(月) 18:57:51 ]
>>894
宣言と合わせて一行でかけませんか。

896 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:58:05 ]
>>893
static int a,b,c,d,e,f;
これで全部0で初期化される。
struct foo {
int a,b,c,d,e,f;
} foo = {0};
これでも全部0で初期化されるな。

まぁ、横着するなってことだ。

897 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 18:59:10 ]
int a,b,c,d,e,f;a = b = c = d = e = f = 0;


898 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:25:37 ]
>>897
ワロタ

899 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:29:01 ]
それほど面白くはない

900 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 19:59:10 ]
>>898
そんなので笑えるなんて君の人生楽しそうでうらやましいわ



901 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 20:07:29 ]
>>893
同じ値で初期化するような変数なら同じような扱いをするんだろう
配列で宣言しろ

902 名前:デフォルトの名無しさん mailto:sage [2007/09/06(木) 16:40:24 ]
過疎ってますね
ビットシフトでも入れてみますか?






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

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

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