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

C言語なら俺に聞け! Part 〈55〉

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

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

コンパイラを探しているなら >>2-13 を。

上記を逸した場合の結果は激しく未定義だゴルァ!!

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/
---------------------------------------------------------------------------
0002デフォルトの名無しさんNGNG
}
0003デフォルトの名無しさんNGNG
return EXIT_SUCCESS;
}
0004デフォルトの名無しさんNGNG
なお、このスレはぬるぽ進行です。
メール欄に「ぬるぽ」と入れてください。
0005デフォルトの名無しさん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
0006ぬるぽNGNG
了解しました。
0007デフォルトの名無しさんNGNG
【前スレ】
C言語なら俺に聞け! Part 〈55〉
http://pc2.2ch.net/test/read.cgi/tech/1051528386/

【過去ログ】
53 http://pc2.2ch.net/tech/kako/1048/10489/1048995232.html
52 http://pc2.2ch.net/tech/kako/1047/10472/1047275669.html
51 http://pc2.2ch.net/tech/kako/1046/10461/1046104909.html
50 http://pc2.2ch.net/tech/kako/1044/10449/1044938752.html
49 http://pc2.2ch.net/tech/kako/1042/10426/1042646178.html
49 http://pc2.2ch.net/tech/kako/1042/10426/1042640474.html
48 http://pc3.2ch.net/tech/kako/1041/10411/1041127646.html
47 http://pc3.2ch.net/tech/kako/1040/10400/1040048202.html
46 http://pc3.2ch.net/tech/kako/1039/10393/1039328710.html
45 http://pc3.2ch.net/tech/kako/1038/10384/1038405432.html
44 http://pc3.2ch.net/tech/kako/1037/10377/1037796472.html
43 http://pc3.2ch.net/tech/kako/1037/10372/1037281411.html
43 http://pc3.2ch.net/tech/kako/1037/10371/1037134356.html
42 http://pc3.2ch.net/tech/kako/1037/10371/1037101156.html
41 http://pc3.2ch.net/tech/kako/1036/10368/1036876790.html
0008過去ログ続きNGNG
40 http://pc3.2ch.net/tech/kako/1036/10366/1036673739.html
39 http://pc3.2ch.net/tech/kako/1036/10364/1036409391.html
38 http://pc3.2ch.net/tech/kako/1035/10357/1035729526.html
37 http://pc3.2ch.net/tech/kako/1035/10356/1035623265.html
36 http://pc3.2ch.net/tech/kako/1035/10352/1035211039.html
35 http://pc3.2ch.net/tech/kako/1034/10343/1034337064.html
34 http://pc3.2ch.net/tech/kako/1033/10332/1033240509.html
33 http://pc3.2ch.net/tech/kako/1032/10326/1032606064.html
32 http://pc3.2ch.net/tech/kako/1031/10319/1031905402.html
31 http://pc3.2ch.net/tech/kako/1031/10313/1031340950.html
30 http://pc3.2ch.net/tech/kako/1030/10307/1030786546.html
29 http://pc3.2ch.net/tech/kako/1029/10296/1029605182.html
28 http://pc3.2ch.net/tech/kako/1028/10284/1028495798.html
27 http://pc3.2ch.net/tech/kako/1027/10271/1027160374.html
26 http://pc.2ch.net/tech/kako/1026/10260/1026048820.html
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
0009デフォルトの名無しさんNGNG
40 http://pc3.2ch.net/tech/kako/1036/10366/1036673739.html
39 http://pc3.2ch.net/tech/kako/1036/10364/1036409391.html
38 http://pc3.2ch.net/tech/kako/1035/10357/1035729526.html
37 http://pc3.2ch.net/tech/kako/1035/10356/1035623265.html
36 http://pc3.2ch.net/tech/kako/1035/10352/1035211039.html
35 http://pc3.2ch.net/tech/kako/1034/10343/1034337064.html
34 http://pc3.2ch.net/tech/kako/1033/10332/1033240509.html
33 http://pc3.2ch.net/tech/kako/1032/10326/1032606064.html
32 http://pc3.2ch.net/tech/kako/1031/10319/1031905402.html
31 http://pc3.2ch.net/tech/kako/1031/10313/1031340950.html
30 http://pc3.2ch.net/tech/kako/1030/10307/1030786546.html
29 http://pc3.2ch.net/tech/kako/1029/10296/1029605182.html
28 http://pc3.2ch.net/tech/kako/1028/10284/1028495798.html
27 http://pc3.2ch.net/tech/kako/1027/10271/1027160374.html
26 http://pc.2ch.net/tech/kako/1026/10260/1026048820.html
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
0010過去ログNGNG
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html
0011デフォルトの名無しさんNGNG
>>1 乙。ちょっとだけ訂正。

>>7
×【前スレ】C言語なら俺に聞け! Part 〈55〉
○【前スレ】C言語なら俺に聞け! Part 〈54〉
http://pc2.2ch.net/test/read.cgi/tech/1049968153/
00127 (>>1ではないっす。)NGNG
>>11
訂正サンクスです。

このスレのリンク貼ってどうする>>俺
しかも2重カキコになってるし。

すまそ。吊ってきます。>>all
0013デフォルトの名無しさんNGNG
C のインタープリタってどうですか? Ch ってのが至る所で宣伝してるけど、
これで C の勉強始めて良い物なのか・・・。

Ch -- an enbeddable C/C++ interpreter for script computing
  http://www.softintegration.com/
CINT
  http://root.cern.ch/root/Cint.html
EiC -- The enbeddable/extensible interactive, pointer-safe, bytecode
      C interpreter/compiler
  http://eic.sourceforge.net/
The ups debugger for C, C++ & Fortran ;; C interpreter included.
  http://ups.sourceforge.net/
Al Steven's Quincy C Interpreter
  http://www.ddj.com/ftp/packages/quincy/
0014デフォルトの名無しさんNGNG
>>13
C のお勉強するなら cygwin インストールして gdb なんかがお手軽だと思うけど。

ステップ実行とかも visual にできるから、試す価値アリだと思うですよ。
0015デフォルトの名無しさんNGNG
ポインタ変数「p」 に、char型2次元(5*10)の形を定義して、
p に後からアドレスを代入して
p[3][5]=3  という様なアクセスをしたいのですが、
最初のpの定義の仕方がわかりません教えてください。
0016デフォルトの名無しさんNGNG
char (*p)[10];
0017デフォルトの名無しさんNGNG
>>16
ありがとうございました
0018デフォルトの名無しさんNGNG
なんでこのスレッドには2次元配列を動的確保したがる
奴が多いんだろう…。
0019デフォルトの名無しさんNGNG
そういう課題があちこちで出されたんだろうよ
0020デフォルトの名無しさんNGNG
ウワァァン
おいらの学校では動的確保すら教えてもらえなかったよぉ。
0021デフォルトの名無しさんNGNG
ゲームでマップ作れと言われたとか・・・
0022デフォルトの名無しさんNGNG
    /:::::::::::::::::::::/ \:::::::::::::::::::::::::
   /::::::::::::::::::::/    \:::::::::::::::::::::::
   /:::::::::::::::::::/        \::::::::::::::::::::
  /::::::::::::::::::/    ,,,,-―''`\::::::::::::::::::
  |:::::::::::::::::/,,,,,,  ''    _ ヽ:::::::::::::::::
.  |::::::::::::::::/   ヽ    ∠'-' `   \:::::::::::::
  |:::::::::::::::/ ,-、-、 l   ヽ         |:::::::::::::::
.  |::::::::::::::| `´   |           |::::::::::::::::
  ヽ,-―_|    |  __,- )        |:::::::::::_/
  // ̄ヽ    /⌒ リ    \    |:::::::/ ̄\
 / /:::糸工::\    _ _   )   /::::::/   /
 >'つ:::::::イ::::::::ヽ ヽ/,ー―-ヽ    /::::/ /
( < \:::モ::/~~\(::::::::::_/  / ̄ /
 ) ̄ ̄ヽ:::/:::::::::::::::\⌒    /   /
 \ ̄ ̄\  ググラないとしちゃうぞ♥
0023デフォルトの名無しさんNGNG
スカラー波が
0024デフォルトの名無しさんNGNG
>14
ども。どうせたいしたコードは書けないので、gcc で頑張ってみます。
gdb も勉強します(使ってみたけどよく分からんかったです・・・)。
0025デフォルトの名無しさんNGNG
const定数が配列の要素数指定に使えないのは、const定数は外部参照でき、コンパイル時には値が分からないことがあるからですか?
0026デフォルトの名無しさんNGNG
>>25
配列の要素は、定数じゃないと駄目。
constは読み出し専用って修飾子だから定数では無い。
0027デフォルトの名無しさんNGNG
>>26
constつけても変数は変数という理解でいいですか?
0028デフォルトの名無しさんNGNG
二次元配列の動的確保。
二次元配列のメモリの並びはリニアになってる。
つまり、arg[3][5];なんて
arg[15];と同じ。
具体的には
arg[0][0]→arg[0][4]→arg[1][0]→arg[1][4]→arg[2][0]→arg[2][4]
と並んでいる。

二次元配列の動的確保なんて馬鹿な事言ってるなよ。
因みに、ポインタの配列で、そのポインタでまた動的確保だと二次元配列とは全く別物。
メモリがリニアに並んで確保されないから。
0029デフォルトの名無しさんNGNG
>>27
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/
スレ立てた時に言われてますよ〜
多分、読めって事ですよ〜
0030デフォルトの名無しさんNGNG
>>27
読み出し専用だけどね。
0031デフォルトの名無しさんNGNG
>>29
どちらも読みましたけど・・・
C99は別として、配列の要素数指定は定数式でなければならないのは知っています。

ただ、constつけたものを定数として扱えるかどうかということです。
定数と呼ぶことはできても、扱うことはできないんですね。
0032デフォルトの名無しさんNGNG
constつけたものを変数と呼んだら叩かれたけど。
0033デフォルトの名無しさんNGNG
>>31
規格の問題。
定数なら、配列の添え字に出切るよ。
しかし、const付けたって定数とは限らない。
だからconstつけたら配列の添え字にする事が許されないだけ。
いちいちコンパイラが判別してくれる分けがない。
100%定数とは為らないなら、許さないって事だ。
0034デフォルトの名無しさんNGNG
>>33
> 100%定数とは為らないなら、許さないって事だ。

やっぱりそうなんですね。
その例として>>25を出したんですけど、もっと一般的な例がありますね。
constつけた引数が・・・

とにかくありがとうございました。
003534NGNG
>>25は値が分からないだけで定まっていないわけじゃないか・・・
0036デフォルトの名無しさんNGNG
>>35
全然分ってなさげ。
値が分っていて、定まっていても出来ないの。
const int num = 10;
int arg[num];
これは不可。
つまり、値が分っていてもconst付けたら配列の添え字にはならないの。
規格の問題って書いてあるだろ。
0037デフォルトの名無しさんNGNG
>>36
定まっているとは限らないから規格でNGにしたんでしょ?

定まっているとは限らない = 定まっていることもある じゃないの?
0038デフォルトの名無しさんNGNG
>>37
> 定まっているとは限らない = 定まっていることもある じゃないの?
そうだが、だからどうした?
0039デフォルトの名無しさんNGNG
規格でNGにするにはそれなりの理由があるはずで、それが「定まっているとは限らない」ってことでしょ?
なんで「定まっていても・・・」なんて話をするわけ?
004039NGNG
言いたいことが伝わっていなかったのかも・・・まあいいか。
0041デフォルトの名無しさんNGNG
const は定数というよりリードオンリーの意味
たとえばプログラム実行時にその変数は
ROM 上にマップされてるとか
0042デフォルトの名無しさんNGNG
C++なら定数として添え字に使えるけどね
0043デフォルトの名無しさんNGNG
>>42
どうして他の言語の話が出るんだ
0044デフォルトの名無しさんNGNG
int const volatile port;
0045デフォルトの名無しさんNGNG
>>44
最適化禁止・・・組み込み系でつか?
0046デフォルトの名無しさんNGNG
定数じゃないconstの例かな。
実際に使うときはアドレス指定しなきゃいけないからポインタ変数になるだろうけど。
0047デフォルトの名無しさんNGNG
>>45
memory mapped I/Oの例だろうな。

>>46
リンカが解決するという方法もある。
0048デフォルトの名無しさんNGNG
>36
あれ?C99では、できるんでないの?
0049デフォルトの名無しさんNGNG
配列サイズとかcaseラベルは迷わずenumにするけどな
0050デフォルトの名無しさんNGNG
この間、書店でCでPCI32bitをなんかするみたいなものありましたが、
RC232cの標準出力をCで作るとか一番最初のページで挫折しました。
見たこともないプリプロセッサや回路図を作ってそれに合わせて
出力する等々みたいなことなんですがわかりますか?
0051デフォルトの名無しさんNGNG
>>50
わかりません。(涙
ただ、UNIXのほとんどはCで書かれているらしい。
だから、それくらいの許容量は持ち合わせているっぽい。
0052デフォルトの名無しさんNGNG
>>50
ワケの分かってない奴の説明で何か分かる奴は非常に珍しい。
0053デフォルトの名無しさんNGNG
>>50
標準Cの話題ではないからな。
制御系のスレかで聞いたほうがスレ違いにはならないかと。
(PCIのスレあったっけ?)
0054デフォルトの名無しさんNGNG
確かに何を言いたいのかわからん
System-C とかのことなら多分スレ違い
0055デフォルトの名無しさんNGNG
long型の変数xに
x=1<<31 とすると、xに0x80000000
が入るのですが、
x=~(1<<31)とすると、 0xffffffff
が入ってしまいます。
本当だったら0x7fffffff が入ると思うのですが、理由が解りません。
コンパイラ固有の問題なのでしょうか?
よろしくお願いします。
0056デフォルトの名無しさんNGNG
>>55
1を1ULにしてみぃ。
0057デフォルトの名無しさんNGNG
>>56
ありがとうございます
005856NGNG
いやなんでもない。
0059デフォルトの名無しさんNGNG
>>55
そのまま試してみたらそうはならなかった
他に間違いがあるのでは?
0060デフォルトの名無しさんNGNG
結局>>56の方法で解決したの?
0061デフォルトの名無しさんNGNG
>>59
55はintが16ビットの環境じゃないの?
0062デフォルトの名無しさんNGNG
CでのAPIの使用ってどうやんの?
0063デフォルトの名無しさんNGNG
use_api( API_NAME );
0064デフォルトの名無しさんNGNG
>>62
関数名に()をつける。
0065デフォルトの名無しさんNGNG
>>62
WinのAPIならこうだ。

#include <windows.h>
int main() { MessageBox(NULL, "へろー。", "へろー。", MB_OK); }
0066デフォルトの名無しさんNGNG
#include <windows.h>
int main() { MessageBox("全てのファイルを削除していいですか?","確認",MB_OK); }
0067デフォルトの名無しさんNGNG
面白いッスね
0068デフォルトの名無しさんNGNG
>>66
(・∀・)エキサイティング!
0069デフォルトの名無しさんNGNG
どこがだよ・・・しょうもない
0070デフォルトの名無しさんNGNG
空ループは最適化によって削除されるべきですよね?
たとえそれが初心者の使うウェイトだとしても。
0071デフォルトの名無しさんNGNG
do{}while(0);
これならな
0072デフォルトの名無しさんNGNG
しなくていいと思うけど
0073デフォルトの名無しさんNGNG
削除されるべきは一度も実行されないループ
0074デフォルトの名無しさんNGNG
コンパイラに初心者かどうかは判断できないしねぇ。
0075デフォルトの名無しさんNGNG
Linuxではスライスの事をパーティションというのですか?
0076デフォルトの名無しさんNGNG
Linuxではスライスの事をパーティションというのですか?
だったら、パーティションの事はなんといったらいいのですか?
0077デフォルトの名無しさんNGNG
#include <windows.h>このヘッダーファイルはVC++についてるの?
0078デフォルトの名無しさんNGNG
>>77
ついてるよ。
0079デフォルトの名無しさんNGNG
>>78
なんかエロいな
0080デフォルトの名無しさんNGNG
>>79
やっぱそう思う?エロいよな
0081デフォルトの名無しさんNGNG
>>75
BSDではパーティションのことをスライスといいます。
0082デフォルトの名無しさんNGNG
>>66
OK ボタンだけかよ !!
0083デフォルトの名無しさんNGNG
rand()%10ってやったら0から10の乱数がでるけど
10から20とかの乱数ってどうやって書いたらよいですか?
0084デフォルトの名無しさんNGNG
>>83
まず、自分が何を書いたのか見直せ。
話はそれからだ。
0085デフォルトの名無しさんNGNG
なんでウィンドウ出すだけであんなに書かないといけないんだ!
window()こんなんでウィンドウ出すような関数ないんか!
0086デフォルトの名無しさんNGNG
rand()%11 で得られた結果に10を加える
0087デフォルトの名無しさんNGNG
>>85
今時そんなの書いてる奴いないって。
0088デフォルトの名無しさんNGNG
>>85
他の言語をお勧めします。
0089デフォルトの名無しさんNGNG
>>85
雛形作っとけ。
0090デフォルトの名無しさんNGNG
この前VC使ってプログラム書いたけど、ウインドウを出すための処理なんて書いた覚えないなぁ。
文句を言いたくなるほど書けるんだ?
0091デフォルトの名無しさんNGNG
>>90
そのプログラムは、このスレに従って「C言語」で書きましたか?
0092デフォルトの名無しさんNGNG
しらね、少なくとも私が書いたのはCのコードだけだから。
0093デフォルトの名無しさんNGNG
>>90

MFCでも使ったんちゃう?
SDKベースで作るとガリガリ書く必要あるけど
0094デフォルトの名無しさんNGNG
RegisterClassがうざったいよね。
その後もCreateWindow、WM_CREATE
3段も初期化が必要。
0095デフォルトの名無しさんNGNG
qsort(string_array,10,50,strcmp);
をgccでコンパイルすると次のエラーが出るんだけどなんで?
ex.c:18: warning: passing arg 4 of `qsort' from incompatible pointer type
0096デフォルトの名無しさんNGNG
エラーと違うじゃん
0097デフォルトの名無しさんNGNG
あーごめん警告ね
で、なんで?
0098C初心者NGNG
連休2日目からC言語独習始めた・・・
参考書の1/4も進んでない・・
とりあえず無償コンパイラの使い方だけで時間を
使い果たし・・配列をシコシコ書いてます。。
もうダメポ・・・・ 
こんなもんでつか??
0099デフォルトの名無しさんNGNG
>>97
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

qsortに渡す関数(のポインタ)は引数の型が二つともconst void *だから。
int compare(int *v1,int *v2){...}などという形だと警告が出る。
int compare(const void *v1,const void *v2){...}という感じで作ればその警告は出ない。
ただし、void *だとそのままでは参照できないので、比較する際には適切な型へのポインタにキャストするなどして参照できるようにする。
0100デフォルトの名無しさんNGNG
>>98 >無償のコンパイラの使い方だけで時間を・・・
僕もプログラムの勉強<プログラムまでの勉強でした。パソコン購入==プログラムの
勉強だったので、ファイル、フォルダもわからず。そこまでではないと思いますが。
がんばってください。
010199NGNG
・・・と知ったかぶって見たけど、間違っているかも。
0102デフォルトの名無しさんNGNG
>>101
正しい
0103デフォルトの名無しさんNGNG
>>98
それでいいよ。
010497NGNG
>>99
わかったような気がする。C Reference見ながら例題を試しにコンパイルしてみたら
警告がでたからなんでだろと思ってたけど、例題が間違ってたってことね。
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.13.html#qsort
0105デフォルトの名無しさんNGNG
警告を無視するのは確かにお勧めできないが、「間違ってた」とは言い切れない。
0106デフォルトの名無しさんNGNG
castすりゃいいじゃん
0107デフォルトの名無しさんNGNG
見苦しい
0108デフォルトの名無しさんNGNG
警告残す方が見苦しい・・
0109デフォルトの名無しさんNGNG
おい。お前等。

Hello World表示させてるくらいでプログラミングは面白くてしかたなかった?
ここで面白さを感じられないやつは素質無し?

それともある程度山を越えてから病み付きになった?

教えてくれないの豚。
0110デフォルトの名無しさんNGNG
>>109
画面に文字表示させたところで一体何がおもしろいんだと。
・・・あ、楽しかったかも。

まぁ、ここはぐっと我慢してifとかwhileとかまで進んでみ?
0111109NGNG
>110
いやさ。Hello Worldレベルは比喩なわけで。
一応入門書で関数のところまでいったんだけどおもしろみを感じない。
映画みたりネトゲしたほうがおもしろいとおもってさ・・・
0112デフォルトの名無しさんNGNG
>>111
ならやめればいいじゃないか
0113デフォルトの名無しさんNGNG
>>111
そりゃダメだわ。
0114デフォルトの名無しさんNGNG
>>111
Delphiならおもしろいよ。
0115デフォルトの名無しさんNGNG
>>109
エクセルのマクロでもエディタのマクロでも、
繰り返しや条件分岐を書き始めるとそこはもう、
プログラミングの世界だよ。
何もHelloWorldだけが入り口じゃない。

