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

C言語なら、俺に聞け! <30>

レス数が1000を超えています。これ以上書き込みはできません。
0001ロートルしょーえいNGNG
漏れは54才、30年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことなら全てわかるから、疑問な点があったら漏れに聞け。
今なら平成デフレ記念3割引奉仕中だ。

スケジュールは真っ白だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。あと、至急仕事をください。


C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART4
http://pc.2ch.net/tech/kako/1022/10229/1022961238.html

前スレ <29> http://pc3.2ch.net/test/read.cgi/tech/1029605182/

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさんNGNG
過去スレ

28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/
26 http://pc3.2ch.net/test/read.cgi/tech/1026048820/
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
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1021/10214/1021459016.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/1018/10184/1018453690.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1015/10152/1015286974.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/1009/10094/1009499565.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
7 http://pc.2ch.net/tech/kako/1003/10034/1003418249.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
0003デフォルトの名無しさんNGNG
>>1
乙
もう用済み、逝ってよし!
0004デフォルトの名無しさん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

【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0005デフォルトの名無しさんNGNG
迷惑です。
0006デフォルトの名無しさんNGNG
「ロートルしょーえい」って何?
0007デフォルトの名無しさんNGNG
少し漠然とした質問だけどちょっと聞いて。

C言語でBMPとかJPGファイルを読み込んだときに
色情報とか解像度とかの情報はどこから取るのよ?

書籍でグラフィックを扱うものはすべて独自のインクルードファイルを
用意してるんだがもし自分で標準インクルードファイルだけで処理するなら
どうすればいいの?
0008デフォルトの名無しさんNGNG
>1にはBCCを入れろとあれほど・・・
0009デフォルトの名無しさんNGNG
Show-A情報は こちらをクリック!

おまえら先輩がんばってる!未来のおまえ
http://pc.2ch.net/test/read.cgi/prog/1030262495/
0010デフォルトの名無しさんNGNG
>>7
自分で構造体定義するとかアライメントが心配なら
配列にしてアクセス用のマクロを定義すればいいじゃん
で、ふつーそういうのは複数のソースから使いまわすから
独自のヘッダファイルを作成したくなる
誰だってそうする俺だってそうする
0011デフォルトの名無しさんNGNG
だが断る
0012サンプル盛り沢山NGNG
オカズにするなら、有料より『無料』!!
そんな貴方のために、できました⇒無料サイト♪
近親相姦・SM・人妻あります!!
http://www.traffimagic.com/WIPE7MMLZCA/comein/JPMVS
0013デフォルトの名無しさんNGNG
>>8
BCCなら>>4にあるだろ
0014デフォルトの名無しさんNGNG
質問です。
2ちゃんでのウイルスっぽいのを含んだ文章で
ノートンが警告を出しまくってやぱいんですけど
どうすれば良いんですか?
0015デフォルトの名無しさんNGNG
>>14
激しくスレ違い。逝ってよし!
001614NGNG
>>15
これってC言語じゃないんですか?
0017デフォルトの名無しさんNGNG
なぜc言語だと思ったのか理由を述べよ
001814NGNG
>>17
プログラムが関係していそうだからです!
0019あNGNG
>18
なにをえらそうにw
おまえが行くべきところは
初心者板だ。
さっさといけ。
0020デフォルトの名無しさんNGNG
>18
ここに行け。
http://pc.2ch.net/test/read.cgi/sec/1025872269/l10
そして二度と帰って来るな。
0021デフォルトの名無しさんNGNG
本当の14は俺なんだけどさぁ

俺に聞け!!とか調子の良い事いって
ちょっとぐらい違う事聞いたって気前良く教えてくれたっていいじゃないか?
心の狭い人間は先生嫌いです。
002214NGNG
>>21
うるせースレ違いな質問は厳禁なんだよ!
氏ね!
0023デフォルトの名無しさんNGNG
/* C言語に関係ない話はお断りです。 */
0024デフォルトの名無しさんNGNG
/* ノートンはC言語と関係ないやさかい、この辺でやめといてや */
0025デフォルトの名無しさんNGNG
いっそ/*
00267NGNG
>>10
ということは書籍のインクルードファイルを参考にすればいいのですね。
返答ありがとう。
0027デフォルトの名無しさんNGNG
>>13
たしか>>1に書かないと目に触れないから書けという流れだったような
0028デフォルトの名無しさんNGNG
>>13
http://pc3.2ch.net/test/read.cgi/tech/1029605182/15-21
0029デフォルトの名無しさんNGNG
ロートルしょーえいってなんだYO!
0030デフォルトの名無しさんNGNG
>>29
>>9
0031デフォルトの名無しさんNGNG
>>29
>>9
0032デフォルトの名無しさんNGNG
あれ?2重投稿しちゃったかな
0033デフォルトの名無しさんNGNG
>>32
どっちかは俺のだよ。
0034デフォルトの名無しさんNGNG
ということは照栄ファンがここに2人か
0035デフォルトの名無しさんNGNG
VC++ですけど、たとえばary[8][8]という配列の先頭アドレスを
常に8バイトにアラインメントできませんかね・・・
003635NGNG
書き忘れですけど、char ary[8][8]です
0037デフォルトの名無しさんNGNG
設定、c/c++、コード生成、で
構造体のアライメントを設定できるが、それではダメなのか?
003835NGNG
構造体メンバのアラインメント、でいいんですか?
既定で8バイトになってますね。
ありがとうございました
0039デフォルトの名無しさんNGNG
ちょっとお聞きしたいんですけど、いや、本当になんとなくな上にスレ違いなんですが
main() 関数の中に、自分の定義する関数以外ほとんど何も書かないプログラムって問題あるのですか?
例えば、
main(){
int cou[100]; char buf[256], buf2[256], buf3[256];
------------変数定義---------------
buf=mykansuu(cou[1],cou[2],cou[3],cou[4],cou[5],cou[6]);
buf2=mykansuu1(cou[1],cou[2],cou[3],cou[4],cou[5],cou[6]);
buf3=mykansuu2(cou[1],cou[2],cou[3],cou[4],cou[5],cou[6]);
}
char mykansuu(int i, int ni, int san, int yon, int go){
----------処理-----------
}
みたいな大量に変数を引き渡すプログラムと、自分で作った関数の中に何でも定義してあるプログラム。 ↓
main(){
int i; char c;
i=mykansuu();
c=mykansuu2();
}
char mykansuu(){
int no,cou=0,chu[1000],chunum=0;
FILE *from3,*temp4,*to3;
char list1[256],moji[256]="",kan[256]="",sho[20][256][50],ALLOCheader=0,BIOSheader=0,CONIOheader=0,CTYPEheader=0,DIRheader=0,DOSheader=0,GRAPHICSheader=0,STRINGheader=0,MATHheader=0,MEMheader=0,PROCESSheader=0,STDIOheader=0,STDLIBheader=0,TIMEheader=0;
--------------処理--------------
}
私は再利用が楽だから後者の方を多用しているのですけど、如何せんプログラムの行数が長くて
あまり評判がよくありません。 ご意見お聞かせください。
0040デフォルトの名無しさんNGNG
>>35
は??
0041デフォルトの名無しさんNGNG
>>39
ていうか関数の作り方が…
mykansuu関数の中では何だ、配列を使ってないのか?
ひょっとして
char mykansuu(int *hoge);
とかじゃなく
char mykansuu(int a, int b ,int c ,int d, int e, int f);
とかなのか?
004239NGNG
>>41
推測でいうな。
そんな馬鹿じゃないもん
0043デフォルトの名無しさんNGNG
>>42
でも、そんな引数の渡し方してるように俺にも見えるが?
0044本物の39NGNG
>41
そのマサカ(・ω・;;)デース。
って、細かいところに突っ込まないでくれ。 ヘタレですから。

で、結局、どっちが良いんでしょうか?
0045デフォルトの名無しさんNGNG
staticの使い方の質問です。

あるモジュールにモジュール内の他の関数へのポインタを返す関数があって、
このモジュール内の他の関数は、外部からは必ずこの関数を介して
使われるようになっています。
この時、ポインタとして返される関数はstaticで宣言してもいいんでしょうか?
0046デフォルトの名無しさんNGNG
>>45
それで、いいんでない?
逆にスタティックにしないと、外部から遠慮なく呼ばれちゃうし。
0047デフォルトの名無しさんNGNG
>>45
良い。
というか隠蔽が目的ならそうすべき。
0048デフォルトの名無しさんNGNG
>>39
呼ぶ側の関数から引き渡されなくても、
呼ばれる関数の中で解決できるものは、
呼ばれる関数の中でのみ扱うべきです。
0049本物の39NGNG
>48
やった〜〜。 私は正しかった。
毎回、関数を呼びたびに定義行が3行くらいあるせいで、評判は悪かったんですけど、
やっぱりこっちのほうがいいんですよね。 ありがとうございました。
0050デフォルトの名無しさんNGNG
ショウエイたん、マンセー
005145NGNG
>>46, 47 ありがとうございます。
0052(`・ω・´) b ビシッ!!NGNG
C言語だけで、ウィンドウズのアプリを作ってる神みたいな人が
いるって本当なんですか?

C++使わないで?

嘘でしょ?すごく面倒くさくないですか?
0053デフォルトの名無しさんNGNG
最近だと, GTK+ってのがCで書ける. 他にもCで書けるGUI libraryは結構あるよ.

>嘘でしょ?すごく面倒くさくないですか?
面倒ですw
0054デフォルトの名無しさんNGNG
#include <windows.h>
int APIENTRY WinMain(
 HINSTANCE hInstance,
 HINSTANCE hPrevInstance,
 LPSTR lpCmdLine,
 int nCmdShow)
{
 return MessageBox(NULL,"俺がWindowsアプリだ","sage",MB_OK);
}
0055デフォルトの名無しさんNGNG
>>54
bccだと()の中を消さないと動いてくれない予感。
005654NGNG
>>55
なんで? 動くよ。

「パラメータが使われない」警告のことなら、
コンパイラが勝手に出す警告であって、動作には関係ない。
0057デフォルトの名無しさんNGNG
>>52
昔はいっぱいいたよ
0058消したら動かんぞNGNG
>>55

#include <windows.h>
int APIENTRY WinMain()
{
 return MessageBox();
}
0059デフォルトの名無しさんNGNG
>>58
型はいるでしょ
0060デフォルトの名無しさんNGNG
Windows 3.1時代はMessage処理をswitch caseで分岐させてWinAPI
使って書いてなかったか?
遠い記憶なんで忘れたんだが、C++じゃなかったと思うが。
今もそんな感じで書けるはず。
間違ってたら訂正してくれい。
0061デフォルトの名無しさんNGNG
>>49
疲れきって誰もツッコミたくないだけだと思うよ。

>呼ぶ側の関数から引き渡されなくても、
>呼ばれる関数の中で解決できるものは、
>呼ばれる関数の中でのみ扱うべきです。
これは合っているんだけど、何したい関数だかわからんし、
データのまとめ方とかねえ…
006254NGNG
>>58
多分、55が言っているのは WinMain の方だけでしょ。

ただ、WinMainはstdcallなんだから 55が言っている
ような、仮引数リストの省略はすべきではないと思う。
警告を消す方法なら他にもいくつかある。

ちなみに VC++では省略すると引数がないと見なされ、
渡された引数をクリアしないコードを生成する。
(それ以前に WinMainでは省略不可能みたい)

>>59
関数の宣言と定義を勘違いしてない?
0063デフォルトの名無しさんNGNG
>>62
つーか、bccでも警告がでるとコンパイルできないの?
#持ってないからしらんw
警告レベルくらいいじれるよな、もちろnbccでも?
0064デフォルトの名無しさんNGNG
>>58warata
0065デフォルトの名無しさんNGNG
#include <windows.h>
int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
return MessageBox(NULL,"俺がWindowsアプリだ","sage",MB_OK);}

でいいじゃん
006665NGNG
そうかこれはC++じゃないとできないのか
0067デフォルトの名無しさんNGNG
C、C++がごっちゃになってる
0068デフォルトの名無しさんNGNG
bccで試したが、そのままで動いたぞ
006954NGNG
>>63
もちろんコンパイルできるよ。

警告レベルの変更はできるかどうか知らんけど、
指定した警告を抑止するオプションとかならある。
(BCCは持ってるだけで実際に使うことがないので)
0070初心者NGNG
>>65
Error: 外部シンボル '_main' が未解決(D:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

ていう、エラーがでます。
オプション必要?
0071デフォルトの名無しさんNGNG
>>70
bcc32 -tW
-Wでもいいんだったかな
0072デフォルトの名無しさんNGNG
>>71
俺は単純に bcc32 -W ファイル名
としているぞ。
0073初心者NGNG
>>71 >>72
両方ともでけました。ありがとうございますです。
0074デフォルトの名無しさんNGNG
前スレの604です。
コンパイラ、BCCなんですけど、コンパイル時に警告が出ても、exeファイルが出来てるっちゅーことは、コンパイルできてるんですよね?
その実行ファイルを実行しようとしても、コマンドの構文が間違っていますって言われます。
コードはほとんど本の物と同じなので、間違ってないと思うのですが…。

#include <stdio.h>

void main(){
 char s[10] = "Happy!";
 char d[10];
 char *ps, *pd;
 int i;

 ps = s;
 pd = d;

 for(; *ps != '\0'; *ps++, *pd++){
  *ps = *pd;
 }
 *pd = '\0';

 printf("%s", s);
 printf("%s", d);
}
007574NGNG
あ、でもその本、ちょっとおかしいと思うところが・・・。
普通、main関数って、
void main(){
}
あるいは、
main(){
 return 0;
}
ですよね?
でもその本は後者でreturnがないんです。
警告されるはずなのに…。
0076デフォルトの名無しさんNGNG
>>74
そのexeはなんという名前?
0077デフォルトの名無しさんNGNG
>void main(){
は正しくない。
0078デフォルトの名無しさんNGNG
> void main(){
 int main() {

> int i;
使われてない。

> for(; *ps != '\0'; *ps++, *pd++){
 for(; *ps != '\0'; ps++, pd++){

> *ps = *pd;
 *pd = *ps; /* こうしたいんじゃないの? */

> printf("%s", s);
> printf("%s", d);
改行は?

そして最後に return 0;
007974NGNG
>>76
copy.exeです。文字列のコピーなんで。

>>77
マジですか!?

