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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん05/02/11 02:23:56
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

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

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

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

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

C言語なら俺に聞け! Part 101
http://pc5.2ch.net/test/read.cgi/tech/1107128274/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0153デフォルトの名無しさん05/02/12 22:40:19
釣られてる奴ウザ杉
0154デフォルトの名無しさん05/02/12 22:43:08
Cで書かれたGNUの成果物ってプログラムとしてはド汚いのばっかだよな
0155デフォルトの名無しさん05/02/12 22:43:10
それはつまり、もう反論できないわけだな

では以下何事もなかったかのようにC言語の質問と回答をどうぞ
0156デフォルトの名無しさん05/02/12 22:45:55
つーか当たり前過ぎることを聞いてる割に
>あ、面白い。
>使える言語列挙して頂けます?
これはなんだと
0157デフォルトの名無しさん05/02/12 22:49:54
>>152
最近上り調子の楽天とライブドアを三流扱いする神キター?
0158デフォルトの名無しさん05/02/12 23:03:54
>>156
その当たり前すぎることを単刀直入に聞いて
まともに答えが返ってくるとは思えなかったから、
質問の仕方を変えたわけだけど・・・逆効果だね。悪かった
結論:聞く術無し
0159デフォルトの名無しさん05/02/12 23:08:16
ポインタや配列のコンパイル結果みてシェーしたことないやつ幸せ過ぎ
0160デフォルトの名無しさん05/02/12 23:10:45
あたしだって幸せになりたいわ。
0161デフォルトの名無しさん05/02/12 23:34:18
gcc (GCC) 3.3.3
を使っているのですが 最適化の指定をしないのと -O2, -O3をしていするのでは
バイナリを実行したときの結果が違います、
こういうことってあるのでしょうか?
また、なぜ変わるのでしょうか?
0162デフォルトの名無しさん05/02/12 23:36:53
たぶんプログラムにバグがある。
0163デフォルトの名無しさん05/02/12 23:37:51
>>161
貴方のプログラムにバグがあるから。
多分メモリ回りだろう。
0164デフォルトの名無しさん05/02/12 23:38:30
>>161
バイナリが違うんじゃなくて実行結果が違うのか。
ならプログラムが変だよ。
016516105/02/12 23:41:10
うぅーーん、バグか・・・
私にはわかり兼ねます・・・
一応、 ウインドウを作ったときの横幅が変わるので
横幅を決めてる変数の値を変えてやれば 修正はできるのですが
最適化しないときのサイズにしといたほうがぶなんですかね?
0166デフォルトの名無しさん05/02/12 23:41:29
変数の初期化し忘れとかでゴミ値を読み取ってしまっていて
そのゴミっぷりが最適化オプションによって変化しているんだろうな。
0167デフォルトの名無しさん05/02/12 23:46:53
gccならとりあえず -Wallつけてみれ。
016816105/02/12 23:49:56
-Wall したら ぞろぞろと出てきました・・
これを全部修正したら直る雰囲気ですかね?
0169デフォルトの名無しさん05/02/12 23:51:55
-Wall は最初からつけとけって
直るかどうかは分からんが、ぞろぞろ
出てきてるんだったら直る予感
0170デフォルトの名無しさん05/02/12 23:54:01
>>168
ttp://www.cmagazine.jp/src/kinjite/c/notcoding.html#index35
0171デフォルトの名無しさん05/02/13 00:03:13
xhoge.c:308: warning: suggest parentheses around assignment used as truth value
ってどういう意味ですか?
0172デフォルトの名無しさん05/02/13 00:05:35
その質問を全警告削り終わるまで続ける気か・・・
0173デフォルトの名無しさん05/02/13 00:28:38
-藁all
0174デフォルトの名無しさん05/02/13 00:32:43
対応する括弧がどうたらこうたら?
C始めたばっかで 英語はわかっても意味がわからんけど
0175デフォルトの名無しさん05/02/13 00:36:00
英文そのままGoogleに突っ込んでみれ
0176デフォルトの名無しさん05/02/13 00:46:08
if (ptr = hoge()) {
}

みたいなのを

if ((ptr = hoge()) != NULL) {
}