だから、スレ違いだしとっとと帰れ。
0116デフォルトの名無しさんNGNG
#error Hello world
0117109NGNG
そういえば、経験上すげー楽しいことってある程度
山を越えてから楽しくなるや。俺の場合。がんばって続けてみまるくす。
0118デフォルトの名無しさんNGNG
>>117
Delphiならすぐに楽しくなるよ。
VBでもいいけど
0119デフォルトの名無しさんNGNG
VBでもいいならExcelVBAで充分じゃん。
0120デフォルトの名無しさんNGNG
俺は関数の再帰とリスト構造を知るまでは楽しくなかったな。
0121デフォルトの名無しさんNGNG
俺、INT86()でDOSのAPI叩いてたときが一番楽しかったなぁ・・・。
0122デフォルトの名無しさんNGNG
int func(int a[3]){
int i,j=0;
for(i=0;i<=2;i++)j=j+a[i];
return j;}

void main(){
int t[3]={1,2,3};
int q;
q=func(t[3]);
printf("%d",q);}

これをコンパイルしたら下のようなエラーが出てきました
配列を関数に渡すにはどうすればいいのでしょうか?

パラメータ 'a' は int ( *)[3] 型として定義されているので int は渡せない(関数 main )
0123デフォルトの名無しさんNGNG
q=func(t);
0124デフォルトの名無しさんNGNG
オレは紙テープに穴を空けてた頃が・・・
・・・・Fortranスレじゃないのか
0125デフォルトの名無しさんNGNG
>123
上手くいきました、有難うございます!
0126デフォルトの名無しさんNGNG
漏れはキーボードで文字を打ってるのが既に楽しいよ
0127デフォルトの名無しさんNGNG
>>122
多分123の意味分ってないんだろうな。
配列は式の中ではポインタに置き換わる。
int func(int a[3])なんて普通はやらない
int func(int *a)とやる。
それと、プログラマのコード以外でコンパイラは配列長なんて分らない物だから
(つまり、int func(int a[3])の3は意味をなさない、int a[]でもint *aでも同じ)
int func(int *a, int a_num)と先頭のポインタ(配列の先頭)と配列の要素数を渡す。
固定の配列長やループなんて危険すぎる。効率悪い。
将来、配列の長さを変えた時に関数の中も書き換えなきゃいけないだろ。

因みにq = func(t)はtを配列に宣言してるので配列の先頭ポインタを渡している事になる。
0128C初心者NGNG
まだコンソールプログラムしか作ってないけど楽しい。
参考本の1/3程度進んだとこで復習してみると
そのとおり書きたくない。これでいいじゃんって。
少しでも進歩したな・・と思うと楽しい。
0129デフォルトの名無しさんNGNG
やっぱデバッグだな。
0130 NGNG
いちばん嫌な時だ
0131デフォルトの名無しさんNGNG
reset all
0132デフォルトの名無しさんNGNG
ここらでひとつ、プログラム(&デバッグ)ネタでHellsingコピペきぼん。
0133デフォルトの名無しさんNGNG
プログラム関数にデバッグのアドレスを・・・
0134122NGNG
>127
詳しい解説有難うございます

int func(int *a,int a_num){
int i,j=0;
for(i=0;i<=a_num-1;i++)j=j+a[i];
return j;}

とすればいいという事ですね
0135デフォルトの名無しさんNGNG
cでwindowsアプリ作ろうと思うのですけど、VC使って簡単にウインドウ作っちゃっても
いいのかな?それとも全部コード覚えたほうがいいのかな?
VCで作ってもwindowsアプリ作れるっていっても平気ですか?
0136デフォルトの名無しさんNGNG
>>134
i<=a_num-1

これ、変だとおもわんか?i<a_numでいいだろ。
0137デフォルトの名無しさんNGNG
ほとんどのWindowsアプリはVC製だろう。
0138デフォルトの名無しさんNGNG
>>135
平気
0139デフォルトの名無しさんNGNG
>>135
> VC使って簡単にウインドウ作っちゃってもいいのかな?

 → YES.

> それとも全部コード覚えたほうがいいのかな?

 → 意味不明。何のコードだ ?

> VCで作ってもwindowsアプリ作れるっていっても平気ですか?

 → 一般的には YES。
   暗黙に「私が」と言うのであれば、自分の腕と相談しろ。
0140122NGNG
>136
そ、そうですね
0141デフォルトの名無しさんNGNG
>>136
別に変じゃないだろ。
なんか間違ってるか ?
0142デフォルトの名無しさんNGNG
間違っていなくても変なものは変。
char str[]={'a','b','c','\0'}と書いても間違いではないが、変だ。
0143デフォルトの名無しさんNGNG
> → 意味不明。何のコードだ ?

ってことは、WindowsSDKは全く知らんってことか?
0144デフォルトの名無しさんNGNG
>>143
ハァ ?
0145デフォルトの名無しさんNGNG
>>144
悪い。スレ違いだったな。
0146デフォルトの名無しさんNGNG
>>145
そういう問題ですらない。>>143が日本語が不自由なんじゃないかということだ。
0147デフォルトの名無しさんNGNG
>>146
143=145=俺だけど。

「それとも全部コード覚えたほうが」 の全部のコードってのは、
あの長ったらしい印象のあるソース(コード)のことだと思ってたんだが。
0148デフォルトの名無しさんNGNG
>>147
「あの長ったらしい印象のあるソース(コード)」ってのが何をさしてるのか、が不明なんだが。
0149デフォルトの名無しさんNGNG
>>147
空域読めてるか?

ちなみに俺は読めてないからな
0150デフォルトの名無しさんNGNG
>>135 のいっていることはよく分からんのだが。
多分、MFCアップウィザードで
スケルトン作っちゃってもいいのかな?ってことでしょ?
そしたらCの範疇からはずれるよね。
それともSDKで雛型コピペしてもいいか?って事をいってんのか?
どちらにしても135の日本語なんか変。
0151デフォルトの名無しさんNGNG
可変個の引数を取る関数では、サイズがint以下の整数引数はintに格上げされ、
サイズがdouble以下の浮動小数点数引数はdoubleに格上げされるんですよね?
ということは、va_argの第二引数にはcharやshort、それにfloatを与えることはないということでOKですか?
0152デフォルトの名無しさんNGNG
読んでないけどOKにしとく。
0153デフォルトの名無しさんNGNG
わかった、QuickWin のことか!!
0154デフォルトの名無しさんNGNG
ok
0155デフォルトの名無しさんNGNG
>>148
WindowsSDKって言った時点で気づけよ。
0156デフォルトの名無しさんNGNG
だれかC言語の逆コンパイラ知りませんか?知ってたら教えてください。
0157デフォルトの名無しさんNGNG
逆アセンブラ使え。
0158デフォルトの名無しさんNGNG
>>156
実行形式をC言語に直すってこと?
だとしたらアナトマイザーとか?
でもぶっちゃけそんなの使うより逆アセンブラで見た方が楽
0159デフォルトの名無しさんNGNG
すみません。初心者なんですが、PGになろうと思ったらコード
丸暗記してなければいけないのでしょうか?例:現在の時間を得るソースとか
0160デフォルトの名無しさんNGNG
>>159
どっちかというと瞬時に閃く感じ。

結局、日本語で文章を書くのと要領は同じ。
0161デフォルトの名無しさんNGNG
>>160
ということは、ソースを完全に理解してないとダメだということですね?
0162デフォルトの名無しさんNGNG
>>161
当たり前ですな。
0163デフォルトの名無しさんNGNG
>>161
当然、APIとかの知識は必要だけど、その辺はやってりゃ自然と覚えるし
色々作ってれば、>>160が言うように感覚的にこんな感じかな〜っていうのが思い浮かぶようになる
0164デフォルトの名無しさんNGNG
ありがとです。
0165デフォルトの名無しさんNGNG
>>164
興味持って書き込んでいけば自然とできるようになる。がんばれ。
0166デフォルトの名無しさんNGNG
日常でコードを話すようにしていれば、自然とできるようになる。
英語と同じだな。がんばれ。
0167デフォルトの名無しさんNGNG
練習で以下のような関数を作ってみますた。
ファイルをコピーする関数です。

int filecopy(const char * strfile, const char * dstfile){
FILE *strfp, *dstfp;
if(NULL == (strfp = fopen(strfile, "r"))){
return -1;
}
if(NULL == (dstfp = fopen(dstfile, "w+"))){
return -1;
}
char c;
while(!feof(strfp)){
c = fgetc(strfp);
fputc(c, dstfp);
}
fclose(strfp);
fclose(dstfp);
return 0;
}

これでテキストファイルをコピーした際に、最後の行に化けたような文字が入ってしまいます
何が問題でしょうか?
0168デフォルトの名無しさんNGNG
>>167
while(!feof(strfp)){
c = fgetc(strfp);
fputc(c, dstfp);
}
一度だけcにEOFが入ってしまうから。
while((c=fgetc(strfp))!=EOF)
fputc(c,dstfp);
と書こう。


dstfileのみオープンに失敗した場合はstrfileがプログラム終了まで開かれたままになっちゃうよ。
0169デフォルトの名無しさんNGNG
feofは普通使わない。
0170168NGNG
あとねぇ、cはchar型じゃなくてint型にして。
0171デフォルトの名無しさんNGNG
K&R読めよってかんじだが

int c; /* 普通はintで受け取る。EOFもらうためね */
while((c = fgetc(strfp)) != EOF){ /* Cの定石だから覚えとけ */
fputc(c, dstfp);
}
0172デフォルトの名無しさんNGNG
free(NULL);は問題ないそうですが、
fclose(NULL);も問題ないのですか?
0173デフォルトの名無しさんNGNG
>>172
大丈夫とはどこにも書いていないし、俺の環境だとセグメンテーション違反が起きた。
だからきちんとチェックした方がいいよ。いや、すべき。
0174デフォルトの名無しさんNGNG
#define Fclose(fp) ((fp)?fclose(fp):0)

引数を二回評価するけど、まあいいでしょ。
0175デフォルトの名無しさんNGNG
#include <stdio.h>

void co(int *a,int n,int i,int j,int *b){
int k,l;
for(k=0;k<=n-1;k++){
for(l=0;l<=n-1;l++){
if(k<i&&l<j){b[k*(n-1)+l]=a[k*n+l];}
else if(k<i&&l>=j){b[k*(n-1)+l]=a[k*n+l+1];}
else if(k>=i&&l<j){b[k*(n-1)+l]=a[(k+1)*n+l];}
else {b[k*(n-1)+l]=a[(k+1)*n+l+1];}}}}

int det(int *a,int n){
int d=0;int b;int i;int m;
printf("14 ");printf("n=%d ",n);
if(n==1){d=a[0];printf("15 ");}
else {for(i=0;i<=n-1;i++){
printf("i=%d ",i);
co(a,n,1,i,&b);
m=det(&b,n-1);
d=d+((i%2)*(-2)+1)*m;}}
printf("21 ");
return d;}

int main(){
int a[9]={1,0,0,0,2,0,0,0,3};int n=3;int d;

printf("27 ");
d=det(a,n);printf("28 ");
printf("deta=%d",d);
return 0;}
0176デフォルトの名無しさんNGNG
ageろよ
0177175NGNG
このプログラムが上手く動きません
何故動かないかも分かりません
どこに問題があるのか教えて下さい

表示結果はこうなりました
27 14 n=3 i=0 14 n=2 i=0 14 n=1 15 21 i=1 14 n=1 15 21 21 
0178175NGNG
age
0179デフォルトの名無しさんNGNG
>>177
まてぃ!
どう動いてほしいのかも書かないでそれはないでしょ。
0180175NGNG
>179
行列aの行列式を求めたいのです
3*3行列aを
a[9]={1,0,0,0,2,0,0,0,3};
と定義しました
0181デフォルトの名無しさんNGNG
行列かぁ。
高校三年の時は数学を取らなかったから全然わからん。
0182175NGNG
det(int *a,int n)関数はn*n行列aの行列式を求める関数で
void co(int *a,int n,int i,int j,int *b)関数は
n*n行列aから,ij成分を覗いた(n-1)*(n-1)行列bを作る関数です
0183デフォルトの名無しさんNGNG
>>175
自分で書いたソースがあるならうぷキボンヌ
0184175NGNG
>183
「自分で書いたソース」の意味が分かりません・・・
>>175の事ではないのですか?
0185デフォルトの名無しさんNGNG
まずdetのint bはおかしいだろ。
0186デフォルトの名無しさんNGNG
・
・
int c;

printf("[ ]に調べたい文字を入力してください [ ");
c=getchar();
printf(" ]");
・
・
てな感じでつくって

[ ]に調べたい文字を入力してください [ ]

みたいな感じで[]のなかに1文字だけ入力できるようにしたいのですが、

最後の[ ]だけうまく表示できません。『]』 が改行されてしまいます。
どうにかうまくできる方法はありませんでしょうか?
0187デフォルトの名無しさんNGNG
>>186
標準 C の範疇では無理 (≡ 実行環境を書け)
0188デフォルトの名無しさんNGNG
OSは MAC OS �] です
0189デフォルトの名無しさんNGNG
>>175
detを
int b; -> int b[1000];
co(a,n,1,i,&b); -> co(a,n,1,i,b);
m=det(&b,n-1); -> m=det(&b,n-1);
にして幸せになろう。

27 14 n=3 i=0 14 n=2 i=0 14 n=1 15 21 
i=1 14 n=1 15 21 21 i=1 14 n=2 i=0 14 
n=1 15 21 i=1 14 n=1 15 21 21 i=2 14 
n=2 i=0 14 n=1 15 21 i=1 14 n=1 15 21 
21 21 28 deta=0
0190284NGNG
>>175
それから co 内のループだが、
a には 0 から n-1 までの二次元配列の中に値が入っていたわけだから、
b には 0 から n-2 までの中に代入しなければならないはずだよな。
0191190NGNG
>284って誰だよ?? スマソ。
あと、ちょっと日本語が変だよなぁ俺……
0192デフォルトの名無しさんNGNG
>>189
m=det(&b,n-1); -> m=det(&b,n-1);
じゃなくて
m=det(&b,n-1); -> m=det(b,n-1);

>>190
coまでは見てないが何か勘違いしてない?
0193175NGNG
>190
レス有難うございます

co(a,n,1,i,&b);
の部分はn*n行列aに対して(n-1)*(n-1)行列bを返すようにしているのですが
ここで
co(a,n,1,i,b);
としてしまうと、bの値が変化しないので、
上手くいかないような気がします

最終的に
deta=6
になって欲しいのですが・・・
0194デフォルトの名無しさんNGNG
>>186
確かに187が言うように実行環境依存になるかもしれんが、一応VCを使ってANSIC準拠で作るとするなら
printf("文字を入力:[ ]");
printf("\b\b");
c = getchar();
だな。
環境によっては\bで文字が消えるかもしれん、、
VCなら消えなかったが。
0195186NGNG
>194
できました!。ありがとうございました。
0196にゃんkpNGNG
そろそろマクロ関係の勉強もしようと思ってるんですけど
どこ通いサイトなんか無いでしょうか?
0197デフォルトの名無しさんNGNG
>>196
基本的な使い方判ってるなら、C-FAQのプリプロセッサの項読めば十分。
マクロで覚えるべき事なんて多くないから。
0198デフォルトの名無しさんNGNG
>>190
n-2までにしなきゃいけないね。
void co(int *a,int n,int i,int j,int *b) {
int k,l;
for(k=0;k<=n-2;k++)
for(l=0;l<=n-2;l++)
b[k*(n-1)+l] = a[(k<i?k:k+1)*n+(l<j?l:l+1)];
}

>>193
bを配列にしたので問題無い。アドレスが渡されるから。
co(a,n,1,i,b);だと
行列の一番上のところの数字だけで行列式が決まってしまうんだが・・・。
0199デフォルトの名無しさんNGNG
>>193
3次の行列式を調べるとこうだと思う。
co(a,n,0,i,b);
m=det(b,n-1);
d=d+a[i]*((i%2)*(-2)+1)*m;}}
0200190NGNG
>>199
正解。すげぇ。
行列ひさびさに見た。線形代の教科書見てみたんだが、サパーリ (/・ω・;)
余因子展開ですか。。へぇ〜。。
0201デフォルトの名無しさんNGNG
行列か…
わざわざ配列にしてループ回してる意味が分らん。
構造体にすれば直感的なループで済むのに?
struct MATRIX
{
float A11, A12, A13, A14;
float A21, A22, A23, A24;
float A32, A32, A33, A34;
float A41, A42, A43, A44;
};
まあ、mallocかけて可変長の正方n次行列にしたいのか?
どの道、ij成分の入力があるんだから構造体で扱いやすくした方が良いと思うが…
…行列式なんて逆行列を求める時程度しか使ってないな…

3DPG野郎ですた。
0202デフォルトの名無しさんNGNG
FILE*の入出力系関数に、文字列ストリームを関連付ける方法ってないですか?
ファイルに書き出す必要はなくて、
fgetcとかfprintfをバッファに対して使いたいんですが。
sscanfやsprintf使えという回答は不要です。
0203デフォルトの名無しさんNGNG
age
0204デフォルトの名無しさんNGNG
>>202
なんでsprintfとかじゃだめなの?
0205デフォルトの名無しさんNGNG
>>204
既存のファイルへの入出力をバッファへも行う必要が出てきたので。
一旦完成してるソースなので、あんまり変更したくないんです。
関連付け不能ならsprintfに切り替えるつもりですが。
0206デフォルトの名無しさんNGNG
>>202
無いと思う。 OSによっては有るかもしれないけど・・・
文字列がfopenで開けなければアウト。
つまりデバイスとして用意されている必要が有るかと。

逆に、テンポラリファイル作って、そこに文字列当てはめるのは
mmapで出来るだろうけど。
RAMディスクとか使えそうな環境なら、これに割り当てるって手段は?
0207デフォルトの名無しさんNGNG
>>202
イレギュラーな方法になるけど、
fprintfを無理矢理再宣言してオーバーライドしちゃうって手もあるけど
そこまでするならsprintf使った方がいいだろうね
0208デフォルトの名無しさんNGNG
>>206
ずっとMSDN眺めてましたが、該当する機能は無さそうですね。
setvbufはそういう用途と違うみたいですし。
FILEとバッファをラップするインタフェース作ってお茶濁すことにします。
ありがとうございました。
0209206NGNG
最終手段として、文字列を実体とするデバイスドライバを書くって
方法も有るんだけどね。

そこまですんなら、sprintf使った方が激しく早いが。
0210デフォルトの名無しさんNGNG
バッファに対しての出力を求めているコンテキストでは、
書き込むファイルをtmpfileでつくったものとする。
そこに通常と同じように書き込み、rewindしてからバッファにfreadしfclose。
ファイルへの出力の時はrewindの前にリターン。
0211デフォルトの名無しさんNGNG
>rewindの前にリターン

ってなんだ?
0212デフォルトの名無しさんNGNG
>>210
rewindしてからバッファにfreadしfclose。の前に関数を抜けると。

void func(const char *s,FILE *fp,char *buf,size_t size)
こんな関数じゃないの?fpがNULLならばbufにsizeバイト書き込むとか。
0213212NGNG
リターンしちゃまずいのなら、「rewindしてからバッファにfreadしfclose。」の部分をバッファに書き込む時だけ行うようにする。return以外の方法でね。
0214デフォルトの名無しさんNGNG
>>202

FUNOPEN(3)

BUGS
The funopen() function may not be portable to systems other than BSD.
0215デフォルトの名無しさんNGNG
C言語で正規表現を使うにはどうすればいいんでしょうか
0216デフォルトの名無しさんNGNG
・ライブラリを使う。
・(検索なら)grep、(置換なら)awkなどを呼んでしまう。
・諦める。
0217デフォルトの名無しさんNGNG
>>215
Windowsなら秀丸エディタのパッケージなどに含まれるJRE32.DLLがそれにあたるかな。
http://www.yamada-labs.com/software/spec/jre/
0218デフォルトの名無しさんNGNG
>>216-217
なるほど。ソースつきのライブラリを探して
改造しようと思います。ありがとうございました。
0219デフォルトの名無しさんNGNG
while(1)
{
scanf("%d",&a);
if(a==0){
break;
}
else{
printf("1を入力してください\n");
}
}
数字の1以外だとelseの処理をしてまたscanfで数字を入力できるのですが、
文字を入力してしまうとprintfが無限ループしてしまいます。
文字を入力してもちゃんと動作するにはどうしたらよいでしょうか?
0220175NGNG
>198-199
有難うございます
ちゃんとdeta=6に成りました
0221デフォルトの名無しさんNGNG
↓知らなかった

http://seclan.dll.jp/c99d/c99d05.htm#dt19990607

整数の除算に何か問題があるの?そう思う人も多いでしょう。しかし現在の C 言語では、整数の除算に関しては移植性がありませ
ん。どういう場合に移植性がないのかといえば、整数を割るときのどちらかのオペランドが負であった場合です。
 現在の C 言語の規格では両方のオペランドが正の数の場合、商は小数点以下を捨てた数になることになっています。例えば、1/2の
場合、正しい値は、0.5 ですが、小数点以下を捨てるので商は 0、余りは 1になります。余りは、(a/b)*b + a%b == a を満たす値となりま
す。
 しかし、どちらか一方の数が負の場合、その結果は実装依存になっています。例えば、-1/2 の正しい結果は、-0.5 ですが、環境によ
って商0余り-1になったり、商-1余り1になったりします。
 今回の新しい C 言語では、割り算の結果はすべて 0 方向に切り捨てることになりました。例えば、-1/2 では結果が、-0.5 ですが、