>>78
>int main(){
int main(){が正しいんですか?
main関数は何も返さないから、voidが付くと思ってたんですが…。

>使われていない
違うことをやろうとした後の消し忘れです。^^;;;

>*pd = *ps
そうでした。どうもです。

>改行は?
入れておきます。^^;;;
0080デフォルトの名無しさんNGNG
>>79
> copy.exeです。文字列のコピーなんで。
その、なんだ、DOSのコマンドには既にcopyというものがあってだな。
…名前を変えるべし。

> main関数は何も返さないから、voidが付くと思ってたんですが…。
main関数は整数を返すので int が付くのが正しいヨ。
0081デフォルトの名無しさんNGNG
世の中にはOS無しの環境で動くC言語の存在を
知らない人間が多いな。
008274NGNG
>>80
あ…あぁ!!!ありましたね…。最近DOS使ってなかってないから、忘れてたYO!
…って、>>80さんも使ってないと思うけど、よく覚えてますね。(笑)

intを返してるんですか…。
じゃあ、int main(){…return 0;}とやるのが正しいわけですか。
void main(){}の方がいいのにぃぃぃ!
0083デフォルトの名無しさんNGNG
UNIX 開発用に作られたんだから、お願いです。
MS-DOG 上で、C を学ぼうとはしないでください。
0084デフォルトの名無しさんNGNG
>>81
それってAPIも無いってこと?
0085デフォルトの名無しさんNGNG
MS-DOG?
0086デフォルトの名無しさんNGNG
>>84
当然では?
0087デフォルトの名無しさんNGNG
そりゃあ、ゲイツの犬はまずいよな(藁
0088デフォルトの名無しさんNGNG
MEG-DOS
0089デフォルトの名無しさんNGNG
>>86
ヘビィな環境だね。ローダーとかはどう実装されてるの?
0090デフォルトの名無しさんNGNG
ある意味すでにゲイツの犬なわけだが
009174NGNG
#include <stdio.h>

int main(){
 char s[10] = "Happy!";
 char d[10];
 char *ps, *pd;

 ps = s;
 pd = d;

 for(; *ps != '\0'; *ps++, *pd++){
  *pd = *ps;
 }
 *pd = '\0';

 printf("%s\n", s);
 printf("%s\n", d);

 return 0;
}

forの行で出る、警告 W8019 copy_.c 11: コードは効果を持たない(関数 main )ってのはどうしてですか?
0092デフォルトの名無しさんNGNG
>>91

×for(; *ps != '\0'; *ps++, *pd++)
○for(; *ps != '\0'; ps++, pd++){
009374NGNG
>>92
ありがとー!!!
…今ポインタの勉強なんだけど、ここは致命的なミスだった…。
おぉーん!・゜・(ノД`)・゜・
0094デフォルトの名無しさんNGNG
>>89
自分がやった環境ではローダー無かったなぁ。
ベタなバイナリ書き出して終わり。

で、趣味でやってるOS作りではローダーってものが必要だと
知って慌てて勉強してるわけだが(w
0095デフォルトの名無しさんNGNG
がんがってるな
0096デフォルトの名無しさんNGNG
MS-DOG (・∀・)イイ!!
0097デフォルトの名無しさんNGNG
>>93

その件はすでに>>78で指摘されてるだろ。せっかく付けてもらったレスは、すみから
すみまでねめ回せ。
0098デフォルトの名無しさんNGNG
>>86
http://www.semicon.melco.co.jp/seminar2/course/b2_02.htm
http://www.besttechnology.co.jp/HowToV25/startup/startup.htm
まあ、スタートアップという初期化手順があってそこで
シンボリックリンクされたmain関数がはじめて呼ばれるわけだよ。
スタートアップの処理自体はアセンブラで書かれる。
よってそこでの宣言により戻り値を返すか、どうかが決まる。
0099デフォルトの名無しさんNGNG
>>93
早く次の課題出してよ。またMS-DOGでね。(ワクワク
0100デフォルトの名無しさんNGNG
厨房の83は最近Cの歴史を知って煽りを書いてみたんだが
MS-DOSを知らなかったようなだな(w
010189NGNG
>>98
ありが�d
010274NGNG
>>97
ご指摘ありがとうございます。
>>78さん、すいませんでした。m(__)m

>>99
また本読み進めてみるよ。
それか、友達にまた問題もらったら、アドバイスお願いします。
つーか、友達の大学の宿題を貰ってるんだけどね。^^;;;
0103デフォルトの名無しさんNGNG
>>100
むしろMS-DOSを知らない若者を釣ろうとした
いただけないヴェテランの可能性も(藁
010474NGNG
MS-DOG = MicroSoft Disk Operating Gorila
0105デフォルトの名無しさんNGNG
このような展開を予想して態と間違えた可能性も(w
0106デフォルトの名無しさんNGNG
This section briefly describes the peculiarities of using Emacs under the MS-DOS "operating system" (also known as "MS-DOG").
010774NGNG
>>106
Pardon?
0108デフォルトの名無しさんNGNG
なんと
http://www.google.com/search?hl=ja&ie=Shift_JIS&q=MS-DOG&btnG=Google+%8C%9F%8D%F5&lr=
010974NGNG
http://www.staticlayer.com/lupin/R3_temp.swf?inputStr=%82l%82r%81%7C%82c%82n%82f%28%A5%81%CD%A5%29%B2%B2%21%21%21
0110デフォルトの名無しさんNGNG
で、MS-DOGと言ったときの Gは何の略なんだろう。
やっぱり Gorila?
0111デフォルトの名無しさんNGNG
Girl
011283NGNG
わかった人が一人でもいれば。独占的な企業は嫌いです。
おやすみ。Happy hacking!
011374NGNG
>>111
MicroSoft Dekkai Opa-i Girl

つか、文字列のコピーってポインタ使わなくてもこれでいいのでは…?w
#include <stdio.h>

int main(){
 char s[10] = "Happy!";
 char d[10];
 int i;

 for (i = 0; i < 11; i++){
  s[i] = d[i];
 }

 printf("%s\n", s);
 printf("%s\n", d);

 return 0;
}

(〃~∇~〃)zzz。o〇○
0114デフォルトの名無しさんNGNG
>>83
よかったなgoogleで見つかって(w
011554NGNG
また暇つぶしに。(VC++専用です)
#include <windows.h>
#define MSG1 "俺が main だ、文句あっか\n"

#ifdef _CONSOLE
void __cdecl mainCRTStartup(void)
{
  DWORD n;
  ExitProcess(!WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),
        MSG1,sizeof(MSG1)-1,&n,NULL));
}
#else
void __cdecl WinMainCRTStartup(void)
{
  ExitProcess(MessageBox(NULL,MSG1,"sage",MB_OK));
}
#endif
0116デフォルトの名無しさんNGNG
>>114
いや、結構有名な呼び方だよ。
知らないほうが。。略
0117デフォルトの名無しさんNGNG
>>113
 for (i = 0; s[i] != '\0'; i++){
  d[i] = s[i];
 }

っていうか、ポインタの勉強なんだからあれでいいんだろ。意味も違うぞ。
そもそも上でやってる処理なんてstrcpyで一発なんだよ。
ちなみにポインタ使った方が高速だ。
0118デフォルトの名無しさんNGNG
>>113
それはmemcpyだと思うが。
しかもバッファオーバーランだし。

>>117
> ちなみにポインタ使った方が高速だ。
処理系によるでしょ。
俺の使ってるコンパイラはどっちも変わらん。

ちなみに俺的にはループのところが
 while(*ps) *pd++ = *ps++;
 *pd = '\0';
とか
 while(*pd++ = *ps++) ;
の方が読んでわかりやすい。でも人それぞれ。
0119デフォルトの名無しさんNGNG
規格ではスタンドアロン環境とホスト環境の区別もしてないし
処理系がOSに戻り値を返却しようがしまいがmainにreturnは
必要(規格準拠するつもりがあるならね)。
0120デフォルトの名無しさんNGNG
>>116
ガイシュツも知らないの?っていうくらい痛いな(ワラ
0121デフォルトの名無しさんNGNG
windows を windoze って言うようなもん?
0122デフォルトの名無しさんNGNG
>>120
釣れた。
0123デフォルトの名無しさんNGNG
if( b == func(a) )
{
}

は,おかしなやり方ですか?
if文の中の処理は行われない可能性がありますか?
0124デフォルトの名無しさんNGNG
>>123
なんで? 全然おかしくないじゃん。
どうしておかしいと思うの?
0125デフォルトの名無しさんNGNG
>>124
if文の中の値があってるはずなのに,if文の中が,実行されないから
どっかオレのプログラムミスがあるようだ
見直おしてみる
0126デフォルトの名無しさんNGNG
>>125
== と = を間違えてたりはしないよね?
0127デフォルトの名無しさんNGNG
>>126
さすがにそれはないです
0128デフォルトの名無しさんNGNG
なぁ、お前ら。
ちょっと関係ないんだけど、IEでこの板見てて、このスレをクリックして
Backで戻ると、IEのタイトルが文字化けしねぇか?

他の板ではそういうことないんだけどさ。
0129デフォルトの名無しさんNGNG
いいえ
インストールは,させられそうになりますが
0130127NGNG
原因を見つけました
ご迷惑をかけました
0131デフォルトの名無しさんNGNG
>インストールは,させられそうになりますが
同意。Flash Playerだよね。
何とかならんかな。
0132 NGNG
void func(void)
{
int i;
printf("整数を入力: ");
scanf("%d",i);
return i;
}
これって何が間違ってるんですか?
間違っている理由も教えてください。
0133132NGNG
ネタでした。
0134デフォルトの名無しさんNGNG
void
0135 NGNG
voidがなぜ違うのかおしえてくれませんか?
0136デフォルトの名無しさんNGNG
>>133

脳内コンパイラーでは通りましたが何か?
0137136NGNG
ネタですた。
0138デフォルトの名無しさんNGNG
>>135
ネタ??だよね。
0139デフォルトの名無しさんNGNG
マ板に単発スレを立てたので無視。
0140デフォルトの名無しさんNGNG
>>139
ほんとだ。了解です。
0141デフォルトの名無しさんNGNG
>>132
scanfを使おうとする根性が間違っています。
0142141NGNG
>>132
ところで、scanfの引数にはポインタを使わないといけませんがそれが何か。
0143デフォルトの名無しさんNGNG
int func(void)
{
int i;
printf("整数を入力: ");
scanf("%d",&i);
return 0;
}
0144 NGNG
ありがとうごぜますーーーーーーーーーー
0145142NGNG
不覚にも141を書いた時は引数の間違いに気づかず、
慌てて142で書き直しましたがそれが何か。
0146デフォルトの名無しさんNGNG
>>143 ,144
ネタ??だよね?
0147デフォルトの名無しさんNGNG
どいつもこいつもアヒル本から出直してこい。
0148デフォルトの名無しさんNGNG
単発スレを反省もしない>>132にいちいち付き合うお前ら人が良すぎだ。
甘やかすな。つけあがるだけだ。
0149デフォルトの名無しさんNGNG
ム板もすてたもんじゃねぇなぁ

いい奴が多いってことは幸せなことだ
0150デフォルトの名無しさんNGNG
アヒル本とかいう言い方やめてほしいよね。
通ぶってるだけで通じゃない人に通じない用語ってわからんのかね。
0151デフォルトの名無しさんNGNG
>>150
実は通にも通じていないという罠。
0152デフォルトの名無しさんNGNG
今、エディタを勉強のつもりで作ってるのですが・・・
ファイルを読み込んで表示する部分で、
最初の一行目は問題ないのですが、
二行目以降、最初一文字目が削られて表示されてしまいます・・・。
もう、どこが悪いのか分らない状態です・・・(涙

http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/370.zip

ここに、ソースを上げさせてもらいました。
コンパイルは、BCC5.5でないと通らないかも・・・
GCC、VCでのコンパイルは試してないです。

どうか、お願いします。
0153デフォルトの名無しさんNGNG
>>152
読んでないけど、改行の処理、\r\n(DOS)と\n(UNIX)で
バグっているヨカン
0154152NGNG
>>153
あれ?
改行の処理って、テキストモードでファイルオープンすれば、
適切な処理を自動でしてくれるんじゃないんですか?
0155デフォルトの名無しさんNGNG
かなり混乱気味です。
VC++を使っているのですが,プログラムを,コンパイル→実行するとdebugライブラリというダイアログが開いて,
BLOCK_TYPE_IS_VALIDという文字が出ています。
なんなんでしょうか?
0156デフォルトの名無しさんNGNG
>>154
for (i=0; i<=y; i++)
txt[i][YOKO] = '\0';

バグはこれだよ。安全のためにNULLをいれたんだろうが
配列の最後に入れるなら[YOKO-1]だ。

まじめに読んじまったい。
0157152NGNG
>>156
あ、ありがとうございます!!
このバグを見つけるために、2時間泣きながらモニター眺めてました!
本当に嬉しいッス!

ここから、編集ができるよう改造していきます。
ありがとうございました!
0158デフォルトの名無しさんNGNG
>>155
Assertion failure
0159デフォルトの名無しさんNGNG
>152
しっかし、読みやすいプログラムだな。
俺にはこうは書けない。 いつもグチャグチャだーよ。
0160デフォルトの名無しさんNGNG
>>159
はぁ?
0161デフォルトの名無しさんNGNG
>>159は神

>>160はアルカイダ兵
0162デフォルトの名無しさんNGNG
>>161
はぁ?
0163デフォルトの名無しさんNGNG
>>162
おまえ、しぶといな・・・。
おまえのようなのが居るからすぐ次スレ立てなくっちゃならねーようになるんだYO!
0164デフォルトの名無しさんNGNG
>>163
?
016574NGNG
(;´ρ`)イマオキタヨ

>>117
訂正さんきゅ!
ポインタ変数が他の変数のアドレスを保持して、間接的に他の変数を参照するためにあるんだったら、
ポインタ変数で行う処理って全てそれを使わなくてもできるんじゃないか?って思ったんです。
何のためにあるんだ?って。
ポインタ使った方が高速なのでしたら、納得です。

>>118
memcpy…調べました。
http://www.bohyoh.com/CandCPP/C/Library/memcpy.html
>void *memcpy(void *s1, const void *s2, size_t n);
s1とs2は、文字列の変数が直接入るのではなくて、それらを指すポインタ関数が入るんですよね?
それと、voidってことは、何も返さないんじゃないんですか?
s1の値を返すって書いてあるんですが…。^^;;;
0166デフォルトの名無しさんNGNG
ファイルの追加モードで
対象ファイルの先頭に挿入ってできるでしょうか?

こんな感じで
[BOF]12345[EOF] → [BOF]6789012345[EOF]
0167デフォルトの名無しさんNGNG
>>166
できないと思っておいたほうがいいかと。
0168デフォルトの名無しさんNGNG
>>165
voidと void*は異なる。
後者は差し先がどんな型か不明な(=どんな型を差しててもいい)ポインタ。
0169デフォルトの名無しさんNGNG
>>165
> s1とs2は、文字列の変数が直接入るのではなくて、それらを指すポインタ関数が入るんですよね?
ポインタ「関数」は入らない

> それと、voidってことは、何も返さないんじゃないんですか?
「void」と「void *」は意味が違う。「void *」は汎用ポインタ

> s1の値を返すって書いてあるんですが…。^^;;;
その方が都合がいい場合があるから。普通は無視して構わない。
char *p;
printf("%4.4s\n", memcpy(p, "hoge");
こんな変なコードを書きたいのならば別だが...
0170118NGNG
>>165
意味わかってると思うけど、一応、俺が言いたかったのは

最初の質問がstrcpy相当の文字列終端までのコピーなのに
113 のコードではmemcpy相当の処理に仕様が変わってるよ。
ってこと。単にそれだけ。

> ポインタ変数で行う処理って全てそれを使わなくてもできるんじゃないか?
> って思ったんです。
とんでもない。できないことだらけです。
0171166NGNG
>167

やっぱダメですか。

んじゃ、一回ワークファイルで編集して移し代えですかねぇ・・・
メンドクチィ
0172デフォルトの名無しさんNGNG
>>170
> とんでもない。できないことだらけです。
少なくとも出力引数はグローバル変数を使えば可能
ループをgotoで代用するぐらい邪道な方法だけど
017374NGNG
>>169
>その方が都合がいい場合があるから。普通は無視して構わない。
なーる。
値を返して使うこともできるんですね。

>>170
意味わかってなかったです。w
確かに仕様が変わってますね、すいません。
でも、char配列の\0以降は何も入ってないわけだから、結果としては変わらないですよね。
strcpyは文字列終端(=\0)までのコピーでmemcpyはパラメータでサイズの指定ですか…覚えておこう。
017474NGNG
これで良いかと思いきや、エラーが出るんですが…。^^;;;
使い方、間違えてます?
#include <stdio.h>

int main(){
 char s[10] = "Happy!";
 char d[10];
 char *ps, *pd;

 ps = s;
 pd = d;

 memcpy(*pd, *ps, 10);

 printf("%s\n", s);
 printf("%s\n", s);

 return 0;
}

それと、memcpyってプロトタイプ宣言必要なんですか?
警告されるんですが…。
僕の勝手な認識としては、自分で作った関数はプロトタイプ宣言が必要で、
memcpyやprintfなどの関数は#include <stdio.h>で一括で宣言してるという様に解釈してたのですが…。
0175デフォルトの名無しさんNGNG
memcpyやstrcpyはstring.hをインクルードしる。
0176デフォルトの名無しさんNGNG
>>174
memcpyのプロトタイプは多分、string.hにあるのでそれをインクルード。
memcpyに渡すのはポインタ。
*pd とか *psは char型になるので、×。
0177デフォルトの名無しさんNGNG
まだ根本的なところが分かってないようだな。
017874NGNG
>>175-176
memcpyはヘッダがstdio.hじゃないんですね…。
見落としてました。(泣きぃ

>>176
できました。
形式が「void *memcpy(void *s1, const void *s2, size_t n); 」なので、惑わされてました。^^;;;
ありがとうございます。
0179デフォルトの名無しさんNGNG
>>174

>165 でせっかく調べたのに注意不足だね
http://www.bohyoh.com/CandCPP/C/Library/memcpy.html
文字列複写関数
memcpy
ヘッダ #include <string.h>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
他の人もいっているとおりmemcpyはstdio.hには含まれていない。
0180デフォルトの名無しさんNGNG
>>179
strcpyと勘違いしてない?
0181デフォルトの名無しさんNGNG
char *string = "Hello";

この場合の、"Hello"の寿命について教えていただきたいのです。
自分では"Hello"が宣言された関数の中だけだと思うのですが、いかがでしょうか。

あと、"Hello"の内容は自由に変更してもいいのでしょうか?
0182デフォルトの名無しさんNGNG
>>181
俺が思うに宣言されたのはstringだと思われ。
0183デフォルトの名無しさんNGNG
UNIXなら「man 関数名」でリファレンスが出てきて便利だYO。
ちなみに「char *p」と「func(*p)」の「*p」は意味が違う。
前者は「ポインタ宣言」で、後者は「実体参照」を意味する。
0184デフォルトの名無しさんNGNG
>>181
定数だからプログラムが終了するまで生きてる。
>あと、"Hello"の内容は自由に変更してもいいのでしょうか?
これはだめん
0185デフォルトの名無しさんNGNG
>>181
Auto変数はブロック内でのみ有効。
malloc()等で動的に確保した領域はそのままreturnしても生きている。
strdup()(Win32なら_strdup())なんかはそれ。
0186デフォルトの名無しさんNGNG
>>181
処理系によるとは思うが、たいてい
・"Hello"はプログラムが起動して、終了するまで生きている。
・stringの寿命は関数内。
になるはず。

で、"Hello"の内容をプログラムの中から書き換えようとすると、
クラッシュすることもある。

C-FAQの
http://www.catnet.ne.jp/kouno/c_faq/c1.html#32
あたりを参照。
018774NGNG
>>177
ポインタは基礎はわかってきましたよ。
型名 *変数名; //○型を指すポインタ変数の宣言。
ポインタ変数名 = @○○; //○○のアドレスをポインタ変数に入れる。
*ポインタ変数名 = ○○; //ポインタ変数を介してそれが指す変数の値を変える。
*ポインタを参照すれば、ポインタの指したデータを参照。

って所でしょうか?

>>179
注意不足ですな。
小学校の時には通信簿の所見の欄に、いつもそう書かれていました。
もっとじっくり取り組む姿勢が必要です。
018874NGNG
訂正。^^;;;
四行目の右辺、「&○○」ですた。
0189181NGNG
>>182
ずぼらかましました。stringです、許して下さい

>>184
なるほど、、定数だったんですね。よって変更もダメと。

>>185
strdup()は分からないので調べます。

>>186
リンクどもです。逝ってきます。

まとめてレスしてしまい申し訳ないです。済みません。
でも解決しました。本当に有難うございます。
0190179NGNG
>>180
俺はしてない。ここの表現のとおりに書いた
http://www.bohyoh.com/CandCPP/C/Library/memcpy.html

# ちなみに柴田望洋氏講義の補助テキストらしいが...
0191デフォルトの名無しさんNGNG
>>186
処理系によるの?
定数がプログラム終了前に消えたらまずくない?
0192デフォルトの名無しさんNGNG
>>191
使い方に依るだろ。
0193デフォルトの名無しさんNGNG
>>192
????
0194186NGNG
>>191
規格的にどうなってるのか調べるのが面倒だったのでああいう書き方
をしたのだが、まぁ終了前に消えることはないと思う。
0195デフォルトの名無しさんNGNG
定数というより(定数なんだが)文字列リテラルが静的記憶期間を
もつからプログラム終了まで生き続けるということですね。
0196デフォルトの名無しさんNGNG
>>180
mem〜系も インクルードするヘッダは string.h

0197デフォルトの名無しさんNGNG
memcpy()を文字列複写関数と言ってる事に対してのstrcpy()だろ
019874NGNG
char配列の中に全角文字を入れる時は、要素数を2倍にすれば入るっていうことを確認したんですけど、
その中の特定の一文字を他の変数に代入するにはどうすればいいんですか?
僕がやってみたコードを一応載せます。
#include <stdio.h>

int main(){
 char s[11] = "あいうえお";
 char d[3];

 d[1] = s[1];
 d[2] = s[2];
 d[3] = '\0';
 printf("%s", d);

 return 0;
}

要素数を二倍にしなくてはならないということは、s[1]とs[2]に「あ」が、s[3]とs[4]に「い」が…という様に入っているのではないかと推測し、
以上の様に書いてみたのですが、実行すると文字化けしたような物が表示されます。
やり方、教えて下さい!
0199デフォルトの名無しさんNGNG
>>198
wchar_t
0200デフォルトの名無しさんNGNG
>>198
Cの配列は0番から始まります。
VB厨?
0201デフォルトの名無しさんNGNG
添え字は0から
020274NGNG
>>199
???

>>200 >>201
VBもやってましたけどね。^^;;;
またやっちゃった…。
申し訳っ!
0203デフォルトの名無しさんNGNG
>>202
どうしてもcharでやりたかったらchar [2]にコピーしな。
0204デフォルトの名無しさんNGNG
>>200
あの・・・。VBもデフォルトは0から始まるんですけど。
知らないものを叩くのは良くないと思いますよ。
0205デフォルトの名無しさんNGNG
VBも添え字は0からだったような・・・
0206デフォルトの名無しさんNGNG
>>204

Option Base 0
0207205NGNG
>>206
そうなのか。
じゃあデフォルトでそう設定されていただけか。
0208デフォルトの名無しさんNGNG
>>198
全然関係ないけど1つ忠告
配列を初期化する場合、要素数を省略しても
コンパイラが勝手にその大きさ分確保してくれる。

char s[] = "あいうえお"; こうすれば勝手に11個確保し、
int i[] = { 1, 2, 3, 4, 5, }; こうすれば勝手に5個確保する。
0209デフォルトの名無しさんNGNG
>>208
多分それエラー
0210デフォルトの名無しさんNGNG
>209
ならねーって。
0211209NGNG
本当だ・・・
,の後に何もなくてもよいのか。
0212デフォルトの名無しさんNGNG
>>209
enumならば最後のカンマがあるとエラーだけど
配列や構造体メンバの初期化の最後のカンマは合法だよ。

# 夏は終わってないのか?
0213デフォルトの名無しさんNGNG
>>206
うん。省略時はそれ。スレ違いだがVBは添え字をマイナスから始めることもできる。
(-1,-1) (-1.0) (-1,1)
( 0,-1) ( 0.0) ( 0,1)
( 1,-1) ( 1.0) ( 1,1)
こんな感じにね。
0214デフォルトの名無しさんNGNG
でもなんで1, 2, 3, 4, 5,なんて書き方するんだろ。変な人。
0215デフォルトの名無しさんNGNG
>>214
intになってるのは気付いてる?
0216デフォルトの名無しさんNGNG
>>215
ハァ?
それがどうした。見当違いなレスするな。
0217デフォルトの名無しさんNGNG
>>214
変じゃない人ならどう書くと?
0218デフォルトの名無しさんNGNG
>>217
1, 2, 3, 4, 5
0219デフォルトの名無しさんNGNG
>218
int i[] = {
1,
2,
3,
4,
5
};
って書くの?へんなひと。
0220デフォルトの名無しさんNGNG







      バ カ 必 死 で す 。(藁







プライド持つのも良いが間違いは素直に認めるのが大人だぞ。
022174NGNG
>>208
勉強になりました。
>>213
それも初めて知りました。

Option Baseか…。そんなのもあったなぁ。
配列に0が入るのが嫌で、
Dim A(1 To 10) As Integerってやってたなぁ。
今もCでは、要素を一つ多く宣言して、0は使わないでやってます。^^;;;
面倒だから。w
0222デフォルトの名無しさんNGNG
>>218
あの書き方じゃわかりづらいけど、>>219のように
縦に書いたときとかに、最後の要素の次に付け加えるときとか
最後とその他を入れ替えるときとかに簡単なミスを防げるんだよ。
0223デフォルトの名無しさんNGNG
>>212
enumでも問題なく通ったんだけど、これはコンパイラが規格に準拠していないってこと?
0224デフォルトの名無しさんNGNG
>>221
上手くいえないけど配列の位置を計算で出すときとかは
0から始まった方が計算しやすい。
0225デフォルトの名無しさんNGNG
計算しやすいかどうかというよりも、a[i]==*(a+i)だからだと思う。
0226デフォルトの名無しさんNGNG
>>223
厳密に言えばそういうことになるだろうけど、配列や構造体ならOKでenumは
ダメというのも変な仕様だよな。

gccで試してみると、-Wallにしても何の警告も出ない。-pedanticまでやって
ようやくwarningになった。
0227デフォルトの名無しさんNGNG
>>225
いや別にa[i]==*(a+i-1)という仕様でも良かったわけだし。
0228デフォルトの名無しさんNGNG
>>227
そんな仕様で良いのはおまえだけだ
0229デフォルトの名無しさんNGNG







      バ カ 必 死 で す 。(藁







プライド持つのも良いが間違いは素直に認めるのが大人だぞ。
0230デフォルトの名無しさんNGNG
>>229
誰に言っているのか良くわからんのは荒らしと一緒だぞ。
0231デフォルトの名無しさんNGNG
>>230
>>227
0232デフォルトの名無しさんNGNG
>>231
どの時点で何を間違いと認めればよかったのだ?
0233デフォルトの名無しさんNGNG
>>223
Cの言語仕様のバグ、C++では直っている
昔(C89以前)のCでは8進数に8を定義してもよい仕様だった。
0234デフォルトの名無しさんNGNG
a[i]==*(a+i-1) // -1?
0235デフォルトの名無しさんNGNG
>>232
でもなんで1, 2, 3, 4, 5,なんて書き方するんだろ。変な人。
0236デフォルトの名無しさんNGNG
>>233
どう直ったの?
enumでもOKと?
0237デフォルトの名無しさんNGNG
>>234
>>227を書いた後>>229で言われてるのに>>227の内容を
いつ間違いだと言えばいいんだよ。無茶言うな。
0238デフォルトの名無しさんNGNG
(´-`).。oO(粘着が複数名いる模様・・・)
0239デフォルトの名無しさんNGNG
>>237
焦るな。
添え字が1からなら、a[i]==*(a+i-1)でOKだろ。
0240232NGNG
>>235
>>222で説明してある。ちなみにそのレスは見当違い。>>208は俺じゃない。
024174NGNG
void disp(){
 int i, j;
 char s = "123456789";
 char ss[3];

 printf(" ABCDEFGHI\n");
 for (i = 1; i <= 9; i++){
  for (j = 1; j <= 9; j++){
   if (j == 1){

    printf("%s", ss); //a
   }
   switch (masu[i][j]){
    case NULL:
     printf("□");
     break;
    case BLACK:
     printf("●");
     break;
    case WHITE:
     printf("○");
     break;
   }
  }
  printf("\n");
 }
}

この関数のaの部分で、sのi文字目を表示させたいのですが、その前の行ではどんなことを書けばいいですか?
0242デフォルトの名無しさんNGNG
>>241
まずはchar sをchar s[]に。
024374NGNG
あ、すいません。
3行目、char c[] … でした。
024474NGNG
char s[]でした、鬱打氏脳
0245デフォルトの名無しさんNGNG
>>243
c??

ss[0]=s[0],ss[1]=s[1],ss[2]=0;
0246デフォルトの名無しさんNGNG
>>241
> その前の行ではどんなことを書けばいいですか?
> printf("%s", ss); //a
別に前に書く必要はないよ
printf("%2.2s", ss[2 * (i - 1)]);
0247245NGNG
1文字目じゃなくてi文字目か。じゃあmemcpyで。
0248デフォルトの名無しさんNGNG
マルチバイトかよ。めんどくせえな。
0249デフォルトの名無しさんNGNG
>>246
ssって初期化されていないでしょ・・・
0250デフォルトの名無しさんNGNG
マルチバイト使いにくいんだからCなんかやめろ。
0251247NGNG
普通はstrncpyだよな・・
0252デフォルトの名無しさんNGNG
wchar_tの出番だな
0253デフォルトの名無しさんNGNG
>>252
それわからんらしい>>202
0254246NGNG
上は間違い
printf("%2.2s", s[2 * (i - 1)]);
ssという変数は必要ない
0255デフォルトの名無しさんNGNG
次に宣言する変数名はsssですか?
025674NGNG
>>246
エラーが出るYO!・゜・(ノД`)・゜・
ssにsのi文字目を入れて、表示しようかなぁと思ってたんです。
0257デフォルトの名無しさんNGNG
>>249
ss[]じゃなくてs[]にしたかったんだと思われ。
それでも>>246は
printf("%2.2s", &s[2 * (i - 1)]);
にしないと動かないと思うが。
0258デフォルトの名無しさんNGNG
if (j == 1){
...
}
ループの中にこういう判定をいれるのをやめろ。
一番気になる
025974NGNG
>>254
それでもエラーに…
俺の打ち間違いかな?
0260246NGNG
>>257
指摘サンクス
やはりコンパイルもせずに適当に答えては駄目だと痛感した
0261デフォルトの名無しさんNGNG
次は「1バイト文字が混ざっている場合はうまくゆきませーん。」かな。
026274NGNG
>>258
ご忠告どうも。
厨丸出しですた。w

void disp(){
 int i, j;
 char s[] = "123456789";

 printf(" ABCDEFGHI\n");
 for (i = 1; i <= 9; i++){

  printf("%2.2s", s[2 * (i - 1)]); //a
  for (j = 1; j <= 9; j++){
   switch (masu[i][j]){
    case NULL:
     printf("□");
     break;
    case BLACK:
     printf("●");
     break;
    case WHITE:
     printf("○");
     break;
   }
  }
  printf("\n");
 }
}
026374NGNG
>>257さんのでデキタ━━━━━━(゚∀゚)━━━━━━!!
ありがとうございます♪♪♪
>>246さんも♪
026474NGNG
CPad落とした!(・∀・)イイ!!
0265デフォルトの名無しさんNGNG
質問です。
ポインタのポインタって、何か(・∀・)イイ!ことあるの?
ただ読み難くなっているだけだろ…。
どうせコソパイラが最適化してくれるんだから、ポインタなんて
使ったって無駄だぜ。配列で十分!
arrayマンセー!
0266デフォルトの名無しさんNGNG
>>265
配列でメモリの0x886番につながっているLEDを消灯させて下さい。なお、プルアップタイプです。
0267デフォルトの名無しさんNGNG
>>266
だだのポインタでいいんじゃないの?
0268デフォルトの名無しさんNGNG
>>265はネタですよね・・・。
0269デフォルトの名無しさんNGNG
>>265
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtol.3.html
こういう関数が必要とする。
0270デフォルトの名無しさんNGNG
ネタはネタとして配列でできることをポインタでやる必要はないだろうね。
0271デフォルトの名無しさんNGNG
>>265
> 配列で十分!
配列で間に合う程度のプログラムしか作ったことが無いんですね;)
0272デフォルトの名無しさんNGNG
>>270
配列さわる時に嫌でもポインタいじってるわけですが?
0273デフォルトの名無しさんNGNG
>>272
配列使ってればポインタ使ってるって言っていいんですか?
0274デフォルトの名無しさんNGNG
おまえらカスか
0275デフォルトの名無しさんNGNG
>>274
お前よりましだ。
0276272NGNG
>>273
str[i]は*(str + i)と解釈される
0277デフォルトの名無しさんNGNG
>>276
解釈されるだけでポインタ使ってるといわねーだろ。
0278デフォルトの名無しさんNGNG
>>276
i[str]でも、正しかったりするよな〜。
こんな使い方するヤツいないけど。
0279デフォルトの名無しさんNGNG
>>278嘘つくな、ゲイツ
0280デフォルトの名無しさんNGNG
>>279
・・・お前、ちゃんと入門書読みなおせ。
028174NGNG
変数を宣言した後に、全角の文字を入れるにはどうしたらいいんですか?
とりあえず、僕がやってみた物を…
今、オセロ作ってるんですよ。

void haichi(){
 char t[];

 if (turn == TBLACK){
  t[] = "黒";
 }
 if (turn == TWHITE){
  t[] = "白";
 }
 printf("%sの番です。\n", t);
 printf("置く場所を指定してください。\n");
}
0282デフォルトの名無しさんNGNG
>>277
はげどう

>>281
strcpy
0283282NGNG
>>281
その前にtのサイズをきちんと書けよ。
0284手抜きNGNG
printf("%sの番です。\n", (turn == TBLACK) ? "黒" : "白");
printf("置く場所を指定してください。\n");
028574NGNG
>>282
こういう時にstrcpy使うんすか!
デキター!!!(´∀`)

>>284
おっ!?より前の条件が真だったら前者、偽だったら後者が返されるという構文ですね。
それが(・∀・)イイ!!!
0286デフォルトの名無しさんNGNG
>>281
void haichi(){
 char *t;

 if (turn == TBLACK){
  t = "黒";
 }
 if (turn == TWHITE){
  t = "白";
 }
 printf("%sの番です。\n", t);
 printf("置く場所を指定してください。\n");
}
0287デフォルトの名無しさんNGNG
>74
なんでもすぐに質問すると覚えないよ。
自分で一日くらい悩んでから質問したほうが、いろいろわかると思う。
0288デフォルトの名無しさんNGNG
っていうか一通り本かなんかで勉強してからこいカス。
0289デフォルトの名無しさんNGNG
strにi足す、iにstr足すアドレスを返すことに
変わりは無いという解釈を内部ではしている。
str[i]
 =>
*(str+i)
 =>
*(i+str)
 =>
i[str]

#include <stdio.h>
main(){char str[]="0123456789";
for(int i=0; i<10; i++)
printf("%c",i[str]);
return 0; }
動くんだよ、これが・・・
029074NGNG
>>286
それでもできるんですかぁ。
勉強になりますな。
String型があればラクチンなのになぁ。。。

>>287
そうですか?
基本的な所は定石で固めておけば、あとでその知識の組み合わせればスムーズに行くかな?と思ったんですが。
じゃあ、ちょっぴり自分で試行錯誤して、できるところまでオセロをやってきます!!!

>>288
了解。
0291デフォルトの名無しさんNGNG
>289
あははは、面白い。 動いた。 ネタに使えるね。
0292デフォルトの名無しさんNGNG
>289
>strにi足す、iにstr足すアドレスを返すことに
>変わりは無いという解釈を内部ではしている。
str[i] は自動的にコンパイラが *(str + i) に読み替えてるからじゃないの?
結果的に str[i] も i[str] も指してるアドレスが同じなだけで。
0293デフォルトの名無しさんNGNG
昔7行スレで見たオセロゲームのCソース
関数k()の宣言とかエラーチェックは無いけど
これを書いた奴は神。次元が違う、参考にはするな

#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}
0294デフォルトの名無しさんNGNG
>>293
そのプログラム、入力待ち状態になったら何を入力すればいいの?
とりあえずiってやったら落ちた(ToT)
0295ポインタの配列を勉強しるNGNG
char *colors[] = { "黒", "白", };
printf("%sの番でゲス\n", colors[turn != TBLACK]);
029674NGNG
>>293
僕も前に違うスレで見ました。w
http://game.2ch.net/test/read.cgi/gamedev/1025110939/137
参考にする気にもなりません。・゜・(ノД`)・゜・
0297デフォルトの名無しさんNGNG
>>293
すごいな…COMの思考ルーチン込みとは。ほんとに神レベルだなこりゃ。
>>294
自分は先攻で○ね。左上(1,1)右下(8,8)として、X Yの順で座標を入力。
とりあえず 6 4 とか入れてみれ。
0298デフォルトの名無しさんNGNG
>>297
スペースで区切って入れるのか・・・なるほど。
0299298NGNG
区切るとか区切らないの問題じゃなくて、置けないところの座標を入力していたから進まなかったのか(^_^;)
030074NGNG
>>293を実行してみて勉強になったこと。

オセロのマスは8×8だった!泣
0301デフォルトの名無しさんNGNG
>>300
逝ってよし!
0302デフォルトの名無しさんNGNG
>>293
43対21で俺の勝ち。
0303デフォルトの名無しさんNGNG
どの辺が思考ルーチンのコードなのか見ても分からん(´д`;
0304デフォルトの名無しさんNGNG
定数定義は#defineよりもconstの方がいいんですか?
030510000NGNG
いまC言語やり途中なんですが、すごく悩んでいることになりました!
そこでここに質問させてもらう事にしました・・。
あるDOSアプリでソフトを起動してからその起動したソフトからの
戻り値がほしいのですがCだとどういう関数を使えばいいんどえしょうか?
口下手でもうしわけありません・・ちょこっと
buff=system(age)こんな感じにしたいのです。が
systemの戻り値は起動させたソフトの戻り値は継承してないので・・。
おねがいします!
0306デフォルトの名無しさんNGNG
>>304
うん
0307デフォルトの名無しさんNGNG
>>304
constなんて 猫でも で教えてもらわなかったぞゴルァ(藁

本駆ってこようかなぁ。応用でスキルうpをはかり中...
0308デフォルトの名無しさんNGNG
>>293,297
本気?
コード自体は悪くないし、よくできていると思う。
でも別にごく普通のコード(可読性を犠牲にして短く見せてるだけ)だよ。
これを書ける人間が神ならほとんどが神。

思考ルーチンなんて入ってないよ。
置ける場所を順番に探索するだけ。

あと、よくできているだけに 1ヶ所だけ注文を付けたい。
>int main(){
>for(i=1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;
ループ内で初期化を繰り返している。どうせなら
for(m[40]=m[50]=t=s=i=1,m[41]=m[49]=2;i<10;m[i++*9]=3);
とかにして欲しかった。
0309デフォルトの名無しさんNGNG
>>308
それ、7行で書くという制約がついているからだよ
0310デフォルトの名無しさんNGNG
for(p=9;p<82;++p)k(),〜〜
ここが思考ルーチンじゃないのかな
つまり
k()
の中になるけど
調べられるだけ調べてる
r[]の中は、左上〜右下の位置を表しているのでしょう。
03111NGNG
Cで連珠の作りかたが知りたいです。教えてください。
0312デフォルトの名無しさんNGNG
すみません、かなり初歩的な質問なのですが・・・
文字列配列を、後から初期化するのってどうすればいいのでしょう?

たとえば、buf[1000]の配列を初期化するにはどうすればいいでしょうか?
0313デフォルトの名無しさんNGNG
memsetを使うとか
0314デフォルトの名無しさんNGNG
文字列なら、buf[0] = '\0'でいいんじゃない?
0315デフォルトの名無しさんNGNG
buf[0] = '\0' とか
0316デフォルトの名無しさんNGNG
>>314 >>315
式はいつですか?
0317312NGNG
なるほど!
ありがとうございました。
0318デフォルトの名無しさんNGNG
*(&(*(&(*(&(*(&buf[0]))))))) = '\0';
0319デフォルトの名無しさんNGNG
正直、C極めた
0320デフォルトの名無しさんNGNG
>>319
幻想だ。寝てろ。
0321デフォルトの名無しさんNGNG
var
str1 : String;
begin
str1 = '合計' + IntToStr(goukei);
ShowMessage(str1);
end;

goukeiはきちんと数字が入っています。
コンパイルエラーになるのですがなにが悪いのでしょうか。

0322デフォルトの名無しさんNGNG
↑誤爆?

0323デフォルトの名無しさんNGNG
↓誤爆?
0324デフォルトの名無しさんNGNG
右上の閉じるボタンとか最大化ボタンとかが文字化けしてます。
どうすればいいですか?
0325デフォルトの名無しさんNGNG
夏休み終わったんじゃないのか?
0326あNGNG
>324
俺はその答えを知ってるがあえて教えてやらない。
まずあなたがなぜ
「C言語なら、俺に聞け!」
板にその質問を書いたのか、
ウィンドウの文字化けと、
C言語の関連を説明する必要がある。
それが納得いく答えなら快く教えてあげようじゃないか。
0327デフォルトの名無しさんNGNG


ひきこもりは年中夏休みという罠。

 
0328デフォルトの名無しさんNGNG
>>327
ヽ(`Д´)ノ
0329デフォルトの名無しさんNGNG
>>328
喜びすぎ
0330デフォルトの名無しさんNGNG
322-324は自作自演だろ
0331デフォルトの名無しさんNGNG
>>321
 ' → " ???
:=とか??
java?pascal?
goukeiはInt?
どんなメッセージ?
0332324NGNG
申し訳ない・・・
>>323のネタフリで、ネタを披露してみますた。
まぎらわしくてスマソ

ちなみに、>>323は俺じゃないです。
0333Show-ANGNG

このスレに笑いはいらない。あと、至急仕事をください。
0334デフォルトの名無しさんNGNG
cygwinでgccとかccのコマンド使えないんですが、
なんででしょう?
0335308NGNG
>>309
> それ、7行で書くという制約がついているからだよ
ありがとう。
その制約をわかってて書いたつもりだよ。
仮に制約がなければ「よくできてる」とは書けないし、
糞コードと言われてもおかしくないと思う。

>>310
> for(p=9;p<82;++p)k(),〜〜
> ここが思考ルーチンじゃないのかな

違うよ。
そこは、置けるマスが1ヶ所でも存在するかどうかを
チェックしているだけ。(passまたは終了の判定だけに使われる)
これはCOMの時もPLAYERの時も共通。
そこでまず置けるマスがあることを確認してから、

その次の
> if(a)
> for(d=a=s=p=8;a==8;k()) t-2 ? (scanf("%d %d",&p,&i),p+=i*9) : ++p;
で処理をしている。
(t - 2 != 0) なら つまり現在の順番がPLAYERなら scanfを繰り返し、
COMなら 先頭のマスから1個づつ順に調べていき、
置けるマスが現れた時点で、そこに置いてループを抜ける。
だから、単なる順次探索なのです。
0336デフォルトの名無しさんNGNG
>>335 仮に制約がなければ「よくできてる」とは書けないし

要するに7行としてはよくできてる止まりで、凄いわけじゃない、と。
だったらおまえが書いてみろ。
0337335NGNG
>>336
> だったらおまえが書いてみろ。
いっぱしの口をきいたりプログラミングの話をする前に
まず、人様にものを頼む態度から勉強して出直してこい。
お前、中学生のうちはいいが、将来社会に出てから困るぞ。

お前から見ればよっぽど凄いコードなんだろうよ。
それだけの話。大人になればいずれわかる日が来るから
前向きに頑張れ。
0338デフォルトの名無しさんNGNG
こんな質問スレでえらぶってどうすんのよ。
0339デフォルトの名無しさんNGNG
7行スレでも出たよな、こんなの簡単だって口だけの奴。
0340デフォルトの名無しさんNGNG
すみません・・・質問いいでしょうか?
いつぞやの、エディタ作ってるC言語初心者です。

今、文字入力処理の部分を作ってるのですが・・・
1バイト文字は、どうやら問題なく入力されるのですが、
どうしても、2バイト文字が化けてしまいます・・・。
もうこれも、どこが悪いのかさっぱりで・・・(涙

http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/372.zip

ここに、ソースを上げさせてもらいました。
かなり不器用な処理してて、読みにくいかも・・・(汗
bcc32以外でのコンパイルは試してません。

どうか、よろしくお願いします。
0341デフォルトの名無しさんNGNG
>>325
なんでも夏休みのせいにするお前が厨房という罠
0342デフォルトの名無しさんNGNG
>>340
また君か。
生活時間が似ているな(w
文字入力にgetch()を使っているがこいつは1文字入力用なので
FEPで書かれる2バイト文字系ではまともに動かん気がする。

じゃぁどうしろ、と言われると困るのだが・・・。
0343340NGNG
また来ました(w
その節は、お世話になりました。

えっと、getch()関数は、1バイトだけを受け取る関数ですが、
2バイト文字の時、getch()関数を2回呼び出せば2バイト目を読めると本に書いてます。
で、自作関数insert()で、最初の1バイト目を見て漢字の1バイト目なら、
2バイト目をinsert()関数で読んでるつもりなのですが・・・
・・・これが、問題なのでしょうか?
0344デフォルトの名無しさんNGNG
>>343
fgetsでいいじゃん。
0345デフォルトの名無しさんNGNG
ところで、getchって少なくともMS-DOSでは単に入力待ちにするだけじゃなかった?
受け取れるのはgetcheだったような・・・
0346340NGNG
>>344
すみません・・・
説明不足でした・・・。

入力処理の部分を作ってると言いましたが、
キーボードからの入力処理の部分を作ってます。
説明不足でした。すみません(汗
0347デフォルトの名無しさんNGNG
getsって言うと叩かれるからfgetsって言っただけ。>>346
0348340NGNG
>>345
レス、ありがとうございます。
えっと、getch()関数は、エコーなしで受け取る関数です。
getche()関数は、エコーありで受け取る関数ですね。
受け取りは、どちらでもいいのですが・・・。
このエディタの画面表示方法は、変更があるたびに、
配列読み出して再描写するようにしてます。

なので、エコーバックがあるのは、ちょっと困るのです・・・(汗
0349デフォルトの名無しさんNGNG
俺、74は嫌いだけど340は好きだ。
定期的に質問するなら、こういう人のほうが教えやすいし、頑張ってるのが伝わってくる。
あとはコテハンつかってくれ。 エディター作ってる人だとわかる名前がいいな。
0350デフォルトの名無しさんNGNG
>>348
エディタってMS-DOSプロンプトで動くようなテキストエディタを作っているの?
0351エディタ製作中@クソ初心者NGNG
>>347
あ、なるほど。(w

>>349
そう言っていただけると嬉しいッス。
いちよう、初心者なりに頑張ってはいるのですが・・・
エディタ作るのって、初心者には厳しいのでしょうか・・・。
なかなか、難しくって・・・(汗
0352デフォルトの名無しさんNGNG
>>348
うーん、キャストの問題もないし、一見問題なさそうに見えるね。
ch=getch()
も2バイト文字が入力されたときは2回連続でOSから呼ばれる
ようだし。

ただ、こちらの環境ではコンパイルできないので良く分からんが
例えば、起動して「あ」を入力すると「3バイト」ずれる。
「あ」の文字コードは0x82,0xa0だが、これが正しくtxtの配列に
読み込まれているか、一度printf()デバッグで確認してみるが吉。
ひょっとしてライブラリとかの違いで3バイト入力されているのかも
しれない。
0353エディタ製作中@クソ初心者NGNG
>>350
はい。DOS上で動くエディタ作ってます。
あまり実用的な物じゃないかもしれませんが・・・
勉強のつもりで、作り始めました。

回復コンソールとかで動かせたら、このエディタが活躍できるかも・・・。
9x系の、起動ディスクとかのDOS上では動かないと思いますけど・・・。
0354デフォルトの名無しさんNGNG
>>353
多分editってコマンドが入っていると思うけど、あんな感じに?


Alt+漢字で入力モードを切り替えるだけでgetchが反応しちゃうんだよな。
0355エディタ製作中@クソ初心者NGNG
>>352
アドバイスありがとうございます!
3バイトずれてる・・・
なぜだろ・・・・???

う〜ん、ちょっとその辺を探ってみます。
ありがとうございます。
0356エディタ製作中@クソ初心者NGNG
>>354
そうですね。 標準であるeditのようなのを作りたいと思ってます。
標準のeditは、結構高機能ですね〜。
「置き換え」とかもありますし・・・。
標準editを超えたいのですが、かなり無理っぽいです(苦笑

Alt+漢字でgetchが反応!?
・・・それが、3バイトずれる原因なのかな・・・?
う〜ん、調べてみます。
ありがとうございます。
0357デフォルトの名無しさんNGNG
エディター君のソース見て
_gotoxy _clrscr について調べてる人、絶対いるだろ。
俺みたいに・・・・・
0358デフォルトの名無しさんNGNG
理由はわからんが2バイト文字列が逆に放り込まれているね。
chとch2を入れ替えて配列に入れればまとも表示されそうな気がする。
0359デフォルトの名無しさんNGNG
お!?
main関数が一番上に書かれているね。俺もそうなんだけどそうしている人は少ないらしい。
0360357NGNG
と思ったら一番下のほうに_gotoxy _clrscr の補足が書いてあったよ。 スマソ。
0361エディタ製作中@クソ初心者NGNG
う〜ん、ちょっと調べてみたのですが・・・
main関数でgetch()で受けたchの値が、1バイト目じゃなく、
2バイト目の値が入ってました・・・
どーいうことでしょう???
main関数でgetch()関数を2回呼ぶと、ちゃんと1回目には1バイト目。
2回目には2バイト目が入ります。
なので、mainで2バイト目を受けて処理してみたのですが・・・
やはり、それでもダメでした・・・(涙

>>358
アドバイス、ありがとうございます。
main関数で2回getch()関数で読む方法と、
main関数で1バイト目だけ読んで1バイト目調べて2回目読む方法と、
二つで試させてもらったのですが、ダメでした・・・(涙

>>359
あれ?そうなんですか?
こういう書き方は、もう癖で・・・
前は、Perlをいじってました(w

>>360
gotoxy関数や、clrscr関数は、たぶんbcc独自の関数だと思います。
VCやGCCは、調べてないのですが・・・。
フリーのコンパイラbcc5.5でもコンパイルできますので、お持ちでしたら試してみてください。
0362デフォルトの名無しさんNGNG
なぜかはしらんが
gotoxy(x, y);
while ( (ch = getch()) != CTRL_Z) {
/*追加*/fprintf(stderr, "%d ", ch );

すると、漢字のときに負の値がでてくるのだが。
0363デフォルトの名無しさんNGNG
getch()の呼び出しを下記のmygetchに変えたら直ったよん。

int mygetch()
{
int val = getch();
if( val == EOF ) return val;
return (unsigned char) val;
}
0364エディタ製作中@クソ初心者NGNG
>>362
はい、この負の値が悪かったようですね・・・
>>363さんが、その辺を修正してくれました。
ありがとうございます!
ちゃんと日本語が入るようになりました!
まだまだ不都合が多いエディタで・・・
また、次のバグが見つかりました・・・。(汗
なんとか、まともにテキストが編集できるよう、がんばって改造して行きます!

みなさん、ありがとうございました。
0365デフォルトの名無しさんNGNG
>>362
んー、bccとvcでは型変換のされ方が違うのか?
VCでは下みたいなソースではマイナスなんざならんのだが。
int ch,ch2, i, j;
unsigned char str[100];

while (1) {
printf("--->\n");
ch = getch();
printf("%02x, ",ch);
printf("%c\n",ch);
ch2 = getch();
printf("%02x, ",ch2);
printf("%c\n",ch2);
str[0] = ch;
str[1] = ch2;
str[2] = 0;
printf("%s\n",str);
}
0366デフォルトの名無しさんNGNG
BCC5.51のお答え。
--->
ffffff8a, ・
ffffffb4, エ
感
0367デフォルトの名無しさんNGNG
思うに、getchの実装の問題かと
0368デフォルトの名無しさんNGNG
VCでのお答え。
--->
8a, ・
b4, エ
感
--->
うーむ・・・環境依存だったわけですな。
0369デフォルトの名無しさんNGNG
VCの実装が正しいんでない?
\xffが入力されたときEOF(-1)と比較したら真になっちゃうよ
0370デフォルトの名無しさんNGNG
getchってEOF返すん?
0371デフォルトの名無しさんNGNG
>>370
nullは返せども・・・。
0372デフォルトの名無しさんNGNG
>>365
> んー、bccとvcでは型変換のされ方が違うのか?
> VCでは下みたいなソースではマイナスなんざならんのだが。
型変換のされ方は両者とも同じ、printf()の出力結果が処理系依存なだけ

また、マルチバイト文字をchar型で扱う場合は注意が必要
Cの型変換規則はint以下の型の場合はintに変換されてしまう為、
#include<stdio.h>
int main(void) {
  char c = 0x90;
  int i = c;
  if(i >= 0x80) printf("if\n");
  else printf("else\n");
  return 0;
}
上記のソースを実行すると「else」が出力される
0373デフォルトの名無しさんNGNG
このプログラムを実行した場合、何を入れればループを抜けれるんでしょうか?

#include<stdio.h>

main()
{
long nc;

nc = 0;
while(getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
0374デフォルトの名無しさんNGNG
>>373
何入れてもダメだと思う。
0375デフォルトの名無しさんNGNG
>>373
とりあえず
Ctrl-Z か Ctrl-D
を試してみては?
0376デフォルトの名無しさんNGNG
>>374-375
ありがとうございます。
一応、文字数を数えるプログラムということで本に載ってたんですが、失敗作ですか?
0377デフォルトの名無しさんNGNG
>>373
> printf("%1d\n", nc);
printf("%ld\n", nc);

# まぁ、コンパイルは通るけどね
0378デフォルトの名無しさんNGNG
>372
printfは別の話だろ。
いまの問題はintを返すはず(なので、漢字の1byte目も
問題ないはず)のgetchが、BCCでは負の値を返すってこと。
0379デフォルトの名無しさんNGNG
>>373
Ctrl押しながらZ
0380デフォルトの名無しさんNGNG
>>377
そうしても無理ですよね。
しょうがないので、これは蟲して先に進みます。
ありがとうございました。
0381デフォルトの名無しさんNGNG
>>380
だから、Ctrl-Zだってばぁ〜〜!
0382デフォルトの名無しさんNGNG
>>378
> getchが、BCCでは負の値を返すってこと。
あっそう
ANSI-Cに定められてもいない、独自拡張の関数が
自分の思ったとおりに動かないのを騒いでるだけか
0383デフォルトの名無しさんNGNG
>>381
日本語読めない白痴はほっとけ
0384デフォルトの名無しさんNGNG
Ctrl-Z
↑これは日本語ではなさそう。どうでもいいけど。
038574NGNG
>>349
厨房でごめんね。
俺もがんがるよ。
0386デフォルトの名無しさんNGNG
思い出せません、教えてください
if(isalnum(c))
を
if(C == (('a'-'z')||('0'-'9')))
こんな感じの記述は出来たでしょうか?
要するにa〜z等の範囲をa-zのような形式で表せたと思ったのですが確信がもてなくて
出先で手元に資料もなく困っています
0387デフォルトの名無しさんNGNG
>>386
文法上は問題ないけど、君の思ったとおりの結果にはならない
if('a' <= c && c <= 'z' || '0' <= c && c <= '9')
# 何故素直にisalnum(c)を使わない?
0388デフォルトの名無しさんNGNG
>>386
できない(拡張仕様は知らないけど)。
てか、コンパイラも無いのか?
0389386NGNG
>>387-388
ありがとう!
ああ、俺は何か他の言語とごちゃ混ぜにしてるかな・・・
いや使う使わないではなくてちょっと友達と「a-z」という記述があるかないかの話になってね
有ると言い張ってしまったわけだが・・・
0390デフォルトの名無しさんNGNG
>>387
isalnum使うと大文字も検査しちゃうでしょ。
isupperと組み合わせて使えばよいだけだけどね。
0391390NGNG
よく見てみたら間違っているのは>>386の方か。
039260cm浮き上がるストレートNGNG
C言語で
dotting(y,x,red,green,blue);
みたいに書いて、簡単に点を打てるプログラム知りませんか?
(C++じゃなく、ウインドウもひとつ、めんどくさい制御文もいらない)
039360cm浮き上がるストレートNGNG
>>392
プログラムではなく関数
0394デフォルトの名無しさんNGNG
int main()
{
putc('.');
return 0;
}
0395デフォルトの名無しさんNGNG
>>392
PC-98x1だったら、C言語による最新・・・プログラム事典かアルゴリズム事典
を見れば、いくつかのグラフィック関連関数(プログラム)がある。
0396デフォルトの名無しさんNGNG
>>392
os書いてないよ
0397デフォルトの名無しさんNGNG
WinならSetPixel()だね。
0398デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
    int a;
    while(1){
        printf("数字を入力してください\nただし100以下以上であること。");
        scanf("%d",&a);
        if(a <= 0 || a >= 100)
            printf("だめぽ");
        else break;
    }   
    return 0;
}

こうすると a とかを入力すると無限ループのため抜けれません。
数字以外を入力したか判別する方法を教えてください。
よければこのソースの問題点を教えてもらえるとうれしいれす。
0399デフォルトの名無しさんNGNG
if( a <= 100 || a >= 0) break;
のほうがいいですか?
0400dNGNG
-------変態・MTTどこでも-------
---●●●変態痴女を紹介致します。●●●---
例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・
フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・
アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・
SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。
●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●
 090-8002-8356番   
-----------------------------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
http://www.mttdocomo.jp/
Iモードはこちら→http://www.mttdocomo.jp/i


0401デフォルトの名無しさんNGNG
誤: ただし100以下以上
正: ただし100以下 0以上
0402デフォルトの名無しさんNGNG
400広告うぜえぇええええ師ね。
0403デフォルトの名無しさんNGNG
よろしくお願いします。
0404デフォルトの名無しさんNGNG
>>399
||じゃなくて&&じゃないの?
あと、0や100が含まれるかどうかによって違う。
0405デフォルトの名無しさんNGNG
>>398
man fflush
もっともscanf使っているのが間違いかもしれぬ。
0406デフォルトの名無しさんNGNG
>>405
fflushを何に使うの・・・?
040760cm浮き上がるストレートNGNG
>>396
WindowsMeです。
0408デフォルトの名無しさんNGNG
>>407
SetPixel()でいいんじゃない?
ウィンドウを出せればの話だけど。

SetPixel
The SetPixel function sets the pixel at the specified coordinates to the specified color.

COLORREF SetPixel( HDC hdc,
// handle of device context
int X,
// x-coordinate of pixel
int Y,
// y-coordinate of pixel
COLORREF crColor
// pixel color
);
0409デフォルトの名無しさんNGNG
scanfでも戻り値を調べれば一応はまともに動くかな
0410デフォルトの名無しさんNGNG
>>409
ただ戻り値を調べただけじゃだめだね。
scanf()はフォーマット文字列に合致しない入力があると、その文字を
読まなかったことにするので、再度scanf()をやってもさっき読まなかった
文字がまた出てくることになる。無限ループになってしまうのはこれが原因。
これを避けるためには、入力フォーマットに合致しない文字を読み飛ばして
やる必要がある。

>>398 は、例えば非常にいい加減だが、
if (scanf("%d", &a) != 1) { getchar(); a = -9999; }
のようにでもしてやれば、一応無限ループは避けられる。

こういう使いづらい所があるから、ほんとは初心者はscanf()なんて
使うべきじゃないんだが。fgets()とsscanf()の組み合わせの方が好ましい。
0411デフォルトの名無しさんNGNG
>>410
ありがとうございました。
「scanfは素人にはお勧めできない」とは、このことだったんですね。
>>404天然ボケですた。
>>405それは何をincludeしたらいいですか?
bccにはリファレンスがついていないので
サンプルきぼんぬ。
0412デフォルトの名無しさんNGNG
>>410
あと、後学にもなるので fgets() と sscanf() のサンプルを
おながいします。

とりあえずgoogle言ってくるけど、
プログラム作る上でお勧めの検索エンジンってありますか?
0413デフォルトの名無しさんNGNG
>>412
char buf[256];
int i;
do{
fgets(buf,sizeof buf,stdin);
}while(sscanf(buf,"%d",&i)!=1);
0414デフォルトの名無しさんNGNG
atoi()というものを使えればそれを使えば良いのでは?
isdigit()と組み合わせて・・・あまり意味無い?
if(0<=a && a<=100)の方が感覚的に「aが0以上100以下」とわかりやすいと思う。
if(a<0 || 100<a)これなら「aが0〜100を含まない」となる。
割りこみ失礼
0415デフォルトの名無しさんNGNG
>>414
if(0<=a && a<=100)の
盲点だったYO!!

猫でもも結構いいけど、なぜか漏れが改造すると bccが
)がありません
)がありません
}がありません
とか連発する罠。

つけてるし、うまくいくはず(脳内コンパイラ)なんだけどなぁ。
0416デフォルトの名無しさんNGNG
突然ですが、
char *p=strchr("abcdefg",'d"');
printf(p);

で画面に
「efg」
と出力させるのは分かるのですが、
逆に
「abcd」
と出力させれる
「strchr」の代わりになるような関数って
ないですか?
0417デフォルトの名無しさんNGNG
>>416
eの地点に\0書きなさいな。
0418デフォルトの名無しさんNGNG
燃料投下
0419デフォルトの名無しさんNGNG
printf("%.*s", ...);
0420410NGNG
>417
なるほど、言われてみれば当たり前ですね。
出直してきます。
0421デフォルトの名無しさんNGNG
>>416
ない。作れ

>>417
文字配列ならともかく、文字列定数の書き換えは未定義
0422410NGNG
>>421
はいはい、クソレスしかしないなら出てくんなよ。
0423デフォルトの名無しさんNGNG
はいはい、真性厨房or騙りのDQNは出てくるな
0424デフォルトの名無しさんNGNG
糞レスか・・・・?
かなり重要な事柄だと思うが。
0425421NGNG
>>422
> printf(p);
糞コードを書いてる奴にはクソレスにしか見えないみたいだね。

君ごときにはこんな糞コードで十分だろう。
ある条件以外の場合はまとも動くぞ
char *p = "abcdefg";
int i = strchr(p, 'd') - p + 1;
printf("%*.*s", i, i, p);
0426デフォルトの名無しさんNGNG
>>421
降参だ。その条件を教えてくれ。
0427デフォルトの名無しさんNGNG
>>426
strchr()で探す文字が見つからなかった場合に、NULLが返ってくるから
マズーってことではないの?
0428デフォルトの名無しさんNGNG
>>427
この場合は絶対に見つかるじゃん。
0429デフォルトの名無しさんNGNG
>>428=>>421
0430デフォルトの名無しさんNGNG
428はその場さえよければいい人間なのね
0431410NGNG
すみません、私の質問の仕方が悪かったのかもしれません。
私の聞きたかった答えは
>417さんので満足です。

>421さんの言われてるのも確かですし、
(実際は文字列定数ではなく、char s[256]みたいに
使ってますので問題なし)

>428さんの言われてるのももっともです。
ちなみに実際はNULLを確認するようにしてます。

みなさん、そんなに深読みしてくれなくて結構ですよ。
私なんぞは\0で十分ですw
ではでは、お世話になりました。
0432デフォルトの名無しさんNGNG
pの内容が可変であるとは一言も書いてないじゃん
0433デフォルトの名無しさんNGNG
>399
それ以前に
  if(a < 0 || a > 100)
だと思われ。
個人的意見を押し付ければ
  if(a >= 1 && a <= 100)
のように判定するほうが好き。

永久ループになるのは、入力された値が%dに適合しないのでscanf()で取得されてないから。
安全に逝くならfgetsで数文字列かどうかを判定してからatoi()などで変換をかける。
scanf()にこだわるなら、戻り値を調べてEOFだったら対処する、などすれば平気かと。
0434デフォルトの名無しさんNGNG
>>431
気にしなくていい。>>421とか単に人を叩いて優越感に浸ってるだけだから。
0435デフォルトの名無しさんNGNG
どこが叩きなんだろうか。
043660cm浮き上がるストレートNGNG
>>397
>>408

今僕がプログラムで絵を書く場合はエスケプの色変えとカーソル移動を
使用して書いています。しかし最小単位が文字単位なので
荒い絵になってしまいます。

または外字エディタを使って行っています。
この方法はは絵を文字のように使用できて楽なのですが
色が1色、パソコンが変わるたびに登録しなおさなければならない
等の制約があります。
043760cm浮き上がるストレートNGNG
>>436の続き

エスケプを使用するやり方はこんな感じでやります。
setpixel()を使用する方法はどのように記述すればよいのでしょう?

void main(void)
{
int y=0,x=0;

char suraimu[9][9]=
{
"000040000",
"000040000",
"000444000",
"004040400",
"044444440",
"441444144",
"444111444",
"444444444",
"044444440",
};

for(y=0,x=0;y<=8;x!=8?x++:(x=0,y++) )
{
printf("\x1b[%d;%dH",y+1,x*2+1);
printf("\x1b[%dm ",suraimu[y][x]-8);
}
printf("\x1b[0m");
}
0438デフォルトの名無しさんNGNG
>>436
それはDOS?Windows?
コンパイラは何使ってるの?
0439デフォルトの名無しさんNGNG
もちろん、Cコンパイラです
0440デフォルトの名無しさんNGNG
>ttp://www.cmagazine.jp/
>[今週のProgramming Q]
>Q. C言語で表示する文字の色や大きさを変える
>「○○ちゃん。今度は文字に色つけて,おっきくして,亀の絵もいれてね。」
>確かC言語にはグラフィックス機能はないのでは……。

↑かなりワラタ。
誰か答えてあげて。
044160cm浮き上がるストレートNGNG
>>438

visual c++6.0を起動してCプログラムを書いてます。

プログラムの技術はそこそこあるとは思うのですが、
(今SRPG、将棋、野球ゲームを作ってます)
ただコンパイラとかOSとか違いとかほとんどわからないので、
コンパイラやOSが違うと使えないとかが全然わかりません。
0442デフォルトの名無しさんNGNG
ネタ…だよな?
0443デフォルトの名無しさんNGNG
>>441
野球ってベストプレープロ野球みたいなシミュレーションだよね?
ソースうpキボンヌ
0444デフォルトの名無しさんNGNG
>>441
将棋って森田将棋みたいなのだよね?
ソースうpキボンヌ
0445デフォルトの名無しさんNGNG
>>441
SRPGってスーパーロボット対戦みたいなのだよね?
ソースうpキボンヌ
0446デフォルトの名無しさんNGNG
>>441
野球ってエポック社の野球盤みたいなシミュレーションだよね?
ソースうpキボンヌ
044760cm浮き上がるストレートNGNG
443>>

ピッチャーのボールの起動のリアルさを追及しています。
リリースポイント、初速、飛び出す角度、回転の角度、回転力を
1/100秒単位で計算して表示しています。
後は風力、気圧、縫い目の角度等を入れるともっとリアルになるのですが、
今の技術では難しいです。
パワプロはここの部分は雑なので
対抗するにはこういうクロート好みの要素も必要かと。
ゲームの分野は含みを持たせているので、まだ決まっていませんが、
スポーツかシミュレーションになると思います。
044860cm浮き上がるストレートNGNG
444>>

駒は外字エディタを使用して表示しています。
コンピューターとの対戦はまだできません。
棋譜の保存はできます。
今は自動詰め将棋生成機能を制作しています。
CONとの本将棋対戦ができるようになるのはいつのことか。
04492cm沈むストレートNGNG
446>>

ピッチャーのボールの転がるリアルさを追及しています。
リリースポイント、初速、飛び出す角度、回転の角度、回転力を
中央のツマミと左のツマミの磁石で調節しています。
後は人型の人形、ホームランの穴、消える魔球の穴を入れるともっとリアルになるのですが、
今の技術では難しいです。
045060cm浮き上がるストレートNGNG
445>>

これも含みを持たせるために、FE系、スパロボ系とかは
まだ決めていません。まずはSRPGツクールみたいなのを作り
どういうタイプにも対応できるようにして
それから決めようと思っています。
ただ一番の候補はFEとシレンを合わせたようなやつです。
FEの戦略性と、シレンのスピード性を併せ持つような感じです。
0451デフォルトの名無しさんNGNG
さらにこれが含意を与えるために、それらはFEシステムおよび
SUPAROBOシステムです。それはまだ決定していません。
それが第一にSRPG TSUKURUみたいであることは作ります。
それは任意のタイプにそれによって対応させることができます。
また、私は、配置の方法を思います。候補、1番は単にFEとSHIRENを
結合した仲間です。FEの戦略性質およびSHIRENの速度性質を
持っているのはタッチです。
0452デフォルトの名無しさんNGNG
>>447-450
ソースは?
アプするところが無いならここに全部貼れ
0453デフォルトの名無しさんNGNG
更に、それらはこれが含意を与えるためにFEシステムおよび
SUPAROBOシステムです。それはまだ決定されません。
それを見るために私が望むSRPG TSUKURU--最初に
(1番目)それは現われることができます、また、あるものは、
合意の中でそれによってそれを更に作る任意のタイプを
作ることができます、私は、配置の方法を考慮に入れます。
候補および1番はFEとSHIRENを単に組み合わせた友達です。
タッチは、FEの戦略特徴およびSHIRENの速度特徴を持っています。
0454デフォルトの名無しさんNGNG
>>440
DOSなら \x1b[〜とかで色をつけられなかった?
それプラス、亀のAAか・・・??(爆
0455エディタ製作中@クソ初心者NGNG
すみません・・・ また、質問いいでしょうか・・・(汗
エディタ作ってるC言語初心者です。

えっと、今回は謎の文字出現&謎の文字化けのバグについて、
アドバイスいただきたくて来ました・・・(汗
だいたいのテキストは正常に読めるのですが、
まれに一部文字化けするテキストがあります。
その文字化けする文字が含まれてる別のテキストだと、
正常に読めたりするので、まったく原因不明です・・・(涙
それと、まれに謎の文字が出現するテキストがあります・・・
たとえば、俺自作エディタでエディタソースを読むと、「る */」という文字が
出現する所があります・・・
これも、さっぱり原因不明です・・・(涙

http://isweb25.infoseek.co.jp/computer/pcqa-2ch/cgi-bin/img/375.zip

ここにソースを上げさせてもらいました。

助けてもらってばかりで申し訳ないですが・・・
どうか、よろしくお願いします。
0456デフォルトの名無しさんNGNG
>455
見てないからなんとも言えないけど、
デバッガで調べてみた?
っていうか、いきなりソース見ろって言われてもめんどくさいよ。
短い文で説明するのも力だと思うし、
それにさ、せめてzipとかじゃなくて、
問題ありそうなところの
.cとかで一枚にまとめるとかしてよー。
いわゆるソースまるなげ君は
うざいよ。
0457エディタ製作中@クソ初心者NGNG
>>456
申し訳ないッス。
えっと、問題ありそうな部分という所すら
検討がつかない状態だったりします(汗
いろいろ自分なりに、見てみたのですがさっぱりで・・・(涙

もうしばらくソース眺めてます。
ありがとうございました。
0458デフォルトの名無しさんNGNG
つかこれ、どうやって正常終了すんの。。と思ったら^Zか
0459エディタ製作中@クソ初心者NGNG
>>458
はい、Ctrl-Zで終了します。
今気づいたら、文字入力にバグがありますね・・・
さっき改造した時に新しいバグができてしまったようです・・・。
これも、修正しなくては・・・。
0460デフォルトの名無しさんNGNG
456みたいなわざわざ文句を言うだけのために2chを
見る変人もいるが余り気にするな 
0461デフォルトの名無しさんNGNG
基本的に、画面更新のバグじゃなさそうだから、
最初のファイル読み込みでコケてるんじゃない?
配列txtの内容をどっかに吐き出してみるとか
0462デフォルトの名無しさんNGNG
いちいち画面を再描画していたら
古いマシンではどんなパフォーマンスになるか分からんから
dellineとかinslineとか利用できるなら利用して
必要部分だけの描画にしたほうが
いいかもしれないようなどうでもいいような
0463デフォルトの名無しさんNGNG
あんま関係ないけど定数YOKOがキモイなあ。
一行の最大文字数と思わせておいて、'\0'を含むサイズだという
0464デフォルトの名無しさんNGNG
個人的にフリーカーソルは好きじゃないなあ
改行文字も明示がいいなあ
0465エディタ製作中@クソ初心者NGNG
>>460
ありがとうございます。
でも、実際にソースまる投げで質問してるので・・・
やっぱり、うざいヤツだと思われても仕方ないです(汗
このスレには、親切な方が多いので、甘えてしまったりしてます(汗

>>461
アドバイスありがとうございます。
わかりました。
まだ、文字化けやらの問題が多いので
ファイル出力機能は実装してなかったのですが・・・
一度、デバッグ用のファイル出力処理を作ってみます。
ありがとうございます。

>>462
アドバイスありがとうございます。
実は、自分でも再描写する時、画面がうるさく感じて、
どうにかしてスムーズに再描写できない物かと考えてました。
delline関数やinsline関数ってのがあるんですね・・・。
どうやら、2つの関数が使える環境のようなので、
組み込んでみます。 ありがとうございます。
0466462NGNG
利用できるならという意味はwin32環境では
conio.hの一部の関数がバグることがあるようだという意味ね
0467エディタ製作中@クソ初心者NGNG
>>463
えっと、この辺の設定は・・・
自分が分れば良いや、的な所があります(w

>>464
カーソルの形状ですか・・・。
う〜ん、この辺は後々ということで・・・(汗
改行の明示は、がんばって組み込んでみます。
0468エディタ製作中@クソ初心者NGNG
>>466
あれ?そうなんですか?
コンパイラは、bcc32です。
コンパイラは、もちろん32ビットコンパイラ。
コンパイルしたファイルも32ビットの実行ファイルですので、
そういう不都合は無いと思ってたのですが・・・(汗
0469デフォルトの名無しさんNGNG
>>464 フリーカーソル=カーソルが行末を越えて動き回れること、と思われ
>>468 WindowsのDOSエミュレーションが不完全かもしれないってことじゃない?
047060cm浮き上がるストレートNGNG
>>408

点はSetPixel()を使えば打てるとのことですが、
SetPixel()を使うためにその前に何を記述しなければならないのでしょう。

持ってる本に「Windowsプログラムを10倍簡単に作る」というのがあって、
そのなかにSetPixel()のことが乗っていたのですが、この本は
ヘッダの呼び出し→そのヘッダがまた呼び出す、がいっぱいあり
どれが必要かわかりません。
もし全部必要なら困ってしまいますが。(点をひとつ打ちたいだけなのに)
点を打つためには画面を初期化しなければいけないみたいなのですが
その初期化さえできれば点を打てるようになるのでしょうか。
0471エディタ製作中@クソ初心者NGNG
>>469
おっと・・・
失礼しました。
改行部分からカーソルが飛び出さないように
ってことだったんですね(汗
わかりました。
組み込んでみます。

DOSのエミュレーションの問題ですか・・・。
その辺の不都合は、どうしようもないですね・・・(涙
わかりました。 不都合が出そうな関数は避けて使っていきます。
今の所、DOSが悪いと思うような不都合はない・・・と思いますが・・・
変な文字が出るのは、DOSの不都合なのでしょうか・・・。
とにかく、配列txtを書き出して見てみます。
ありがとうございます。
0472デフォルトの名無しさんNGNG
>>470
必要なヘッダはwinodws.h
必要なライブラリはgdi32.lib
あんた技術あるんだったらここから先は自分で出来るだろ

ついでに大サービスだ
http://www.microsoft.com/japan/developer/library/jpgdipf/_win32_setpixel.htm
0473エディタ製作中@クソ初心者NGNG
あ、すみません。
ソース内に、カーソル移動をしていると、エディタが落ちる事があると書いてますが、
原因が分りました。
左右のカーソル移動は、2バイト文字に対応して
2バイト文字も一文字として進みますが、
上下のカーソル移動が2バイト文字に対応してないので、
上下にカーソルを移動して左右にカーソル移動させると、
エディタが落ちることがあります。

まったく、うっとうしいエディタで申し訳ないです(汗
0474デフォルトの名無しさんNGNG
なんかわかったような気がする。
strncpyって打ち切りの場合、ヌルターミネータ付けてくれないよね?
buf[80] = '\0';
が要るんじゃないか?

167行目〜
/* 画面にテキストを表示 */
textcolor(LIGHTGREEN);
clrscr();
for (i=0; i<=22; i++) {
 gotoxy(1, (i+1));
 strncpy(buf, txt[i], 80);
 cputs(buf);
}
0475デフォルトの名無しさんNGNG
474が正解だとすると、配列txt[][]の問題ではなさそうだな。スマソ
0476デフォルトの名無しさんNGNG
決定的くさいのでage
0477474NGNG
ちなみに俺もこれでハマった事がある
0478474NGNG
http://www.catnet.ne.jp/kouno/c_faq/c13.html#2
13.2:
なぜstrncpy()はコピー先の文字列に、終端文字の'\0'を付けないことがあるのか。

A:

元々はstrncpy()は、今となっては時代遅れになってしまったデータ 構造、
すなわち固定長で必ずしも\0で終わるとは限らない"文字列"を 扱うために
設計された(strncpy()の関連する奇妙なところは、指定さ れた長さになる
まで\0を埋めることである)。確かにこの"文字列"以 外を扱うときは少し
間抜けである。しばしば目的の文字列に、自分で' \0'を追加しなければな
らない。この問題はstrncpy()のかわりに strncat()を使うことで回避する
ことができる。もしコピー先の文字 列が最初は空なら、strncat()が、
strncpy()がやってくれると思って いたことをやってくれる。他には
sprintf(dest, "%.*s", n, source) が考えられる。

(文字列ではなく)任意のバイトをコピーするときには、普通は memcpy()
のほうがstrncpy()よりも適切なルーチンである。
0479エディタ製作中@クソ初心者NGNG
>>474-478
ありがとうございました!
謎な文字が表示されることなく、
テキストが表示されるようになりました!

ご迷惑おかけしました。
まともにテキストが編集できるよう、がんばって改良を加えていきます。
本当、ありがとうございました。
0480デフォルトの名無しさんNGNG
>>479
それにしても汚ねーソースだなー
もう少し綺麗に書けんのか
0481デフォルトの名無しさんNGNG
> 指定された長さになるまで\0を埋めることである

ここが阿呆らしい。だれだこんな仕様にした奴は。
あとputsは改行するのにfputsは改行しないとか。
048260cm浮き上がるストレートNGNG
>>472

WINGDIAPI COLORREF WINAPI SetPixel
(HDC hdc,int X,int Y,COLORREF crColor);

の所に「構文エラー : ';' が 'type' の前に必要です。」
と出てエラーになるのですがどうすればよいのでしょう。
0483デフォルトの名無しさんNGNG
';' を 'type' の前につければいいんじゃないの?
0484デフォルトの名無しさんNGNG
>>482
MFCを使うなら、
CDC* pDC;
pDC = GetDC();
pDC->SetPixel(x, y, RGB(0, 0, 255));
ReleaseDC(pDC);

C++だけどさー。
048560cm浮き上がるストレートNGNG
SetPixelV
(
HDC hdc,←この行のエラー_)がtypeの前に必要、SetPixelVの実引数が少なすぎる
int x,
int y,
COLORREF crColor
);←この行のエラー:構文エラー_)

これら3つを解決するためにどう書き換えれば良いのでしょう。
0486デフォルトの名無しさんNGNG
>>485
ところで、それどこに書いたの?
048760cm浮き上がるストレートNGNG
>>486

main()の中にです。
SetPixelVの前にウインドウを開き、最後に

void GEnd(void)
{
MSG msg;
EndPaint(SLS_hwnd,&hpaint);
while(GetMessage(&msg,NULL,0,0))
DispatchMessage(&msg);
}

を呼び出して終了します。
0488デフォルトの名無しさんNGNG
どうみても>>485は関数のプロトタイプ宣言なんだが・・・・
0489デフォルトの名無しさんNGNG
実際に SetPixelV を呼出している個所を見せて
0490デフォルトの名無しさんNGNG
>>487
実際のソースをかいてちょ。
0491デフォルトの名無しさんNGNG
リンカーもC処理系に入るんですか?
0492デフォルトの名無しさんNGNG
>>491
どうだろう?C言語を直接処理するものだけかもね。
コンパイラは言語に依らない共通のオブジェクトファイルを生成し、リンカはそれらを実行可能ファイルに仕立てる。
049360cm浮き上がるストレートNGNG
489>>

#include <windows.h>

#include "GInt.h"
#include "GetMaxScreenY.h"
#include "GetMaxScreenX.h"

void main(void)
{
gint(640,400);

SetPixelV
(
HDC hdc,
int x,
int y,
COLORREF crColor
);

gend();
}

呼び出され元は少し長いので省略します。
SetPixelV();を書かないときはエラーにならないので
ここが問題だと思いますが
0494デフォルトの名無しさんNGNG
それは確かに文法上の誤りであるね。
0495デフォルトの名無しさんNGNG
>>493
野球ゲーム作ったんだよな・・・。
ネタであってくれ。
0496デフォルトの名無しさんNGNG
要するに、全然意味判らずに、プロトタイプ宣言をそのまま
コピー&ペーストしたと。API云々以前に、文法を解っていないと。
049760cm浮き上がるストレートNGNG
>>494

どう直せばよいのでしょう。
0498デフォルトの名無しさんNGNG
>>497 勉強し直せばよいのでしょう。
0499デフォルトの名無しさんNGNG
私はパス。残念ながらお手伝いできないと思います。
0500デフォルトの名無しさんNGNG
VBかJavaアプレットをお勧めする。
050160cm浮き上がるストレートNGNG
>>495

野球ゲームはグラフィックを外字エディタなどで作ったので。
こういうドット文法は初めてなのです。
グラフィックにこだわらないなら、
printf()、+-*/%、勝俣、getch()、条件文等を
工夫することによってどんなものでも作れますが、
グラフィックも覚えたいと思い質問しました。
050260cm浮き上がるストレートNGNG
>>496

まさにそのとおりです。

0503デフォルトの名無しさんNGNG
>>501 「ドット文法」がNGワードです。
0504デフォルトの名無しさんNGNG
>>501
まずは C言語を覚えましょう。
0505デフォルトの名無しさんNGNG
>>501
Windowsでプログラミングをするにあたって、ウィンドウを出してグラフィックをするのは
C&Win32APIはかなり難解です。
C++&MFC(=VC++)とかの方が比較的易しいです。
C++&.NETも易しいかも。
0506デフォルトの名無しさんNGNG
>>493に、何処に何をどう描くか、という情報が一切盛られていないことに、
あなたはまるで疑問を持っていない様子ですね。
表現は悪いですが、正直な所、非常に不気味です・・・。
0507デフォルトの名無しさんNGNG
浮き上がりすぎ
050860cm浮き上がるストレートNGNG
>>500

確かにVBはグラフィック楽ですよね。
でも制作スピードは落ちてしまいます。
かなりゲームサイズが大きいので、
スピード、総合力ではCが一番だと思います。
ゲームの三要素である、システム、音楽、グラフィック
前の二つは得意なのですが。
0509デフォルトの名無しさんNGNG
>>508
Cでごにょごにょやるよりはよっぽど生産性はいいと思うが。
0510デフォルトの名無しさんNGNG
>>508
15年くらい前にあったようなテキストのゲームが作れたくらいで
得意とか言わないでくれ。
0511デフォルトの名無しさんNGNG
>>508
ネタにマジレスっぽいが、
C言語の初歩も理解してないのになぜ制作スピードがVBより早いと
言い切れるのか?
0512デフォルトの名無しさんNGNG
とにかく、こんなところでケチしないで何かサンプルの豊富な本でも買えばどう
0513デフォルトの名無しさんNGNG
C言語やってる奴は性格悪いとか言い出しそうなヨカン。
0514デフォルトの名無しさんNGNG
マジレス
Cだけでは無理。
051560cm浮き上がるストレートNGNG
>>506

確かにそうですね。
関数呼び出しの中でデータ型宣言するのはおかしいですし。
こういう特殊な文法なのだと思ってましたが。
SetPixelV(,640,400,色番号);
こういうにして指定の座標に指定の色の点を打つみたいに
使うのでしょうか。
その場合は実引数の一つ目はどういう風に使うのでしょう。
0516デフォルトの名無しさんNGNG
>>515
ウィンドウのハンドルとか取ったりしなきゃだめだよ。

それより、ウィンドウは出てるの?
0517デフォルトの名無しさんNGNG
誰か、いいサイトあったら紹介してあげて
0518デフォルトの名無しさんNGNG
>>515

関数呼び出しというか・・・あれは関数のプロトタイプ宣言だろ・・・
戻り値の型が省略されている上に、関数内に書かれているからコンパイラは関数呼び出しと勘違いするだろうけど。
051960cm浮き上がるストレートNGNG
>>511

将棋をCとVBの両方作りました。
Cは外字エデッタで、VBはCの外字エディタのグラフィックと同じくらい
簡単なのを取り込みました。
将棋というグラフィックの量が少しでいいゲーム、
Cの方が使い慣れてるというのもあると思いますが、
テキスト内だけでほとんど作ってしまえるところが
速いところだと思います。
0520デフォルトの名無しさんNGNG
>>519
そう言う実装依存のところをさっさと抽象化できるかが開発の肝だと思われ。
0521デフォルトの名無しさんNGNG
変に使い慣れてしまったのね。
0522デフォルトの名無しさんNGNG
むしろ、どんなソースなのか見てみたいような、見たくないような・・
052360cm浮き上がるストレートNGNG
516>>

はい、出ています。
0524デフォルトの名無しさんNGNG
まずウィンドウをつくらないと。
この状態からCでつくるとなると溜め息が出るな。
0525デフォルトの名無しさんNGNG
確かにプログラミング言語というものは元来、慣れとカンでどんどん使えてしまう
ものでもあったのだけど、最近のモダンな言語は、それと比べて官僚的な
開発スタイルを要求するのかもしれない。
0526デフォルトの名無しさんNGNG
>>523
そのウィンドウはどうやって出しましたか?
0527デフォルトの名無しさんNGNG
>>524
そう?一回書いたらそれ半永久的に使い回せると思うけど。
0528デフォルトの名無しさんNGNG
マジですか?
0529デフォルトの名無しさんNGNG
ちょっとまって、"Gint.h" って何?何かツールキットを使っているの?
0530デフォルトの名無しさんNGNG
>>529
"〜.h"だから多分自作だと思うけど・・・
0531デフォルトの名無しさんNGNG
>>525
それは C言語というよりAPIやライブラリの問題。
0532デフォルトの名無しさんNGNG
↓なんか、微妙にこれっぽい感じが。。
http://www.vector.jp/soft/win95/prog/se187820.html
http://www.hir-net.com/book/book20/book20_s2.html
053360cm浮き上がるストレートNGNG
>>522

でかいし、ホームページもないので全部は無理ですが、
よく使う作った関数を乗せます。
カーソル移動などに使います。

void ChangeYX(int *y,int *x,int yMin,int xMin,int yMax,int xMax,int loop,int keyEffect)
{
if(keyEffect==2)
if(*y+1<=yMax)*y+=1;
elseif(loop==1) *y=yMin;
if(keyEffect==4)
if(*x-1>=xMin)*x-=1;
elseif(loop==1) *x=xMax;
if(keyEffect==6)
if(*x+1<=xMax)*x+=1;
elseif(loop==1) *x=xMin;
if(keyEffect==8)
if(*y-1>=yMin)*y-=1;
elseif(loop==1) *y=yMax;
}
0534デフォルトの名無しさんNGNG
>>532
intってinitのことかしら?初期化とか言っているし。
0535デフォルトの名無しさんNGNG
Windowsプログラムを10倍簡単に作る
目次


第5章 描 画 …… 166
ウィンドウに点を打つ 点関数 pset
排他的論理和で点を打つ 論理差点関数 psetXOR
論理和で点を打つ 論理和点関数 psetOR


psetを使え(w
0536デフォルトの名無しさんNGNG
elseとifがくっついとる(w
0537デフォルトの名無しさんNGNG
「10倍簡単に」は激しくお薦めできん。いや、漏れも持っているが。(w
0538デフォルトの名無しさんNGNG
猫見てこいよ
0539デフォルトの名無しさんNGNG
>>533
質問。

x = ((x = (x + 1) % xMax) <= xMin)?xMin:x;


とかではダメですか?
054060cm浮き上がるストレートNGNG
>>529-530

Windowsプログラムを10倍簡単に作るプログラムというのに乗っている
やつです。

発行所
http://www.kyoritsu-pub.co.jp/

http://www.hir-net.com/book/book14/
054160cm浮き上がるストレートNGNG
536>>

スペースが消えてしまったので。
0542デフォルトの名無しさんNGNG
>>539
それは没。
素直にif文にしろ。
0543デフォルトの名無しさんNGNG
>>540
リンク先が違うぞ。
http://www.hir-net.com/book/book20/index.html
0544デフォルトの名無しさんNGNG
10倍難しくなってないか?
0545デフォルトの名無しさんNGNG
しかし謎は解けたな
054660cm浮き上がるストレートNGNG
>>539

すぐには解りませんが、3項演算子を使ったやつですね。
MaxとMinをひとつの式に書いているんだとと思いますが。
ここでは使ってませんが、繰り返し分でyとxの2種類のカウンタがあるとき
等によく使います。
一回試してみます。
0547デフォルトの名無しさんNGNG
出血サービス。
SetPixelVでデスクトップに絵を描く例。
でもコンソールに直接描画したいなら使えないよ。

#include <windows.h>

int main(void)
{
  HDC hDC;
  int x, y;

  hDC = GetDC(NULL);
  if(hDC) {
    for(y = 0; y < 256; y++)
      for(x = 0; x < 256; x++)
        SetPixelV(hDC, x, y, RGB(x,y,y));
  }
  ReleaseDC(NULL, hDC);

  return 0;
}
0548デフォルトの名無しさんNGNG
なんか思い出してきた。この「10倍」っての読んだ記憶がある。
これって確か、ライブラリじゃなくて、関数のソースまるごと一本 #include
して使うんだよね?違ったっけ
0549547NGNG
あ、ごめん、間違いがあった。
ReleaseDCの行を1行だけ上に移動してifブロックの中に入れてね。
0550デフォルトの名無しさんNGNG
>>545
謎も何も >>470 に書いてあるし。
0551デフォルトの名無しさんNGNG
>>550
ほんとだ。別の話題で気が付かなかった
055260cm浮き上がるストレートNGNG
>>535

ヘッダがまたヘッダがまたヘッダと呼び出していくのでどれを使えば
良いのか解りません。一応全部のファイルの使われ方を
エクセルにまとめてあるのですが、重複で呼び出されていたり
また、.cのどこの部分を使えばよいのかもわかりませんでした。
0553デフォルトの名無しさんNGNG
>>552
その本を持っていない人に聞いても、わからないね。
0554デフォルトの名無しさんNGNG
>>539
激しく未定義の動作だと思うが。
0555デフォルトの名無しさんNGNG
文書を読まずにソースを読む。これときどき最凶
0556デフォルトの名無しさんNGNG
本を持っていなければ
http://www.vector.jp/soft/win95/prog/se187820.html
をいじってみなきゃワカランということか
0557デフォルトの名無しさんNGNG
>>552
インクルードガードがあるはずだ。呼び出しが重複していても問題ない。
自分が使うものは全部インクルードしる!
0558デフォルトの名無しさんNGNG
>>556はサンプルコード集だった。とりあえずgrep結果:

gint_t2.cpp:8:#include "pset.fx" // 点関数
gint_t2.cpp:27: pset(CX+int(CX*cos(pi2*n1*t)),CY+int(CY*cos(pi2*n2*t)),1);
gwait_t1.cpp:10:#include "pset.fx" // 点関数
gwait_t1.cpp:51: pset(x+1,198,7); // 描画領域際に白い点
gwait_t1.cpp:70: pset(x,198,7); // 描画領域際に白い点
rrectangle_t2.cpp:10:#include "pset_mode_set.fx" // 描画モード設定関数
rrectangle_t2.cpp:81: pset_mode_set(1); // XOR指定

ここまでしかワカランが
0559デフォルトの名無しさんNGNG
いずれにしても、この本を使うと変な癖つきそうなので早めに止めといた
方がいいかと。
056060cm浮き上がるストレートNGNG
>>549

エラー、警告はありませんでしたが、止まってしまいました。
パソコンやOSの違いもあるのかもしれませんが。
でもhDC等の使い方が解りやすかったので、DOS画面に使うときにも
感覚的に応用できそうです。ありがとうございました。
0561デフォルトの名無しさんNGNG
どっ、D・・・
0562デフォルトの名無しさんNGNG
ちょっとしたグラフィックスを描いてみたいというのなら確かに
10倍くらい簡単にできるが、それを発展させようとしたら難しさは∞。
0563デフォルトの名無しさんNGNG
欲深い人は使っちゃ駄目だな、10倍の本は
0564デフォルトの名無しさんNGNG
俺も「Windows95プログラムを10倍強力に作る(C++版)」っていうのを
持ってる。中身も見ずにネット通販で買ったんだが。

#include "get_window_pos_x.fx" // ウィンドウX位置関数
#include "get_window_pos_y.fx" // ウィンドウY位置関数
#include "get_max_screen_x.fx" // 最大画面Xサイズ関数
#include "get_max_screen_y.fx" // 最大画面Yサイズ関数
#include "getwinx.fx" // ウィンドウXサイズ関数
#include "getwiny.fx" // ウィンドウYサイズ関数
       :
0565デフォルトの名無しさんNGNG
>487の
> void GEnd(void)
> {
> MSG msg;
> EndPaint(SLS_hwnd,&hpaint);
> while(GetMessage(&msg,NULL,0,0))
> DispatchMessage(&msg);
> }

これがそのライブラリの中身だとしたら、
EndPaintの使い方が間違ってるよ。
EndPaintはWM_PAINTメッセージに応答する時に使う。
0566デフォルトの名無しさんNGNG
>>560
単に描画してそのまま終了するプログラムで、
止まることは考えにくいと思うよ。
056760cm浮き上がるストレートNGNG
点が打てれば、後は>>437みたいに組んで絵も簡単にかけると思っていたのですが。
昔は簡単だったみたいなのですが。
(友達が持っていたのを見た。行番号ありの黒いテキスト画面)
今はその環境を作ることだけでも大変なんですね。
でもなぜそうなったのでしょう。逆に便利になったこともあるのでしょうか。
0568デフォルトの名無しさんNGNG
>>567
まずイベントドリブンという概念を理解しないといかんな。
10倍の本はその概念を無視しているわけだが。
0569デフォルトの名無しさんNGNG
>行番号ありの黒いテキスト画面

ってBASICのことか?
057060cm浮き上がるストレートNGNG
>>566

止まるというか画面が飛んでしまい、
黒いバックに青いウインドウがでて(VAIO独特?)
エラーが発生しましたとなりキー入力を受けつかなくなったので
強制終了しました。
057160cm浮き上がるストレートNGNG
569>>

多分そうだと思います。友達の友達が作ったらしいのですが、
レースゲーム、2×2の横見バレーボール、FFの格闘ゲーム
等やった覚えがあります。
0572デフォルトの名無しさんNGNG
>>571
10年以上前の話だろ?
057360cm浮き上がるストレートNGNG
>>572

7、8年前です。まだマウスがなく、フロッピードライブも2段ついていたような。
0574デフォルトの名無しさんNGNG
たしかに俺も1995年ごろはPC-386SE使ってた
0575デフォルトの名無しさんNGNG
漏れも大サービスしてやろう。
コンソールに直接描画する方法だ。描画ルーチンは >>547 をそのまま拝借。
イベントドリブン? 何それ(w

#include <windows.h>
BOOL IsWindows9x()
{
    return (GetVersion() >= 0x80000000);
}
int main(int argc, char *argv[])
{
    HWND hWnd;
    HDC hdc;
    char szOldText[80], szId[32], szTemp[32];
    int x, y;

    GetConsoleTitle(szOldText, sizeof(szOldText));
    wsprintf(szId, "grph%08X", GetTickCount());
    SetConsoleTitle(szId);
    do {
        Sleep(100);
        GetConsoleTitle(szTemp, sizeof(szTemp));
    } while (lstrcmp(szId, szTemp));
0576デフォルトの名無しさんNGNG
    if (IsWindows9x()) {
        hWnd = FindWindowEx(NULL, NULL, "tty", szId);
    } else {
        hWnd = FindWindowEx(NULL, NULL, "ConsoleWindowClass", szId);
    }
    SetConsoleTitle(szOldText);
    if (IsWindows9x()) {
        hWnd = FindWindowEx(hWnd, NULL, "ttyGrab", NULL);
    }
    hdc = GetDC(hWnd);
    for(y = 0; y < 256; y++)
        for(x = 0; x < 256; x++)
            SetPixelV(hdc, x, y, RGB(x,y,y));
    ReleaseDC(hWnd, hdc);
    return 0;
}
0577デフォルトの名無しさんNGNG
DOSのTurboCとかなら簡単にグラフィックス使えたけどな。
その点最近はグラフィックスが・・・
Javaですかね?グラフィックスを多用するなら。
「10倍」は、#includeの羅列と、
その関数の行の多さを認識して萎えたね。
0578デフォルトの名無しさんNGNG
>>567 >でもなぜそうなったのでしょう。逆に便利になったこともあるのでしょうか。

グラフィカルユーザーインターフェース(GUI)は
ユーザーに優しくてプログラマに厳しい。
従来のCUIはその逆。
そろばんと同じで慣れれば効率いいんだけどね

UNIX等ではいまだにCUIが幅をきかせてるけど
それはユーザ=プログラマだから。
0579デフォルトの名無しさんNGNG
>>575
> コンソールに直接描画する方法だ。
コンソールに描画したところで、再描画ができないんだから
意味がない。
0580hNGNG
-------変態・MTTどこでも-------
---●●●変態痴女を紹介致します。●●●---
例えば>欲求不満オマ●コヌレヌレ女・露出オナニー痴女・
フェラチオおしゃぶり女・ミニスカ・ノーパン娘・巨乳パイズリ娘・
アナルSEXおねだり娘・オマ〇コ弄られマン汁グチョグチョ女・
SM牝豚・緊縛・浣腸・スカトロ・等・・・刺激を求めています。
●●●学生・OL・主婦・モデル・牝豚・女王様・オカマ等・多数!●●●
 090-8002-8356番   
-----------------------------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
http://www.mttdocomo.jp/
Iモードはこちら→http://www.mttdocomo.jp/i

058160cm浮き上がるストレートNGNG
575>>-576

すごい!!あんだけ短い文章で。きれいな背景が出てきました。
しかも同じウインドウだし。
ぜひ参考にさせていただきます。ありがとうございました。
0582デフォルトの名無しさんNGNG
>>579
細かいことは気にすんな(w
058360cm浮き上がるストレートNGNG
>>577

確かにTURBO_Cは簡単そうですね。
古本屋で、「自習TURBOCゲームで挑戦」という本を見つけ持ってますので、
少し知っています。ただ関数とか制御とか1分今では使われてないとかで
グラフィック使用はできませんでした。
ただゲームの作り方は結構この本で学びました。
0584デフォルトの名無しさんNGNG
>>583
で、何を聞いているんだっけ?
解決した?
0585デフォルトの名無しさんNGNG
>>577
OpenGL+GLUT だと初期化100行くらいでとりあえずグラフィックできる。
058660cm浮き上がるストレートNGNG
>>578

なるほど。誰にでも平均的に使いやすいように
変わってきたのですね。だから早い感覚を必要とする場合
その遠回りなところが逆に使いにくくなってしまうのですね。
058760cm浮き上がるストレートNGNG
>>584

質問内容は簡単に点を打つでした。
>>575-576の方に教えてもらったのでできそうです。
0588デフォルトの名無しさんNGNG
めちゃくちゃパフォーマンスが悪い罠
058960cm浮き上がるストレートNGNG
>>539

ちょっと解りませんでした。3項演算子を使うときはこんな感じで
for(y=-9,x=-9;y<=9;x!=9?x++:(x=-9,y++) )
代入にはあまり使わないので。
僕の場合はカーソル移動に使うボタン分書かなければいけませんが
この場合は見てる感じそれをひとまとめにしてしまうのでしょうか。
もしそうならかなり便利ですね。この感覚を他にも適用できたら、
テキスト量を減らせそうです。
0590デフォルトの名無しさんNGNG
> 3項演算子を使うときはこんな感じで
> for(y=-9,x=-9;y<=9;x!=9?x++:(x=-9,y++) )

はあ?
for(y = -9; y <= 9; y++)
 for(x = -9; x <= 9; x++)
のように素直にネストすればいいじゃん。
そんなことしても効率が悪いだけだよ。
0591デフォルトの名無しさんNGNG
確かに効率が悪いな。
0592デフォルトの名無しさんNGNG
どうせメモリが遅いから大差ない
0593デフォルトの名無しさんNGNG
テキスト量ってソースコードの量か。そんなもん下手に減らしても仕様がないぞ
0594デフォルトの名無しさんNGNG
>>592
はあ?メモリ?
0595デフォルトの名無しさんNGNG
Pro*Cで、varchar使うとき、いちいちlenとか入れるの面倒なんで、
varchar版のstrcpyを作ろうとしてるんですが(゚д゚)ウマーく行きませぬ

な ぜ で せ う?


/*-----------------------------------------------------------*/
#include <stdio.h>

vstrcpy(void *vchar, char str*);

int main(void)
{
struct { unsigned short len; unsigned char arr[40]; } username;
vstrcpy(username, "moe");
printf("str %s\n", username.arr);
printf("len %d\n", username.len);
}

vstrcpy(void *vchar, char str*)
{
strcpy(vchar->arr, str);
vchar->len = strlen(str);
}
/*-----------------------------------------------------------*/

こんな感じなんですが
0596デフォルトの名無しさんNGNG
>>589
トリッキーなコード書いても
自己満足以外にえられる物はないよ。
むしろコンパイラの最適化を妨げになるかも。

それに脳みそ100%フル稼動させないと書けない、追えないようなコードには
バグも沢山いるもんだ。
0597デフォルトの名無しさんNGNG
void *vcharが悪い
0598デフォルトの名無しさんNGNG
3項演算子の入れ子はやめて(;´д`)
0599595NGNG
> 597

えと。。。 void * って使えないんですか?
どっかに、どんな型を指してもよいポインタとかあった記憶があるのですが
0600デフォルトの名無しさんNGNG
600ですが、もっともっと質問カモ〜ン。
0601デフォルトの名無しさんNGNG
>>599
コンパイル通る?
vcharの指すオブジェクトの大きさが不明だと思うんだけど。
0602601NGNG
それだけじゃないね。
不明な構造体を使っているし。
0603デフォルトの名無しさんNGNG
>>599
vstrcpyの中で、vcharがusername構造体であることを明示してやらないと無理。
0604デフォルトの名無しさんNGNG
void* のまま使うのはマズー
0605デフォルトの名無しさんNGNG
void *はなんでも指せる分、実体を参照する時は何を指しているのか明示する必要がある。
0606デフォルトの名無しさんNGNG
>>595
ところで、vstrcpyの呼び出しで第一引数として渡しているものはポインタじゃないよな。
0607595NGNG
>600
>601

まったく通りません


>602
>603

やっぱりそうですか
しかし、プリコンパイラ自動生成の型の為こっちではダメなんですよ

>604
>605

わかりました・・・


【失敗】   λ..........トボトボ
0608デフォルトの名無しさんNGNG
>606
ポインタだろ。
0609デフォルトの名無しさんNGNG
>>608
usernameそのものに見えるけど。
0610デフォルトの名無しさんNGNG
>vstrcpy(username, "moe");
vstrcpy(&username, "moe");
ってことでしょ。それと関数の中で構造体を定義することって
できたっけ規格上。
0611デフォルトの名無しさんNGNG
>>610
できる。もちろんスコープは関数内のみ。
0612デフォルトの名無しさんNGNG
>>607
struct{ unsigned short len; unsigned char arr[1]; } vstr_dummy;
を定義して、vstrcpyの中で vcharを vstr_dummyのポインタにキャスト。

ただし、アライメントを合わせておかないとドツボにはまる可能性あるの
で注意。
0613デフォルトの名無しさんNGNG
>>611 あ、そうなのか。
C++のクラスは駄目なんだろうか。メンバ関数の定義をどこに
書くのかが分からない。
0614デフォルトの名無しさんNGNG
>613
struct vstr{ unsigned short len; unsigned char arr[1]; func(int l ) { len=l} } ;
でいいのでわ?
0615デフォルトの名無しさんNGNG
C言語になるにはどうしたらいいのですか?
0616デフォルトの名無しさんNGNG
>>615
分かりません
0617デフォルトの名無しさんNGNG
ところで、60センチくんの技術力はどのレスで垣間見ることができますか?
0618デフォルトの名無しさんNGNG
C++独自のキーワードとかぶる変数名をつけたら怒られました(;´д`)
Cだからいいじゃんという問題ではないらしい(;´д`)
0619デフォルトの名無しさんNGNG
>>598
愛してる
0620デフォルトの名無しさんNGNG
>>614
ホントですね、ちょいと調べてみました。
>9.8 - Local class declarations [class.local]
>-1- A class can be defined within a function definition; such a class is called
>a local class. The name of a local class is local to its enclosing scope.
 (中略)
>Member functions of a local class shall be defined within their class
>definition, if they are defined at all.
微妙に板違いすまそ
0621名無しさん@カラアゲうまうまNGNG
>>620
微妙にスレ違いかも知れんが、板違いとは思えない罠。
0622デフォルトの名無しさんNGNG
C言語で腹痛は治せますか?
0623デフォルトの名無しさんNGNG
>622
腹痛くらい気合で治しなさい。
0624デフォルトの名無しさんNGNG
下痢で腹が痛いのなら実を出せば治る。
それでも痛かったら食中毒か虫垂炎かもしれん。
0625デフォルトの名無しさんNGNG
漏れの知人は、C言語を始めて3日たったら
不思議なことに腹痛がピタリと治まったそうです。
0626デフォルトの名無しさんNGNG
その代わりに頭痛が
0627デフォルトの名無しさんNGNG
頭が割れるようにかゆい。
腹が頭痛です。
0628デフォルトの名無しさんNGNG
2つの自然数a,bの最大公約数を求めてくれ
0629デフォルトの名無しさんNGNG
>>628
数学板行け
0630デフォルトの名無しさんNGNG
>>628
「ユークリッドの互除法 C言語」でぐぐればすぐ見つかるぞ。
http://www.u-gakugei.ac.jp/~miyadera/LECTURE/ElecBook2/ptech11.htm
0631デフォルトの名無しさんNGNG
>>628
求めてあげるから2つの自然数をだせ
0632デフォルトの名無しさんNGNG
2つの自然数a,bの最大公約数キボンヌ(;´Д`)ハァハァ・・・
063360cm浮き上がるストレートNGNG
>>628

_はスペースです。

unsigned_int_CheckSaidaiKouyakusuu
(unsigned_int_numberA,unsigned_int_numberB)
{
__unsigned_int_a=0,saidai=0;
__for(a=1;a<=65535;a++);
____if(numberA%a==0_&&_numberB%a==0)
______saidai=a;
__return(saidai);
}
0634デフォルトの名無しさんNGNG
>>633は神
0635デフォルトの名無しさんNGNG
・・・誰かツッコんでやれよ・・・
0636デフォルトの名無しさんNGNG
字下げのアンダーバーが「す・て・き♪」
0637デフォルトの名無しさんNGNG
>>633
forの行の最後のセミコロンだけ取れば、いちおう動きそうだがな。
それでもゴミには変わりないが
0638デフォルトの名無しさんNGNG
>>633
じゃあ俺もついでに。
65535って書いてるけど、intが16ビットの処理系ではアウト。
0639デフォルトの名無しさんNGNG
#include@<stdio.h>
#include@<stdlib.h>

int@main(int@argc,@char@*argv[])
{
@@@@int@x,@y;@@@@@@@@@/*@引数を入れる@*/
@@@@int@i,@n;@@@@@@@@@/*@カウンタを回す@*/
@@@@int@answer;@@@@@@@/*@答えを入れる@*/

@@@@x@=@atoi(argv[1]);
@@@@y@=@atoi(argv[2]);

@@@@if(x@<=@y)@{
@@@@@@@@n@=@x;
@@@@}
@@@@else@{
@@@@@@@@n@=@y;
@@@@}

@@@@for(i=1;@i<=n;@i++)@{
@@@@@@@@if@((@x@%@i@==0)@&&@(y@%@i@==0))@{
@@@@@@@@@@@@answer@=@i;
@@@@@@@@}
@@@@}

@@@@printf("%d@と@%d@の最大公約数は@%d@です。\n",@x,@y,@answer);

@@@@return@0;
}
0640639NGNG
>>633
基本は変えずに改良してみたYO!

追加
/*
使い方
<コマンド名>@<最初の数>@<二番目の数>
*/

ちなみに@は半角空欄です。
0641デフォルトの名無しさんNGNG
>>640
下手な文字化け化なんかですか?
0642デフォルトの名無しさんNGNG
Perlでもここまでひどくないyo!
0643デフォルトの名無しさんNGNG
>>639
>ちなみに@は半角空欄です。
Tabキーの一般的な使い方知ってるか?
0644デフォルトの名無しさんNGNG
#include<limits.h>して

for (i=0; i<INT_MAX; ++i)

とするのが良いのではないか?
0645デフォルトの名無しさんNGNG
>>642
Perlで書いてみて。
0646639==640NGNG
>>643
Tabも消えるんじゃなかったっけ?
Tabのテスト
0647639==640NGNG
>>643
やっぱり消えたよ。
どう使えば消えないのか知っていたら教えて欲しい。
0648デフォルトの名無しさんNGNG
つーか、  か、せめて全角スペース使おうよ。
0649648NGNG
訂正
○ &nbsp;
0650デフォルトの名無しさんNGNG
>>638 なんかunsigned intらしいから。。
0651デフォルトの名無しさんNGNG
>>639 申し訳ないが、それでは荒らしと同じではないかと。。
0652デフォルトの名無しさんNGNG
?x09 実体参照なら残るカモ ↵
0653639==640NGNG
#include@<stdio.h>
#include@<stdlib.h>

int@main(int@argc,@char@*argv[])
{
@@@@int@x,@y;
@@@@int@i,@n;
@@@@int@answer;

@@@@x@=@larger(atoi(argv[1]),@atoi(argv[2]));
@@@@y@=@smaller(atoi(argv[1]),@atoi(argv[2]));

@@@@i@=@x@%@y;

@@@@while(i@>@0)@{
@@@@@@@@x@=@y;
@@@@@@@@y@=@i;
@@@@@@@@i@=@x@%@y;
@@@@}

@@@@answer@=@y;

@@@@printf("%s@と@%s@の最大公約数は@%d@です。\n",@argv[1],@argv[2],@answer);


@@@@return@0;
}
0654653NGNG
int@smaller(int@x,@int@y)
{
@@@@if(x@<=@y){
@@@@@@@@return@x;
@@@@}
@@@@else{
@@@@@@@@return@y;
@@@@}
}

int@larger(int@x,@int@y)
{
@@@@if(x@>=@y){
@@@@@@@@return@x;
@@@@}
@@@@else{
@@@@@@@@return@y;
@@@@}
}
0655653NGNG
久しぶりにCを書いてみたら思ったより楽しかったので、
少し真面目に書き直してみました。
これだと先程のソースよりも速いと思います。

>>648
最初はそう思ったのですが、
それだと字下げ部分以外の半角スペースがうまく表現出来ないので。
どうせコピペ&置換するなら回数が少なくて済む方が良いと思い、
Tabも置換して半角スペースにしてしまいました。
0656デフォルトの名無しさんNGNG
int_gcd(int_x,int_y){
__if(y==0)_return_x;
__else_return_gcd(y,x%y);
}
0657デフォルトの名無しさんNGNG
>それだと字下げ部分以外の半角スペースがうまく表現出来ないので。

>int@larger(int@x,@int@y)
こーゆーのは、ちゃんと半角スペースで表現できるだろうが。
int larger(int x, int y)
0658653NGNG
>>657
これは本当に知りませんでした。
スマソ。
0659デフォルトの名無しさんNGNG
マクロでいいやん
#define max(a,b) ((a) < (b) ? (b) : (a))
#define min(a,b) ((a) < (b) ? (a) : (b))
0660デフォルトの名無しさんNGNG
>>657
ネタにマジレス…じゃないの? ただ,こう何回もやられるとウザイね。放置しようや。
0661デフォルトの名無しさんNGNG
>>633の影響力が馬鹿にならなくなってきたな。みんなよんよんやんやんするなよ
0662デフォルトの名無しさんNGNG
>>656追加
#include_<stdio.h>
main(){
__int_i,j;
__scanf("%d%d",&i,&j);
__printf("%d",gcd(i,j));
__return_0;
}

_を半角スペースに置換してから実行。
0663デフォルトの名無しさんNGNG
>>650
unsigned かどうかを問題にしているのではないよ。
intが16ビットの環境では
for(a=1;a<=65535;a++)
このループが永遠に終わらない。
0664デフォルトの名無しさんNGNG
#include <values.h>
for(unsigned int a=1;a<=MAXINT;a++)
0665650NGNG
>>663
ほんとだ。。a != 0 にでもしなきゃ止まんないな
完全にネタ掴まされたよーだ
0666デフォルトの名無しさんNGNG
>>664
なぜlimits.hをインクルードしてINT_MAXを使わない?
0667デフォルトの名無しさんNGNG
<=を<にしてはならないの?
0668デフォルトの名無しさんNGNG
&nbsp; 使え。_ や @ じゃ見にくくて仕方ない。
0669デフォルトの名無しさんNGNG
>667 上限いっぱいまで使いたいってんじゃないの。
このアルゴリズムは無視してくれろ〜〜〜〜
0670デフォルトの名無しさんNGNG
というか,_や@を使うくらいなら.を使った方がマシかと。
0671デフォルトの名無しさんNGNG
@はCの記号として出現しないが、
_や.はCの記号として出てくるので紛らわしい。
だが、半角スペースをわざわざ@と置換する手間があったら
全角スペースか&nbsp;に置換して欲しいと思う。
0672デフォルトの名無しさんNGNG
>>663
for(a=1; a<=65535u; a++) 65535u とすれば、負数が 2 の補数表現で且つ ANSI C 準拠
の処理系なら止まるはずだけど、 定数が int のままだと止まらないよね
0673663NGNG
>>672
マジレス? そろそろ勘弁してよ。
> for(a=1; a<=65535u; a++)
ループの終了条件である、 a > 65535u
が成り立つような aの値を16ビットで表現できるの?
0674デフォルトの名無しさんNGNG
ANSI Cはint型は最低16bit以上かつ、short型以上のサイズを要求している
よってsizeof(short) == sizeof(int)が真になる処理系が存在する

代表的な処理系はLSI-Cだ
0675デフォルトの名無しさんNGNG
カウンタを一つずつ回しながら毎回剰余をチェックするという事を前提に
カウンタの最大値を議論しているようだけど、628に対する解答としては
653, 654に書かれたユークリッドの互除法を利用したものが一番高速だろうね。
コピペ&一括置換しないと読み難いけどね。
0676デフォルトの名無しさんNGNG
larger/smallerの判定はいらなくない?
0677デフォルトの名無しさんNGNG
(=^o^)<age
0678 NGNG
C で正規表現を使いたい場合ってどうしてます?
regex? lex? regcmp?
0679デフォルトの名無しさんNGNG
>>678
system("grep");
0680デフォルトの名無しさんNGNG

------------------------------------------

      ここまで読んでやった。
            俺様用のしおり

------------------------------------------
0681shigeNGNG
>>678
pcre
rx

glibcには<regex.h>ないか?
0682 NGNG
>>679
まじっすか?

>>681
pcre って始めて聞きました。

lex 使っている人いませんかね。
0683デフォルトの名無しさんNGNG
#include@<stdio.h>

int@gcd(int@x,int@y){
@@if(y==0)@return@x;
@@else@return@gcd(y,x%y);
}

main(){
@@int@i,j;
@@scanf("%d%d",&i,&j);
@@printf("%d",gcd(i,j));
@@return@0;
}

これが一番高速、                              入力が。

ハットリ君がいっぱい・・・。
0684デフォルトの名無しさんNGNG
懲りない香具師だな。
0685デフォルトの名無しさんNGNG
よろしくおねがいします

typedef struct{
int a;
} KOUZOU1;

で、関数内で構造体の内容を変更したくなければ以下のようにしますよね

void fun1(const KOUZOU1* k1){
k1->a = 5 // 不可
}

typedef struct{
KOUZOU1* kou1;
} KOUZOU2;

のとき

void fun2(const KOZOU2* k2){
k2->kou1->a = 1; // 可
}

としても、関数内で変更できますよね。
それを変更できないようにconstすることってできますか?
0686デフォルトの名無しさんNGNG
さらに、

KOUZOU2* k2 = new KOUZOU2;
k2->kou1 = new KOUZOU1;

delete k2;

としたとき、k2->kou1のメモリはどうなってるんですか?開放されたのか、
やってしまっているのかどっちでしょう?
0687デフォルトの名無しさんNGNG
>>686
Cにはnewやdelete演算子はないが。
0688デフォルトの名無しさんNGNG
>>686
k2->kou1のメモリはリークしています。
k2->kou1のメモリはリークしています。
k2->kou1のメモリはリークしています。
k2->kou1のメモリはリークしています。
k2->kou1のメモリはリークしています。
k2->kou1のメモリはリークしています。
k2->kou1のメモリはリークしています。
0689デフォルトの名無しさんNGNG
>>686

struct KOUZOU2
{
KOUZOU2() { kou1 = new KOUZOU1; }
~KOUZOU2() { delete kou1; }
KOUZOU1* kou1;
};
0690デフォルトの名無しさんNGNG
Cで多倍長演算はどうやってやるんですか?
0691デフォルトの名無しさんNGNG
>>690
自分で処理を書くしかないよ。
(どっかから拾ってきてもいいけど)
0692デフォルトの名無しさんNGNG
>>690
よく学習用に作るよね。
1万桁の演算とか。
そんなに難しくは無い。
0693デフォルトの名無しさんNGNG
入力金額にカンマをつけたりするにはどうすりゃいい
んですか??
0694デフォルトの名無しさんNGNG
>>693
ん?どういう意味?
もうちょっと詳しく。
0695 NGNG
>>693
3桁ずつカンマ出力していけ。
0696デフォルトの名無しさんNGNG
Cでは何ができるんですか?
圧縮プログラムとかつくれます?
厨房な質問ですいません
0697デフォルトの名無しさんNGNG
>>693
sprintfで数字を文字列に直し、文字列操作で","入れてやるのが一番簡単。
0698デフォルトの名無しさんNGNG
>694
 例えば「1200」って入力します。
んでそれを関数に渡します。
 関数で¥1,200-と変換後main関数
で出力。
 というのを作りたいんですが・・・
0699デフォルトの名無しさんNGNG
>>696
圧縮ってデータ圧縮のこと?アルゴリズムさえわかればほとんど何でも
作れるよ。
0700デフォルトの名無しさんNGNG
>>698
すごく簡単に出来そう。

最初に¥をつける。
桁数 % 3 をスキップ
あとは、終わりまで3桁ずつカンマをつける。
0701デフォルトの名無しさんNGNG
文字列でたとえば、「4X + 5Y = 15 ; 12X + 3Y = 22」と入力すると
XとYの答えを表示するプログラムを作りたいのですがなにから手をつけていいかわかりません。
どなたか作ってください。
対象となる式は二字の二次方程式までです。
よろしくお願いします。
0702デフォルトの名無しさんNGNG
>>701
宿題の丸投げですか?
0703デフォルトの名無しさんNGNG
>>693
環境によっては
locale(の LC_NUMERIC)を "japanese"にして printfで
printf("%'f" 123456);
とかで可能かも(Windowsだと他の方法ありそうだが)。

詳細は
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/sprintf.3.html
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/setlocale.3.html
あたり。
(自分の環境だと LC_MONETARYの設定ではうまくいかなかった)
0704703NGNG
追記:
"japanese"でどの環境でもうまくいくかはわからない。
(locale関連は良く知らないので)
0705デフォルトの名無しさんNGNG
宿題手伝いますYO!!
http://pc3.2ch.net/test/read.cgi/tech/1029422194/l50
0706 NGNG
2次方程式はどう表現するのか書けよ。
0707デフォルトの名無しさんNGNG
>>706
「4X + 5Y = 15 ; 12X + 3Y = 22」
じゃないの?つまり、パースから考えてくれと。
0708デフォルトの名無しさんNGNG
5(x+4y)+2 = 2x
なんてのはあり?
0709デフォルトの名無しさんNGNG
>>707
それは1次のような気が・・・
0710707NGNG
あう、鬱…。
0711デフォルトの名無しさんNGNG
>>708
解けませんが?
0712デフォルトの名無しさんNGNG
>704
 ありがとうございます。がんばってみます。
0713デフォルトの名無しさんNGNG
掃き出し法?
0714デフォルトの名無しさんNGNG
求めるのは吐き出し法だな
ただ、初心者にはparseの方が大変だと思われ
071560cm浮き上がるストレートNGNG
>>701
今から書きます。
スペースは大文字のスペースですので、ビルドする前に書き直してください。
解、係数、右辺の値、全て整数でないとダメです。絶対値が大きすぎてもダメです。
いろんなパターンを試して大丈夫だったのですが、もしダメだったらごめんなさい。
(yの解は同じで、xの解が違うとかあるのかも)
071660cm浮き上がるストレートNGNG
>>715の続き
#include <stdio.h>
#include <stdlib.h>
void MakeInputAtai(int*,int*,int*,int*,int*,int*);
int CheckSaisyouKoubaisuu(int,int);
void ShowError(void);

void main(void)
{
int xKeisuu1=0,yKeisuu1=0,uhenn1=0,up1=0;
int xKeisuu2=0,yKeisuu2=0,uhenn2=0,up2=0;
int saiKou=0;
int chigauFugou=0;
int ySa=0;
int uhennSa=0;
int y=0,x=0;
071760cm浮き上がるストレートNGNG
716>>の続き
MakeInputAtai(&xKeisuu1,&yKeisuu1,&uhenn1,&xKeisuu2,&yKeisuu2,&uhenn2);
saiKou=CheckSaisyouKoubaisuu(xKeisuu1,xKeisuu2);
up1=saiKou/abs(xKeisuu1);
up2=saiKou/abs(xKeisuu2);
if((xKeisuu1>0 && xKeisuu2<0)||(xKeisuu1<0 && xKeisuu2>0))
chigauFugou=1;
if(chigauFugou==0)
{
ySa=yKeisuu1*up1-yKeisuu2*up2;
uhennSa=uhenn1*up1-uhenn2*up2;
}
else
{
ySa=yKeisuu1*up1+yKeisuu2*up2;
uhennSa=uhenn1*up1+uhenn2*up2;
}
071860cm浮き上がるストレートNGNG
717>>の続き
if(ySa==0)y=0;
else y=uhennSa/ySa;
if(uhennSa%ySa!=0)ShowError();
x=(uhenn1-yKeisuu1*y)/xKeisuu1;
printf("\n(x=%d,y=%d)",x,y);
}
071960cm浮き上がるストレートNGNG
718>>の続き
void MakeInputAtai(int *xKeisuu1,int *yKeisuu1,int *uhenn1,int *xKeisuu2,int *yKeisuu2,int *uhenn2)
{
printf("連立方程式の計算をするプログラムです\n");
printf("解が整数でない∨絶対値が大きすぎるとダメです\n\n");
printf("上の式のxの係数を入力してください ");
scanf("%d",*(&xKeisuu1));
printf("上の式のyの係数を入力してください ");
scanf("%d",*(&yKeisuu1));
printf("上の式の右辺の値を入力してください ");
scanf("%d",*(&uhenn1));
printf("下の式のxの係数を入力してください ");
scanf("%d",*(&xKeisuu2));
printf("下の式のyの係数を入力してください ");
scanf("%d",*(&yKeisuu2));
printf("下の式の右辺の値を入力してください ");
scanf("%d",*(&uhenn2));
}
072060cm浮き上がるストレートNGNG
719>>の続き
int CheckSaisyouKoubaisuu(int number1,int number2)
{
int a=0,b=0,c=0;
int absNum1=0,absNum2=0;
int nowNum1=0,nowNum2=0;
absNum1=abs(number1);
absNum2=abs(number2);
for(a=1;;a++)
{
if(absNum1*a>=32768)ShowError();
nowNum1=absNum1*a;
if(nowNum1<nowNum2)continue;
else if(nowNum1==nowNum2)return(nowNum1);
072160cm浮き上がるストレートNGNG
>>720の続き
else
{
for(b=2;;b++)
{
if(absNum2*b>=32768)ShowError();
nowNum2=absNum2*b;
if(nowNum2<nowNum1)continue;
else if(nowNum2==nowNum1)return(nowNum2);
else break;
}
}
}
ShowError();
return(-1);
}
072260cm浮き上がるストレートNGNG
>>721の続き
void ShowError(void)
{
printf("解が整数でないか、値が大きすぎます");
exit(1);
}

以上
0723デフォルトの名無しさんNGNG
実行してないから正常かわからないが、正常に動作したとしても20点だな、これじゃ。
0724デフォルトの名無しさんNGNG
いや、要件を満たしてないから0点だ。
>>701の入力に対応できない。
0725デフォルトの名無しさんNGNG
しかし、>>722ってここ1,2日でよく出ているようだけど、
ズッコケ系コテハンとして居座るつもりなのか?
072660cm浮き上がるストレートNGNG
>>724

確かにそうですね。よく見ていませんでした。
直す所は入力した式を文字列として格納し、
その文字列を数値、x、y、+、-、=に分けて
後は作ったやつみたいにすればいいんでしょうか。
0727デフォルトの名無しさんNGNG
>>726
とりあえずはそれで問題ないと思うよ。
キッチリ数式を解析しろって話も出てきそうだけど、
定型の入力以外は突っぱねればいいと思う。

どうせ宿題だしな。
072860cm浮き上がるストレートNGNG
>>726の続き

文字列の中にxを見つけた場合その前の数字文字(-含む)を数値に変換し
係数としてxKeisuuに格納する。yの場合はyKeisuu。
+,-,=は係数がない右辺の数字文字の区切りとして使用。
文字のない数値はuhenn。
=は左辺と右辺を区切るためにも使用。移項の時符号が変わるので。
0729デフォルトの名無しさんNGNG
いったい何のために半角スペースを全角スペースに変換したんだ?
インデントされてねーぞ、ボケ。
いい加減に &nbsp; の使い方ぐらい覚えろ。
0730デフォルトの名無しさんNGNG
a->bはわかりにくいから(*a).bにしろと先輩に言われました。
そんなもんですか?
0731正直者NGNG
>60cm浮き上がるストレート

君のコードは一貫して正視に堪えない。
頼むからもう少し品質を上げられるようになるまで
でしゃばらないで欲しい。
0732デフォルトの名無しさんNGNG
>>730
(*a).bはわかりにくいからa->bにしましょう。
0733デフォルトの名無しさんNGNG
>>730
[*pp]i はわかりにくいから (*pp)[i] にしろ、
というのなら理解できるが、それは必ずしも。。。
0734デフォルトの名無しさんNGNG
Cは分かりにくいからVBにしろ.
0735デフォルトの名無しさんNGNG
わかりやすさではRubyが一番。
0736デフォルトの名無しさんNGNG
>>728
そんな入門用のプログラムはもういいから
早く野球ゲームを見せてよ。
0737デフォルトの名無しさんNGNG
ほらみろ、60cmがレベル下げるからネタに流れちゃうじゃんか
0738デフォルトの名無しさんNGNG
1個のモジュール内で

extern int a;
int a
int main() { 〜 }

ってOKなんですか?
0739デフォルトの名無しさんNGNG
>>738 やってみれば?意味わかんないけど
0740デフォルトの名無しさんNGNG
>>731 いよっ、正直者ぅ!!!
0741晒しNGNG
ゲ製作技術板より
http://game.2ch.net/test/read.cgi/gamedev/1028625024/l50
プログラムできん奴はゲーム作成なんて語るな
253 :1m80cm落ちるフォーク :02/09/06 05:01 ID:iA1WBcre
>>252の続き

勉強の仕方としては、本を読む、人に聞く、インターネットで検索する等です。
検索する場合は、C言語とprintf()、C言語と変数
等2つ書き込めば見つかると思います。
またわからない用語が出てきたときも使えます。

あとこれはC言語の基本形なので覚えておくといいですよ。
#include <stdio.h>
void main(void)
{

}
スペースはここでは全角ですが、テキストの上では半角にしてください。
{と}の間にprintf()や演算子などを書いていくのです。
0742デフォルトの名無しさんNGNG
741をみて、「60cm浮き上がるストレート」が野球の話だと知った。
ストレートパンチで60cmも浮かすなんてちょっと無理があるとは
思っていたけれど。
0743デフォルトの名無しさんNGNG
どっちかっちゅーとアッパーだしな。
0744デフォルトの名無しさんNGNG
いや野球と断定するのはまだ早い
0745デフォルトの名無しさんNGNG
初心者同士で教えあうのは一見、良さそうに思えるが、実は非常に危険である。
0746デフォルトの名無しさんNGNG
>>742
ワタクシ、髪型だと思ってました、マル
0747デフォルトの名無しさんNGNG
スピリタスのストレートなら
60cmくらい飛び上がるかもね。
0748デフォルトの名無しさんNGNG
>>719
> printf("解が整数でない∨絶対値が大きすぎるとダメです\n\n");

さりげなく選言(or)の論理結合子∨を使っている、インテリな60cm
074960cm浮き上がるストレートNGNG
>>729

&ndspの使い方を教えてください。
書きこするとき、半角スペースの部分に&ndspを書けば
表示されるときに自動的に半角スペースに変換されているとかでしょうか。
0750デフォルトの名無しさんNGNG

要はそれを知っている自分がインテリだと言いたい>>748。
0751エディタ製作中@クソ初心者NGNG
すみません、質問いいでしょうか・・・?
また来ました。 エディタ作ってるC言語初心者です(汗

今、いろいろ仕様を変えてエディタの改造をしていってるのですが・・・
また、表示でつまずいてしまってます・・・(涙
画面スクロール時の問題で、カーソルを一番右まで持っていくと、
左へ1バイト又は2バイトずらしてテキストを表示してるのですが、
2バイト文字は、問題ないのですが、
1バイト文字が、スクロース時に末尾の文字1文字を多く表示するのです・・・(涙

たとえば、「abcde」と文字列があったら、
スクロールするたびに、末尾「e」の字が残って「abcdeeeee」のようになってしまいます・・・。

原因と思われる所は、
右移動処理をする関数又は再描写する関数のどちらかだと思うのですが、
何度見直しても、自分では何処がおかしいのかわかりません・・・。

http://www.geocities.co.jp/SiliconValley-SanJose/9640/

ここにソースを上げました。
右移動処理関数のフローチャートも、いちよう置いてます。
かなり不器用な処理してるので、読みにくいと思います・・・(汗
コンパイルは、bcc32以外では無理だと思います。

本当にたびたびすみません・・・。
どうか、よろしくお願いします。
0752デフォルトの名無しさんNGNG
>>751
>スクロース
糖類
0753エディタ製作中@クソ初心者NGNG
>>752
あ、すみません・・・
スクロールの間違いです(汗

意地になって、徹夜で原因を探ってたので・・・
ちょっと、目がしょぼしょぼします・・・(汗
0754デフォルトの名無しさんNGNG
>>749 ↓そういうのはこういうところで勉強してくれ
http://www.ne.jp/asahi/minazuki/bakera/html/reference/charref
0755748NGNG
>>750
悟られた>>748。
075660cm浮き上がるストレートNGNG
スペースの実験

&ndsp&ndsp1
&ndsp&ndsp 1
&ndsp &ndsp 1
075760cm浮き上がるストレートNGNG
???
? ? ?
075860cm浮き上がるストレートNGNG
??2つ
????4つ
??????6つ
0759デフォルトの名無しさんNGNG
でないか?
- - いっこ
-  - にこ
-   - サンコン
0760デフォルトの名無しさんNGNG
でるじゃん。&nbsp; だよ?間違えてない?
076160cm浮き上がるストレートNGNG
&ndsp;&ndsp;2つ
&ndsp;&ndsp;&ndsp;&ndsp;4つ
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;6つ
0762デフォルトの名無しさんNGNG
つーかここでやんなや!>俺も
0763デフォルトの名無しさんNGNG
&ndsp;&ndsp;2つ
&ndsp;&ndsp;&ndsp;&ndsp;4つ
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;6つ
076460cm浮き上がるストレートNGNG
&ndsp;&ndsp;2つ
&ndsp; &ndsp;&ndsp;&ndsp;4つ
&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;&ndsp;6つ
0765デフォルトの名無しさんNGNG
そりゃ出ん罠。。。d じゃなくて b
0766デフォルトの名無しさんNGNG
マジで荒らしか?
0767デフォルトの名無しさんNGNG
スペースを&nbsp;に変換すると、datサイズが大きくなるからやだなー。
0768デフォルトの名無しさんNGNG
>>766
バカ必死だな。
076960cm浮き上がるストレートNGNG
&ndsp;の使い方は解りませんでしたが、
文字と文字の間の半角スペースはスペースとして表示されるみたいです。
左側半角スペース×5
あ 左側半角スペース×5
a left_space5
0770デフォルトの名無しさんNGNG
>>769 だから &ndsp; じゃなくて &nbsp; だって言ってるだろヴォケ
0771デフォルトの名無しさんNGNG
>>669
HTMLって知ってる?
077260cm浮き上がるストレートNGNG
>>767

あ、ほんとだ。   間違えてしまいました。
&ndsp;×→ ○
077360cm浮き上がるストレート NGNG
>>771
ホームページビルダーの保存形式
0774デフォルトの名無しさんNGNG
>>751
とりあえず、X座標が -1 とかになるのがおかしい。
0775デフォルトの名無しさんNGNG
navi2chでみると、実体参照がそのまま見えてしまう…。これはそういうモノなのだろうか…。
0776エディタ製作中@クソ初心者NGNG
>>774
はい、すみません。
今の所、左スクロール、上下スクロールは、
なんの改造も施してません・・・(汗
古い表示仕様のままなのです。
右スクロールだけが、新しい仕様になってます。
なので、上下スクロール左スクロールは、正確に処理してくれません。
とにかく、右スクロールが正確にできれば、それの応用で他のスクロールができるので、
右スクロールばかりを必死で作ってました・・・(汗
X座標が-1とかになるバグを修正するのは、右スクロールが正確にできてからになると思います(汗
0777デフォルトの名無しさんNGNG
>>751
全体的に無駄な処理が多そうだが、それはさておき、re_depictが怪しい。
行末から画面の隅までを消去する(空白で埋める)ような手続きは、
一切ないように見える。なければ当然、ゴミが残るぞ。
0778エディタ製作中@クソ初心者NGNG
>>777
はい、無駄な処理は、かなり多いと思います(汗
だんだんと、仕様が難しくなってきて、
どうしても頭の中だけでは整理ができず、
フローチャートを作って処理を作ってるのですが・・・
それでも、まだ無駄な処理が多いですよね(汗

えっと、文字列の終わりに\0を入れれば、
\0以降の文字列に、ゴミが残っていても表示されないのでは・・・???
\0は、うまく文字列最後に入ってると思うのですが・・・。
なんらかの理由で\0以降のゴミが表示されてるんでしょうか・・・
0779デフォルトの名無しさんNGNG
>>778
「表示されない」と「消してくれる」は違うぞ。よく考えてみろよ。

もうちょっとよく見てみたら、ほかの関数をみると、
最初に clrscr() で消してるように見えるが、cs_right では
やってないようだ
0780エディタ製作中@クソ初心者NGNG
>>779
ああぁ!! すみません!
clrscr()関数で画面のクリア処理をしてませんでした!(涙
それが原因で、画面に前の画面の文字が残って、
変に表示されてた訳なんですね・・・

すみませんでした・・・
自分の、不注意でした。
アドバイスいただき、ありがとうございました。
0781デフォルトの名無しさんNGNG
clrscr()はre_depictの中で最初に実行したほうがいいと思う。
0782エディタ製作中@クソ初心者NGNG
>>781
はい、アドバイスありがとうございます。
そうですね、画面クリア処理も再描写処理の一つなので、
re_depict関数で処理します。

今後、再描写処理はすべてre_bepict関数で行う予定ですので、
それの方が都合いいですよね。

ここから、上下、左スクロールを作り変えて行きます。
0783デフォルトの名無しさんNGNG
>>775 しらんけど、ここでリクするとかいろいろ
ttp://sourceforge.net/tracker/?atid=435775&group_id=39552&func=browse
0784デフォルトの名無しさんNGNG
ところで >>1 はどこに?
0785デフォルトの名無しさんNGNG
>>782
> ここから、上下、左スクロールを作り変えて行きます。
その前にリファクタリングした方がいいぞ。

・プログラム中のあちこちに散らばっている80とか22とかの
 マジックナンバーを消す。
・2バイト文字を判定する
 if(ch >= 0x81) && (ch <= 0x9f)|| (ch >= 0xe0) && (ch <= 0xfc)
 は関数かマクロにする。
・プロトタイプ宣言はbase.cとedit.cで2重管理行わず、
 ヘッダファイルを作ってincludeする。
・ファイルの内容を読み込んでタブをスペースにしてtxtに書き込む処理は
 別関数にした方がいい(特に引数なしで起動してもうまく動かしたいなら)
0786エディタ製作中@クソ初心者NGNG
>>785
アドバイスありがとうございます!

>その前にリファクタリングした方がいいぞ。
リファクタリング・・・?
一度、ソース内を整理しろって意味でしょうか?

>・プログラム中のあちこちに散らばっている80とか22とかの
>マジックナンバーを消す。
マジックナンバー・・・?
数字だけでは意味が分りにくいからdefineなどで
意味のある文字にしろって意味でしょうか・・・?

>2バイト文字判定を関数にする
そうですね。
あまりに多用してますし、見にくいですしね・・・。
う〜ん、関数にして調べる文字を引数にして呼び出すようにしてみます。

>プロトタイプ宣言をヘッダーファイルにまとめる
はい、わかりました。
関数が増えてきました・・・。
これ以上増えると、ソースの行数もサイズも大きくなってしまいますし・・・
ヘッダファイルで、インクルードするようにします。

>タブをスペースに置き換える処理を関数にする
わかりました。
後々は、ファイルに出力する時に
スペースをタブに戻す処理とかするようにしたいと思ってます。
引数で、タブ→スペース、スペース→タブとか制御できたら便利ですね。
作ってみます。

沢山アドバイス、ありがとうございました。
0787デフォルトの名無しさんNGNG
>>786
> 意味のある文字にしろって意味でしょうか・・・?

そう。
#define使うなconst使えという人がいるけれど無視無視。
0788デフォルトの名無しさんNGNG
>>787
> マジックナンバー・・・?
> 数字だけでは意味が分りにくいからdefineなどで
> 意味のある文字にしろって意味でしょうか・・・?
その通り、ただdefineだとデバッガとかでうまく定数を表示できないことがあるので。無名enumとかを使う方法がお勧め。
enum {
 WINDOW_XSIZE = 80,
 WINDOW_YSIZE = 22
};
0789デフォルトの名無しさんNGNG
>>788
無名enumだと変数がintでもデバッガ側でビンゴな数字をenumとみなして表示してくれるの?
そんなデバッガ見たことない気がするんだけど気のせいかな。
0790デフォルトの名無しさんNGNG
>>788
enumって整数だけだよね?使い勝手が悪くない?
0791デフォルトの名無しさんNGNG
>>788
無名なんて横着なことするな!
0792デフォルトの名無しさんNGNG
>>791 XSIZEやらYSIZEだのを同じ型と見做すのは逆に不自然じゃないのか
0793エディタ製作中@クソ初心者NGNG
う〜ん、なぜdefineよりconstの方が良いんでしょう?
俺的には、defineの方が処理がプリプロセッサだから、
余計な変数がなく、メモリの節約になると思うんですけど・・・
と、言っても、今の時代数百MBもメモリがあるんで、
100バイトや1000バイト、余分にメモリ使っても大丈夫でしょうけど・・・。

ちなみに、デバッガって物は使ったことがないです(汗
かなり便利な物のようですが、使い方がよく分らないんです・・・(涙
今度、デバッガの使い方を勉強しておきます。
0794デフォルトの名無しさんNGNG
>>793
分かっていると思うが定数もその分メモリーを消費するぞ。
0795デフォルトの名無しさんNGNG
>>788
糞なテクニックをひけらかすなよ。
そんな話はネタすれでやってくれ。

堂々define使ってよし。
0796デフォルトの名無しさんNGNG
>>793
暴乱怒(borland)のフリーコンパイラを使っているんだっけ?
それならまずはデバッガを手に入れないと。確かBorlandからフリーで配られていたはず・・・
0797デフォルトの名無しさんNGNG
>>793
Cではそうかわらんと思う。C++ではnamespaceの問題があるから

>>794
即値の間違い?
0798788NGNG
>>789
> 無名enumだと変数がintでもデバッガ側でビンゴな数字をenumとみなして表示してくれるの?
少なくともgdbでは表示してくれない。変なこと言ってすいません。

>>790
一応、役に立たないマメ知識として記憶の隅にとどめといてください。

>>793
> う〜ん、なぜdefineよりconstの方が良いんでしょう?
絶対に変化しない定数であるならば、どっちでもいいでしょう。
しかし、将来カスタマイズしたいとき、例えば
TABを8ではなく4にするのをiniファイルで行いたいとか
DOS窓のサイズの変化に伴いエディタの表示領域も変えたい場合、
defineだと変更しにくいと思いませんか?
0799デフォルトの名無しさんNGNG
constを使ったからって、余計なメモリアクセスは発生しないと思うぞ。最適化で。
保存領域はどうかしらんが
0800デフォルトの名無しさんNGNG
文字列以外の定数のアドレスを得るのは無理ですか?
というかそもそもメモリー上にはない?
0801デフォルトの名無しさんNGNG
え?得られないかな?const修飾つきのアドレスになるだけだと思うが、
違うかも。得てどうするかは知らないが
0802デフォルトの名無しさんNGNG
やってできなければ、できないんだろうけど
const int a = 123;
const int *p = &a;
やってみれば?
0803デフォルトの名無しさんNGNG
>>802
その場合は123の実体(?)はaという場所にあると考えてよいですか?
もしそうならいいんですけど。
0804デフォルトの名無しさんNGNG
aという場所って、、うーん
定数aのアドレスってのが得られるとすれば、&a じゃない?てことなんだが

俺は今たしかめられない環境にいたりする
0805デフォルトの名無しさんNGNG
>>804
変数名=メモリの一区画に付けた名前とした場合ということです。
0806デフォルトの名無しさんNGNG
やっぱり変数が必要か。
文字列定数だったらそのまま評価すればアドレスが得られるんだけど。
0807デフォルトの名無しさんNGNG
スレが見当違いの方向に流れたな。
くだらんレスをするからそうなるんだよ。
0808デフォルトの名無しさんNGNG
>>798
iniファイルでやりたいのならconstつけちゃまずいと思うんだけど。
起動するたびに設定ファイルを読み込んで設定するということでしょ?
0809デフォルトの名無しさんNGNG
>>808
>>798はソースの修正のしやすさの事を言っているように思える。
しかし、#define と比べてどう違うのかはサッパリ
0810デフォルトの名無しさんNGNG
>>806
言ってる意味が。。&123 ができないとか、そういうことか?
0811デフォルトの名無しさんNGNG
>>800
一般的には無理だと思う。
アセンブラ吐かせて確認すればいいと思うが、大抵即値が使われるので。
0812788NGNG
>>808
constだとconstをはずすだけでOKだが
...defineの場合も定数名を変数名に置換するだけか
ふーむ、なんかどっちでもいい気がしてきた。

# 個人の趣味として自分はconstを使うけど
0813デフォルトの名無しさんNGNG
#define だと問答無用で置きかえられる場合がありますな。
Cでは大して問題にならない?
0814デフォルトの名無しさんNGNG
なんのために定数を変数にするんだよ?
そんなのは設計が間違っているだろ。
全部大文字の変数、なんてのを気にしないなら結構だが、
人前には出さないでくれ。
0815デフォルトの名無しさんNGNG
>>798
それは、わざわざ constつけた変数を書き換えるってこと?
そんなことしたらバグの元になりやすいと思うのだが。

ついでに言うと、constつけた変数は書き込み禁止領域に置かれることもある
ので注意(書き換えようとするとプログラムが落ちることも)。
0816デフォルトの名無しさんNGNG
>>814
> 定数を変数に

誰もそんな事逝ってないぞ。ひょっとしてconst定数の事を変数と呼んでいるなら、
改めたほうがいい
0817デフォルトの名無しさんNGNG
#defineとconstはスコープが違う.

スコープは狭いに越したことがない.
0818デフォルトの名無しさんNGNG
>>816
そのconstを外したら便利、と>>788が逝っている。
自分でやる分には構わんが初心者に押し付けるなよ。
0819デフォルトの名無しさんNGNG
>>818
それは、iniの設定を実行時に取得するって話じゃん。
変数以外にどうしろと
0820デフォルトの名無しさんNGNG
iniから読みこむなら最初から変数を使うわな。
当然プログラム中でも変更してiniに保存するわけで
そんなものは定数でも何でもない。
0821デフォルトの名無しさんNGNG
const定数使うのに反対する理由は特に無いと思うぞ。
0822デフォルトの名無しさんNGNG
だから、途中から設計変更して定数をやめる場合の話だと思ってたんだけど
0823デフォルトの名無しさんNGNG
他アプリにマウスの右クリックや左クリックを
押したと思わせるにはどうすればいいのでしょうか?
0824デフォルトの名無しさんNGNG
>>820
開発途中で、定数で持ってたのをプログラムの外部から読み込ませる
ようにしたくなったときに constは(#defineよりも)便利ということらしい。
0825デフォルトの名無しさんNGNG
で、それを全部大文字で定義するわけ?
それとも小文字?

複数ファイルで使う場合、ヘッダファイルに
extern const int
って全部書くのか?

んなのを推奨している本があったら見てみたいね。
0826デフォルトの名無しさんNGNG
>>821 俺もそう思う。10000個定数があれば、そりゃちょっと違ってくるかもだが
0827デフォルトの名無しさんNGNG
>>822
そんなインパクトの大きい設計変更するのなら、どっちでも手間は
変わらないんじゃないか?
0828デフォルトの名無しさんNGNG
>>823
OSは? Winならmouse_eventとかPostMessageとか。
0829デフォルトの名無しさんNGNG
>>825 多いとアレだが、少なければそれでもいけると思うぞ。
まあフツーはもっと関数とかで隠蔽するだろうが
0830デフォルトの名無しさんNGNG
>>828
OSはWindowsです。
PostMessage( hWND, WM_LBUTTONDOWN, MK_LBUTTON, 0 );
とやってみたのですが、全然反応しませんでした、間違ってますか?これ
0831788NGNG
>>825
> 複数ファイルで使う場合、ヘッダファイルに
> extern const int
> って全部書くのか?
複数ファイルでdefineを使いたい場合はどうするのでしょうか?
手間は同じと思いますが
0832デフォルトの名無しさんNGNG
> extern const int
ライブラリに定数を持たせるときは、これを使うしかないな
0833デフォルトの名無しさんNGNG
>>832はバージョンが変わったときの話
0834デフォルトの名無しさんNGNG
>>831
当然#defineを並べるだろ。
誰でもやってることだ。
だが、
> extern const int
こんなものを並べるやつはいない。
いるとしたら
将来、変数にしてしまうかも・・・という設計開始時点での
曖昧さを許しているプログラマだ。

小さなプログラムならそれでも構わんだろうが巨大なシステムでは
そんなのがいくつもあったら破綻する。

大文字定数を変数にしたかったら全部書き換える。
それが正しいし、初心者に対して曖昧な方法を推薦するなよ。
0835デフォルトの名無しさんNGNG
定数を盲目的に全部 #define にしろってのは、逆に糞な方法だと思うが
0836788NGNG
>>834
> 将来、変数にしてしまうかも・・・という設計開始時点での
> 曖昧さを許しているプログラマだ。
そうです、完全な設計は完全な人間ならば作成可能でしょうが、
私は残念ながら完全ではありません、設計を修正する羽目になることが良くあります。
間違えにくく、変更しやすく、デバッグしやすく、
見やすいプログラムを書きたいと願っている不完全なプログラマです。

> 大文字定数を変数にしたかったら全部書き換える。
定数を変数に変更するとき変数名を変えるのは当然です。
>>814で
> defineの場合も定数名を変数名に置換するだけ
といってます。
0837デフォルトの名無しさんNGNG
>>834

ちゃんと統一されてればどうでも良いことでしょ。
別に曖昧でもないし。

#defineが並んでるヘッダに、
const int X=1234;
とかつっこむ奴は屑だけど。

ところで、上の方で勘違いしている人が入るけど、
const な変数は値を参照する分にはリソースを食わないよ。
#defineした場合と同じ。
ただし、アドレス参照した場合だけ、そのためだけにメモリが
確保される。

それからVCのデバッガはenumシンボルを表示する。
かえってうっとうしい事もあるけど。
0838デフォルトの名無しさんNGNG
> > defineの場合も定数名を変数名に置換するだけ
は問題ありだと思う。
0839デフォルトの名無しさんNGNG
>>836
君が理解しているのは分かったから#defineの代わりにconst intを
ここで初心者に薦めるのはやめてくれ。

>>837
おいおい・・・
統一されてればどうでもいい?本気で言っているのか?
お前さん、そんなソースを外に出してるのかい?
0840デフォルトの名無しさんNGNG
なんかだんだん自分がvoidみたいな気がしてきたな・・・。
書きすぎた。ごめん、消えます。
0841788NGNG
>>839
> #defineの代わりにconst intをここで初心者に薦めるのはやめてくれ。
何故?
私はどっちでも良いと思っているけど、何か理由があるのなら聞きたい。
0842デフォルトの名無しさんNGNG
>>839

> 統一されてればどうでもいい?本気で言っているのか?
> お前さん、そんなソースを外に出してるのかい?

本当はどうでもよくなんかないよ。
ちゃんと型付けした方が便利なんだけど、使い方を統一するほうが優先されるっ
てだけ。

840は839?
いなくなる前に、一個で良いから#defineを使うメリットを書いたほうが
かっこいいよ。




0843デフォルトの名無しさんNGNG
>>842
しょうがねぇな・・・。
じゃ逆に聞くが
const int を使うメリットを教えてくれ。
const int X_MAX = 80;
とかするんだろ?
で、X_MAXを変更したくなったらconstを「外すだけ」で
X_MAX=70;
とかプログラム中で書くんだろ?

#defineを使う理由はただ一つ、それが正しい定数の使い方、だからだ。
K&Rでも読み直せ。
0844デフォルトの名無しさんNGNG
まあ、Cはネームスペースが無いから#defineでもconstでもどっちでも構わんのだろうけど、
C++で定数を#defineで定義してる椰子はダメだね。
0845デフォルトの名無しさんNGNG
Cだと
const int bufsize = 100;
void f()
{
int buffer[bufsize];
}
とかできないからな。
0846デフォルトの名無しさんNGNG
>>845
それは大きいな。
0847788NGNG
>>845
なるほど、その場合はdefineでないと駄目だね。
ということで納得したので消えます。
0848デフォルトの名無しさんNGNG
#define FPS 1000/60
だと
if (timeGetTime()-prevTime >= FPS)
てしたときに
if (timeGetTime()-prevTime >= 1000/60)
になっちゃうので
const int FPS = 1000/60;
にしてる漏れは
根本的にわかってませんか?
0849デフォルトの名無しさんNGNG
>845
?フツーにできちゃった
Cygwin+gcc です
0850デフォルトの名無しさんNGNG
>>848
#define FPS (1000/60)

括弧でくくればいいよ。
つか、そういう式を#defineしていて、括弧でくくってなかったら、
へたくそと思われるよ。
0851デフォルトの名無しさんNGNG
>>848
計算式がつく場合は、
#define FPS (1000/60)
0852851NGNG
>>850
ケコーンしよう。
0853デフォルトの名無しさんNGNG
>>849
gccは独自拡張使いまくり
それでなくてもC99ならint a[n];が自動変数でも使えたはず。
0854デフォルトの名無しさんNGNG
>>853
(#`Д´)<マヂデスカッ
int a[n][m];
とかは・・・できるわけないか。
0855デフォルトの名無しさんNGNG
>>854
出来ます。スタック使い尽くして死んでください
0856デフォルトの名無しさんNGNG
>>855
・・・。
int *p = a[5];
とかしたらどうなるのかなーっと。
大きさが分からないぞーっと。
0857デフォルトの名無しさんNGNG
>>856
それは今までのCにも言えること
0858デフォルトの名無しさんNGNG
>>857
配列の大きさは基本的に固定でわ?
配列や構造体の大きさが動的に変わればポインタの計算は
どうするんだろう・・・。
いちいち定義された値で再計算しなおす仕様になっているのかな?
0859デフォルトの名無しさんNGNG
gcc持ってる奴実行してみてくれ、可変配列ってこんなんも可能なの?

static int printArraySize(int n);
int main(void)
{
  printArraySize(100);
  printArraySize(50);
  printArraySize(0);
  printArraySize(-1);
  retrun 0;
}

static void printArraySize(int n)
{
  char a[n];
  print("n = %d, size = %d\n", n, sizeof a);
}
0860デフォルトの名無しさんNGNG
多分こういう事なんじゃないのかな?
const int n = 500;
int nr[n] // OK

int n = i;
int nr[n] // NG
0861デフォルトの名無しさんNGNG
>859
もうちょっとプログラム見なおしてから送信してください......

(コンパイル通るように変更した後)Cygwin+gccでの結果
n = 100, size = 100
n = 50, size = 50
n = 0, size = 0
Segmentation fault (core dumped)
0862デフォルトの名無しさんNGNG
>>861
2次元配列でも通る?
static void printArraySize(int n)
{
  char a[n][n];
  print("n = %d, size = %d,a[]=%d\n", n, sizeof(a),sizeof(a[0]));
}
0863デフォルトの名無しさんNGNG
>>815
そもそもコンパイルできないから大丈夫です。
0864デフォルトの名無しさんNGNG
>>830
その後に
PostMessage(hWND, WM_LBUTTONUP, 0, 0);
も呼んでいるなら、その部分だけ見れば間違いではない。
でも、他の関連メッセージとの兼ね合いもあるので
それ以上は何とも言えない。
0865デフォルトの名無しさんNGNG
>862
print ってやめて......

n = 100, size = 10000,a[]=100
n = 50, size = 2500,a[]=50
n = 0, size = 0,a[]=0
n = -1, size = 1,a[]=536870911

Segmentation fault にならず......なんでだろ?
0866デフォルトの名無しさんNGNG
>>860
少なくともVC++6.0やボーランドのフリーコンパイラじゃ通らないね。
0867デフォルトの名無しさんNGNG
>>830
mouse_event()を使うが吉

SetCursorPos(x,y);
mouse_event( MOUSEEVENTF_LEFTDOWN, 0,0, 0, 0);
Sleep(1000);
mouse_event( MOUSEEVENTF_LEFTUP , 0,0, 0, 0);
0868デフォルトの名無しさんNGNG
もちろんセミコロンの付け忘れのことじゃないよ。
constつけても定数式にしろゴルァ!と言われる。

定数じゃなくて定数式でないといけないってことかしら。
0869868NGNG
868は866です。
0870デフォルトの名無しさんNGNG
>>865
げげげ!
動的な2次元配列なんかが作れるのか・・・。
0871デフォルトの名無しさんNGNG
>>865
そっか、sizeofだけでなくprintfもあったね。スマソ(w
0872デフォルトの名無しさんNGNG
可変長配列ってことはsizeofは使えないのかな。
あれは確かコンパイル時にサイズが決まっていないといけないはずだから。
0873デフォルトの名無しさんNGNG
>>872
>>865の結果からはsizeofも通っているよ。
おそらくポインタの大きさも作成時に作られていると思われ。
これは仕様の改悪のような気がするが・・・。
0874デフォルトの名無しさんNGNG
>872
>861>865
sizeof 使えてるよ?ってか「可変長」ではないよね?
0875デフォルトの名無しさんNGNG
>>873
ポインタの大きさは同じでしょ・・・
まあsizeof(int *)とsizeof(char *)の大きさが違うという珍しい環境もあるらしいけど・・・
0876デフォルトの名無しさんNGNG
>>874
そうだ、、、可変長って自由に長さを変えられるってことだ(汗
動的というべきかな。
0877デフォルトの名無しさんNGNG
>>866
だから、C99っつってんだろゴルァ
0878デフォルトの名無しさんNGNG
>>875
スマソ、
スタックの構造体の中に配列があった場合とかも多分通るんだよね?
その場合に構造体のサイズとかも保持されていて、
p++;
で増加する内部の値も設定されている、てことでふ。
0879デフォルトの名無しさんNGNG
>>877
C99ならconst付けようが付けまいが通ると思うが・・・
0880879NGNG
ん?よくみたら下の方は変数が初期化されていない・・・
紛らわしい書き方するなよ。
0881デフォルトの名無しさんNGNG
そもそも下はconst付いてない
0882デフォルトの名無しさんNGNG
>>881
だから紛らわしいって言っているんだよ。

ところで、gccで↓通る?

#include <stdio.h>
void a(int);
int main()
{
int i;
scanf("%d",&i);
a(i);
return 0;
}
void a(int n)
{
int c[n];
}
0883デフォルトの名無しさんNGNG
>882
同じこと考えてましたね
↓こんなの作ってました

#include <stdio.h>
int main( void ) {
  char buf[500];
  while ( fgets(buf, 500, stdin) ) {
    int i = atoi( buf );
    char s[i][i];
    printf( "i = %d, s = %d, s[] = %d\n", i, sizeof s, sizeof s[0] );
  }
  return 0;
}

結果(1、3、5行目は入力)
8
i = 8, s = 64, s[] = 8
0
i = 0, s = 0, s[] = 0
-4
i = -4, s = 16, s[] = 536870908

何でもアリってかんじですね......今まで1度も使ったことなかったけど......
0884デフォルトの名無しさんNGNG
>>882 変数が初期化されていない・・・
0885デフォルトの名無しさんNGNG
>>883
おおすげー(ワラ
0886デフォルトの名無しさんNGNG
>>884
ハァ?
0887デフォルトの名無しさんNGNG
>>878
ポインタの大きさじゃなくてポインタが指すオブジェクト(?)の大きさってこと?
変わるんだろうね。
0888デフォルトの名無しさんNGNG
いろいろ機能を追加してくれちゃってよー、
今更時代遅れなCの新しい仕様なんて策定するんじゃねーよ!
0889デフォルトの名無しさんNGNG
じゃぁどの言語がいいんだ?
JavaもC#も用途が違うしな。

まさか、パスカルとかいうんじゃねーだろうな
0890デフォルトの名無しさんNGNG
>>889
Cがいい♪
今更仕様を変えないでってこと。
0891デフォルトの名無しさんNGNG
そういえばC99に対応したK&Rの第三版って出そうもないですね。
本人達も今更って思っているのかしら。
0892デフォルトの名無しさんNGNG
#include <stdio.h>
void main(void)
{
printf("(^-^)\n");
}

動きません。なんでですか?
0893デフォルトの名無しさんNGNG
>>892
エラーメッセージ見せやがれぼけ。
0894デフォルトの名無しさんNGNG
>>892
コンパイラによるが、
void main(void)
↓
int main()

としてみろ。
0895デフォルトの名無しさんNGNG
>>893
有効なWin32アプリケーションではないとか言われます。

>>894
コンパイラ?なんですかそれは(^_^;)
0896デフォルトの名無しさんNGNG
>>895
あのさぁ、初心者板でよく言ってるんだけどさ。
拡張子変えるだけではファイル形式は変わらない。
0897デフォルトの名無しさんNGNG
>>896
ごめんなさい。
今からコンパイラというものを調べてみます。
0898デフォルトの名無しさんNGNG
>>894
return 0;
0899デフォルトの名無しさんNGNG
>>894
return '\0';
0900デフォルトの名無しさんNGNG
質問だけど、

int hoge(void)のvoidって絶対つけないといけませんか?
int main(void)のvoidは同ですか?

このvoidっていうのは、ひきすうが何もいらないっていうことですよね?
0901デフォルトの名無しさんNGNG
>>900getのついでにage.
厨な質問だけど、まじめです。
0902デフォルトの名無しさんNGNG
>>900
プロトタイプ宣言では必要(でないと呼び出し時にどんな引数リストにしてもOKということになる)。
関数の実体を書くときは不要。
0903デフォルトの名無しさんNGNG
>>900
省いてみ。
0904デフォルトの名無しさんNGNG
voidをつけたらbccが起こらなくなったので、
なにかあるのかな、と。

Thx.
0905デフォルトの名無しさんNGNG
>>902
mainを最初に書く派なら
int hoge(void);
〜〜〜
int hoge()
{ 〜 〜 〜 }
と書いておくと。

mainを最後に書く派なら
int hoge(void)
{
〜 〜 〜
}
ですよね。
0906デフォルトの名無しさんNGNG
特別に課題丸投げを許可してくれませんか?だめですか?
0907デフォルトの名無しさんNGNG
>>906
「宿題手伝いますよ¥^^¥」スレ
http://pc3.2ch.net/test/read.cgi/tech/1029422194/l50
0908デフォルトの名無しさんNGNG
■自主製作ゲーム:開発状況報告スレVer0.2■
http://game.2ch.net/test/read.cgi/gamedev/1028161173/86
キターーーーーーーーーー

なんか、本気で作ってるようです。
0909デフォルトの名無しさんNGNG
>>908=60cmくん
0910 NGNG
質問です
すべてのswitch文はif文で書き換え可能ですか?
すべてのfor文とwhile文は互いに書き換え可能ですか?
0911デフォルトの名無しさんNGNG
>>908
本気で DOS 窓にグラフィックを描く気なんだろうか?
0912デフォルトの名無しさんNGNG
正規表現ってC言語で使いますか?
0913デフォルトの名無しさんNGNG
switchは ifで書き換え可能だと思うけど、breakせずに下に落ちて
行くの書くのは大変そうだ。
0914デフォルトの名無しさんNGNG
>>910
出来ないんじゃない?

swirch(i)
{
case 1:
〜
i = 3;
case 2:
〜
break;
}


if(i == 1)
{
〜
i = 3;

if(i ==1 || i == 2)
〜
0915デフォルトの名無しさんNGNG
>>914
goto汁
0916デフォルトの名無しさんNGNG
>>911
まぁ、DOS窓でもかなりいろいろできると思うけど。技術があれば。
0917デフォルトの名無しさんNGNG
正規表現ってC言語で使いますか?
0918デフォルトの名無しさんNGNG
>>917
探せばライブラリあるんじゃない?
0919917NGNG
>>918
使えるかどうか聞いているんじゃねーよ。
使うかどうか聞いているんだボケ!
0920デフォルトの名無しさんNGNG
>>919
んなもん、作るアプリによるだろ。
0921デフォルトの名無しさんNGNG
>>919
再インストールもしました。
なんかおかしいというのはブラウザを開いてもせつぞくできないんです。
ルーターで接続しているのですが。(ルーターの設定がおかしいわけではないです

ローカルエリア接続と言うアイコンもないし・・・
0922デフォルトの名無しさんNGNG
C言語じゃつかわねーよ
C言語で作ったソフトで使うかも知れないがな
0923デフォルトの名無しさんNGNG
テンプレートってC言語で使いますか?
0924917NGNG
前スレと同様,また偽者が出てきた・・・
鬱だ
TV見よう
0925デフォルトの名無しさんNGNG
>>923
使いたかったらC++使えばいいと思います。
0926919NGNG
>>924
下らないネタ質問しておいて騙りが出たくらいで鬱になるな。
0927デフォルトの名無しさんNGNG
なんで小数と言わないで実数と言うんですか?
092860cm浮き上がるストレートNGNG
>>911
さっそく、オーバースローのピッチャーのアニメーションを書きました。
前に配列組んでおいたものの使い回しで、影絵ですが。
char[16][64][64]サイズ。1つで2×2ピクセル。
文字との連携(重ねる)と消えたり消えなかったりしてしまいますが、
念願のグラフィックを堪能しています。
0929デフォルトの名無しさんNGNG
ボクセルですか?!
0930デフォルトの名無しさんNGNG
>>926
ネタのつもりはなかったんだが。
勉強する必要があるか判断したかったのだが。
0931デフォルトの名無しさんNGNG
正規表現の勉強ならCでやらなくてもよいと思うが。
0932デフォルトの名無しさんNGNG
>>927
意味が違うからです
0933デフォルトの名無しさんNGNG
>>932
違うの!?
0934デフォルトの名無しさんNGNG
C言語をやっていく上で,正規表現は覚えなくてもイイですか?
0935デフォルトの名無しさんNGNG
>>934
覚えてて損することはない。覚えとけ。

って言うかさっさと入門書買ってこいボケ。
0936デフォルトの名無しさんNGNG
本を買うほどのものかい。
よく正規表現ひとつで厚い本を作れるものだ。
0937934NGNG
ttp://www.kohgakusha.co.jp/books/detail/4-87593-253-7
注文しました
0938デフォルトの名無しさんNGNG
http://www.kohgakusha.co.jp/books/detail/4-87593-253-7
0939デフォルトの名無しさんNGNG
こりゃまさに「買うほどのものかい」!!!
0940デフォルトの名無しさんNGNG
returnって
return a;
return (a);
どっちにします?
0941デフォルトの名無しさんNGNG
>>940
return (a);は逝ってよし。
0942デフォルトの名無しさんNGNG
>>941
(・ε・)え〜?なんで〜
0943デフォルトの名無しさんNGNG
>>942
カコワルイ
主観だよ。あー主観だよ。主観で何が悪い。
0944デフォルトの名無しさんNGNG
return a;
0945デフォルトの名無しさんNGNG
>>943
ただのバカか。
0946デフォルトの名無しさんNGNG
えーとヒープ領域ってなに?
mallocってメモリに確保されるんじゃあないの?
0947デフォルトの名無しさんNGNG
>>946
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=utf8&oe=utf8&q=%E3%83%92%E3%83%BC%E3%83%97%E3%83%A1%E3%83%A2%E3%83%AA
0948デフォルトの名無しさんNGNG
>>945
おまえがな
0949デフォルトの名無しさんNGNG
>>947
必要に応じて自由に使うことのできる大量のメモリが与えられる

検索キーワードが違ったか

ありがとん
0950デフォルトの名無しさんNGNG
今日はすごい勢いで進行してるな(w
0951デフォルトの名無しさんNGNG
#define STRICT ?
0952デフォルトの名無しさんNGNG
この勢いならワンスレッド5日持たない・・・(汗。
0953デフォルトの名無しさんNGNG
1000!
0954デフォルトの名無しさんNGNG
>>960
次スレよろしく〜
0955デフォルトの名無しさんNGNG
このスレの最初の'2:'にある、リンク先の右側の番号見て思うけれど、
かなり重複してますよ。
8〜20あたり、大丈夫?
0956デフォルトの名無しさんNGNG
>>955
全然大丈夫じゃない。
新スレで訂正してね(はぁと
09571NGNG
>>955-956 スマソ。訂正しますた。

【過去ログ】
29 http://pc3.2ch.net/test/read.cgi/tech/1029605182/
28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/
26 http://pc3.2ch.net/test/read.cgi/tech/1026048820/
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
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/1003/10034/1003418249.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
0958デフォルトの名無しさんNGNG
>>940
括弧で括る必要なんか全くないのに括ってるのは
自前の脳味噌使ってないんだろうな、とは思う。
0959デフォルトの名無しさんNGNG
個人的な趣味として >>1 はできるだけ短いほうがすきなので、FAQの英訳や
K&Rの話は >>2 以降するのはどうでしょう?

あとこれも更新。
Part4 -> Part5
推薦図書/必読書のためのスレッド PART 5
http://pc3.2ch.net/test/read.cgi/tech/1027593322/
0960デフォルトの名無しさんNGNG
>>958
俺はsizeofは括らないと気が済まないけど、やはり脳なし?
0961デフォルトの名無しさんNGNG
>>959
賛成!
0962デフォルトの名無しさんNGNG
sizeofは付けなければならない場合と付けても良い場合があるのでつけてる。
returnは要らないので付けない。
0963デフォルトの名無しさんNGNG
新スレ立てます。
>>959で新スレ立てると、>>1には何を書けば?
過去ログは>>957をコピペします
推薦図書URLを>>959のURLに変更します。

スレ構造は・・・
>>1 何書く?
>>2 コンパイラリンク
>>3 推薦URLとかK&Rとか
>>4 過去ログリンク

こんなのでよろしいか?
他に変更などはある?
で、>>1に何書くの。
0964デフォルトの名無しさんNGNG
>>963
このスレッドの >>1を参考にして、適当にジョークかましとけば
いいんじゃない?
0965デフォルトの名無しさんNGNG
>>963
>>1
C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/
gcc
http://gcc.gnu.org/

推薦図書/必読書のためのスレッド PART 5
http://pc3.2ch.net/test/read.cgi/tech/1027593322/l50

前スレ <30> http://pc3.2ch.net/test/read.cgi/tech/1030786546/

コンパイラ、過去ログなどのリンクは>>2-5 あたり

>>2 以降は
>>2 コンパイラリンク
>>3 推薦URLとかK&Rとか
>>4 過去ログリンク
でOK.
0966デフォルトの名無しさんNGNG
>>963
タイトル:
C言語なら、俺に聞け! <31>

名前:
SHOW-A

本文:
漏れは54才、30年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことなら全てわかるから、疑問な点があったら漏れに聞け。
今なら平成デフレ記念3割引奉仕中だ。

スケジュールは真っ白だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。あと、至急仕事をください。
0967デフォルトの名無しさんNGNG
一応、新スレ立てた。

C言語なら、俺に聞け!<31>
http://pc3.2ch.net/test/read.cgi/tech/1031340950/
0968デフォルトの名無しさんNGNG
>>967
なかなかヨカッタよ!おつかれ。
0969デフォルトの名無しさんNGNG
乙
0970デフォルトの名無しさんNGNG
質問です。
>エラー内容
>「ハンドルされていない例外は test.exe にあります:
>0x0000005:AccessViolation」

これってどう言う意味ですか?
既出ならすんまそん。m(__)m
0971デフォルトの名無しさんNGNG
配列の範囲外を参照したとかポインタの初期化し忘れとか。
0972デフォルトの名無しさんNGNG
C言語を覚えたいのですがなにからはじめたらいいでしょうか?
0973デフォルトの名無しさんNGNG
本屋で本を買ってきなさい。
K&Rは難しいので自分が理解できると思われるやつを。
0974shigeNGNG
オライリーの「C実践プログラミング」が良い。
0975972NGNG
>>973 , 974
返答ありがとうございます。
今日早速書泉に行ってきます。
0976デフォルトの名無しさんNGNG
>>975
shigeの言うことを信じてはいけません。
0977デフォルトの名無しさんNGNG
>>976
いや、その本は良書だと思うが。
0978デフォルトの名無しさんNGNG
>>977
オライリーの本、初心者には読みにくいかも…。
0979デフォルトの名無しさんNGNG
オライリーは良書から糞本まで幅広く取りそろえております。
表紙は並べるだけでも幸せ。
0980デフォルトの名無しさんNGNG
読解力の個人差とかあるから本は自分で選ばないと後悔することが多いよ
0981デフォルトの名無しさんNGNG
>>980
っていうか、自分で選べない奴はプログラマに限らず資料探しができない奴だと思うが。
0982デフォルトの名無しさんNGNG
>>981
激しく同意。日本の画一教育の弊害だね。
0983981NGNG
仮に自分でイイ本が選べなかったとしても失敗の中から学べると思うんだよね。
人に聞いて本を選ぶのは簡単だしほぼ確実だけど、自分の探索能力を向上するチャンスを
失っているってコトは自覚しておいたほうがいい。
0984デフォルトの名無しさんNGNG
いや、・・・良書を見抜くのはかなり難しいぞ。
特に自分が知らない分野のことでは。

最初は超初心者的な本になってしまうだろうが、それでもいいと思うぞ。
0985デフォルトの名無しさんNGNG
1000!
0986デフォルトの名無しさんNGNG
C言語なら、俺に聞け! <31>
http://pc3.2ch.net/test/read.cgi/tech/1031340950/-30
0987デフォルトの名無しさんNGNG
好い加減に千回!
0988デフォルトの名無しさんNGNG
そろそろ新しいスレ建てたほうがよくねーか?
0989>>988のバ〜カNGNG
新スレがたっているのを知らずに
寝惚けた事を逝っている>>988を馬鹿にしつつ、1000!!!
0990デフォルトの名無しさんNGNG
ネタにマジレスしている>>989を馬鹿にしつつ1000げっと!!!!



失敗
0991デフォルトの名無しさんNGNG
1000
0992988NGNG
>>989
馬鹿はおまえだ。
早くたてねーとマニアわネーゾ
子いうときに限って馬鹿がスレ立てすぎて作れねー氏。
どーすんだよ。このスレ今回で終わっちまうぞ
0993デフォルトの名無しさんNGNG
1000!!!
0994デフォルトの名無しさんNGNG
>>992
C言語なんて時代遅れだから別にいいや。
0995デフォルトの名無しさんNGNG
たった今Cしてきますた。
0996デフォルトの名無しさんNGNG
>>994
そう、時代はアセンブラなのだ。(藁
0997デフォルトの名無しさんNGNG
そろそろか?
0998デフォルトの名無しさんNGNG
お姉さま・・・・
0999デフォルトの名無しさんNGNG
1000(^-^)v
1000デフォルトの名無しさんNGNG
1000getsasere
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。