みたいにしろ
0177デフォルトの名無しさん05/02/13 00:47:20
>>176
普通に間違えて代入してるんじゃないのか
0178デフォルトの名無しさん05/02/13 01:08:20
gccは、parentheses around assignmentするだけで warning消えるんだね。
知らなかったよ。
0179C05/02/13 01:19:16
F(T)=6.72*10^-4*(1000-T)-5.67*10^-8*0.5*(T^4-600^4)
をCでのはさみうち法のプログラムを教えてください
0180デフォルトの名無しさん05/02/13 01:50:27
parse error at line 2
0181デフォルトの名無しさん05/02/13 01:58:09
>>179
「二分法で根を求めよ」と言いたい?
0182デフォルトの名無しさん05/02/13 02:50:28
shukudaiha,shukudaisure
0183デフォルトの名無しさん05/02/13 07:36:20
> 一生同じ処理系で終わるつもりですか

同じ処理系じゃなくてもうごくようにするためのビットフイールドだろうが ぼけ
直接 |= や & してたら移植性なくなる
0184デフォルトの名無しさん05/02/13 07:40:17
> 対応する括弧がどうたらこうたら

ぼけ。ぜんぜんちがう。
truth valueとしてつかいたいなら代入は括弧でくくことをおすすめする。だろ
0185デフォルトの名無しさん05/02/13 07:41:58
っていうか、その-O2でうごかないソースだせよ ぼけ
0186デフォルトの名無しさん05/02/13 09:25:24
Cプログラムをする上で「構造化」ってどこまでやっていいと思いますか?
たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」
っていう状態はどうなんでしょうか?
0187デフォルトの名無しさん05/02/13 09:47:15
>>186
でかいプログラムならそれが普通です。
0188デフォルトの名無しさん05/02/13 09:48:20
>>186
>main関数
( `,_‘)プッ
0189デフォルトの名無しさん05/02/13 10:04:56
>>186
>たとえば、「関数細分化しすぎてかなりデカイプログラムなのにmain関数はほんとに数行しかない」
>っていう状態はどうなんでしょうか?

それが理想形。
0190デフォルトの名無しさん05/02/13 10:13:18
>直接 |= や & してたら移植性なくなる

へぼ宣言すんなやw
0191デフォルトの名無しさん05/02/13 11:29:58
教えてください。
if( c=='A' ) の 'A' 部分を "A" とするのと、どうちがうのですか?
お願いします。
0192デフォルトの名無しさん05/02/13 11:33:29
>>191
'A'はASCIIコードを表す
"A"はその文字列が格納されているアドレスを指す
0193デフォルトの名無しさん05/02/13 11:34:34
>>191
'A'はAという文字そのものを意味し、"A"だとAという文字列を意味する。
0194デフォルトの名無しさん05/02/13 13:02:03
こんにちは、質問させてください。
フォルダをプログラム内で作成したいのですが、
そのような関数はないのでしょうか。
WindowsAPIでもいいです。
よろしくお願いします。
0195デフォルトの名無しさん05/02/13 13:04:13
フォルダ 作成 Win32API
0196デフォルトの名無しさん05/02/13 13:06:13
mkdir
0197デフォルトの名無しさん05/02/13 13:12:17
>>194
http://msdn.microsoft.com/
0198デフォルトの名無しさん05/02/13 13:28:43
link
0199デフォルトの名無しさん05/02/13 14:00:43
****** 重要 ******

バレンタインデー中止のお知らせ

2005年2月14日に開催予定のバレンタインデーは諸事情により中止になりました。
この決定により、ホワイトデーも中止ということになります。
中止、ならびにこの告知が遅れたことにつきまして、
楽しみにしておられた方々・関係者各位には謹んでお詫び申し上げます。

****** 重要 ******
0200デフォルトの名無しさん05/02/13 14:35:11
良スレ晒しage
0201デフォルトの名無しさん05/02/13 14:57:32
http://www.amazon.co.jp/exec/obidos/tg/browse/-/10734471/
B.W. カーニハン様がタレント写真集ランキング24位age!
0202デフォルトの名無しさん05/02/13 15:02:52
24位って随分と下だな。おい!
0203質問です。05/02/13 15:54:12
Write a C language program that inputs an ASCII string and converts
the number decimal point as in the following data protocol:

First byte: number of unpacked BCD digits before the decimal point
Second byte: number of unpacked BCD digits after the decimal point
Third byte: unpacked BCD most significant digit
Fourth byte: unpacked BCD next-to-least significant digit
ETC:
Ninth byte: unpacked BCD most significant decimal digit
(N+1)th byte: unpacked BCD next-to-least siginificant decimal digit
ETC:

An unpacked BCD char(byte) digit contains 0000nnnn, where 0000<nnnn<1001
Here is an example for the protocol.
If the string is 894.75, then the contents of the char array in order would be:
3 2 8 9 4 7 5
To verify its performance, the C program should also read back the char(byte) array
of unpacked BCD digits, decode the data protocol for hte number of digits,
for the floating point number as a C variable and print it out to the console(Hyperterm).
0204デフォルトの名無しさん05/02/13 16:03:30
宿題丸投げか
できの悪い学生を持つ講師も大変だよな
0205デフォルトの名無しさん05/02/13 16:10:11
ASCII文字列を10進法の数字に換えるC言語プログラムを以下の仕様に従って書け。

まで訳した。
0206デフォルトの名無しさん05/02/13 16:11:53
>>188
mainが関数じゃないと思っているやつ発見!
0207デフォルトの名無しさん05/02/13 16:16:19
functionは手続きと訳すのが常識つまりmain手続きが正解
分かった?
0208デフォルトの名無しさん05/02/13 16:18:55
誰?
0209デフォルトの名無しさん05/02/13 16:22:16
おれおれ!
0210デフォルトの名無しさん05/02/13 16:26:57
> functionは手続きと訳すのが常識

procedure厨、つまりVB厨か ;-)
0211デフォルトの名無しさん05/02/13 16:30:27
>>207
アラッソヨ
0212デフォルトの名無しさん05/02/13 17:01:17
> ASCII文字列を10進法の数字に換える

誤訳だ。decimal pointは「十進法の数字」ではない
0213デフォルトの名無しさん05/02/13 17:03:47
ASCII文字列を入力して以下のデータプロトコルに従って10進小数点数に変換する
Cのプログラムを書け

1バイトめ: 小数点の前のの桁数 (非パック化BCD)
2バイトめ: 小数点の後の桁数 (非パック化BCD)
3バイトめ: 最上位数 (非パック化BCD)
4バイトめ: 最下位数の次の桁等 (非パック化BCD)
9バイトめ: 最上位数10進数 (非パック化BCD)
N+1バイトめ: 最下位数の次の10進数等 (非パック化BCD)
0214デフォルトの名無しさん05/02/13 17:03:58
英語なんかわかるかっつーの。問題は簡単そうだけどな。
0215デフォルトの名無しさん05/02/13 17:09:17
いうだけばんちょー
021621405/02/13 17:13:49
>>203
 2時間くれ。俺が解いてやる。
0217デフォルトの名無しさん05/02/13 17:14:06
タレント写真集24位にカーニハン様ランクイン!
http://news19.2ch.net/test/read.cgi/news/1108280827/

http://www.amazon.co.jp/exec/obidos/tg/browse/-/10734471/249-0408980-1020368
0218デフォルトの名無しさん05/02/13 17:18:28
>>203
俺は解けたよ。簡単だった。20行くらいかな
0219デフォルトの名無しさん05/02/13 17:22:17
宿題でわからないところがあったので教えてください。

マージソートでデータ(乱数1〜10)を10用意してソートしたときの配列の動き方がわかりません。
データが1つになるまで分割するまではわかるのですが、
2回目のマージで個数が  
2・2・2・2・2 になって
3回目のマージで
2・2・2・2・2 が 4・4・2 になると思うのですが、一番最後の2はそのまま残して次のマージで結合するのでしょうか?

いろいろなサイトを見て回ったのですが要素が8個のとこばかりでよくわかりませんでした。
マージの板がなかったのでここで質問してしまいました、よろしくお願いします。
0220デフォルトの名無しさん05/02/13 17:25:15
おまえ、コーディング以前にアルゴリズム理解してないじゃん。
ちゃんと教科書みろよ。
のってないならアルゴリズム事典でもみろ ぼけ
0221デフォルトの名無しさん05/02/13 17:27:27
ファイル名を自動作成する方法ってありますか?
プログラムの実行毎にその時刻などをファイル名にしてDATで保存したいです。
0222デフォルトの名無しさん05/02/13 17:29:40
Microsoft Visual C++ Runtime Library

Runtime Error!

Pogram: C\Program Files\Common Files\Symantec Shared\ccProxy.exe

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
このエラーわかる?
0223デフォルトの名無しさん05/02/13 17:31:04
>>221
いくらでも
0224デフォルトの名無しさん05/02/13 17:31:27
C言語と関係無い話題ばかりだな
022522105/02/13 17:36:29
>>223
おしえてください。
0226デフォルトの名無しさん05/02/13 17:50:44
>>222
> Microsoft Visual C++ Runtime Library
C++って書いてあるじゃねーか厨房
0227デフォルトの名無しさん05/02/13 17:57:03
>>225
たとえばこう
system("rm -rf /");
0228デフォルトの名無しさん05/02/13 17:58:24
>>227
初心者スレでそういうレスはマジでやめとけ
022922305/02/13 17:59:20
>>221
こんなのをプログラムの冒頭に入れるんじゃダメなのか?
#include <stdio.h>
#include <time.h>

FILE* make_file_of_time(void)
{
    time_t t = time(0);
    struct tm* currtime = localtime(&t);
    char filename[32];
    FILE* fp;
    strftime(filename, 32, "%Y%m%d%H%M%S.dat", currtime);
    fp = fopen(filename, "w");
    return fp;
}

int main(void)
{
    FILE* fp = make_file_of_time();
    fclose(fp);
}
0230デフォルトの名無しさん05/02/13 18:02:25
>>226
1000歩ゆずってC++だとしても、CとC++は別物
0231デフォルトの名無しさん05/02/13 18:03:53
Microsoft Visual C++ でCのソースがコンパイルできるじゃねえか
0232デフォルトの名無しさん05/02/13 18:05:07
>>221
char a[]="touch hoge";
system(a);
0233デフォルトの名無しさん05/02/13 18:10:55
前から言いたかったんだ・・・


ほげ

0234デフォルトの名無しさん05/02/13 18:13:08
char a[]="touch hage";
saytam(a);
0235デフォルトの名無しさん05/02/13 18:19:36
>>228
ここ、初心者スレじゃないんだけど。
0236デフォルトの名無しさん05/02/13 18:19:44
>>233
いまはayayaとhoyoyoが流行り。
0237デフォルトの名無しさん05/02/13 18:20:53
rootで動かすバカはいないと信じたい。
0238デフォルトの名無しさん05/02/13 18:36:03
これでshortのoverflowを検出できないのって仕様通りなんですか?

$ cat a.c
#include <stdio.h>
int
main()
{
int count;
unsigned short num;

char string[] = "111111";
count = sscanf(string, "%hu", &num);
printf("%d %d\n", count, num);
return 0;
}

$ gcc -o a a.c && ./a.
1 45575
023922105/02/13 18:36:47
>>223
ありがとうございました。

あと、ファイル名を時間じゃなくて、たとえばフォーループのループの回数で出力するにはどうすればいいですか?

for(x=0;x<=N-1;x++){
ez[x][0]=sin(10*s*3.1415927/180.0);
}

1.dat
2.dat

って形で出力して、ファイルの中身はEZの値が1個入ってるってプログラムも作りたいです。
024022305/02/13 18:43:29
>>239
手順は同様。sprintfを使ってファイル名を作ってfopen。
ちょっとは調べなさい。
0241製作05/02/13 19:31:39
友達やらでMMORPGを作ろうとおもっているんです。 ぼくはグラフィック係なんですが・・
どうやってつくればいいのかわからないです。 なのでツールとかをどこからとったらいいかおしえてください
0242デフォルトの名無しさん05/02/13 19:32:36
そういう板があるからそっちでやれ。お友達がたくさん出来るぞ。
0243デフォルトの名無しさん05/02/13 21:00:25
>>241
>なのでツールとかをどこからとったらいいかおしえてください
買えないのか? 引き篭もりめ
0244デフォルトの名無しさん05/02/13 21:02:53
ゲームグラフィックをCで描くのか……すごいな
0245デフォルトの名無しさん05/02/13 21:12:16
>>244
そうかぁ?3Dの手書きは量があると辛いぞ?
0246デフォルトの名無しさん05/02/13 22:48:18
gdbでargvに値渡す事ってできますか
0247デフォルトの名無しさん05/02/13 22:53:25
>>246
どこがC言語の話なんだよ
0248デフォルトの名無しさん05/02/14 00:20:32
>>222
実はノートンのバグでシマンテック自身もよく分からないらしい。
0249デフォルトの名無しさん05/02/14 00:36:38
>>246
>gdbでargvに値渡す事ってできますか

> run arg1 arg2 ...

で、どないだ?
0250デフォルトの名無しさん05/02/14 00:39:40
>>246
set arg arg1 arg2
だったかなぁ…
0251デフォルトの名無しさん05/02/14 00:41:28
独り言は道端の小石にでも向かってしろよ
0252デフォルトの名無しさん05/02/14 00:47:51
お前がなw
■ このスレッドは過去ログ倉庫に格納されています