0 方向に切り捨てるので、商は 0 になります。すると余りは、-1 ということになります。これがすべての環境で保証されることになりまし
た。
0222デフォルトの名無しさんNGNG
Windows98で動くお勧めのコンパイラは何ですか?
フリーじゃなくても構いまません。
0223デフォルトの名無しさんNGNG
Delphi
0224デフォルトの名無しさんNGNG
ここはC言語のスレでつ
0225デフォルトの名無しさんNGNG
>222
インテルC/C++コムパイラ
0226デフォルトの名無しさんNGNG
C MACHINE
0227デフォルトの名無しさんNGNG
ご冗談を
0228227NGNG
無視ですか?
0229デフォルトの名無しさんNGNG
ファインマンさん?
0230デフォルトの名無しさんNGNG
新刊、「無視ですか?ファインマンさん」が誕生したわけだが。
0231デフォルトの名無しさんNGNG
>>219
scanf()の%d指定は、数字文字を変換する指定でしかない。
なので、数字以外の文字を入力しても変換すべき文字がないので
入力を処理することなく終了してしまう。
解決方法としては、
・%s指定にして数値への変換は自前で行う
・scanf()の戻り値をチェックする
・fgets()に読み込んでから上記に注意しつつsscanf()で変換する
などの方法がある。
まぁ、一番最後の方法が一番確実だね。
0232デフォルトの名無しさんNGNG
一番上が一番楽じゃない?
%sで読み込んでatoiで数字変換
0233デフォルトの名無しさんNGNG
>>219
1を入力してください。
じゃなくて
0を入力してください。
だろ?
1だと、終了しねぇ〜よ!
0234219NGNG
できました。
1番上のでやりました。
ありがとうございます。
>>233
打ち間違いです
0235デフォルトの名無しさんNGNG
文字ってatoiで変換したら0になるんだな
0236デフォルトの名無しさんNGNG
それがなにか。
0237デフォルトの名無しさんNGNG
bsearchはいいぞbsearchは。
0238デフォルトの名無しさんNGNG
>>219
書式指定に空白を入れときなさい。
scanf(" %d", &a)

書式指定子の空白は空白文字(スペース、タブ、改行コード)を読み飛ばす。
入門本よりマニュアルをよく読むべきだよ。

じゃないと>>231 >>232みたいに頓珍漢なこと言い出すやつが出てくるからね。
0239デフォルトの名無しさんNGNG
頓 珍 漢
平 子 太
0240デフォルトの名無しさんNGNG
どちらが頓珍漢なんだ(^_^;)
0241デフォルトの名無しさんNGNG
長生きするもんだな、頓珍漢に「頓珍漢なこと」といわれるとは思わなかった。
0242デフォルトの名無しさんNGNG
>>239
よしこちゃんの下の兄弟だっけか?
0243デフォルトの名無しさんNGNG
>>238
> 入門本よりマニュアルをよく読むべきだよ。

219をよく読むべきだよ。
0244デフォルトの名無しさんNGNG
X = X ^ c->P[i];
この「->」の意味を教えていただきたい。
0245デフォルトの名無しさんNGNG
>>244
構造体のポインタのメンバを参照するときのお約束。
0246デフォルトの名無しさんNGNG
>>245
thx!分からないんで調べてみます。
0247デフォルトの名無しさんNGNG
データベースの使い方を教えてください
0248デフォルトの名無しさんNGNG
>>247
データベースのスレ逝け
0249デフォルトの名無しさんNGNG
>>248
そうします。
0250デフォルトの名無しさんNGNG
C言語って何?
0251デフォルトの名無しさんNGNG
G(o^-^o)gle < 検索しようね
0252デフォルトの名無しさんNGNG
>>251
いやじゃ教えろ
0253デフォルトの名無しさんNGNG
嘘ごめん
マウスが壊れるほどにサイト駆け巡ってきます
0254デフォルトの名無しさんNGNG
”C言語ってなに厨”
0255デフォルトの名無しさんNGNG
Microsoft社が開発した言語。
名称からも分かるようにBasicを元にしたようだが、大きく異なる。
0256デフォルトの名無しさんNGNG
C言語って抽象化しすぎ
0257デフォルトの名無しさんNGNG
>>256
どこがや・・・
02581NGNG
256匹か・・・・
0259デフォルトの名無しさんNGNG
初心者の質問ですいませんが、どなたか教えてください。
当方、C言語の独学中で、任意の数字の階乗を計算するプログラムを作ってます。
それで、main関数の他に、実際に階乗を計算するkaijou関数を作成しました。
main.c、kaijou.c、kaijou.hがあります。
それで、kaijou.cにprintf()やscanf()等を使ってるのですが、コンパイル時に
「関数 'printf' は定義されていません。int 型の値を返す外部関数と見なします。」
「関数 'scanf' は定義されていません。int 型の値を返す外部関数と見なします。」
と出てしまいます。
今まではprintf等をつかっててもこんなことは言われなかったのですが、なぜこのようなエラーが起きたのでしょうか?
どなたか、わかる方教えていただけ無いでしょうか?
よろしくお願いします。
0260デフォルトの名無しさんNGNG
>>259
stdio.hをインクルードしていないから。
0261259NGNG
>>260
速レスありがとうございます。
私のkaijou.cにはstdio.hをインクルードしてませんでした。
早速インクルードさせてコンパイルしたところエラーがでませんでした。
初歩的な質問に答えていただいて、本当にありがとうございました。
0262デフォルトの名無しさんNGNG
とある関数で、
char choice;
choice = getchar();

という表記をしたところ、コンパイル時に
choice = getchar();の時にintからcharに変換しました。データが失われてるかもしれません。
と警告が出ます。
で、実行するとその処理が飛ばされてしまい、ちゃんと動作しません。
なぜこのような事が起きるのでしょうか?
0263デフォルトの名無しさんNGNG
getchar() の戻り値は int だヴォケ
0264デフォルトの名無しさんNGNG
あはは
0265デフォルトの名無しさんNGNG
>262
>その処理がとばされてしまい

int→charとは違う部分でも間違ってる、に2000$++
0266デフォルトの名無しさんNGNG
>>262
おそらく改行文字よりひとつ前まで読む処理が上にあって、その時読まれなかった改行文字がgetcharに拾われているんじゃないかな。
例えば、scanf("%d",&n);とやって数字列+改行文字を入力すると改行文字は読まれずに残っちゃうよ。
0267デフォルトの名無しさんNGNG
だからfgets()+sscanf()にしろとあれほど・・・
0268あふぉNGNG
解の公式のプログラムで
 x^2+100.1x+1.234=0
のような場合でも出来るだけ桁落ちがなく正確に計算できるようにするには
どうしたらいいんですか?
0269bloomNGNG
http://homepage.mac.com/ayaya16/
0270262NGNG
いや、そのようなことはありません。
ソース

#include <stdio.h>
int coice()
{
   char choice;
   printf("Yesの場合はY、Noの場合はNを入力してください。\n");
   choice = getchar();
   if(choice=='Y')
   { (省略 }
   if(choice=='N')
   { (省略) }
   else
   {printf("YかNを入力してください。\n");}
   return 0;
}
間違ってるんですか?
0271デフォルトの名無しさんNGNG
2番目のifを
0272デフォルトの名無しさんNGNG
二番目のifの中身はreturn 0;だけです。
0273262NGNG
exit関数を使おうかと思いましたがreturn 0;でも大丈夫かなと思ってそうしました。
0274デフォルトの名無しさんNGNG
else
0275262NGNG
どこが間違ってるのか教えてくれませんか?
0276デフォルトの名無しさんNGNG
なんで二番目のifはelse ifじゃないんだろう。
0277デフォルトの名無しさんNGNG
>>270
その関数だけ出してそのようなことはありませんなんて言われても信用できないんだけど。
0278デフォルトの名無しさんNGNG
>>262
>どこが間違ってるのか教えてくれませんか?
あんたの態度。
0279デフォルトの名無しさんNGNG
短いなら(省略)の部分も書いてみれば見れば?
0280デフォルトの名無しさんNGNG
>>268
多倍長演算と浮動小数点演算
0281デフォルトの名無しさんNGNG
最初のifはmain関数呼び出し、
{
   main();
}
次のifはreturn 0;です。
ただ、これだけだったらコンパイル時にエラーが出たのでヘッダファイルにmain関数の宣言を書きました。
0282デフォルトの名無しさんNGNG
ていうか、とばされるって言ってただけで具体的にどうなったかも聞いてないよ。
せめて、どうなってほしいのか、どうなってしまったかが分からないと答えようがない
0283デフォルトの名無しさんNGNG
>>281
ループさせたいんだったらループ用の終了フラグ作ってwhileとかそういうことやらんのかね。
0284デフォルトの名無しさんNGNG
はぁ?
main関数呼び出しって……いったいどんなプログラムやねん!
ついでに、そういうときはswitch文を使うのが定石かつ他人にソースを見せる時、理解を助ける。

main関数
-menu関数
--処理関数

で、menu関数で
int flag=true;
do{
getchar等
switch(){
case 'y': 処理する関数;break;
case 'n': flag=false;break
default : エラーじゃごら
}
}while(flag);

みたいに書くなぁー
0285デフォルトの名無しさんNGNG
をいをい、書きかけだよ(;;)

main関数からmenu関数を呼び出して、そのmenu関数から処理関数を呼び出す、ね。
0286デフォルトの名無しさんNGNG
>>281は釣り師に5000織田信長
0287デフォルトの名無しさんNGNG
>>281
…よく分らないんだけど、普通さcoice関数を宣言してmainで呼ぶんじゃないの?
coice関数の戻り値は何に使うの?まさか、mainの戻り値と同じ扱いじゃないよね?
0288鈴木健一郎 (NT4.0/2000/XP)NGNG
printf みたいな可変長の引数を持つ関数を作っているんですが、
「引数の数がいくつ渡されたか」っていう情報は明示的に
教えてあげなくちゃいけないんでしょうか?

argc みたいな感じで va_list がどこかの構造体に格納されていないんですか?
0289デフォルトの名無しさんNGNG
>>288
そのために最低でもひとつは固定の引数が必要となる。
その固定引数が与えた引数の数を知るヒントになる。
0290281NGNG
全体の動きを話すと、

ある任意の数をいれ、その階乗計算し、
その後もう一度計算するか選択してするならまたmain関数に戻るというものです。
なのでmain関数の中身はkaijou();とchoice();、return 0;しか書いてません。
大体理解していただけましたでしょうか?
0291デフォルトの名無しさんNGNG
>>290
構造化プログラミングについて勉強しましょう。
0292デフォルトの名無しさんNGNG
いただけませんね。
0293デフォルトの名無しさんNGNG
Cの話しか微妙なんだけど質問

当方、WinXP+BolandC5.5+CPadでプログラムつくってるんだけど
エスケープシーケンスが使えないという現象に遭遇してます
多分XPがいけないんだと思うけど、この問題の回避策ってある?
OS変えないとだめ??
0294デフォルトの名無しさんNGNG
choiceからmainを呼び出す意味なし。
while文かdo〜while文を。
0295デフォルトの名無しさんNGNG
>>293
ttp://www.hakodate-ba.ac.jp/hp/etc_hp/mizukami/TrRoom8.htm

ぐぐれよ。
0296デフォルトの名無しさんNGNG
>>295
ググったけど見つからなかったんだよー
thxです、ってかこれって有名だったのね 汗
0297デフォルトの名無しさんNGNG
>>293
ボーランドーのヤツなら、ライブラリに
問題のないlocate()とかが用意されてるから
conio.hを読んで使ったら?
0298デフォルトの名無しさんNGNG
>>297
神!
0299295NGNG
>>297
まったくで m(_ _)m
0300デフォルトの名無しさんNGNG
>>135
ゲーム脳
0301293NGNG
>>297
ところが既存のソースなんだよね・・・
書き直すのかったるい

ってか>>295の方法できなかったぞーい

仕方ないから書き直します
0302デフォルトの名無しさんNGNG
>301
まともなコードなら書きなおす必要はないとおもうが・・・
・・・そうか、ベタ書きか・・・
0303デフォルトの名無しさんNGNG
>>281
それなら main() じゃなく exec(argv[0]) にしたら?
0304デフォルトの名無しさんNGNG
どうして初心者ってやたらと高次元な配列を作りたがるのですか?
しかも動的に。
0305ヽ(´ー`)ノNGNG
>>304
ロジックの整理ができんから、妙ちくりんなデータ構造になるんでない?
0306デフォルトの名無しさんNGNG
>>305
普通データ構造から作るだろ。ってのはオブジェクト指向に慣れすぎた者の発想なのだろうか。
0307デフォルトの名無しさんNGNG
>>306
構造化プログラミングでもデータ構造は重要。
0308ヽ(´ー`)ノNGNG
>>306
それができたら初心者じゃない…w
0309デフォルトの名無しさんNGNG
ヽ(´ー`)ノ <- この顔文字むかつく
0310デフォルトの名無しさんNGNG
何行くらいのソースが書けたら初心者じゃないと言えますか?
何行じゃなくて何ステップ、ですか?
行とステップはどう違いますか?
0311デフォルトの名無しさんNGNG
>>310
行数気にしてちゃだめでしょ
複雑な処理をいかに簡潔で高速に書けるかの方が重要な気がする
0312デフォルトの名無しさんNGNG
知ったかぶることができるようになったら中級者だよヽ(´ー`)ノ
0313293NGNG
再び質問です
文字の移動、画面の消去はconio.h使って出来たんだけど
文字色が変えられない・・・
textcolorって使えないの?

誰か教えてくれー

うーむ、XP恐るべし
0314デフォルトの名無しさんNGNG
エスケープシーケンス使え、って書こうとしたら、XPでは使えないんだねー。
初めて知った。
0315デフォルトの名無しさんNGNG
おまいら、自分で脱初心者だと思えるまでにどれくらいかかった?
モレまだ10日も勉強してないけど、全然進んでない気がしてな。
今から配列勉強・・ヽ(´ー`)ノ
0316デフォルトの名無しさんNGNG
>>315
がんばれよ。後、先輩に対する口の利き方位勉強しとかんと無職ダメ板住人みたくなるぞ。
0317デフォルトの名無しさんNGNG
>>315
プログラミング初心者から抜け出せたと思うまでには5-6年掛かったな。
Cはそれから使ったから初心者だったのはおよそ一週間だ。
それから10年以上Cをメインに使ってきて、一ヶ月前にC++を本格的に
使い始めたが、C++は未だ初心者の気分だな。
0318デフォルトの名無しさんNGNG
memset,memcpyの使い方がいまいち分からないんですが。
文字列が入った変数から、?byteだけ数値として取り出す方法とかmemcpy
でできると思ってるんですがどうでしょう?
0319デフォルトの名無しさんNGNG
構造体使う奴は初心者。
gotoの使い方に慣れたら中級者。
列挙型とintとint*しか使わなくなったら上級者。
charとchar*も使い分ければ達人。
0320デフォルトの名無しさんNGNG
>>316
スミマセンついつい・・・。結構年だしね(;´Д`A ```
しかしここはプログラムの先輩ばかりなわけだ。。
気をつけます。
>>317
やはりそんなにかかりますか。。
本職ではなくとも私も用途は趣味と仕事なわけですが・・、
CマスターしたらC++習得は早いってわけでも無いのですか?
0321デフォルトの名無しさんNGNG
>>318
普通はもっと大量のデータをコピー、セットするのに使うんじゃないかな。
例えば画像データをVRAMにコピーするとか。
0322デフォルトの名無しさんNGNG
>文字列が入った変数から、?byteだけ数値として取り出す方法

char mojiretsu[] = "test";
int suuji;

suuji = (int)mojiretsu[0];
0323デフォルトの名無しさんNGNG
>>322
intは何バイト?
0324デフォルトの名無しさんNGNG
・・・

char mojiretsu[] = "test";
int suuji;

suuji = *(int *)mojiretsu;
0325デフォルトの名無しさんNGNG
>>318
> 文字列が入った変数から、?byteだけ数値として取り出す方法とかmemcpy
> でできると思ってるんですがどうでしょう?

おお、そんなんできるんだ。
やり方の詳細キボン。

>>320
> 本職ではなくとも...仕事なわけですが・・、
プログラマーじゃないけど、仕事のためにプログラミングするってこと ?
(なんかの研究者で、数値解析とかが必要とかなのかなぁ...。)

> CマスターしたらC++習得は早いってわけでも無いのですか?
だいぶ、新しい概念が入ってるからね。
でも、ベースは C だから、C を覚えておくに越したことない。
0326デフォルトの名無しさんNGNG
>構造体使う奴は初心者。
>gotoの使い方に慣れたら中級者。
>列挙型とintとint*しか使わなくなったら上級者。
>charとchar*も使い分ければ達人。
誰も読めないソースを書けるようになったら、神と阿呆の紙一重(笑
どうせマシンパワーが余ってるんだから、最適化の必要の無い部分は徹底的に
可読性重視でいいと思うがし。
ただ、シミュレーションとかで最適化するべき部分に対しては、
自分以外読めないくらいでもかまわない。ただ、変数名のスコープだけは気をつけて。
0327デフォルトの名無しさんNGNG
>>326
ネタにマジレ...。
0328デフォルトの名無しさんNGNG
charとchar*も使い分ければ達人。
0329デフォルトの名無しさんNGNG
>>319
激しく同意
0330デフォルトの名無しさんNGNG
わかります。わかります。
0331デフォルトの名無しさんNGNG
>>326
手作業で最適化しないといけないコンパイラですか。
0332317NGNG
>>320
学生の頃だからね<5-6年
しかも習ったわけじゃないし。

で、C++は取り敢えずクラスの利用と演算子オーバーロードの辺りで止まっている。
テンプレートは使いこなしたとは言いきれないし、継承に至っては結構怪しい。
会社のC++マスターに、「それだけできれば充分でしょう」とのお墨付きはもらったがね。
0333デフォルトの名無しさんNGNG
キャスト使う奴は初心者
0334デフォルトの名無しさんNGNG
>>332
> 「それだけできれば充分でしょう」

その言葉は見込みのない人に対しても使うよね(笑) 「もうやめろ」という意味で(笑)
0335デフォルトの名無しさんNGNG
int main(void)
{
char *ten;
char *one;
ten = ntof(15);
printf("%s\n", ten);
one = ntof(15);
printf("%s\n", one);
strcat(ten,one);
printf("%s\n", ten);
return 0;
}
char *ntof(int org)
{
char *answer;

switch (org)
{
case 15: answer = "f";
break;
}
return answer;
}
0336デフォルトの名無しさんNGNG
上のプログラムをを実行すると
Segmentation fault
と異常終了してしまいます・・・
f
f
ff
という結果がほしいのですが、どうしたら良いか教えてもらえないでしょうか?
strcatのところが悪いと思うのですが・・・
今日の半をこれでつぶしてます。
どなたかお願いします!!
0337デフォルトの名無しさんNGNG
しーません配列の要素数てどうやって取得するんですか?
myAry.Lengthみたいなのやりたいです
0338デフォルトの名無しさんNGNG
>char *ten;
>char *one;
>ten = ntof(15);
>printf("%s\n", ten);

ぬるぽ
0339デフォルトの名無しさんNGNG
>>337
無理です。
0340デフォルトの名無しさんNGNG
>>337
sizeof(a)/sizeof(a[0])
0341デフォルトの名無しさんNGNG
>>335
#include <stdio.h>
#include <string.h>

void ntof(int org, char *str)
{
 switch (org) {
  case 15: strcpy(str, "f");
  break;
 }
}

int main(void)
{
 char ten[128], one[128];

 ntof(15, ten);
 printf("%s\n", ten);
 ntof(15, one);
 printf("%s\n", one);
 strcat(ten, one);
 printf("%s\n", ten);
 return 0;
}

これじゃ駄目なの?
0342デフォルトの名無しさんNGNG
>>340
なるほろ。。そうするしかないのれすか・・さんくすこ
0343デフォルトの名無しさんNGNG
 switch (org) {
  case 15: strcpy(str, "f");
  break;
 }
0344デフォルトの名無しさんNGNG
>>336
文字列リテラルは書き換えられない。
書き換えられないはずの文字列リテラルにstrcatで書き込んでいるから
セクメンテーションフォールトが起きる。
0345デフォルトの名無しさんNGNG
>>342
いや、わからん
こっちの方が一般的かなと
0346デフォルトの名無しさんNGNG
>>345
他にはないでしょ?
0347デフォルトの名無しさんNGNG
>>341
>>344
ありがとうございました!!!
できました!!
これからも精進します。
0348デフォルトの名無しさんNGNG
>>346
ものによるかなと
グローバル変数を使うとかさ
0349デフォルトの名無しさんNGNG
>>348
え、グローバル変数使ってどうやるの?
0350デフォルトの名無しさんNGNG
文字列からintにするにはatoiでいいけど
反対のintから文字列はどうすればいいですか?
0351デフォルトの名無しさんNGNG
int i=5671;
char buf[1024];
sprintf(buf,"%d",i);
0352デフォルトの名無しさんNGNG
>>350
itoa
0353デフォルトの名無しさんNGNG
ウィザードリーオンライン2chで開発始まる(有能な人材求む
http://219.96.231.242/wizonline/player/world.html
0354デフォルトの名無しさんNGNG
>>349
恐らくこう言う意味。
int global_len = 10;
extern int global_len;

int main(void)
{
int arg[global_len];

return 0;
}
0355デフォルトの名無しさんNGNG
>>354
昔のCだと動かない罠。
0356340NGNG
>>345
お前は誰だ
0357デフォルトの名無しさんNGNG
>>355
規格としては昔でも、現役な気がする。
0358320NGNG
>>325
遅レス
 研究者ではないが製品開発には関わることあります。
基本的には生産技術要員。
僕はどちらかというと大規模な設備なんかを買う方なんだけど
いまいちその、、プログラマーとの打ち合わせがウマク
いかないし理解できないんだな。それは漏れがアフォだから。
「いやぁ、ソレハ難しいですよ、予算がかかります」
といわれてもよくワカランし。。
「ソースコードは要りますか」と聞かれても貰ってもわからないし。
趣味も兼ねて勉強したいと思いました。
ちなみに今まで会社ではHP-BASICしか使ったこと無いです。
0359340NGNG
>>354
ナニソレ?
つーか後は任せた
0360デフォルトの名無しさんNGNG
>>358
あー、つまり奴らに騙されて大金払わせられないように知恵つけたいってわけか。
0361デフォルトの名無しさんNGNG
>>349
#include <stdio.h>
#include <string.h>

char buf[128];

void ntof(int org)
{
 switch (org) {
  case 15: strcpy(buf, "f");
  break;
}
}

int main(void)
{
 char str[256];
 str[0] = '\0';

 ntof(15);
 strcat(str, buf);
 printf("%s\n", buf);
 ntof(15);
 strcat(str, buf);
 printf("%s\n", buf);
 printf("%s\n", str);
 return 0;
}
とかかな?あまり好ましくはないけど
0362デフォルトの名無しさんNGNG
 switch (org) {
  case 15: strcpy(buf, "f");
  break;
}
0363デフォルトの名無しさんNGNG
おいおまえら、最後のcase(or default)文にbreakつけますか?
0364デフォルトの名無しさんNGNG
>>362
なんなんだ?
これって駄目なの??
0365デフォルトの名無しさんNGNG
default自体書きませぬ
0366デフォルトの名無しさんNGNG
今日は賑やかだな
0367デフォルトの名無しさんNGNG
>>363
つける
ってかdefaultも意味が無くても必ずつける
0368デフォルトの名無しさんNGNG
sageろアホ
0369デフォルトの名無しさんNGNG
ごめんさない。
0370デフォルトの名無しさんNGNG
>>368
http://qb.2ch.net/test/read.cgi/accuse/1051545341/
0371デフォルトの名無しさんNGNG
>>367
>ってかdefaultも意味が無くても必ずつける

ifにもかならずelseを付けると言うことですね?
0372デフォルトの名無しさんNGNG
ドモ
0373デフォルトの名無しさんNGNG
>>371
当然です
0374デフォルトの名無しさんNGNG
>>371
当然だろ?
if(あれこれ) ;
else if(0) ;
else ;
0375デフォルトの名無しさんNGNG
ifだけの場合は、whenというマクロを使います
0376デフォルトの名無しさんNGNG
when(あれこれ) {
}
0377デフォルトの名無しさんNGNG
ifしか書かない人には注意力が欠けている人が多い。
0378デフォルトの名無しさんNGNG
>>363
一応つけてる
0379デフォルトの名無しさんNGNG
>>371
いやいや

default:
 値が変ですよ

みたいな感じで書くってこと
0380358NGNG
>>360
それもある・・。実際だまされてる事もあるしね多分。
Cわかる人間なんて他部署にしかいないし。
ワカラン仕事をするほどツマラン事はない・・。
0381デフォルトの名無しさんNGNG
あっそ
0382デフォルトの名無しさんNGNG
>>358
> 僕はどちらかというと大規模な設備なんかを買う方なんだけど

ああなるほど、昔の俺と同じような立場なわけね。
ハード/ソフトは自社開発だったけど、筐体とかメカの部分を外部にお願いしていた。
確かに俺もメカの部分でいろいろ言われても、ちんぷんかんぷんだったよ...。

> ちなみに今まで会社ではHP-BASICしか使ったこと無いです。

HP-BASIC はそこそこ使える ? その実行環境は今もある ?
とりあえず、1つの言語でプログラム組めるようになれば、他の言語の勉強も楽だよ。
0383デフォルトの名無しさんNGNG
case内でreturnした場合もbreakつけますが何か。
0384デフォルトの名無しさんNGNG
結構忘れるクセがあるからcase書いたら中にreturnとか書こうがなんだろうが
最初にbreakだけかいてまう。
0385デフォルトの名無しさんNGNG
>>383
お節介コンパイラさんから到達できませんと怒られますよ。
0386デフォルトの名無しさんNGNG
警告やエラーは/dev/nullに送って黙らせる
0387デフォルトの名無しさんNGNG
>>379
俺は、大体そうする。環境によるけど、
default:
 abort();
とか。
UCSD Pascal みたいに、switch() 文で default: 節が無い場合は、case に引っかからなかったら異常終了するようなコンパイルオプションが欲しい。
0388デフォルトの名無しさんNGNG
俺はコンパイラの最適化のジャマを、わざわざするようなことはしない
0389デフォルトの名無しさんNGNG
数々の嫌がらせを切り抜けて最適化するのがコンパイラの使命
0390デフォルトの名無しさんNGNG
コンパイラという仕事も大変ですね。
0391318NGNG
>>321-324
なんつーか、peek,pokeのような、、、感じで0xFFFFFFくらいも文字列のある(適当)部分から読み出す
とか書きこむとか、memcpy,memsetでできるんではと思ったんで。
memcpyいまいち分からないし探してもほとんど良いのなかったです。
>>325
C言語→暗号化アルゴリズム の方になっちゃうんですが
ブロック暗号てのである部分ごとに(ブロック)暗号化するんで、ソースコードもちょっとあったからできるんじゃないかと思ってます。
ソースコードの理解がまだまだだし、それに関することも無いわけで書いてみました。
0392デフォルトの名無しさんNGNG
すいませんちょっと質問なんですが、substrのような
文字列を切り出す方法はsprintfしか無いのでしょうか。
0393デフォルトの名無しさんNGNG
>>392
俺ならstrncpyを使うが。

char s1[234],*s2="string";
strncpy(s1,s2+2,3);
s1[3]='\0';
0394デフォルトの名無しさんNGNG
>>392
strncpy, strncat, strncmp, strchr, strstrなど
0395デフォルトの名無しさんNGNG
>>394
strncmp??
0396デフォルトの名無しさんNGNG
>>395
アホがいます。
0397デフォルトの名無しさんNGNG
>>396
strncmpでどうやって切り出すの?
strchrやstrstrもよくわからない・・・・
0398デフォルトの名無しさんNGNG
まったくだ
0399392NGNG
文字列の先頭の数文字を切り落としたかったんですが
そういう便利関数は自分で用意するしか無いようですね。
ありがとうございました。
0400デフォルトの名無しさんNGNG
>>399
ポインタを動かすとかができないのなら、memmove
0401394NGNG
>>397
直接は切り出せないけど比較して切り出すのに使えるかなと
ってかsubstrが何をやるものかよくわかってない俺
0402デフォルトの名無しさんNGNG
>>399
\0を挿入
0403デフォルトの名無しさんNGNG
>>402
後ろが切れるぞ。
0404デフォルトの名無しさんNGNG
切れ痔
0405デフォルトの名無しさんNGNG
>>400
おまえ何言ってんだ?
0406デフォルトの名無しさんNGNG
>>405
char str[]="abcdefg";
char *p;

先頭の2文字(ab)を切り捨てたいなら、
p=str+2;とするか、memmove(str,str+2,6);
0407デフォルトの名無しさんNGNG
コンソールアプリで、main関数でない関数からのmain関数呼び出しは
どうやればいいのでしょうか?
ただソース中にmain();と書いてもエラーがでます。
どなたか、どうすればいいのか教えていただけ無いでしょうか?
よろしくお願いします。
0408デフォルトの名無しさんNGNG
エラーじゃなくて警告でしょ。C++でなければ。

ソースの先頭にでもint main(void);かint main(int,char **);と書く(mainの引数にあわせて)。


でもなんでまたmainを呼び出すのよ。
0409407NGNG
>>408
あ、そうです。警告です。
そのmain関数を呼び出したい関数を書いてあるCソースファイルにmain関数の宣言を行えばいいのですね。

実はまだ初心者で、関数の使い方を勉強してるのです。
なので簡単なプログラムを関数で色々やってみたりしてるんです。
0410デフォルトの名無しさんNGNG
>>406
Cっぽくて素敵。
0411デフォルトの名無しさんNGNG
char bur[256];
の中身"inside"を
char *test;
に代入することはできますか?
0412デフォルトの名無しさんNGNG
頭イタイ
0413デフォルトの名無しさんNGNG
>>411
test = bur;
0414デフォルトの名無しさんNGNG
test = &bur[0]
0415デフォルトの名無しさんNGNG
exit関数についてですが、これをmain関数以外の関数で使いたいのです。
その場合は、stdlib.hをインクルードするだけで使えるのでしょうか?

できたら、exit関数の使い方を教えて欲しいのですが・・・
どうかよろしくお願いします。
0416デフォルトの名無しさんNGNG
>>414
すばやいお答えありがとうございます。
0417デフォルトの名無しさんNGNG
>>415 man 3 exit
0418デフォルトの名無しさんNGNG
>>416
当たり前だが、そのままだとburの値が変わるとtestの値まで一緒に変わる
別にその後burを使わないなら問題ないけど。

>>415
exit(0);
0419415NGNG
>>417
え・・・?どういうことでしょうか?
本当にすいません。
0420415NGNG
>>418
それのコピペでできました。
本当にありがとうございました。
0421デフォルトの名無しさんNGNG
>>419
とりあえず、ググれ。
0422デフォルトの名無しさんNGNG
>>416
中身を代入なら、strcpyの方がいいんで内科医?
0423デフォルトの名無しさんNGNG
>>922お前はあふぉ、>>411もあふぉ
0424デフォルトの名無しさんNGNG
>>423
未来にレスしてるお前が、一番アフォだろ。
0425デフォルトの名無しさんNGNG
>>424
いや案外ものすごい才能のもちぬしかもしれない。
0426デフォルトの名無しさんNGNG

C言語を勉強して最終的にはC言語を使用してテトリスと作ろうと思ってるのですが
テトリスはC言語で記述可能でしょううか?
やはりVisualCなどでないと無理でしょうか?
0427デフォルトの名無しさんNGNG
はい。
いいえ。
0428デフォルトの名無しさんNGNG
Cでも書けるよ。
っていうか、書いたし。
問題は言語じゃなくて、どんなライブラリを使うかじゃないの?
0429デフォルトの名無しさんNGNG
って、いうか言語と処理系の区別ついてないし。
0430デフォルトの名無しさんNGNG
>>427
サンクス

>>428

自分でライブラリまで作るってのは時間的に難しいですかね?
そんなこったものでなくてただぶろっくが落ちてきて
それをこっちが操作して横が揃ったら消える程度でいいんですが
0431デフォルトの名無しさんNGNG
>>430
Cで書かれたテトリスのソースは探せばあるから参考にしては?
0432デフォルトの名無しさんNGNG
>>431
え?ありますかね?
結構捜したつもりなんですが見つかりませんでした
外国のHPかな?英語はちょっと苦手で・・
0433デフォルトの名無しさんNGNG
char typed[256];
に入れた8文字をそれぞれ別々の
変数8個に代入する方法を教えてください
お願いします。
0434デフォルトの名無しさんNGNG
>>433
まずは、それぞれ別々の変数8個に代入してみるのだ。
0435デフォルトの名無しさんNGNG
>>433
こういうヤツが10年後、
エリートSEとなって世界へ羽ばたいていたりするんだな
0436デフォルトの名無しさんNGNG
>>432
UNIX系のフリーウエアは普通Cでしょ
ましてテトリスなら、いくらでも見つかると思うが・・

http://www.ibiblio.org/pub/Linux/games/arcade/tetris/!INDEX.html
とか
0437デフォルトの名無しさんNGNG
>>433
とりあえす入門書の一冊でも読んでから質問すれや。
0438デフォルトの名無しさんNGNG
初心者の素朴な疑問です。
C言語でベキ乗演算子が使えないのはどうしてですかね・・?
自分で作るとかは別として。根本の理由はなんなんでしょう。
0439デフォルトの名無しさんNGNG
ベキ乗をサポートするプロセッサが少ないからだとか。
powがあるし、自分で書いても難しくないからいいんじゃないの。
0440デフォルトの名無しさんNGNG
http://www.catnet.ne.jp/kouno/c_faq/c14.html
ここの14.7
0441デフォルトの名無しさんNGNG
>>439
なるほど・・
3乗根やn乗根となると、目的の割りに”少しだけ”めんどうですね。
有難うございました。
0442デフォルトの名無しさんNGNG
complex.h tgmath.h を使える環境って
フリーでありますか?とりあえず cygwin/gcc-3.2 は
対応してないようですが。。
0443デフォルトの名無しさんNGNG
>>439-441
ていうか、ほとんど使わないからだろ。
0444デフォルトの名無しさんNGNG
>>442
gcc用のcomplex.hは寡聞にして存じ上げませんが、
g++用でしたらg++-includeに含まれていたかと。
0445デフォルトの名無しさんNGNG
ポインタを使った文字の比較なんですが

if("a" == *p)

というのがだめで

if(0x61 == *p)

と

if('a' == *p)
がOKというのはなぜなんでしょうか。
0446デフォルトの名無しさんNGNG
>>445
それは多分""で囲まれた部分が文字列リテラルへのポインタになってるからだと思う
0447デフォルトの名無しさんNGNG
>>445
最初のうちは、文字列の比較はstrcmpを使うものだ、そういうものだ、
と納得しておこう。
後々理屈が自然にわかるから。
0448デフォルトの名無しさんNGNG
モジはintだから
ダヨ
0449デフォルトの名無しさんNGNG
if(*"a" == *p)
はオッケー
ダヨ
0450デフォルトの名無しさんNGNG
"a" は 'a' と '\0' の2文字からなる文字列へのポインタ
*p は 'a' そのもの。意味が全く違う。
0451デフォルトの名無しさんNGNG
>*p は 'a' そのもの。
'a'は文字そのもの
0452445NGNG
>>446-450
みなさんありがとうございます。"a"はaと\0の文字列で
449さんの場合はそのうちの先頭1文字を比較している
というわけですね。よくわかりました。ありがとうございます。
0453デフォルトの名無しさんNGNG
sageて質問・・・ネタ決定
0454デフォルトの名無しさんNGNG
ageようがsageようが勝手でしょ
0455デフォルトの名無しさんNGNG
>>453がネタだろ。
0456デフォルトの名無しさんNGNG
>>453=sage覚えたて小心者
0457デフォルトの名無しさんNGNG
447 名前:デフォルトの名無しさん 投稿日:2003/05/05(月) 13:16
>>445
最初のうちは、文字列の比較はstrcmpを使うものだ、そういうものだ、
と納得しておこう。
後々理屈が自然にわかるから。
0458デフォルトの名無しさんNGNG
457 名前:デフォルトの名無しさん :03/05/05 15:00
447 名前:デフォルトの名無しさん 投稿日:2003/05/05(月) 13:16
>>445
最初のうちは、文字列の比較はstrcmpを使うものだ、そういうものだ、
と納得しておこう。
後々理屈が自然にわかるから。
0459デフォルトの名無しさんNGNG
吐き出したexeファイルにデータをドラッグ&ドロップして
そのデータのポインタやファイル場所を受け取りたいのですが
どのような関数が必要なのかわかりません。

どなたか、ご教授お願いします。
0460デフォルトの名無しさんNGNG
>>459
fsetpos
0461デフォルトの名無しさんNGNG
>>460
あの説明でよくわかったな。
0462460NGNG
>>461
わかるわけない。
特にデータのポインタってところが。
0463461NGNG
>>462
俺は最初の一行でお手上げだ。
0464459NGNG
初心者でごめんなさい_| ̄|○
例で表すと・・・

解凍ツールで解凍するファイルの名前を
ドラッグ&ドロップで知りたかったのです。
0465459NGNG
なんだか、自分で見てても混乱する文章だと理解してきました
深呼吸してから出直してきます。

>>460氏
苦しいところでのお答えありがとうございました。
0466462NGNG
もしかして〜と思ってちょっとやってみた。
実行ファイルにドラッグ&ドロップしたファイルの名前はargv[1]に格納されるんだな。

>>464
mainをint main(int argc,char *argv[])として、argv[1]からファイル名を得る。
0467462NGNG
>>465
>>460はネタ(にもならんが)
0468459NGNG
>>462氏
わざわざ二度手間みたいですいません・・・早速やってみたいと思います。
ありがとうございます。
0469デフォルトの名無しさんNGNG
コンソールアプリなら466のやり方で大丈夫だな。
ちょっと補足すると、複数ファイルの場合はargv[1〜argc]に入ってるからargc-1回ループさせると。
既に起動してるWindowsアプリのウインドウに、、とかいうんだったらまた別だが
0470462NGNG
正しくいえば、argv[1]からargv[argc-1]だね。
0471459NGNG
>>469氏
今回はお察しのとおり(?)コンソールアプリケーションです。
複数ファイルの場合の時を考えてなかったので、助かります。
覚えておきたいと思います。

>>470氏
見事、成功しました〜。
長々とのおつきあい感謝です。
0472デフォルトの名無しさんNGNG

ト ン ベ ス ト ー ン
      〜宇宙からのメッセージ〜
0473デフォルトの名無しさんNGNG
atexit()って何に使うの?
0474デフォルトの名無しさんNGNG
C言語で、Concurrent Programmingはできますか?
0475デフォルトの名無しさんNGNG
>>473
正直使わない。
大体をしてグローバル変数かファイルスコープ変数しか
アクセスできないしな。
0476デフォルトの名無しさんNGNG
一回使ったことある。
0477デフォルトの名無しさんNGNG
>>473
OSによっては資源の解放に便利に使える。
但し、ここではスレ違いなので詳細は省略。
0478デフォルトの名無しさんNGNG
>>474
できる。
0479デフォルトの名無しさんNGNG
C言語で、Terrariumはできますか?
0480デフォルトの名無しさんNGNG
C言語で、Object Pascalはできますか?
0481デフォルトの名無しさんNGNG

すれ違いだったため、ここで質問します。
http://pc.2ch.net/test/read.cgi/unix/1052041659/l50


行列の演算をCで作っていていつも考える疑問です。

行列の表現は、どんなのが一番汎用な表現ですか?

ただし、
行列の成分は実数とします。

私はa[ROW][COL]みたいな2次元配列です。
分かりやすいけど、融通がきかないです。
引数渡しでa[][COL]とするので、大きさが変更できなくて
不便です。
0482デフォルトの名無しさんNGNG
>>481
引き数はdouble *pMatrixでいいと思うのだけど。
で、参照はpMatrix[i * col + j]って感じで。
それがいやなら i * col + j をマクロにしておくとか。
でも私ならC++でクラスにしちゃうけどね。
0483デフォルトの名無しさんNGNG
>>481
Cを使わない
0484デフォルトの名無しさんNGNG
c言語を始めようというソフトに対応しているコンパイラでゲームをつくれますか?
0485デフォルトの名無しさんNGNG
>484
マジレスだけど、そんなのよりC Machineというのを使った方がいいよ。
0486デフォルトの名無しさんNGNG
コンパイラさえあれば何でも出来る!
元気ですかー!!
0487デフォルトの名無しさんNGNG
>>484
ちょっと待て、対応しているのはコンパイラの側ではないぞ。
0488481NGNG
>>482,483(?)ありがとう。

1次元ですね。なるほど。
私の手元の本は2次元なんですよ。
だからそうしたのです。
でも、かならずしも一般的ではないですよね。

482さん、
参考のためc++の方法を教えて下さい。
0489デフォルトの名無しさんNGNG
>>485
施寝よ。
作者も放置しているようなコンパイラなんか使えるわけねぇだろ。
0490デフォルトの名無しさんNGNG
>>488
C++のスレで聞け
0491デフォルトの名無しさんNGNG
>>488
行列 クラス でググってみれ
0492481NGNG
>>491
thanx!

Cの行列計算方法
ttp://www5.airnet.ne.jp/tomy/cpro/sslib7.htm
では1次元配列を利用していました。

c++の〜
ttp://www.eng.kshosen.ac.jp/~i_asano/misc/matrix/matrix.html

がありました。
C++は全然知らないのですが、matlabみたいに
C = A *B 
という表記が可能になるんですね。

すれ違いなので、ここで終わります。
0493デフォルトの名無しさんNGNG
こういうことができないのはCの仕様?
0494デフォルトの名無しさんNGNG
麻雀のアルゴリズムを自分の力だけで開発しました!
この達成感はすばらしいものです。
聞いてばかりではなく、自分の力だけでやってみるのも
おもしろいですよ。
0495デフォルトの名無しさんNGNG
他人に聞けば一発ってこともあるよ。
0496デフォルトの名無しさんNGNG
かなりがんがって作ったのに他人に教えたら「それ当たり前」とか言われるとちょっとヘコむ
0497デフォルトの名無しさんNGNG
気持ちはわかるが無駄な努力はしない方がみんなのためだ。
0498デフォルトの名無しさんNGNG
無駄な努力と決めつけて努力しない香具師は、もっと役に立たないがな。
0499デフォルトの名無しさんNGNG
なんか色々反響あるみたいだけど、
>>494の言うことには同意。
同じ経験あり
0500デフォルトの名無しさんNGNG
糞スレで500ゲット
0501デフォルトの名無しさんNGNG
いろいろあるけど、>>496 に同意
というか、たいてい言う側
0502デフォルトの名無しさんNGNG
当たり前のことばかりやってんなぁ(藁
0503デフォルトの名無しさんNGNG
gdbを使ってデバッグしたいのですがソースを表示しながらデバッグをしたい
のです。Mule、nemacsじゃないと駄目ですか?秀丸じゃ無理なのですか?
0504デフォルトの名無しさんNGNG
禿丸なら可能です
0505デフォルトの名無しさんNGNG
enum Bool{
 True;
 False;
};

↑何か変なのでしょうか?
 これで何も問題は起きてないのですが。
0506デフォルトの名無しさんNGNG
普通、falseは0です。
0507デフォルトの名無しさんNGNG
セミコロンじゃありません
0508デフォルトの名無しさんNGNG
俺はenum 宣言を生で使うことはしないな。名無しで定数をまとめる為とか。
Cではかえって読みづらいと思うが、あえて似たようなことをしようと
するならば、
typedef enum{
TRUE = 0,
FALSE = 1
} Bool_t;

Bool_t flag;

みたいに書くだろう。あくまで型定義の仕方としてな。
0509デフォルトの名無しさんNGNG
execするときにmallocで確保した領域は解放されませんよね?
開いたファイルもそのまま?
0510デフォルトの名無しさんNGNG
0と非0でいいと思うけど。
0511デフォルトの名無しさんNGNG
普通enum {FALSE, TRUE};
0512デフォルトの名無しさんNGNG
ループ内で新たに変数が必要になった時、どこで宣言するのがよいでつか?

変数は必要な時に宣言するって精神に則ると

for (xxxxx) {
  int hensu;
   :
}

こうかなぁと思うのでつが、なんかデバッガで追ってるとhensu変数が
ループが1回回るたびに作成されたり削除されたりしているように
見えるんでつ。

なんか動作パフォーマンスが悪いように見えるんでつが、実際の所
どうなんでしょう?

ループ外で宣言する方が良いでつか?
0513デフォルトの名無しさんNGNG
アセンブラの出力見てみろ
0514デフォルトの名無しさんNGNG
>>512
実装によるけど、変数の領域がブロック単位で確保されたり開放されたりって
ことは無い。
どこで宣言してもパフォーマンスは変わらないと思う。
(もしかすると変数のスコープを細かくしたほうが最適化で
レジスタの割り当てがうまくいって速くなるってことがあるかも
しれない)
0515デフォルトの名無しさんNGNG
ちゅーか、スタック
0516512NGNG
>>513
見てみましたが、分かりませんでつ。

>>514
>515氏が書かれているように、私が勉強した時、確か自動変数はスタックを
利用して記録されると読んだ記憶があります。
そのまま解釈すれば、ループ毎にPUSH,POPしているのかなぁと思ってしまう
のでつ。
(さっきデバッガでアセンブルコードを見て追っかけて見ましたが、よく
分かりませんでつ・・・)

しかし>514氏の言う通り、うまく最適化されているような気もします。

もう一度、皆様のご意見を聞かせて下さいまし。
0517デフォルトの名無しさんNGNG
> 見てみましたが、分かりませんでつ。
それくらいの差だってこった。
0518デフォルトの名無しさんNGNG
>>516
int変数程度ならスタックフレームに変数領域を確保するだけだから
コンパイラがアドレスを決めて直接書き込めばPUSH/POP不要。
0519デフォルトの名無しさんNGNG
ループ抜けるまではPOPせんでいいだろー
0520デフォルトの名無しさんNGNG
ブロック単位で宣言すれば、むしろ局所性が高まり、
関数呼び出し時に確保されるローカル変数用スタックの
消費サイズも最小限になる可能性が高い。
0521デフォルトの名無しさんNGNG
>>520
スピードはどうなんですか?
スタックをpush、popすることで下がりますか?
0522デフォルトの名無しさんNGNG
実装によるんじゃねぇのか、SPいじるだけなら気にならんレベルだろー
0523520NGNG
>>521
subとかaddみたいな加減算で直接spの値を操作するから、
ローカル変数側についてはpush/popが呼ばれることは無いよ。
結果的にメモリの局所化に繋がるから、
再帰関数とかのパフォーマンスは良くなる。
つーかアセンブラ出力読んだ方が早い。
0524デフォルトの名無しさんNGNG
>>520
そんな賢いコンパイラはあんまり見かけないな
ブロック単位で宣言しておけば、コピペには便利だけど、
変数宣言するくらいの単位なら構造化して関数に昇格した方がいいと思うけどな
0525デフォルトの名無しさんNGNG
関数呼び出しまでするとコストがウヘ
0526デフォルトの名無しさんNGNG
そんな所のコストが心配ならアルゴリズムを検討した方がいい
0527デフォルトの名無しさんNGNG
一度や二度呼び出す場合ではなく、ループの中の話だろ?
0528デフォルトの名無しさんNGNG
inline展開されるんですか?
0529デフォルトの名無しさんNGNG
>>528 C++ ならね
0530デフォルトの名無しさんNGNG
>>527
ループの中でも、最近のCPUだと関数の呼び出し程度は実行サイクルに隠れてしまう事が多いよ
パフォーマンスを恐れて構造化しないのは愚かだと思う。
構造化しておいて、パフォーマンスチェックにひっかった後でインラインに戻せばいい
0531デフォルトの名無しさんNGNG
逆に構造化しておかないと、パフォーマンスチェックで問題個所を特定する事さえ難しくなる。
0532デフォルトの名無しさんNGNG
age
0533デフォルトの名無しさんNGNG
今は構造化の話なんてしてない
0534デフォルトの名無しさんNGNG
うーん。 pascal だと関数内関数が書けるけど、C だとそれが出来ないから
こういう場合関数呼び出しにすると、
そのブロックのスコープ外ローカル変数にアクセスするために無駄に引数が
必要になるわけで、しかもポインタ渡しにしなければならなくなるとかさ、

だから、C のスタイルだと、ブロック化が構造化というふうに捉えるべきだと思う
0535デフォルトの名無しさんNGNG
>>529
VCならoptionによって勝手にinline-expandされる。
0536デフォルトの名無しさんNGNG
どうでもいいんじゃネーノ?(`ー´)
0537デフォルトの名無しさんNGNG
どうでもいいならスルーしろよ>536
0538デフォルトの名無しさんNGNG
>>535
VCの最適化は凄いよね。
inline展開や>>520ぐらいの事は当たり前の様にやってるよ。
0539デフォルトの名無しさんNGNG
その代わり、exeのサイズえらい事になるガナー>538
0540デフォルトの名無しさんNGNG
ほほう
0541デフォルトの名無しさんNGNG
無関係なオプションも混じってるけど、
VC
cl /O2 /GB /Og /GA /Ob2 /nologo /MT /W3 /GX /YX /FD /Gz ...
mingw
gcc -O9 ...
いつもこれで大体同じか、gccが少し遅いという結果になる。
両方とも勝手にinline展開などを行い、
実行ファイルのサイズはかなり増大する。
0542デフォルトの名無しさんNGNG
C言語でCGの勉強でをしています。
glutKeyboardFunc(OurKeyboard); ってのはmain文の中でしか使えないのですか?
お願いします。
0543デフォルトの名無しさんNGNG
>>542
1を読め
0544デフォルトの名無しさんNGNG
float 型の変数aに
a=45.1 と代入すると
実際は 45.099998 が入ってしまいます。
45.1 丁度を入力する方法ってないでしょうか?
よろしくお願いします
0545デフォルトの名無しさんNGNG
ありません。
0546デフォルトの名無しさんNGNG
>544
勉強が足らんな。二進数での浮動小数点表示げたばき式を勉強して来い
0547デフォルトの名無しさんNGNG
>>545
そうなんですか。

今作っているプログラムで、
人が入力した数字(例:45.1)をfloat 変数にしまっておいて、
後からその入力した数字を再度、45.1として取り出したいのですが、
何かいい方法はありませんか?
処理の関係上、float変数は変更したくないのですが。
0548デフォルトの名無しさんNGNG
>>547
無い
0549デフォルトの名無しさんNGNG
入力・・?文字列として?
ならその文字列を保存しておけば。数値に変換しないで。
0550デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
float a = 45.1;
printf("%.1f\n", a);
return 0;
}
0551デフォルトの名無しさんNGNG
実数使う以上誤差がでるのは仕方ないだろう。
それを踏まえた上でfloatを使うべきではないのかい?
0552デフォルトの名無しさんNGNG
>>547
具体的にどういう処理をしたいの?
0553デフォルトの名無しさんNGNG
>>549 >>550
ありがとうございます。
参考にさせていただきます
0554デフォルトの名無しさんNGNG
>544
1万倍しておけばいいじゃない
0555デフォルトの名無しさんNGNG
C++とかDelphiに金銭型とかあるでしょ? あれも中身は浮動小数点を10のベキ乗倍してるだけの筈だよ。

例えば100倍にしておけば、1/100まで誤差が出ないからね。
0556デフォルトの名無しさんNGNG
4*4/4
0557デフォルトの名無しさんNGNG
>>555
パピプッ
0558デフォルトの名無しさんNGNG
どうしてもわからないので聞いていい?
Linux 上でネットワーク通信するときに、C 言語からパケットロス率を取得するには
どのようにするのが常套手段なんでしょう。
ひょっとして、/proc の下を見るとかするとわかるんでしょうか。

わかる方、お願いします。

0559デフォルトの名無しさんNGNG
>>558
このスレで聞くのは間違ってる。
ここのスレ的な答えだと、「標準Cではできない」となる。
0560デフォルトの名無しさんNGNG
>>555
誤差無しで小数計算するときは
普通整数で固定小数点計算するだろー。
0561デフォルトの名無しさんNGNG
>>560
 整数で計算したら、こんどは少数点が出たら大きな誤差になってしまう
 誤差は出るものだけど、誤差が出るのを遅延させるのが金銭型方式だよ
0562デフォルトの名無しさんNGNG
128bitだか256bitだかの固定少数で計算するのが
C#のDe??????とか言う型じゃなかったっけ?  うろ覚えですけど
0563デフォルトの名無しさんNGNG
文字列のまま計算すりゃぁ
上下何桁でも誤差はでないよ
遅いかもしれんがね
0564デフォルトの名無しさんNGNG
処理系依存が多すぎますよね!!
0565bloomNGNG
http://homepage.mac.com/ayaya16/
0566デフォルトの名無しさんNGNG
stdoutがどこに接続されているかを調べるにはどうしたらいいですかね?
0567デフォルトの名無しさんNGNG
UNIXかつ端末に結びつけられているかどうか知りたいのならistty(1);
どこに接続されているのか調べる方法は知らない。つーか>>1
0568デフォルトの名無しさんNGNG
>>563
10で割れなきゃダメだろそれ・・・ 3.33333333 どうするだ?
と言われて 分数型を作ったら、今度は√2どうするんだ? といわれてるだろうな。

汎用を求めちゃいけないよ。

金銭を扱う一番簡単で信頼性のある方法は、単に入力時に1万倍して扱う方法だ。
1.23 これには誤差がある だから1万倍してその時に丸めて持つ。

まあ、金利が1.23% のように少数点以下2桁しかないという全体での1万倍なんだけどね
0569デフォルトの名無しさんNGNG
while((c=fgetc(stdin)) != EOF){}
while(c=fgetc(stdin), c != KOF){}

どっちの書き方がスマートですか?
0570デフォルトの名無しさんNGNG
上
0571デフォルトの名無しさんNGNG
KOF…
0572デフォルトの名無しさんNGNG
KOFって何?
0573デフォルトの名無しさんNGNG
'94と'95はやってた
0574デフォルトの名無しさんNGNG
99まで落とした
0575デフォルトの名無しさんNGNG
FILE *frand(char *, char *);
の使い方を教えてください
0576デフォルトの名無しさんNGNG
>>575
そんな関数知りません。
0577デフォルトの名無しさんNGNG
>>569
前者だろ。後者は見たことない。

>>575
なにそれ。
0578デフォルトの名無しさんNGNG
ググんない初心者が多いな最近。
0579デフォルトの名無しさんNGNG
#include <stdio.h>
void main(void)
{
int a,b,c,d,e,f,g;
printf("===============================================");
printf("いまから四則演算をする数値2つ入れなさい");
printf("===============================================");
printf("1つ目");
scanf("%d",&a);
printf("二つ目");
  scanf("%d",&b);
c=a + b;
d=a - b;
e=a * b;
f=a / b;
g=a % b;
printf("演算結果");
  printf("%d + %d=%d\n",a,b,c);
printf("%d - %d=%d\n",a,b,d);
printf("%d * %d=%d\n",a,b,e);
printf("%d / %d=%d\n",a,b,f);
printf("%d % %d=%d\n",a,b,g);
printf("\n");
printf("\n");
printf(" 以上\n");
}
エラーが11もでた。誰か教えて。
0580デフォルトの名無しさんNGNG
ちょっと笑ってしまった。
0581デフォルトの名無しさんNGNG
printf("%d % %d=%d\n",a,b,g);
0582デフォルトの名無しさんNGNG
>>569
俺は下のほうが好き。
0583デフォルトの名無しさんNGNG
>>581
エラーは出ないのでは?
0584デフォルトの名無しさんNGNG
全角を直せ。
0585デフォルトの名無しさんNGNG
>>579
おいおい、まさかこれ、このままコンパイラ通したんじゃないだろうな?
ってか、全角スペースとか、最後の‘}’とかさ、書き込むときに間違っただけだよな?
あと個人的に main() を void にすんなと思った。

#include <stdio.h>
int main(void) {
int a,b;
printf("===============================================\n");
printf("いまから四則演算をする数値2つ入れなさい\n");
printf("===============================================\n");
printf("1つ目\n");
scanf("%d",&a);
printf("二つ目\n");
scanf("%d",&b);
printf("\n演算結果\n");
printf("%d + %d=%d\n",a,b,a+b);
printf("%d - %d=%d\n",a,b,a-b);
printf("%d * %d=%d\n",a,b,a*b);
printf("%d / %d=%d\n",a,b,a/b);
printf("%d %% %d=%d\n",a,b,a%b);
printf("以上\n");
return 0;
}
0586デフォルトの名無しさんNGNG
}
}
0587デフォルトの名無しさんNGNG
=よりも==の方が優先順位が高い理由を教えてくたざい。
0588デフォルトの名無しさんNGNG
マルチに答えるな、と
0589デフォルトの名無しさんNGNG
>>587
仕様
0590デフォルトの名無しさんNGNG
#include <stdlib.h>

#define begin {
#define end }
#define Result return

int main()
begin
Result(0);
end
0591デフォルトの名無しさんNGNG
>>590
最大の謎はなぜstdlib.hをインクルードしているかだな。
0592デフォルトの名無しさんNGNG
ありがと
0593デフォルトの名無しさんNGNG
>>587
設計ミスだろ(プ
0594デフォルトの名無しさんNGNG
>>587
int i = 6, j=5;
bool t = i == j;
これで=の方が先に評価されたら困るから。
0595デフォルトの名無しさんNGNG
>>587
無能を早い段階で排除するためにそうなってます
0596デフォルトの名無しさんNGNG
>>594
無理矢理だな(稈
0597デフォルトの名無しさんNGNG
>>587
ほかの比較演算子との整合性をとるためだと思われ
== != > < とかとね

つまり、
bool hoge = i > j;
だったら>の方が上なわけで、とすると==も上になるわけで
0598デフォルトの名無しさんNGNG
結局は比較演算子の方が優先度が高いっていう仕様のせいだな
0599デフォルトの名無しさんNGNG
代入演算子は優先度が低い方がいいと思うが
0600デフォルトの名無しさんNGNG
>>599
同意
コンマより低かったら困るけどな。。。
0601デフォルトの名無しさんNGNG
>>600
ちょっとワロタw
0602600NGNG
>>601
あれ?間違った?
0603デフォルトの名無しさんNGNG
>>587
日本の自動車が左側通行なのと同じ程度の理由だと思われ。

>>594
初期化構文中の = 記号は "演算子" では無い筈だが・・・
ネタ?
0604デフォルトの名無しさんNGNG
"代入演算子"ではないというだけでは。
0605デフォルトの名無しさんNGNG
#include<stdio.h>
main()
{
char i,j=0,k;
printf("please input num(maz 15)=>");
scanf("%d",&j);

for(;j<16;)
{
for(i=0;i<j;i++)
{
for(k=0;k<=i;k++)
printf("*");
printf("\n");
}
j=16;
}
}
0606605NGNG
605のようにプログラムしても
コンパイルが通りません。
なぜですか?
0607デフォルトの名無しさんNGNG
>>606
処理系を正しく設定してないんだろ
0608デフォルトの名無しさんNGNG
>char i,j=0,k;
を
int i,j=0,k;
にするべし

原因はスタックが壊されてるから。
0609608NGNG
って、コンパイルが成功しないって書いてるな。
コンパイルは成功したけど。
0610デフォルトの名無しさんNGNG
>>606
具体的にどういうエラーが出るんよ
0611デフォルトの名無しさんNGNG
>>605
とりあえず main は値を返すべきだと思うが
0612デフォルトの名無しさんNGNG
そもそもif文を使うべきだと思うが
0613デフォルトの名無しさんNGNG
よく見ていないけど、警告をエラーと勘違いしただけじゃないの。
0614デフォルトの名無しさんNGNG
>>604
Cの構文規則調べた事ある?

これって、Cの基礎知識だと思うのだが・・・
0615鈴木健一郎 (NT4.0/2000/XP)NGNG
随分変な質問なんですが、例えば、(名前, 住所, 体重, 性別 ...)みたいな
感じのデータをいっぱい入力させといて、
w3 = GetData("Yamazaki","weight")

こんな感じで取得するプログラムを作っています。
で、ここでマニアックな質問なんですが、このプログラム(クラス)に
カッコいい名前をつけてください。

名前が決まらないのでコンストラクタが作れないし、ファイルに保存が出来ない・・・。

周りに聞いたら IDMapper IDManager とかちょっとセンスのない名前しか挙がらない。
0616デフォルトの名無しさんNGNG
>>615
命名スレにゆけ
0617デフォルトの名無しさんNGNG
SDKまたはDDKのAPIでも良いのですが、パーティションを作成できるようなコマンドはないでしょうか?
領域さえ確保出来れば、formatコマンド等でどうにかなりそうな気もするんですが。
0618デフォルトの名無しさんNGNG
アンケートでVBからjavaやC#に移る傾向があるみたいよ!
C#ってなに?
C++とは違うの?そもそもオブジェクト指向なの?
最近時代に取り残される感じがする・・・
だれが簡単に説明してちょ!
0619デフォルトの名無しさんNGNG
>formatコマンド等でどうにかなりそうな気もするんですが。


・・・何が?
0620デフォルトの名無しさんNGNG
>>614以降、厨房の嵐が。
0621デフォルトの名無しさんNGNG
>>618
激しくスレ違い。
0622鈴木健一郎 (NT4.0/2000/XP)NGNG
>>616
ああ、そんなスレがあったんですね。知りませんでした。
ではそちらに行ってきます。
0623デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void){
int i;
do{
i=getchar();
if(i==EOF){
printf("入力時エラー");
break;}
if(putchar('.')==EOF){
printf("出力時エラー");
break;}
}while((char)i!='n');
return 0;}

入出力時のエラーをチェックするらしいのですが、
どのような値を与えてやるとエラーになるのか分かりません。
教えて下さい。
0624デフォルトの名無しさんNGNG
>>623
基本的にはエラーは起きないと思うが・・・
エラー時はEOFって定義されてるからだと覚えておくだけでいいかも

・・・だめですか?
0625デフォルトの名無しさんNGNG
>>623
入力時エラー)
 ファイルにリダイレクトしてる場合はファイルの最後。
 してない場合は Ctrl+D 。

出力時エラー)
 ファイルにリダイレクトしてる場合はディスクフルか、
 場合によってはディスクに書き込む許可が無い場合にもあるかも。
 (読み込み専用のファイルにリダイレクトが不可能な環境でも、
  起動したと同時に別のプログラムでファイルへの書き込みが禁止されたら
  putchar が失敗しうる)
 それ以外では普通出ないと思う。
0626デフォルトの名無しさんNGNG
入出力を FD 上のファイルに割り当てといて、実行中に FD 抜く。
入出力をネットワーク上のファイルに割り当てといて、実行中に LAN ケーブルを抜く。

いくらでも考え付くが。
0627デフォルトの名無しさんNGNG
0、1をランダムに並べて行く生成プログラムが必要なんですが、
どこかに参考になるソースはないでしょうか?
0628デフォルトの名無しさんNGNG
rand()&1じゃだめ?
0629デフォルトの名無しさんNGNG
>>628
 それはあんまり良くないな M系列の方がマシだと思うぞ
0630デフォルトの名無しさんNGNG
やっぱここは MT 法で。
0631デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void){
for(;;){
printf("%d",rand/0.5);
}
return 0;
}

0632デフォルトの名無しさんNGNG
>>624-626
ありがとうございます。本にも「普通は戻り値がEOFかどうかチェックしない」と
書いてありましたし、エラーの場合はEOFが戻り値として返ってくるんだな。と
覚えておきます。
0633デフォルトの名無しさんNGNG
全角文字にアクセスするにはどうしたらよかとですか。具体的には

  char* hoge = "かわうそくんひどいや";

のような文字列の各文字を任意の文字に変更したいんです。
0634デフォルトの名無しさんNGNG
>>633
その例はconstだからダメ。
0635デフォルトの名無しさんNGNG
>>633
wcharを使うのが良いのかもしれない
あるいは、漢字コードを意識して複数バイトで処理する、ぐらいか

char *geho = "砂男がいますあべしたわば";
while(1)
{
 x = lrand48() % ( strlen(hoge) / 2 );
y = lrand48() % ( strlen(geho) / 2 );
 memcpy(hoge+x*2, geho+y*2, 2);
 printf("%s\n", hoge);
}

>>634
-fwritable-strings とかなんとかするんじゃない?
0636デフォルトの名無しさんNGNG
>>635
全部2バイト文字ならな。

細かい操作を何度もする場合は
UNICODE が確かに扱いやすいけど、
読むだけとかだったら isleadbyte を使って
シコシコやったんでいいかと。
0637634NGNG
>>635
-fwritable-stringsは、過去のコードをコンパイルする時以外に使うんじゃねぇ!
新規にコード書く時には使うなよ。

それとコード例、随分乱暴すぎるぞ。
半角文字も考慮して書き直してみろや。
ここで発表しろとは言わんけど。
0638デフォルトの名無しさんNGNG
コンソールアプリケーションで文字の色を変更するとしたら、その部分は完全に機種・OS依存になるのでしょうか。
Win32で動作するコンソールアプリケーションで文字の色を変える場合にはコンソールAPIを利用するしかないということでしょうか?
0639デフォルトの名無しさんNGNG
wchar_tを使った場合半角と全角が混在してても問題無いの?
wchar_t *wc = "ち0こ";
wc[1] = 'ん';
wc[2] = 'げ';
で
ちんげになるの?'
0640デフォルトの名無しさんNGNG
>>638
ANSIシーケンスでぐぐる
0641デフォルトの名無しさんNGNG
>>638
普通にコンソールって言うと VT100 とかを思い浮かべますが。
0642デフォルトの名無しさんNGNG
あの、すいません。C言語を学校で習い始めた超初心者なんですが、
家でC言語を動かせる環境ってどうやれば作れるんですか?
0643デフォルトの名無しさんNGNG
>>642
何から説明すりゃいいんだ?OSからか?
0644デフォルトの名無しさんNGNG
>>642
>>1-15あたりに書いてるのはもちろん読んでるんだろうな
0645642NGNG
すいません過去ログ読んで疑問点を絞ってから出直します。
0646デフォルトの名無しさんNGNG
cygwinを現在導入していて
xxgdbを使いたいのですが
インストールなどの操作は分りません。教えてください。gdbはすでにインストールし
ています。
0647デフォルトの名無しさんNGNG
(´-`).。oO(……)
0648638NGNG
>>640
NT系OSだとANSI.SYSを組み込まないといけなかったりするみたいですね。
試してみたんですが正しく表示されなかった…。難しいなぁ。
0649デフォルトの名無しさんNGNG
>>648
スレ違いだが、NTではansi.sysは動かんというのが定説。
0650デフォルトの名無しさんNGNG
>>646
cygwinならUNIX板とWindows板(?)に専用スレがあるのでそっちへGO!
0651デフォルトの名無しさんNGNG
telnetサーバ(Win2000Proじゃ入っていない?)立ち上げてTeraTerm
0652デフォルトの名無しさんNGNG
まずcygwinをアンインストールしろ
話はそれからだ
0653デフォルトの名無しさんNGNG
S=1+x/1!+xの2乗/2!+xの3乗/3!+・・・・+xのn乗/n!
を解くプログラムがわかんないんですけど教えてください。
0654デフォルトの名無しさんNGNG
>>643
家にはPC-9801FA2があります。
CPUがi486SX16MHz、メモリは1.6MB、HDDは20Mで5インチのFDDが2つついています。
起動するといきなりN88-BASICが立ち上がりますが、これでC言語をやりたいのです。
まず何をすればいいのでしょうか?
0655デフォルトの名無しさんNGNG
計算するんだったら
int s = 1, a = 1;
for (i=1; i<=n; i++) {
a *= x/i;
s += a;
}
0656デフォルトの名無しさんNGNG
>>654
MS-DOSを手に入れる。
Cのコンパイラを手に入れる。
0657デフォルトの名無しさんNGNG
>>655
ごめんdoubleやね。
0658デフォルトの名無しさんNGNG
分子のx2乗とかの所がわかんないんですけど....
0659デフォルトの名無しさんNGNG
exp(x)
0660デフォルトの名無しさんNGNG
>>654
今書き込んでるPC使えよ。
0661デフォルトの名無しさんNGNG
前提 socket通信で、こちらがクライアント
質問 自ホストの接続ポート番号を指定するにはどうすりゃいいの?
0662デフォルトの名無しさんNGNG
変数のextern宣言は、わかります。

しかし、関数のextern宣言とは何のためにするのですか?

例

int func_C( int n )
{
extern int func_A( int n );


}

関数は何処からでも参照できると、思うのですが、、、?
0663デフォルトの名無しさんNGNG
prototypeのため。あるいはint以外の関数を使うため。
0664デフォルトの名無しさんNGNG
まだ大学1年生で初歩的なことしかやってないのでそれでも作れるプログラムじゃできませんか?
0665デフォルトの名無しさんNGNG
>>663

ありがとう。
でも
プロトタイプ宣言?
関数int func_A( int n ); を使うために行うのですか?
externは要らないと思うのですが?

0666デフォルトの名無しさんNGNG
>>664
意味わからん。
0667デフォルトの名無しさんNGNG
>>662
staticをつけると他のファイルから呼べなくなる。
externはその逆。デフォルトだから普通はつけないと思う。。。
0668デフォルトの名無しさんNGNG
>>665
FAQの1.11に書いてあるよ。
0669667NGNG
あ・・・定義じゃなくて宣言の話か・・・・・
試したことないから知らない。
0670デフォルトの名無しさんNGNG
>>665
> externは要らないと思うのですが?
なくてもいい。
0671デフォルトの名無しさんNGNG
女性は無料で遊べる!逢える!恋愛出きる!
もう寂しい生活とは縁を切ろうね!
愛して 愛される そんな出会いがなきゃ
生きてる 意味がない!
http://www.sweet.st
0672662NGNG
>>667,668,669,670
ありがとう。

でも、いまいち分からないなあ。



C FAQ 日本語訳 より抜粋
1.11:
関数宣言についたexternは何を意味するのか。

A:
こういう書き方をすることで、関数の定義がたぶん別のソースファイ ル
にあるということを、ほのめかすことができる。

externは書かなくてもいいみたいですね。

追加質問です。
int func_C( int n )
{
/*extern int func_A( int n );*/


}

func_Aが、別ファイルにある場合、
このようにすると、func_Aは使えなくなると解釈してよいですか?



0673デフォルトの名無しさんNGNG
>>672
Cでは別にプロトタイプ宣言がなくても呼べる(定義でstaticがついていなければ)。
でも引数チェックやら何やらができなくなるからやめた方がいい。
0674672NGNG
>>673
納得です。

関数のプロトタイプ宣言を、異なるソースファイル間
でおこなうわけですね。
これで、引数チェックが行われて、バグを作らなくなる
わけですね。

納得しました。

異なるソースファイルにある関数を使いたいときは
externで宣言しとけですね。

K&Rには載っていなかったですよ。。。
0675デフォルトの名無しさんNGNG
>>674
普通は宣言はヘッダーファイルに書いてそれを様々なソースファイルからインクルードする。
static関数(←呼び方おかしいかも)の場合は他のファイルから呼ばれることはないので(定義と同じ)ソースファイル内で宣言する。
0676674NGNG
>>675
了解です。

そうですね、私はそうしています。
他人が作ったプログラムに、上記のような記述が
あったので、何でだろうと思ってました。

その人はヘッダーに書くより、作成中の関数に、
externとして宣言するほうが管理しやすいと考えたんだろう
と思います。

他人の作った関数を利用するには良い方法だと
考えます。
0677デフォルトの名無しさんNGNG
−−ab.c
int ab(void){return printf("extern");}

−−main.c
extern int ab(void);
int main(){return ab();}
static int ab(void){return printf("static");}

どっちが表示されますか?
0678デフォルトの名無しさんNGNG
>>677
それって、コンパイルできるの?
0679デフォルトの名無しさんNGNG
>>677
int a = 2;
int main(void){
  int a = 1;
  return printf("%d\n", a);
}
と同じ、スコープが狭い方が有効になる。
0680デフォルトの名無しさんNGNG
K&Rにだってこの話は載ってるだろうに。
0681デフォルトの名無しさんNGNG
>>679
グローバル変数にアクセスするときはどうしたらいいの?
C++だと::aだけど。
0682デフォルトの名無しさんNGNG
>>681
仕様です。できません。
0683デフォルトの名無しさんNGNG
>>682
できないのか・・・・サンクス
0684デフォルトの名無しさんNGNG
ということはint errno;とかやったらエラー番号を参照できなくなるのか
そんなあほなことしないけど^^;
0685デフォルトの名無しさんNGNG
>>679
その例だと、ローカルな方は参照される前にちゃんと宣言されてる。

プロトタイプはab.cにあるab()を指してるし、呼び出した時点ではコンパイラはstaticのab()を知らないわけで、
それでもstaticの方なの?
試した?
0686デフォルトの名無しさんNGNG
ピタゴラス数列挙プログラムなんですけど、以前のもので約分できるものは
表示しないようにしたいのですがどうすればよいのでしょうか?
例えば、3:4:5が表示されたら、6:8:10は表示しないようにしたいのです。
#include <stdio.h>
int main()
{
   int a,b,c;
   for(a=2; a<1000; a++){
      for(b=2; b<1000; b++){
         for(c=1; c<1000; c++){
            if(a*a==(b*b)+(c*c)){
            printf("%d:%d:%d\n",a,b,c);
}}}}
return 0;
}
0687デフォルトの名無しさんNGNG
>>677,679
externって出たよ
0688デフォルトの名無しさんNGNG
>>685
GCC だと、非 static と宣言した後に
本当は static だったということで警告が発せられる。
でも、一応 static が呼ばれる。

仕様ではどうなってるんだろ。
未定義?
0689679NGNG
悪い、間違い。規格では「6.1.2.2 識別子の結合」の最後の段落
  翻訳単位の中で同じ識別子が内部結合と外部結合の両方で現れた場合,その動作は未定義とする。
とあった。
ちなみにgccでは警告が出るが、コンパイルは成功し、"static"が出力される。
bcc32では無警告でコンパイルは成功し、"static"が出力される。
0690デフォルトの名無しさんNGNG
プロトタイプは嘘でもいいの?
int a(int n);
int main()
{return a(1);}
static int a(int x, int y){return x+y;}
これは問題なくても
WindowsAPIみたいに引き数がパスカル形式の関数呼びを騙したら落ちるじゃん
0691デフォルトの名無しさんNGNG
>>690
int()
が全てと思えばよい。
今から30年前のPDP8のコンパイラを考えれば
少しは、自分の恵まれた環境を考えろよ。
0692デフォルトの名無しさんNGNG
>>690
嘘つけるならプロトタイプの意味がないじゃん
0693デフォルトの名無しさんNGNG
>>690
そらエラーやろ。
昔のことは知らんが。
0694デフォルトの名無しさんNGNG
PDP-11は、どこで買えますか?
0695デフォルトの名無しさんNGNG
Cのそういうところが気持ち悪い
0696デフォルトの名無しさんNGNG
リンク時にエラーにならんか?
Cだと通ってしまうのか
0697デフォルトの名無しさんNGNG
>>696
なんのこと?
>>690ならコンパイルの段階でエラーだと思うけど。定義も宣言も同じファイルなんだから。
0698デフォルトの名無しさんNGNG
先入れ先出しのスタック構造を作りたいんですが、
どのような感じに作ったらいいでしょうか?
0699デフォルトの名無しさんNGNG
>>698
それスタックなのか・・・?キューじゃなくて?
0700デフォルトの名無しさんNGNG
殆どのスタックが後入れ先出しになってるので、
そうじゃないスタックも作ってみたいと思ったわけです。
そんなに難しいのでしょうか?
0701デフォルトの名無しさんNGNG
>>700
ネタか?
0702デフォルトの名無しさんNGNG
>>700
ほとんどというか、そういう構造をスタックと言うんだと思っていたけど。
0703デフォルトの名無しさんNGNG
キューはポニーテールではないのか、キューは
中国が嫌っている言葉だな
0704686NGNG
どなたか教えてくれませんか・・・?
0705デフォルトの名無しさんNGNG
約分できるか判定して表示しなかったらいいじゃん。
0706デフォルトの名無しさんNGNG
>>686
約分できる=素数でないので
素数の判定をして、素数だけ出力すればいい。

素数の判定方法は宿題とする
0707デフォルトの名無しさんNGNG
>>706
違うって。
0708686NGNG
>>705
if文でできないか考えたのですが、
それだとすべてのピタゴラス数を書くようですよね?
なので、それ以外の方法が欲しいのです。
0709686NGNG
>>706
それだと例えば3:4:5は4が素数ではないのでおかしくなってしまうのでは?
素数判定プログラムは以前作ったのですが。
0710デフォルトの名無しさんNGNG
例えば
for(i=2; i<=a; i++)
if (a%i==0 && b%i==0 c%i==0) return 0;
return 1;
みたいな関数書けばいいんちゃうの?
0711デフォルトの名無しさんNGNG
俺が教えるのは
えらはりとねすのふるいだな。
でも結構面白い、みんながんばれだな。
0712デフォルトの名無しさんNGNG
ガンガンいこうぜ
0713デフォルトの名無しさんNGNG
他人にまかせろ
0714デフォルトの名無しさんNGNG
変数aをエラトステネスのふるいにかけてからピタゴラス数を求める。
0715685NGNG
>>714
あ、そうですね。
aをa^2=b^2+c^2が成り立ってて、かつ約分できない場合は
aが素数となるんですね。
どうもありがとうございました。

ただ、エラトステネスのソースは思いついてないので、
以前作った因数を調べる素数テスタで図ってみたいと思います。
本当にありがとうございました。
0716685NGNG
いや、やっぱり長辺は素数になりません。
0717デフォルトの名無しさんNGNG
どっちやねん。
0718デフォルトの名無しさんNGNG
すれ違いだ
0719デフォルトの名無しさんNGNG
お前ら、Windowsの改行コードは0D 0Aだぞ。
文字列で表したら\r\nだ。
\nなんて書くんじゃねぇ。
0720デフォルトの名無しさんNGNG
大丈夫。変換してくれるから。
0721デフォルトの名無しさんNGNG
変換してくれるとはかぎらねぇよ。
ファイルにリダイレクトして、
いろんなアプリで開いてみろ。
ぼけ。
0722685NGNG
>>717
素数じゃありません。
>>718
このスレであってるはずです。

色々考えたんですが、3辺の比のうち、どれかが素数であればいいことがわかりました。
ソースに素数判定ソースを組んで見たいと思います
0723638NGNG
>>649
そうなのですか…。やむを得ないので機種依存するという前提でプログラムを作ってみます。


MSXの改行はchr$(13)だから\rだけど文字コードとかDOS互換のはずだから\r\nだと思う…よーわからんが。
0724デフォルトの名無しさんNGNG
>>722
>>1を見ての発言か?
0725デフォルトの名無しさんNGNG
>>722
共通の約数を持ってるかどうかだから、ユークリッドの互助法が適当だろう
0726デフォルトの名無しさんNGNG
即死
0727デフォルトの名無しさんNGNG
何もしないウインドウプログラムをC言語・HSPで作ったんですが
動きません。なぜでしょうか。なんだったら自分は
そのプログラムをここに書いても構いません。プログラマー目差してるのに早速挫折しそうです。
助けてください。
0728デフォルトの名無しさんNGNG
>>727
正直、向いてないので今からでもサッカー部に入ってJリーグ目指しなさい。
0729デフォルトの名無しさんNGNG
>>727
少なくとも動かないってのはどういうことなのかぐらい書けと。
コンパイルが通らないのか、実行しても何も起きないのか
0730デフォルトの名無しさんNGNG
>>729
ttp://www.vector.co.jp/soft/win95/prog/se080832.html
ここのソフト使って作ってるんですけど・・・
実行してもobjがないとかですぐウインドウ閉じちゃうんです。

>>728
消防時代サッカー選手を目差し少年団やってましたがあまりに下手で
試合に選ばれなかったので挫折しました。

本当に助けて下さい。このままではスポーツもだめ、パソコンも駄目の超駄目人間になってしまいます。
助けてください。
0731デフォルトの名無しさんNGNG
かなり初歩的な質問ですみません。
% a.out abcdeのように
コマンドライン引数に"abcde"のような文字列を指定し、
main(int argc, char *argv[])で受け取ると
例えば3文字目の'c'を参照する場合はどうすれば良いでしょうか?
0732デフォルトの名無しさんNGNG
あのな。ちょっとづつ、動くかどうか確認して作ればいいでしょ。
0733デフォルトの名無しさんNGNG
argv[1][2]
0734デフォルトの名無しさんNGNG
>>731
char c = argv[1][2];
0735デフォルトの名無しさんNGNG
>>732

ありがとう。やってみます。
0736デフォルトの名無しさんNGNG
>>735
HSPスレで聴いた方がいいんじゃない?
0737730NGNG
ttp://www30.tok2.com/home/koro/taku/puroguram.html

UPしました。改行なくて滅茶苦茶ですが・・・

>>735

ここが一番親切に教えてくれると思うのでここに居させてもらいます(汗
0738デフォルトの名無しさんNGNG
>>730
> 本当に助けて下さい。このままではスポーツもだめ、パソコンも駄目の超駄目人間になってしまいます。
> 助けてください。
2chで教えて君してる時点で既に超々駄目人間。
0739デフォルトの名無しさんNGNG
WinXPでCを勉強してます。
9x時代には\nで改行できたのですが、XPではできなくなってしまいました。
どうすれば改行できるのでしょうか?
0740デフォルトの名無しさんNGNG
>>739
.................
0741デフォルトの名無しさんNGNG
既視感
0742デフォルトの名無しさんNGNG
>>739
Windowsは\r\nだと言ってるだろ ぼけぇぇぇ
0743デフォルトの名無しさんNGNG
関数テーブルでご質問。

私はいつもこんな感じで関数テーブルを作ってます。

static u_char* (* const fncTbl[])( int a ) = {
……
……
};

で、実際の呼び出しは

(*fncTbl[2])( param );

って感じです。

が、知人曰く、
1・宣言時に、const って変じゃない?
2・呼び出しはもっとシンプルに
fncTbl[2]( param );

だそうです。
1.は別にあっても良いような気がしますが、(書き換えないだろうし)
2.は結構驚きでした。
一応どっちでもうごくみたいですが、どっちが正しい書式なんでしょうか?

無知な私に答えうぉ〜

0744デフォルトの名無しさんNGNG
>>743
> 1・宣言時に、const って変じゃない?
変じゃない。

> 2・呼び出しはもっとシンプルに
> fncTbl[2]( param );
すごく古い処理系では通らないことがある。
0745デフォルトの名無しさんNGNG
>>743
>一応どっちでもうごくみたいですが、どっちが正しい書式なんでしょうか?
どっちもただしい
0746デフォルトの名無しさんNGNG
むしろ「ご質問」がヘン。
0747デフォルトの名無しさんNGNG
650から最新50で読めないのですみません。実験です。>>650-750
0748デフォルトの名無しさんNGNG
char型の変数は -128〜127 しか入れられないと習ったのですが

char a[9] = "風林火山";
printf("%s",a);

がちゃんと表示されるのは何故なのですか?
windowsは日本語の表示に S-JIS を使っていて
127以上の数値も使われていると思うのですが
0749デフォルトの名無しさんNGNG
すみません、ある文字がnull文字かどうかを判定したいんですが
この条件式のような比較は許されないんでしょうか?
どうやってもsegmentation faultが出るんですが・・・
char c = 'a';
if(c != '\0'){
 ・・・
}
0750デフォルトの名無しさんNGNG
>>748
一文字に2バイト使ってるから。

>>749
デバッガを使ってどこで落ちているか確かめてくれ。
きっとポインタの使い方がおかしい。
0751デフォルトの名無しさんNGNG
>748
勉強しなおしたまえ。
2Byteでひとつの文字をあらわしてるんだよ。
"風"とかは二つに分けられてメモリ上に入れられる
0752名無し@沢村NGNG
データを読み込んで、そのデータに応じた画像を横一列に表示するプログラムをつくっています。
横に長くなるので、スクロールバーをつかって表示を切り替えるようにしています。
また画像をクリックしたらその画像の上に縦線を描画するようにしました。
でも画面をスクロールしたときに一番左端にくる画像をクリックした場合、うまく縦線が描画されません。
これがその部分のソースですが、どこが悪いのでしょうか?
つまり//マウスをクリックしたX座標が50以下のとき という部分です。ご指導お願いします。

void DrawRline( HDC MemDC)
{
int i;//editpos スクロールバーの位置

for(i=1;i<=_Index[T];i++)
{if(i==1)//_Indexが1のとき
{ if((mousex>i_x[T][i-1]-(editpos*256)-20) && (mousex<=i_x[T][i]-(editpos*256)))
{_Pointa[T]=i_x[T][i]+3-_x_width[T][i]-(editpos*256);
break;}
}
else if(i>1)//_Indexが2以上のとき
{if(mousex<50)//マウスをクリックしたX座標が50以下のとき
{if((mousex>0) && (mousex<=i_x[T][i]-(editpos*256)))//
{_Pointa[T]=i_x[T][i]+3-_x_width[T][i]-(editpos*256);
break;}
}
else//マウスをクリックしたX座標が50以上のとき
{
if((mousex>i_x[T][i-1]-(editpos*256)) && (mousex<=i_x[T][i]-(editpos*256)))
{_Pointa[T]=i_x[T][i]+3-_x_width[T][i]-(editpos*256);
break;}}}}
SelectObject(MemDC,hPen);
MoveToEx(MemDC,_Pointa[T],112,NULL);
LineTo(MemDC,_Pointa[T],338);
}
0753デフォルトの名無しさんNGNG
>>744-745
即答ありがとうございます。
プログラムってシンプルな疑問ほどサーチエンジン検索で探しにくいので
助かりました。

>>746
確かに(w
慌てすぎ>俺
0754デフォルトの名無しさんNGNG
>>748が言いたいのはバイト数の問題じゃなくて、SJISは(1バイトずつ分解しても)128以上の数を使うから-128〜127の間に収まらないってことじゃない?
0755デフォルトの名無しさんNGNG
>>749
そのif文自体に問題は無い

cが配列だった場合は
c[i] != '\0'とか
*c != '\0'とか
*(c+i) != '\0'とか。
0756デフォルトの名無しさんNGNG
>>748
> char型の変数は -128〜127 しか入れられないと習ったのですが

これがそもそも間違い。char が符号付がどうかは処理系/コンパイルオプションによる。
また、>>748 のプログラムでは、符号拡張とかしないので unsigned char でも signed char でも問題ない。
0757デフォルトの名無しさんNGNG
>>749
Cプログラマはif(c)と書く。
0758デフォルトの名無しさんNGNG
>>750,>>751
すみません。2バイトは分かっているのですが、例えば
「風」は 0x9597 ですよね。16進で95ということは
10進で149…127より大きいんじゃないでしょうか
何か根本的なところが間違っているのでしょうか
0759デフォルトの名無しさんNGNG
>>750
コマンドライン引数として受け取った"hoge"とかの文字列を比較してようと
してたんですが、以下のようにmainの一番上に条件式を置いてみたところ
やはりエラーが出ます。どこか間違っているでしょうかか?
int main (int argc, char *argv[]){
int i = 0;

if(argv[1][i] != '\0'){
・・・
0760754NGNG
>>758
ヤパーリ
>>756
0761デフォルトの名無しさんNGNG
>754
じゃぁ、128以上に行くと負の数になる。
二進数で考えなー補数にだ

こんなことがあるから
unsigned char
にするにだ
0762759NGNG
あ、返事貰ってる・・・失礼しました
0763754NGNG
>>759
引数がなければNULLにアクセスしてたぶんあぼーん
本当に引数をつけた?
0764748NGNG
>>756
行き違いになってしまいました。
なるほど分かりました。
みなさんありがとうございました。
0765759NGNG
>>763
はい。引数ないときはエラー出るようにしてますし、
printf("%c"argv[1][i]);とかで出力しようとすると
ちゃんと'h'とか表示されます。なぜかあの比較式が出たとたん
segmentation faultが・・・
0766デフォルトの名無しさんNGNG
>>759
って言うか、なんで argc 確認しないで if(argv[1][i] != '\0'){ なんて書くんだ ?
0767デフォルトの名無しさんNGNG
すいません、初歩的すぎることなんですが…
次のプログラムで足し算をしたいんですけど、

main()

{
int integer1, integer2, sum;

printf("1つめの整数を入力して下さい。\n");
scanf("%d", &integer1);
printf("2つめの整数を入力して下さい。\n");
scanf("%d", &integer2);
sum = integer1 + integer2;
printf("和は %d\n", sum);

return 0;
}

出力は以下のようになるかと思ったんですけど、

1つめの整数を入力して下さい。
1
2つめの整数を入力して下さい。
4
和は 5

実行しても何も表示されないんです。それで2つの数字を入力してみると、
最後にprintfの文章がまとめて3行表示されるんです。
ほんの通りにやってるつもりなんですが…。どうしてでしょう??
すみません、教えて下さい!
0768デフォルトの名無しさんNGNG
charで必ず表せる範囲・・・0〜127
signed charで必ず表せる範囲・・・-127〜127
unsigned charで必ず表せる範囲・・・0〜255

あっている?
0769761NGNG
>748
char i = 129;
printf("%d",i);

こんな実験をやってみそ
0770デフォルトの名無しさんNGNG
>>767
flush
0771デフォルトの名無しさんNGNG
>>767
fflush(stdout);
0772デフォルトの名無しさんNGNG
>768

> signed charで必ず表せる範囲・・・-127〜127
-128〜127
0773名無し@沢村NGNG
データを読み込んで、そのデータに応じた画像を横一列に表示するプログラムをつくっています。
横に長くなるので、スクロールバーをつかって表示を切り替えるようにしています。
また画像をクリックしたらその画像の上に縦線を描画するようにしました。
でも画面をスクロールしたときに一番左端にくる画像をクリックした場合、うまく縦線が描画されません。
これがその部分のソースですが、どこが悪いのでしょうか?
つまり//マウスをクリックしたX座標が50以下のとき という部分です。ご指導お願いします。

void DrawRline( HDC MemDC)
{
int i;//editpos スクロールバーの位置
for(i=1;i<=_Index[T];i++)
{if(i==1)//_Indexが1のとき
{ if((mousex>i_x[T][i-1]-(editpos*256)-20) && (mousex<=i_x[T][i]-(editpos*256)))
{_Pointa[T]=i_x[T][i]+3-_x_width[T][i]-(editpos*256);
break;}
}
else if(i>1)//_Indexが2以上のとき
{if(mousex<50)//マウスをクリックしたX座標が50以下のとき
{if((mousex>0) && (mousex<=i_x[T][i]-(editpos*256)))//
{_Pointa[T]=i_x[T][i]+3-_x_width[T][i]-(editpos*256);
break;}}
else//マウスをクリックしたX座標が50以上のとき
{
if((mousex>i_x[T][i-1]-(editpos*256)) && (mousex<=i_x[T][i]-(editpos*256)))
{_Pointa[T]=i_x[T][i]+3-_x_width[T][i]-(editpos*256);
break;}}}}
SelectObject(MemDC,hPen);
MoveToEx(MemDC,_Pointa[T],112,NULL);
LineTo(MemDC,_Pointa[T],338);
}
0774デフォルトの名無しさんNGNG
>>773
それ752だろ。
0775デフォルトの名無しさんNGNG
2の補数マシンで char == signed char な環境なら
charで必ず表せる範囲・・・-128〜127
signed charで必ず表せる範囲・・・-128〜127
unsigned charで必ず表せる範囲・・・0〜255

じゃないか?


0776デフォルトの名無しさんNGNG
とにかく8ビット入るでええやん。
0777デフォルトの名無しさんNGNG
>>773
どううまく行かないのかくらい書けよ。変数の簡単な説明モナ。
0778デフォルトの名無しさんNGNG
>>759はちょっとソースを晒してみるよろし。
0779デフォルトの名無しさんNGNG
ANSIで保証されるのは>>768であっているのでは?
0780デフォルトの名無しさんNGNG
gdbってセグメンテーション違反が起きた場所を探すのに便利だよね。
ほかの使い方は知らない・・・
0781デフォルトの名無しさんNGNG
chr型1バイトだろ。0〜127じゃ、残りの128はどうなるのよ
0782デフォルトの名無しさんNGNG
>>772
なんか、limits.h の SCHAR_MIN が -127 のやつがちらほらあるんだがなんで ?
0783デフォルトの名無しさんNGNG
>>781
「保証される」
0784デフォルトの名無しさんNGNG
>>781
signed charとunsigned charの重なり合う部分。
符号あり/なしは処理系依存だから。
0785デフォルトの名無しさんNGNG
こんなのも動かないのか?
#include <stdio.h>
int main(int argc, char *argv[])
{
if (argc < 2) return 0;
if (argv[1][0] != '\0') puts("hoge");
return 0;
}
0786デフォルトの名無しさんNGNG
>>782
2の補数表現を使うとは限らないからでは
0787デフォルトの名無しさんNGNG
>>782
if(0 == ~0) /* 真になっちゃう? */
0788デフォルトの名無しさんNGNG
処理系依存が多すぎでうざいよね
0789デフォルトの名無しさんNGNG
最大公約数を求めるプログラムを作っているんですけど、
下のプログラムでは何がだめなんですかね。
#include <stdio.h>
int gcd(int m, int n){
int r = m%n;
return gcd(n, r);
}
0790759NGNG
>>778
入力した文字列の英字の部分以外を除外して出力する、という
ガッコの課題です・・・while文の比較式でセグが出ます。
#include <stdio.h>
#include <ctype.h>

char rmv(char);

int main (int argc, char *argv[]){
int i = 0;
int j = 0;
char ss;
char *alp;

if(argv[1] == NULL){
printf("errer!\n");
exit(0);
}
while(argv[1][i] != '\0'){
buf = rmv(argv[1][i]);
if(ss != '\0'){
*(alp + j) = ss;
j++;
}
i++;
}
printf("%s",alp);

return 0;
}
0791759NGNG
char rmv(char c){
if(isalpha(c) == 0)
return '\0';
else
return c;
}
0792デフォルトの名無しさんNGNG
>>789
nが0かどうかチェックしていないところ。
0793デフォルトの名無しさんNGNG
>>789
絶句。
0794792NGNG
つーか再帰の終了条件がないじゃん。
0795デフォルトの名無しさんNGNG
*(alp + j) = ss;
これはなに?
0796759NGNG
あ、bufってなってるとこはssの間違いです。。
0797デフォルトの名無しさんNGNG
*(alp + j) = ss;

alpはどこを指しているの?
0798デフォルトの名無しさんNGNG
int main (int argc, char *argv[]){
char *alp;

if(argv[1] == NULL){
printf("errer!\n");
exit(0);
}
for (alp=argv[1]; *alp; alp++){
if (isalpha(*alp)) putchar(*alp);
}
return 0;
}
0799デフォルトの名無しさんNGNG
ポインタって主に何に使うの?
0800デフォルトの名無しさんNGNG
アドレスの格納、配列のカウンタ。
0801デフォルトの名無しさんNGNG
配列のカウンタはint変数だろ
0802デフォルトの名無しさんNGNG
>>790
そのコードだけだとしたらalpに実体がないのがアウトだね
char alp[512];
とかしないと。
0803デフォルトの名無しさんNGNG
もう759はほっとけばいいよ。
0804デフォルトの名無しさんNGNG
64bitマシンだとintはおそらく64bitになるわけですよね?効率重視で
shortやlongはどうなっちゃいましょう?
そりゃ規格の許す範囲ならなんでもいいんでしょうけど
0805デフォルトの名無しさんNGNG
shortもlongも今と同じで良いじゃん
0806デフォルトの名無しさんNGNG
longは64bitにして、shortとintはそれぞれ16bit、32bitのままでいい。
0807デフォルトの名無しさんNGNG
>>804
intが64bitになるとは限らない。
32bitのままが主流と思われ。
longやlong longが64bitに割り当てられる場合が多いんでないかな。

intが64bitにならないと言う訳では無いので、過信しないように。
0808デフォルトの名無しさんNGNG
>>807
int==32bitと決めつけているソースがあまりにも多いからしかたなく・・・となんかの記事で読んだ覚えがある。
0809デフォルトの名無しさんNGNG
int32,int64が主流になる。
0810デフォルトの名無しさんNGNG
コンパイルオプションでなんとでもなる
0811デフォルトの名無しさんNGNG
LP64とLLP64でも調べれ
0812デフォルトの名無しさんNGNG
int を 64 ビットにしたら、
16/32 ビットのどちらかしか使えなくなるよね。

char = 8 ビット
short ∈ [8, 64] ビット
int = 64 ビット
long ≧ 64 ビット

というか、こういうダサイ仕様はどうにかして欲しい。
0813デフォルトの名無しさんNGNG
>>808
 そうなのか!!
 int=64bit にすると 32bit 整数が無くなるからだと思ってた。
0814デフォルトの名無しさんNGNG
別に決まっていないのだが…
Win64の話か?
0815デフォルトの名無しさんNGNG
short short とか作ればいいかも(w
0816デフォルトの名無しさんNGNG
>>815
 short より短そう...
0817デフォルトの名無しさんNGNG
なんかもう標準でtypedefして欲しい
って本末転倒か
0818デフォルトの名無しさんNGNG
C99ってやたらと整数型多くなかったっけか。
0819デフォルトの名無しさんNGNG
long long = 256, long = 128, int = 64, short = 32, short short = 16
こんな感じでたのむ。
0820デフォルトの名無しさんNGNG
>>819
大却下
0821デフォルトの名無しさんNGNG
256って果てしないな
それでも星の数は表せないだろうけど(自信なし)
0822デフォルトの名無しさんNGNG
64bit って13エクサまで表せるんだっけ?
もう東京ドーム何個分だよ
0823デフォルトの名無しさんNGNG
int8, int16, int32, int64, int128, int256 で済む話なんだがなぁ。
0824デフォルトの名無しさんNGNG
int8_t
uint8_t
int_least8_t
uint_least8_t
int_fast8_t
uint_fast8_t
はあ
0825デフォルトの名無しさんNGNG
>>757
俺も俺も。
あと、if ( c == 0 ) は、 if ( ! c ) だな
0826デフォルトの名無しさんNGNG
つーか、もはや LP64 がデフォルトだろ
0827デフォルトの名無しさんNGNG
if(c)
if(!c)
は悪。
0828デフォルトの名無しさんNGNG
真偽値以外は使わないよう心がけてます
0829デフォルトの名無しさんNGNG
読みやすいじゃん

p = (char *) malloc( 1024 );
if(! p)
{

とか
0830デフォルトの名無しさんNGNG
p は何よ、みたいな。
0831デフォルトの名無しさんNGNG
宗教論争になりそうだが…
真偽値が int だったり bool値(true, false)だったり仕舞いには
void* だったり、条件式中で使い分けるのが面倒だから ! 派
0832デフォルトの名無しさんNGNG
>>829
if(!(p=(char *)malloc(1024)))
0833デフォルトの名無しさんNGNG
switch(1) case 比較式or非定数式:
みたいなことができればいいのに。
0834デフォルトの名無しさんNGNG
>>833
多くの場合ジャンプテーブルに展開されるから、今からそれやるのは無理。
有ればいいとは思うのだが。
0835デフォルトの名無しさんNGNG
2分木探索プログラムなのですが
以下のような関数を作成しました。

int search(int key , tree *node , tree *findnode){
if(node->key == key){
findnode = node;//error 戻った時にfindnodeがNULLポインターになってる。
return 1;
}

if(node->key < key){
if(node->left != NULL){
if(search(key , node->left , findnode) == 1){
return 1;
}
}
}else{
if(node->right != NULL){
if(search(key , node->right , findnode) == 1){
return 1;
}
}
}
return 2;
}

findnodeに見つかったノードのアドレスをコピーして戻るということをしているはずなのですが
return 1;で戻った直後findnodeがNULLポインタに戻ってしまいます。
どこが間違っているのでしょう(^^;よろしくお願いしますm(_ _)m
0836デフォルトの名無しさんNGNG
>>835
そりゃ当然だと思うが…

void f(int a) {
a = 1;
}

b = 0;
f(b); /* bは1になるか?(ならない) */

と同じだよ。
*findnode = *node;
にすれば実体が代入されて幸せになれる(かもしれない)。
どうしてもポインタがほしいというのならば、パラメータfindnodeは
tree **findnode
と宣言して、
*findnode=node;
とやるしかないだろね。
0837デフォルトの名無しさんNGNG
【ウィザードオンライン開発中in 2ch】
http://game3.2ch.net/test/read.cgi/mmominor/1050889293/l50
http://219.96.231.242/wizonline/

あっ、誤爆
0838835NGNG
>>836
ありがとうございます。
そういわれればそうですね。
tree *findnode
で宣言してたのでポインタ扱ってるはずなのになぁ(´-`).。oO
とつまってました。
もう一度!ありがとうございましたヽ( ´ー`)ノ
0839デフォルトの名無しさんNGNG
ctime関数で時刻表示した後改行したくないぃぃーッ!
って時はどうしたらよいですか?
0840デフォルトの名無しさんNGNG
33188のような8ビット数字列を
-rw-r--r--のようにファイルモードと許可ビットの文字列に
変換するにはどう処理を書けば良いでしょうか。
宜しくお願いします。
0841デフォルトの名無しさんNGNG
時刻表示する ctime の実装なんてあるの?
0842デフォルトの名無しさんNGNG
>>839
改行削ってから表示。
0843デフォルトの名無しさんNGNG
>>840
33188は8bitでは表せないと思うが

int mode = 33188;
char buf[12];

sprintf(buf, "%c%c%c%c%c%c%c%c%c%c",
S_ISDIR(mode) ? 'd' : S_ISFIFO(mode) ? 'p' : S_ISLNK(mode) ? 'l' : 中略 '-',
mode & 0400 ? 'r' : '-',
mode & 0200 ? 'w' : '-',
mode & S_ISUID ? mode & 0100 ? 's' : 'S' : mode & 0100 ? 'x' : '-',
mode & 0040 ? 'r' : '-',
mode & 0020 ? 'w' : '-',
mode & S_ISGID ? mode & 0010 ? 's' : 'S' : mode & 0010 ? 'x' : '-',
mode & 0004 ? 'r' : '-',
mode & 0002 ? 'w' : '-',
mode & S_ISVTX ? mode & 0001 ? 't' : 'T' : mode & 0001 ? 'x' : '-');
0844デフォルトの名無しさんNGNG
>842
えっ、どうやるんですか??
0845デフォルトの名無しさんNGNG
>>844
Backspace
0846デフォルトの名無しさんNGNG
>>843
わざわざありがとうございます。
これほど面倒な処理だとは・・・
0847デフォルトの名無しさんNGNG
>>839
ctime() だけでは表示しないと思うがこんな幹事か?
const char *p=ctime(&t);
printf("%.*s", strlen(p)-1, p);
0848デフォルトの名無しさんNGNG
>>844
>>845は無視するとして、ctime()の戻してきた文字列から改行コードを探し出して消してしまえばいい。
str = ctime(...);
strchr(str, '\n')[0] = '\0';
ctime()の戻す文字列は、最後が改行なのが保証されているからこれで充分。
0849デフォルトの名無しさんNGNG
補足
ctime()の戻す領域は使い回されるので早めに他の文字列に引き取るか
表示しないといけないので要注意。

つーか、表示するだけなら>>847でよかったか。
0850844NGNG
ありがとうございましたー!どうもー
0851デフォルトの名無しさんNGNG
シフトすればいいんじゃない?
0852175NGNG
#include <stdio.h>
#include <stdlib.h>

void cofactor(int *a,int n,int i,int j,int *b){
int k,m;
for(k=0;k<=n-2;k++){
for(m=0;m<=n-2;m++){
if(k<i&&m<j){b[k*(n-1)+m]=a[k*n+m];}
else if(k<i&&m>=j){b[k*(n-1)+m]=a[k*n+(m+1)];}
else if(k>=i&&m<j){b[k*(n-1)+m]=a[(k+1)*n+m];}
else if(k>=i&&m>=j){b[k*(n-1)+m]=a[(k+1)*n+(m+1)];}
else {printf("error\n");}
}}}
0853175NGNG
int main(){
int *a;int *b;int i,j,n;
printf("n*n行列aの余因子を求めます!\n");printf("n=");scanf("%d",&n);
if(NULL==(a=(int *)malloc(n*n))){printf("No memories!");return 0;}
if(NULL==(b=(int *)malloc((n-1)*(n-1)))){printf("No memories!");return 0;}

printf("aの要素をa00からa(n-1)(n-1)迄順番に入力して下さい\n");
for(i=0;i<=n-1;i++){
for(j=0;j<=n-1;j++){
printf("a%d %d =",i,j);scanf("%d",&a[i*n+j]);}}
printf("aの入力が終わりました\n");
for(i=0;i<=n-1;i++){
for(j=0;j<=n-1;j++){printf("a%d %d = %d  ",i,j,a[i*n+j]);}
printf("\n");}
printf("i,j成分に関する余因子bを求めます\n");
printf("i=");scanf("%d",&i);printf("j=");scanf("%d",&j);

cofactor(a,n,i,j,b);

for(i=0;i<=n-2;i++){
for(j=0;j<=n-2;j++){printf("b%d %d =%d ",i,j,b[i*(n-1)+j]);}
printf("\n");}
return 0;}
0854デフォルトの名無しさんNGNG
まじでそんな見づらいコード書いているの!?
0855175NGNG
>852-853はn*n行列aから、余因子を求めるプログラムなのですが
上手くいきません。
エラーもなくコンパイルできるのですが、
間違った値がでてくるんです。
例えばaを
a[]={1,2,3,4,5,6,7,8,9}
という3*3行列にして
i=0;j=2;
とした時に、本来は
b[]={4,5,7,8}
とならないとおかしいのですが
b[]={4,4,7,8}
となってしまうんです。

もう泣きそうです、助けてください!
0856デフォルトの名無しさんNGNG
>>852-853
吐き気を催しました。
0857デフォルトの名無しさんNGNG
if(NULL==(a=(int *)malloc(n*n)))

==を=と書いてしまった時にエラーがでるようにするためらしいけど、激しく違和感があるね。
0858175NGNG
>857
それはメモリが確保できなかった時に終了するルーチンです
持ってる教科書にこんな感じの例が載ってたので・・・
0859デフォルトの名無しさんNGNG
>>858
並び順のことを言っているんだけど。
0860859NGNG
つーかこの場合はNULLを後にしてもエラーでるじゃん・・・
0861175NGNG
>859
並び順も教科書そのままなんです
「実習C言語」っていうのに書いてありました
0862859NGNG
×NULLを後にして
○NULLを後にして==を=にして
0863175NGNG
>>856-857 >>859-860 >>862
分かんねえなら、いちいちレスすんなカス共
どうせ数学はリア厨以下なんだろ? 知ったかクン?
バカの癖して、しょうもねえとこばっかツッコミ入れやがってこの能なし共が!!!

おまえらみたいなカス共に期待した俺が浅はかだった
もういい、こんなとこ二度と来ねえよ

んじゃなカス共
0864175NGNG
>863
偽者死ね
0865デフォルトの名無しさんNGNG
"a"はアドレス、*"a"はそのアドレスの中身ってことで良いですか?
0866デフォルトの名無しさんNGNG
b0 0 =4 b0 1 =5
b1 0 =7 b1 1 =8
だそうだが?
0867デフォルトの名無しさんNGNG
>>853
> if(NULL==(a=(int *)malloc(n*n))){printf("No memories!");return 0;}
> if(NULL==(b=(int *)malloc((n-1)*(n-1)))){printf("No memories!");return 0;}

おいおい、int のサイズは1バイトじゃねー処理系が多いぞ。
0868175NGNG
>866
え?
本当ですか?
私の環境では
b0 0 =4 b0 1 =4
b1 0 =7 b1 1 =8
になってしまいます。
私のPCが故障しているのでしょうか・・・
0869デフォルトの名無しさんNGNG
あと、cofactor() 内の if 分は 行/列で分けて考えればもっとすっきりする。
また変数を全て一文字にするのはわかりにくく間違えやすい。

void cofactor(int a[], int n, int xi, int xj, int b[]){
 int i, j;
 int si, sj;

 for(i = 0; i <= n - 2; i++){
  si = i < xi ? i : i + 1;
  for(j = 0; j <= n - 2; j++){
   sj = j < xj ? j : j + 1;
   b[i * (n - 1) + j] = a[si * n + sj];
  }
 }
}
0870175NGNG
>869
有難うございます
参考になります
0871デフォルトの名無しさんNGNG
>>870
いや、それ以前に >>867 は理解したのか ?
0872175NGNG
>871
いえ
さっぱり
0873デフォルトの名無しさんNGNG
(・∀・)
0874175NGNG
分かりました!
int型はCPUによって違うけれど大体2or4バイトになっている。
故にn*nのint型を確保したいなら
4n*4nの領域を確保していれば良い。
よってこう書き換えればよい。

if(NULL==(a=(int *)malloc((4*n)*(4*n)))){printf("No memories!");return 0;}
if(NULL==(b=(int *)malloc(4*(n-1)*4*(n-1)))){printf("No memories!");return 0;}

ということですね
0875デフォルトの名無しさんNGNG
sizeof
0876デフォルトの名無しさんNGNG
>>872
C言語ができるぞと威張りたいとかなら別だが、Cなんかやめて VB とかにした方がいいよ。
せめて、C++ にでもしろ。malloc() は、お前には早すぎる。
0877デフォルトの名無しさんNGNG
>>874
もういいよ、int が 16バイトになるまでは時間は十分あるし、今時少々メモリーを取り過ぎたってどうてことないから。
0878175NGNG
>875
有難うございます
sizeof(int)でint型が何バイトかを取得できるのですね
これを使えば、環境に依存しない形で書けるみたいですね

>876
VB使える環境ないです・・・
C++ですか、勉強してみます
0879デフォルトの名無しさんNGNG
>>878
いや、それ以前に >>877 は理解したのか ?
0880175NGNG
>879
int型が何バイトになるかは環境によって違うということですよね?
0881175NGNG
if(NULL==(a=(int *)malloc(n*n*sizeof(int)))){printf("No memories!");return 0;}

つまり、これでint型のn*n行列を確保できる、と
0882175NGNG
874では
n*n*sizeof(int)
とすべき所を
n*n*sizeof(int)*sizeof(int)
にしてたんですね・・・
0883デフォルトの名無しさんNGNG
>175K&Rを買いませう
0884175NGNG
皆さん有難うございます!
mallocの部分を直したら正しい結果(>>866さんの書いた結果)が出るように成りました!
0885175NGNG
>883
有難うございます
今度さがしてみます
0886デフォルトの名無しさんNGNG
graph.hファイルはどのようにして入手すればいいのでしょうか?
0887デフォルトの名無しさんNGNG
>>886
TurboCとかDOS用のコンパイラのソースを動かそうとしてるの?
いま持ってるコンパイラに付属してなかったらあきらめたほうがいいよ。
0888デフォルトの名無しさんNGNG
memcpyてどうやって使うの?
0889デフォルトの名無しさんNGNG
貴方には無理。
0890デフォルトの名無しさんNGNG
GPUそのものの開発や、関連の開発に携わると、
int が 128bit でもいいかな、いや、256でも イイ! と思ってしまう...
0891デフォルトの名無しさんNGNG
typedef で勝手に定義しる
0892デフォルトの名無しさんNGNG
memcpy(dst,src,size);
0893デフォルトの名無しさんNGNG
すみません、教えて頂けないでしょうか。
gccで

(test1.c)
#include <stdio.h>

#ifdef PTR_G_STR
 extern char *g_str;
#else
 extern char g_str[];
#endif

int main(void)
{
  return printf("%s\n",g_str);
}

(test2.c)
char const g_str[] = "this is test.";


とすると、
-DPTR_G_STRしない=>正常動作
-DPTR_G_STRする=>Segmentation Fault
になってしまいます。

K&Rにはchar a[] => アドレス固定;char *a =>アドレス不定
のような事が書いてあったのですが、いまいち釈然としません・・
上の場合、test1.c内での
g_strのアドレスはどのようにして決められるのでしょうか?
0894デフォルトの名無しさんNGNG
>>893
char const g_str[] = "this is test.";
の g_str は配列であってポインタではない。
また、const である。
従って
extern char const g_str[];
が正しい。
すなわち、貴方のコードは 2 つとも誤っている。
0895デフォルトの名無しさんNGNG
>>893
当然です。配列とポインタは全く異なるものだからです。
定義したとおりに宣言しなくてはなりません。
0896894NGNG
これだけでは何なので。

ポインタ変数=データの位置情報(ポインタ)を入れる変数
配列=データの羅列

であり、根本的に両者は異なる。
ポインタ変数の場合はデータの位置(ポインタ)を使って
間接的にデータにアクセスするが、
配列の場合はデータに直接アクセスする。

上の例の
const char g_str[] = "this is test.";
は配列である。
すなわち、文字列がそのままデータとして置かれている。
これを
extern const char* g_str;
で参照しようとしても、
「置かれたデータのどこにもポインタが存在しない」のである。
この状態では g_str の先頭数バイトに入っているデータをポインタとして無理矢理認識し、
そのポインタを使ってデータを参照しようとする。
しかし、そんなポインタが正常に働くわけも無く、Segmentation Fault になるのである。
0897895NGNG
>>896
おれも補足。つーてもURLはるだけ(w
http://www.catnet.ne.jp/kouno/c_faq/c6.html
これをじっくり読むよろし。
0898893NGNG
FAQだったんですね・・軽く吊ってきます
ありがとうございました >894,895
0899デフォルトの名無しさんNGNG
>「実習C言語」っていうのに書いてありました

もう大分昔に出た悪書ですな。
入門C言語とか応用C言語とかと3部作になってた気がする。
大体、三田某の書いていること信じたら駄目になるってば。
0900デフォルトの名無しさんNGNG
みたぼん【三田本】(mi・ta・bon)
0901デフォルトの名無しさんNGNG
フーリエ変換だとかウェーブレット変換だとか
ああいう波形解析のプログラムってどうやって
書いてんの?

とりあえず俺はCしか知らないから
ここで聞いてみたわけだけど。
0902デフォルトの名無しさんNGNG
http://www1.neweb.ne.jp/wb/prof/
平成15年度 自作板PC環境調査 最新結果(一部抜粋)
◆4月分の結果が出ました。現在は5月分に移行しています。◆

平均年齢        25.4歳

ネット(2ch含)      78.7%
ゲーム          59.0%

Windows XP Family    46.9%
Windows 2000 Family   34.4%

Athlon     45.3%
Pentium 4     29.7%

平均RAM搭載容量 780MB

平均HDD搭載容量 166GB

nVIDIA 49.2%
ATI 28.9%

DVD-R/RW/マルチ 20.4%
CD-R/RW 75.9%

光ファイバー 8.3%
ADSL/xDSL 64.5%

CRT 74.6%
LCD 25.4%
0903デフォルトの名無しさんNGNG
>>901
どうやって、ってどういう意味で?
アルゴリズムならぐぐれ。
言語はどれででも書ける。

FFTは、C、FORTRAN、アセンブラで書かれた物が多い。
0904デフォルトの名無しさんNGNG
>>903
アルゴリズム。
FFTはなんとなくわかりそうだけど
DWTはなんかよくわからん。
もしオススメのサイトあったらキボンヌ
0905903NGNG
>>904
ヘタレでスマンが、waveletは担当してないから、ようしらん。
会社行けばCのソース有るが・・・

ttp://www.amazon.co.jp/exec/obidos/ASIN/4627075111/ref=pd_bxgy_text_2/250-1439864-3561046
ところでこの本を見てくれ。こいつをどう思う?
0906デフォルトの名無しさんNGNG
DSPでやるかパソコンでやるか。
お金とか、でいろいろ。
0907デフォルトの名無しさんNGNG
>>905
「こいつ」というのは、本のことか、著者のことか?
0908デフォルトの名無しさんNGNG
if(a)みたいに条件式が無いやつはどういう意味ですか?
0909デフォルトの名無しさんNGNG
>>908
aが非0だったら、という意味
0910デフォルトの名無しさんNGNG
a は立派な「式」だぞ。
0911デフォルトの名無しさんNGNG
普通の人は式だと思わない。
これは正常。
0912デフォルトの名無しさんNGNG
>>909
>>910
ありがとうございました。はじめたばかりで不親切な教本買っちゃったもので
0913デフォルトの名無しさんNGNG
>>912
大丈夫だ。99%の本は不親切だ。
初心者向けに薦められる本などない。
0914デフォルトの名無しさんNGNG
>>912
始めたばかりの癖に
「不適切な教本」という評価を下せる
お前に乾杯!
0915デフォルトの名無しさんNGNG
真って非0だったっけ。
0916デフォルトの名無しさんNGNG
>>915
un
0917915NGNG
ごめ。非0で条件分岐したわ。1だけっていう勘違いでした。

if(5)
  printf("true\n");
0918デフォルトの名無しさんNGNG
おい、画像の表示方法おしえろ。
本とかネットで探してもあんまりそういうの見当たらないんだ。
どういう風に表示するんだ?
画像処理の関数とかがあんのか?
0919デフォルトの名無しさんNGNG
>>918
VBなら楽だよ。VB使いなよ。
0920デフォルトの名無しさんNGNG
>>918
OS などの環境に依存する。
0921デフォルトの名無しさんNGNG
graph.h後から入れるのはやめたほうがいいのか。
入ってるコンパイラってどんなのがありますか?
0922デフォルトの名無しさんNGNG
おい、文字列の代入方法おしえろ。
本とかネットで探してもあんまりそういうの見当たらないんだ。
どういう風に代入するんだ?
文字列代入の関数とかがあんのか?
0923デフォルトの名無しさんNGNG
>>922 は俺じゃねぇぞ

真似すんな低脳。
そんなレベルのことならネットで調べろ。

OSに依存するんだな。
OSはWINだ。
画像処理系は難度が高いのか?

それともわざわざ解説書作っても需要が無いからなのか?
0924デフォルトの名無しさんNGNG
お前みたいな頭の沸いたヤシはJavaでも使ってろ
0925デフォルトの名無しさんNGNG
*pointer="文字列";
0926デフォルトの名無しさんNGNG
>>923
環境に依存するかどうかわからないやつに低脳などと言われたくないよ。
0927デフォルトの名無しさんNGNG
ふーん(;´Д`)ハァハァ
0928デフォルトの名無しさんNGNG
>>>922 は俺じゃねぇぞ

わざわざ言うほどのことか?
0929デフォルトの名無しさんNGNG
>>925
サンクス。うまくゆきました。
0930デフォルトの名無しさんNGNG
VBか。VBはちょっと触ったことがあるんだが、
VBじゃ駄目なんだ。Cをやりたいんだ。
でも初心者なんだからVBからやりなよ、
なんておせっかいはまっぴらごめんだぜ。

C++でも比較的簡単に表示できるみたいだが、
C言語では難しいのか?
C言語のグラフィック処理の資料が見当たらないのだが。
0931デフォルトの名無しさんNGNG
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo!

0932デフォルトの名無しさんNGNG
お前等な、スキルあるから調子に乗りやがってなまいきだな。
俺も早くそれくらいのレベルになりたいな。

おい、グラフィックどうやって表示するんだ?
簡単な例を示せ。
0933デフォルトの名無しさんNGNG
>>918
私、Cでは制御系しか作ったことないわよ。画像なんて聞いたことないわ。
自動販売機、エレベーター、パチンコの看板、ETCとか作ったけどね。
画像をいじりたいならJavaで決まり。サウンド系弱いけど画像は結構できる。
VBなんてレベルの低い人しか使わないよ。
0934デフォルトの名無しさんNGNG
看板?
0935デフォルトの名無しさんNGNG
デモンストレーション?
0936デフォルトの名無しさんNGNG
>>931 なるほど、お前なかなかの切れ者だな。
GUIか、言葉だけ知ってて内容知らんから、とりあえず、
C言語で何ができるかどうか調べてみる必要がありそうだな。

質問はやめておいてしばらく「GUI」というものについて調べてみる。
また理解できてきたら質問しに来るからな。
また答えろよ。
0937デフォルトの名無しさんNGNG
グラフィカルウザーインターフェース
0938デフォルトの名無しさんNGNG
Java厨もVB厨もウセロ、ここはC言語スレだ
0939デフォルトの名無しさんNGNG
>>936
またのお越しを心よりお待ちもうしあげております。
0940デフォルトの名無しさんNGNG
やはり休日は釣り人が多いな。
0941デフォルトの名無しさんNGNG
>>938
VBはともかく、JAVAに導くのは妥当だと思うが。
0942デフォルトの名無しさんNGNG
ピカピカくるくる電飾が動いてるでしょ。
それよ!
配列で電球全てを制御して最後はちょっとやばいことになったけど
一度納入するとバグがなければ壊れるまでだからこれが一番手を抜いたわ!
0943デフォルトの名無しさんNGNG
俺は質問しに来ただけだ、
うせろ、雑魚が。

プログラムを動かすには
コンピューターの総合的な知識が必要だってこと、
プログラムいじってみて分かった。

お前等ホント、パソコン好きだな。
俺も中学生くらいからパソコンいじっておけば良かった。

今の子供はパソコンが一家に一台の時代だから羨ましいぜ。
0944デフォルトの名無しさんNGNG
>>943
ネタですか?
一家に三台ですが。
0945デフォルトの名無しさんNGNG
> 一度納入するとバグがなければ壊れるまでだからこれが一番手を抜いたわ!
なんで手を抜くんだ
0946デフォルトの名無しさんNGNG
Java厨しつこい
0947デフォルトの名無しさんNGNG
>>938>>941>>946
お前ら、ヨソでやれ。
0948デフォルトの名無しさんNGNG
プログラマーとは如何に手を抜くかを考えるものよ・・・
効率、信頼性なんて二の次よ!
0949デフォルトの名無しさんNGNG
次スレヨロ↓
0950デフォルトの名無しさんNGNG
うし
0951デフォルトの名無しさんNGNG
次スレは
【プログラマは如何に手を抜くか?】
かい
0952デフォルトの名無しさんNGNG
>>948
Java厨らしい無責任さだな(w
0953950NGNG
たててくる
0954デフォルトの名無しさんNGNG
GUIをちょこと調べたが、画像を表示するだけでいいんだ。
俺が求めてる知識は多分GUIじゃないと思う。
bmp png gif そういう画像ファイルを表示したいだけなんだ。

それでだな、ゲームを作ってるHPなんだが、
http://www.game2channel.com/semi/programing/gpnyumon/06/index.html
ちらちらとこのHPを見てたんだが、グラフィック表示例の一行目、

#include"gmsub.h"

と、ある。この関数はHPからダウンロードして使ってくださいと書いてある。
こういうグラフィックの自作関数を作るのには相当なスキルが必要なのか?

もう頭ん中がパンパンだぜ。
0955デフォルトの名無しさんNGNG
なんてこと言うの!
プログラムなんてあってないようなもの製品がきちんと動けば
どう書こうが関係ないわ””どうせ見れないし。
社長が来てこのコードおかしいなんていうわけがない。
go to文Javaではbreak point:を使おうが関係ないないのよ。
でも今まで使った人見たことないけど。やっぱり会社で禁止されてんのかな?
0956デフォルトの名無しさんNGNG
バカはどっか逝け
0957デフォルトの名無しさんNGNG
おい、病的にお人よしでおせっかいな奴いねぇのか?
とっとと教えてくれ。
0958デフォルトの名無しさんNGNG
病的折衷がらくた言語
0959デフォルトの名無しさんNGNG
ShowImage(b,i);
0960デフォルトの名無しさんNGNG
GUI “など” の “標準Cではできない事” の質問は使用している “開発環境のスレ” へGo!
0961病的NGNG
>>954
相当なスキルが必要です
0962デフォルトの名無しさんNGNG
C04では標準になるらしいが、今はまだ非標準。
0963デフォルトの名無しさんNGNG
>>961 おだいじに。
0964デフォルトの名無しさんNGNG
CでC++を使う方法を教えてけろ
0965病的NGNG
>>963
もまえもな
0966デフォルトの名無しさんNGNG
int C;
C++;
0967デフォルトの名無しさんNGNG
>>964
ありません
0968デフォルトの名無しさんNGNG
#include <C++>
0969デフォルトの名無しさんNGNG
だからCで画像うんぬんは無理があるのよ。
Javaにしなさい。パッケージawtのGraphicsクラスのメソッド
g.drawImage(im,50,50);で一発で出るのよ。(imはImageで初期画済みね!gもGraphicsで)
コード全部で10行いかないわよ。
0970デフォルトの名無しさんNGNG
コンパイラを落としてインストールしたんですけど、ネットで調べたらリンカーというものも必要だと知りました。
Windows2000で動くリンカーを教えてください。
0971デフォルトの名無しさんNGNG
>>969
MS-DOSで動きますか?
0972デフォルトの名無しさんNGNG
…本気でJAVA厨がウザくなってきた
0973デフォルトの名無しさんNGNG
次スレまだぁ〜?チンチーン
0974デフォルトの名無しさんNGNG
>>970
プリプロセッサはさがさんで良いのか?
0975デフォルトの名無しさんNGNG
>>972
さっきから訊こうと思ってたんだが。
何故そこまでJAVAを嫌う。
0976デフォルトの名無しさんNGNG
<img src="image.jpg">
0977デフォルトの名無しさんNGNG
JAVAが嫌いなわけじゃない、スレ違いなネタを続ける奴が嫌いなだけ
0978デフォルトの名無しさんNGNG
>>975
押し付けてくるから
0979デフォルトの名無しさんNGNG
キーボードから入力された文字列を、配列に格納する際の質問です。

char str[10];
fgets(str, 10, stdin);

こう記述されいると、strに格納されるのは9文字(+ヌル)ですよね。
もしキーボードから入力されたデータが15文字くらいあった場合、
文字数が多すぎて配列に入り切らないという旨のエラーを表示させたいんですが、
文字数はどうやって判断したらいいのでしょうか?

最初は改行文字が格納されているかどうかで判断しようと思っていたのですが、
9文字丁度の文字列が入力された場合の処理がよく分からなかったので。
なにかいい方法はありますか?
0980デフォルトの名無しさんNGNG
test
0981950NGNG
http://pc2.2ch.net/test/read.cgi/tech/1052542761/

たてたよ。串探すのにてまどった
0982デフォルトの名無しさんNGNG
>>979
入力を促す時点で、制限バイト数を提示してはどうかね。
0983デフォルトの名無しさんNGNG
あんたなに言ってのよ!
fgetsはファイルから1行読み込むのよ。
char *str;
int flag=0;
do{
if(flag==1)
printf("もう一度入力しろアホ");
gets(str);
if(10<(strlen(str)))
break;
flag=1;
}while(1);
まったくJava嫌いの人はどっかいっちゃったの?
0984デフォルトの名無しさんNGNG
>>979
fgets(str, 11, stdin);
0985デフォルトの名無しさんNGNG
>>983
ネタやるんならキエロ
0986デフォルトの名無しさんNGNG
>>979
多めに取得して strlen() で判定。
0987デフォルトの名無しさんNGNG
>>979
getchar() で一文字ずつ判定。
0988デフォルトの名無しさんNGNG
>>987
プ
0989デフォルトの名無しさんNGNG
本当に長さが分からないなら>>987も手ではなかろうか。てかそれしか
ないような。Cを使う理由が無いなら C++ を使う。
0990デフォルトの名無しさんNGNG
>>986でいいだろ。
0991デフォルトの名無しさんNGNG
>>988
どうせお前は プ しか書けないんだから、でてくんな。
0992デフォルトの名無しさんNGNG
うめうめ。
0993デフォルトの名無しさんNGNG
昔はfgetcの関数呼び出しのオーバーヘッドも無視できなかったなぁ
0994デフォルトの名無しさんNGNG
たてたて
0995デフォルトの名無しさんNGNG
995
0996デフォルトの名無しさんNGNG
996
0997996NGNG
1000
0998999NGNG
1000!!
0999999NGNG
1000?
10001000NGNG
うひゃうひゃうひゃ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。