C言語なら、俺に聞け! <17>
レス数が1000を超えています。これ以上書き込みはできません。
0001金融プログラマー日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。
だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。
・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html
・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通だ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419
K&Rで挫折するような救いがたいやつはこれでも読め
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711
推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/
・前スレ C言語なら、俺に聞け! <16>
http://pc.2ch.net/test/read.cgi/tech/1018453690/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGUNIX記述専用言語
0006デフォルトの名無しさん
NGNGA、B、とくりゃ、次はC。
0007デフォルトの名無しさん
NGNGC++言語の前身。
0008デフォルトの名無しさん
NGNG正解。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG俺には>>9が本気に見えて仕方がない。
ぼけるより>>9を糾弾した方が良くないか?
0015デフォルトの名無しさん
NGNG0017Ken Thompson
NGNG0018Ken Thompson
NGNGhttp://www2.gihyo.co.jp/books/pdf/4-7741-1142-2.pdf
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG本当です。かわりにelse_if(_はスペース)をつかってください。
トリッキーな使い方するとハマるかもしれんけど。
0021デフォルトの名無しさん
NGNGん?BはBCPLじゃなくてB言語のBでしょ?
BCPL -> B -> C ってなかんじで。
002216
NGNGまちがえた。フォローサンクス。確認したらそうなってた。
確認ついでに知ったんだけど、ThompsonってUNIXの高級言語書きに
Bでトライする前にFortranでもトライしてたのね。
0023デフォルトの名無しさん
NGNGK&Rの演習1-9でつまづきました。
#include <stdio.h>
int main(void)
{
int c;
int flag = 0;
while((c = getchar()) != EOF){
if(c == ' '){
if(flag)
putchar(c);
}
else{
putchar(c);
flag = 0;
}
}
return 0;
}
一応できたっぽんですが、なんか泥臭いような気がします。
もっとスーマトな方法ってありますか?
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG正しく動かないぞこれ。
0026デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
int ch = getchar();
while (ch != EOF) {
putchar(ch);
if (ch == ' ')
while ((ch = getchar()) == ' ');
else
ch = getchar();
}
}
002723
NGNG確かに正しく動きませんでした。
#include <stdio.h>
int main(void)
{
int c;
int flag = 0;
while((c = getchar()) != EOF){
if(c == ' '){
if(!flag){
putchar(c);
flag = 1;
}
}
else{
putchar(c);
flag = 0;
}
}
return 0;
}
やっぱりなんかスマートじゃないような。。。
0028デフォルトの名無しさん
NGNG意味もなく長いのは目障り。
0029デフォルトの名無しさん
NGNG連続するWhiteSpaceを一個の' '(0x20)に押しつぶすプログラム、が
問題であるとして、その回答例をあげとく。
#include <stdio.h>
#include <ctype.h>
#define SREP ' '
int main()
{
int c, prev = 0;
while ((c = getchar()) != EOF)&
nbsp;{
if (!isspace(c))
putchar(
prev = c);
else if (!isspace(prev
))
putchar(
prev = SREP);
}
return 0;
}
003029
NGNGむしして
0031デフォルトの名無しさん
NGNG演習1-8が 空白、タブ、改行を〜
演習1-9が 2つ以上の空白を〜
となっているから、空白はスペースのみかと。
0032デフォルトの名無しさん
NGNGint main()
{
int c;
int prev = 0;
while ((c = getchar()) != EOF)
{
if (!(c == ' ' && prev == ' '))
putchar(c);
prev = c;
}
return 0;
}
こーゆーこと?
K&R三冊買ったけど全部誰かにあげちまったからなあ..
003323
NGNG>>23
なんかflagとか使ってるのはずかしくなりました。。。
0034デフォルトの名無しさん
NGNG>>23
#include <stdio.h>
int main()
{
int ch = getchar();
while (ch != EOF) {
putchar(ch);
while ((ch = getchar()) == ' ');
}
}
後半のifは冗長だな、これだけでよかった。
0036デフォルトの名無しさん
NGNGint main()
{
int ch = 1;//!EOF
while ((ch = getchar()) != EOF) {
if(ch != ' ')
putchar(ch);
}
}
0037デフォルトの名無しさん
NGNG問題読んだ?
スペースが出力されないよ
0038デフォルトの名無しさん
NGNGそれも正解のうちの一つなんだけど、
二カ所でgetchar()してるのはキモイ。
getchar()
while()
{
/* なんか処理 */
getchar();
}
はCOBOLER臭くてキモイ。
でもたしかに、それも正解。
0039デフォルトの名無しさん
NGNGじゃああなたならどうかく?
004026=34
NGNGキモイキモイってそこまで言わなくてもいいじゃんかよ ヽ(`Д´)ノ ウワァァン
スマートに書くっていうはなしだから、状態変数用意したり
直前の文字を記憶しておくやり方が泥臭いと思ってああいう風に書いたんだよ。
0041デフォルトの名無しさん
NGNGint main()
{
int nSpaceCount = 0;
int nChar;
while ((nChar = getchar()) != EOF)
{
nSpaceFlag = (nChar == ' ') ? ++nSpaceCount : 0;
if (nSpaceCount <= 1) putchar(nChar);
}
return 0;
}
004241
NGNG0043デフォルトの名無しさん
NGNGprintf("別に取り立ててスマートには見えない\n");
}
else {
printf("nSpaceCountがオーバーフローしたらどうするよ?\n");
}
0044名無しさん@edlin
NGNG++nSpaceCount -> nSpaceCount++
なら、ちょっとトリッキーでCoolかも。
004538
NGNGおれの>>32。
直前の文字を持ってるから、キモイと思う人から見ればキモイんだろう。
状態変数はぱっと見でわかりずらいから
>>32か>>34のどっちかになるんだろうね。
0046デフォルトの名無しさん
NGNG確か、staticな変数を使ってるかなんか・・・。
で、それに変わる関数はあるのでしょうか?
0047デフォルトの名無しさん
NGNG漏れ、呼んではいないが”すたんだーどあいおー”と
心の中で決めてる。
stdlibやstdringについても詳細キボンヌ。
0048デフォルトの名無しさん
NGNG「False」を「ファール」って発音してる人の数→
http://pc.2ch.net/test/read.cgi/tech/1005578173/
0049デフォルトの名無しさん
NGNGstdlib えすてぃーでぃーりぶ
stdring 何これ?
0050デフォルトの名無しさん
NGNGlex 使うか自分で作る。
0051デフォルトの名無しさん
NGNGえすてぃーでぃーりぶ
その次の奴は何?はじめてみた。
個人的に、libibertry.oっていうファイル名が好き。
IDEな人にはわからないかもだけど。
005247
NGNG逝ってきまそ。
で、なんて呼んでまふ。
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGワラタ
0056デフォルトの名無しさん
NGNG問題ない。使いなさい。
0057デフォルトの名無しさん
NGNGドモアリガトウゴザイマシタ
0058デフォルトの名無しさん
NGNG他に呼び方あったら逆に知りたいぞ
0059デフォルトの名無しさん
NGNGすとあいんぐ
0060デフォルトの名無しさん
NGNGstdlib すたんだーどりぶ or すたんだーどらいぶらり
string ひも
>>46
スレッドセーフでないってだけじゃなかった?
使いづらいから使ったことないけど。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strtok.3.html
0062デフォルトの名無しさん
NGNGstrtok_r()って関数が用意されてないかえ?
処理系によるけど。
0063デフォルトの名無しさん
NGNG問題ありません。使ってください。
006446
NGNGタブ区切りのテキストファイルの数値を変数に。
スレッドセーフでないと言うのは、
マルチスレッドの時に困るだけでしょうか?
0065デフォルトの名無しさん
NGNGそのとーり。
でも、タブ区切りの数値を抽出するなら、sscanf()でOK。
0067デフォルトの名無しさん
NGNGVCだったらマルチスレッドライブラリを使用すれば、
strtokもスレッドセーフになる
006846
NGNGsscanf早速使ってみることにします。
0069デフォルトの名無しさん
NGNG1)連続するデリミタもそれぞれデリミタとして扱う
2)リエントラントである
3)最初の呼び出し・2度目以降の呼び出しで呼び出し方を変更する必要が無く
利用者のコードがstrtokよりシンプルになる
点がstrtokよりもマシ。
LinuxやBSD系列のOSで使えるはず。
man: http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strsep.3.html
実装: http://nemesis.sourceforge.net/browse/mod/venimpl/c/str/strsep.c.html
# 勿論通常はシステムで用意されていないので
# 実装を自分で用意する必要が有る
# VC++では_tcspbrkが使えるので、strsepを簡単にマルチバイト対応にできる。
0070デフォルトの名無しさん
NGNGそうだね。元々、strtok() って、コンパイラなんかの字句解析用だから、
先行するデリミタは全て読み飛ばすよ。そもそも、CSV の読込に、
strtok() なんか使う方が変。
0071新規質問
NGNGと宣言して、
scanf("%s",string);
で、代入しました。
この文字列 string を、ある文字列と比較する場合、
どのように書けばイイでしょうか?
if (string=="abcdefg"){
………
}
ではだめなようです。
また、比較対象文字列が空白文字列、つまり、
string が空文字列かどうか調べるのはどうすればイイでしょうか?
0072デフォルトの名無しさん
NGNGif(string[0]=='\0')
007372
NGNGif(strcmp(string,"abcdefg")==0)
だった。
0074デフォルトの名無しさん
NGNGネタですよね。ネタといって下さい。お願いします。
strcmp
0075デフォルトの名無しさん
NGNGネタでしょ。strcmp知らない奴がmallocを知っているとも思えないし(mallocでも使わないと落ちるから)。
0076& ◆cyWCSrs.
NGNGマジでしたが、>>74を見てからはネタになりました。(w
さっきまで文字列比較関数のない言語やってたもんだから、つい・…
>>72-74
罵倒せずに答えてくれてどうもありがとう。
0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGできる方法ない?実際に並び替えなくても
表示させるだけでもいいんだけど。
0079デフォルトの名無しさん
NGNGおい、その前に...
> char *string;
> と宣言して、
> scanf("%s",string);
> で、代入しました。
には、誰も突っ込まんのか ?
0081デフォルトの名無しさん
NGNGchar *stringが関数の仮引数だったらOK
0082デフォルトの名無しさん
NGNGそもそも、ソートするなら何故に単方向リスト使うのよ。
0083デフォルトの名無しさん
NGNGノリで。
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG別に配列作って全部コピーしてからqsort
0086デフォルトの名無しさん
NGNGやっぱりそれしかないか・・・。
サンクス!
0088デフォルトの名無しさん
NGNGそういうときは、インデックスを用意して、そっちをソートする。
あ〜〜〜なんて言ったらいいんだろう。
0089デフォルトの名無しさん
NGNGポインタだけ配列にコピーしてqsortってことかな?
0090デフォルトの名無しさん
NGNGK&Rスタイルって何?
var[]ではなく*varと書くということ?
マジ質
0091デフォルトの名無しさん
NGNG009382
NGNGノリかよ !!
>>84
何故に Stack ? 関数に渡されるのは malloc() の返り値かも知れんし、
static char a[1000]; とした a かも知れんよ。
まあ、scanf("%s", ...) なんて使うこと自体がまずいと思うが...。
0094デフォルトの名無しさん
NGNGC言語入門本の中に、例題としてmalloc()の実装やってるのが
あったような気がする、何冊か。
0095デフォルトの名無しさん
NGNGint main(argc,argv)
int argc;
char *argv[];
{
}
てやつでしょ。
0096デフォルトの名無しさん
NGNG009979
NGNGちゃう。
ANSIスタイル
void foo(char *string){}
K&Rスタイル
void foo(string)
char *string;
{
}
ANSI だったら、宣言の最後に ';' はつかん。
010095
NGNG最近すっかりANSIスタイルで書くようになっちゃったので・・・
間違ってたら訂正キボン。
0101デフォルトの名無しさん
NGNGその下の
int argc;
char *argv[];
が引数。
数も順番もあってなくてOKのあやふやな引数の宣言だった。
0102デフォルトの名無しさん
NGNGそういえばセミコロンがついていたか。見落とした。スマソ
ちなみに俺はそんなスタイルは使っていないよ。
0103102
NGNGだめじゃんまつもと!
0104デフォルトの名無しさん
NGNGそれ以前に、なんで81がK&Rになるんだヨ
0105デフォルトの名無しさん
NGNG確か。
0106デフォルトの名無しさん
NGNGうん。
0108デフォルトの名無しさん
NGNGでも使うなよ
0109デフォルトの名無しさん
NGNGC++でも使える。
0111ヽ(`Д´)ノ
NGNG011279
NGNGまあ、ちょっとした嫌味だ。気にするな。第一、今時のコンパイラは ANSI
がディフォルトだから、K&R スタイルでやると警告がでるぞ...と、やって
みたら VC++ 6 だと、警告レベル 4 にしてもなんも言わん...。さすが
MS だよ、まったく。まあ、プロトタイプ宣言とかできんから、強いて覚
える必要はないよ。
0113デフォルトの名無しさん
NGNGANSI C 対応コンパイラが標準で入ってないマシンでも動かせるように K&R スタイルにしてるらしい。
確かに SunOS4.1 あたりの Sun cc は ANSI-C 未対応だ。
いいかげん ANSI C スタイルに変えるとは言っているが…
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNGなるほど。
ということはプロトタイプ宣言もしていないのかな?
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG普通そう言うときは、ANSI → K&R 変換ツールとか使わんかなぁ...。プロト
タイプ宣言はどうしてんの ? 使ってねぇのか ?
0119デフォルトの名無しさん
NGNGANSIで消極的とはいえ認められているのだから、K&Rスタイルも立派なANSI準拠だと思うが。
だから、警告は出ないのは当然だし出すべきではないと思うが。
>>114
トライっていうの?
化学ではトリ〜が慣例だからそう読んでた。
0120デフォルトの名無しさん
NGNG外部公開する API 以外はしてないね。
012179
NGNG互換性のためだろ ? 良くないスタイルなんだから、警告ぐらい出しても
いいと思うぞ。VC++ 6 のヘルプには...
-------------------------------
コンパイラの警告 (レベル 4) C4131
'function' : 旧形式の宣言が使われています。
関数宣言がプロトタイプ形式ではありません。
旧形式の関数宣言をプロトタイプ形式に変換してください。
次のコードは、旧形式の宣言です。
int addrec( name, id )
char *name;
int id;
{ }
これを、新形式のプロトタイプ形式に変換すると、次のようになります。
int addrec( char *name, int id )
{ }
-------------------------------
つーのが、あるのにねぇ...。
ちなみに...
-------------------------------
コンパイラの警告 (レベル 4) C4130
'operator' : 文字列定数のアドレスで論理演算が行われました。
リテラル文字列のアドレスに演算子が使われ、不要なコードが生成されま
した。
次にこの警告の例を示します。
char *pc;
pc = "Hello";
if (pc == "Hello")
{ }
上の if ステートメントは、ポインタ pc に格納された値と、コード内に
現れるたびに割り当てられる文字列 Hello のアドレスを比較しています。
この if ステートメントは、pc が指す文字列と、文字列 Hello は比較し
ません。
文字列を比較するには strcmp 関数を使ってください。
-------------------------------
なんてのもあって、今回のそのままじゃんって感じ。でも、この警告出せ
ないんだけど...。
また、(ANSI 準拠だから)「警告は出ないのは当然だし出すべきではない」
と言うのには、賛成できねぇ。ANSI に準拠していたって、制御が渡らない
コードや、未使用のローカル変数とか指摘するコンパイラって珍しくない
し、そう言う機能もいらないと言うのか ? (だすださないを制御できる必
要はあるだろうけど...。)
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124114
NGNGいちおう、トライっぽい。
http://eiwa.excite.co.jp/view.jsp?block=43835&offset=698&id=NEW_EJJE
0125日下部圭子
NGNG0126デフォルトの名無しさん
NGNG下記の関数の作りかたがわかりません。
どなたかアドバイスを宜しくお願い致します。
typedef struct{
char c1[2];
char c2[3];
}HEADER;
typedef struct{
HEADER head;
char c3[4];
char c4[5];
}BODY1;
typedef struct{
HEADER head;
char c5[6];
char c6[7];
}BODY2;
という構造体があって
int func(void *vp);
という関数にBODY1か2の型のポインタがvoid型の引数できます。
func()の中で構造体の各メンバを参照するのとheadをぬかした
サイズを取ってreturnするにはどうすればいいでしょうか?
それともこの場合引数にvoid型を使うのは間違いでしょうか?
アドバイスを宜しくお願い致します。
0127デフォルトの名無しさん
NGNG間違いです。
winのBITMAPINFO構造体などを参考に、
構造体のサイズをメンバに持たせる手もありますが、
おすすめしません。
0128デフォルトの名無しさん
NGNGunion使えや
struct Item {
int type;
union {
char a;
int b;
long c;
} Body;
};
void func(Item* item)
{
switch(item->type) {
case 0: printf("%c\n", item.Body.a);
case 1: printf("%d\n", item.Body.b);
case 2: printf("%ld\n", item.Body.c);
}
}
0129デフォルトの名無しさん
NGNGoffsetofマクロを使ったらトリッキーなプログラムが書けるかも知れない。
0130デフォルトの名無しさん
NGNG128の間違いはなんでしょう?
0131デフォルトの名無しさん
NGNGx item.Body.a
o item->Body.a
0132デフォルトの名無しさん
NGNG0133126
NGNG実はこれ課題で出されたものなんです。
構造体のみで共用体は使えません。
引数のvoid型は自分で勝手に考えたのですがおもいきり間違いみたいです。
どうにかして上記のような機能をもつ関数を作りたいのですが
いい方法は無いのでしょうか?
それとも不可能なのでしょうか?
0134デフォルトの名無しさん
NGNGitem.Body ではなく item->Body
breakがない
引数にconstがない
0135デフォルトの名無しさん
NGNG外出だけどoffsetofとキャストを使った汚い方法しかないんじゃないの?
0136デフォルトの名無しさん
NGNGvoid *でもint *でもいいです。どうせキャストして使うんですから。
0137デフォルトの名無しさん
NGNG役に立たない教官ですね。
畳んでおしまいなさい。
0138デフォルトの名無しさん
NGNGプラットフォーム依存。
Unixならsleep()やusleep()、Win32ならSleep()
0139デフォルトの名無しさん
NGNGそれ以前にこの文章の意味を理解してもらえるか心配です
0140126
NGNGHEADERのc1の値が1なBODY1,2ならBODY2でした。
でも関数の引数は構造体の先頭ポインタ1個だけです。
なにかいい方法はないでしょうか?
0141デフォルトの名無しさん
NGNG構造体のタイプがわかるなら、
void*じゃなくてHEADER*で受け取って、タイプを判別した後に
望みの形にキャスト
0142デフォルトの名無しさん
NGNGゼロパディングなら%04dってな感じで(45なら0045と表示される)。
他の文字は知らない。
0143デフォルトの名無しさん
NGNGこんなもんかな。皆様訂正キボンヌ。
int func(void *p);
int main(void)
{
BODY1 b1;
BODY2 b2;
b1.head.c1 = 1;
b1.c3[0] = 1;
printf("size of b1 inner = %d\n", func(&b1));
b2.head.c1 = 2;
b2.c5[0] = 2;
printf("size of b2 inner = %d\n", func(&b2));
getchar();
return 0;
}
int func(void *p)
{
switch (((HEADER *)p)->c1) {
case 1:
printf("c3[0] = %d\n", ((BODY1 *)p)->c3[0]);
return sizeof *(BODY1 *)p - offsetof(BODY1, c3[0]);
case 2:
printf("c5[0] = %d\n", ((BODY2 *)p)->c5[0]);
return sizeof *(BODY2 *)p - offsetof(BODY2, c5[0]);
default:
return 0;
}
}
0144デフォルトの名無しさん
NGNGおっとっと。getchar()は取って下さい。
0145質問
NGNGせめてカーネル部分を教えてくれませんか?
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG誤爆?
0148デフォルトの名無しさん
NGNGhwndProgressCtrl = CreateWindowEx(0,PROGRESS_CLASS,"",
WS_VISIBLE | WS_CHILD | PBS_VERTICAL | PBS_SMOOTH,
10, 50, 20, 80, hDlg, (HMENU)IDC_PROGRESSBAR, g_hInstance, NULL);
こんな感じで書いたのですがエラーが出てしまいます。
エラー内容はPROGRESS_CLASSが定義されていないとか、そんなのばっかりです。
どうすれば直りますか?
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNGDWORD val=(data2<<8) | data1;
return val;
}
なんでこれは上手く行くのでしょうか?
(data2<<8)は0だと思うのですが
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGだから、なぜ???
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG式値の型
格上げ
暗黙の型変換
あたりを調べよう。
載ってない「入門本」は捨てていいよ。
の無駄だったね。
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161日下部圭子
NGNG0162いっちゃん
NGNG0163デフォルトの名無しさん
NGNG++は?
0164162
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGfull adderでも使いますか。
0167デフォルトの名無しさん
NGNGアセンブラのコードを埋め込む、とかな。
…って、C じゃないじゃん>漏れ
あと、圧倒的にでっかいテーブルを(略)
0168デフォルトの名無しさん
NGNG喰いもの関連のニュースグループでうっとーしい奴か?
0169デフォルトの名無しさん
NGNGほれ宿題取り(あえず2桁ぐらい確認)
unsigned long adder( unsigned short _a, unsigned short _b )
{
int i;
unsigned long a = _a;
unsigned long b = _b;
unsigned long ha;
for ( i = 0; i < sizeof ( unsigned short ) * 8; i ++ ) {
ha = (~a & b) | (a & ~b);//inv exor(half adder)
b = ( a & b ) << 1;//carry
a = ha;
}
return a;
}
0170162
NGNGありがとうございます。参考にさせていただきます。
皆様、ありがとうございました。
0171デフォルトの名無しさん
NGNGif (a != 0 && b != 0)
return add(a ^ b, (a & b) << 1);
else
return a | b;
}
試しにやってみた。
これ合ってる?
0172デフォルトの名無しさん
NGNG同じソースをUNIXのgccでコンパイル→UNIXで実行すると動くのに、
Borland C++でコンパイル→WIN98で実行すると
その後の入力が全部壊れてしまいます。
これってプログラムが間違ってるってことでしょうか?
0173デフォルトの名無しさん
NGNGソースは?
0174デフォルトの名無しさん
NGNGほとんどの場合、そのプログラムが悪い。
特にsprintfなんて枯れた部分ならなおさら。
0176172
NGNGこんなのです。
#include <stdio.h>
void main()
{
char a[4],b[4];
int i=1234;
int j=5678;
sprintf(a,"%4d",i);
sprintf(b,"%4d",j);
printf("a = %s\n",a);
printf("b = %s\n",b);
a[0] = '9';
a[1] = '9';
a[2] = '9';
a[3] = '9';
b[0] = '1';
b[1] = '1';
b[2] = '1';
b[3] = '1';
printf("a = %s\n",a);
printf("b = %s\n",b);
}
これの実行結果が
a =
b = 5678
a = 9999
b = 56781111
です。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG○char a[5],b[5];
0179172
NGNG必要なのですか?
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGC言語において文字列は末尾に終端文字として '\0' が必要なので、
バッファもその分余計に必要。
0182デフォルトの名無しさん
NGNGa[0] = '9';
a[1] = '9';
a[2] = '9';
a[3] = '9';
a[4] = '\0';
b[0] = '1';
b[1] = '1';
b[2] = '1';
b[3] = '1';
b[4] = '\0';
0183デフォルトの名無しさん
NGNGはうそつきです
0184デフォルトの名無しさん
NGNGレスの前の方は読んでないから適当なこと書いてるかもしれん。
まあ気にすんな。
0185172
NGNGa[4]で4文字+\0の5バイト・・・ではない??
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNGうそつきではないだろ
0189デフォルトの名無しさん
NGNGa[5]でa[0]からa[4]までの5つの要素を確保できる。
0190172
NGNG・・・文字列の終わりの\0の他に、
配列の終わりの\0も必要ということでしょうか?
0191デフォルトの名無しさん
NGNG'\0'を入れるスペースが必要でしょう。
"ABCD"なら{'A','B','C','D','\0'}で5つ
0192172
NGNGC言語学んで5年間、とんでもない勘違いをしていたみたいです。
a[5]って「aという名前で5つ分確保」って意味だったんですね。
「[5]まで使える」んだと思ってました。
ああもうなんて情けない恥ずかしい・・・。
皆様、本当にご教授ありがとうございました!
0193デフォルトの名無しさん
NGNG周りにCに詳しい人がいなかったんだね。かわいそう。
0194デフォルトの名無しさん
NGNGすべて'\0'で終端された文字列でなければならない。
そういう用途にまったく使わないで単なるメモリイメージとして使うだけなら終端文字は不要。
何度も同じことを言い直しているだけな罠。
0195172
NGNGいることはいるんですけど、プログラムについて聞くと
「それを調べるのがお前の仕事」と。
まぁそれはその通りなんですけどね。
でもこれでやっと他プログラムのバグの謎も解けました。
こんな初歩的なところで皆様の手を煩わせてしまって
申し訳ないです・・・。
0196デフォルトの名無しさん
NGNGもしかしてmallocでも同じミスをされていたり?こちらの方はちょっと
ダメージが大きくなります。ヒープ領域が壊れてしまいますから。
0198デフォルトの名無しさん
NGNGなるほど。周りの方々も不親切だったと。
気が向かれたらまた書き込みして下さい。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGようやくやってる事が判ったよ。COOL!
0202新入
NGNG何をどうやって地道にやってけば良いのでしょうか…??
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGいまいちか
0205デフォルトの名無しさん
NGNG良い本を買って、読みながら実際コンパイル・実行していけば、
なんとかなるよ。
良い本は、>>1にリンクがある推薦図書のスレでどうぞ。
個人的お薦めは、K&Rは辞書だと思ってまず買うとして、
それ以外に、本屋にある一番薄くて安い本を買うことです。
高くて厚い本は、読んでいるうちにきっと萎えます。
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG萎えるというか、持って開くのが億劫になってくる。
例:らくだ2nd、プログラミング言語C++3rd
0208デフォルトの名無しさん
NGNG読んどいて損なし。
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG言語にとらわれちゃだめだぞ。
Cなんて所詮は単なる翻訳でしかないのだから。
大事なことはプログラムってのは手段であって目的ではないって事。
なにをするためのプログラムなのかを考え、それを実現する過程をしっかりと
自分の頭の中で組み立て消化すればおのずと必要な処理の流れがわかってくる
から、それを該当する言語(たとえばC言語ね)で表現するにはどんな構文を
使えばいいのか調べればよい。
プログラミング言語は言葉なんだよ。
どんなに流暢に話せても中身のない言葉には説得力もなければ感動もない。
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG0217_
NGNGclass cB;
delete (cA*)(new cB)
これってcAのコンストラクタが呼ばれるのは分かるんだけど
メモリはちゃんとcBのサイズ分解放されるのかな?
それともcAのサイズ分解放される?
0218デフォルトの名無しさん
NGNG0219_
NGNGよく考えたら
struct sA;
struct sB;
free((sA*)malloc(sizeof(sB)));
ってちゃんとsB分解放される・・・と思うから
ちゃんとcB分解放されるんですね。
ヒープ上のメモリって自分の大きさを分かってるんだ。凄いなー。
0220デフォルトの名無しさん
NGNGニッチな御仕事ですなぁ。 (;´д`).。oO( PL/I. )
まぁ、そっちの仕事をなさっていても、懸命にやっていれば
得るものがたくさんあると思うので、
いつか C言語の仕事が来ても
なんとかなるでしょう。
ガンガレ (・∀・)
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGそうですね。freeにしろ、deleteにしろ、ユーザーが与えるのはオブジェクトへの
ポインタだけで、サイズは与える必要がないですもんね。
でもcAのデストラクタに変な物が入っていたらどうなるんだろう。
以降の議論はC++相談室で。
0223デフォルトの名無しさん
NGNG以下のコードは正しく動作しない。C風のキャストはやめよう。
class cA {
int *i;
public:
cA() : i(new int(0)) {}
~cA() { int i; }
};
class cB {
double *d;
public:
cB() : d(new double(0)) {}
~cB() { delete d; }
};
int main()
{
delete (cA *)new cB;
}
0224_
NGNGコンストラクタ->デストラクタ
>>223
正しくというのはcBのデストラクタが呼ばれないってことですよね?
cB::d*の指してるメモリは残るんだろうけど
new cBで作られたsizeof(cB)分のメモリは解放されますか?
0225デフォルトの名無しさん
NGNGsizeof(cB)分のメモリは常に正しく解放されます。
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGint a;
int b;
}Kou;
Kou kouzoutai[100][100];
kouzoutaiの全部の大きさを知りたい時は,
sizeof(kouzoutai);
sizeof(kouzoutai)*100*100;
のどちらがただしいのでしょうか?
0228デフォルトの名無しさん
NGNG前者。後者は配列にする際にパディングが行われてサイズが膨れている
事があるので誤り。
0229デフォルトの名無しさん
NGNGじゃなかった、後者は無条件に誤り。
0230デフォルトの名無しさん
NGNG一発でわかるから。
0231230
NGNGと思ったけどまさかその数字を見て判断できない訳じゃないよね。
0232227
NGNGsizeof(kouzoutai)*100*100;
じゃなく
sizeof(kouzoutai);
なんだろうと思ってさ
0233デフォルトの名無しさん
NGNGこれってホント ? 漏れ、sizeof(kouzoutai) でもパディング考慮したサ
イズを返してくれるもんだと思ってたよ。
動的に確保する時...
Kou *p = malloc(100 * sizeof Kou);
ってやってたけど、まずいの ?
0234デフォルトの名無しさん
NGNG試してみればいいだろ。
きっちりpaddingを考慮したサイズを返してくる。
そもそも、構造体のメンバの合計を返しても役に立たないじゃん
0235デフォルトの名無しさん
NGNGなんてマクロがいくらでも使われているんだから
簡単にわかりそうなもんだが。
>>228-229みたいな知ったか野郎は放置の方向で。
0236デフォルトの名無しさん
NGNGてか、K&R も持っていないポンポコちゃんは放置
と思う方向で。
(;´д`).。oO( パディングしたサイズ = sizeof( 構造体 ); )
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGプ
0239デフォルトの名無しさん
NGNG「試してみりゃ云々」って奴は、プログラマ辞めたほうが良いぞ。
「やってみた時は、うまく動きました。」って何回聞かされたことか。
まあ、たまたま今回は正しい結果が出るから良いけどさ。
0240デフォルトの名無しさん
NGNG#define arraysize(x) (sizeof(x) / sizeof(x[0]))
より
#define arraysize(x) (sizeof(x) / sizeof(x)[0])
のようがよいよ
0241デフォルトの名無しさん
NGNG0242吟味した?
NGNG一般的には、
sizeof(1要素を示す型) * (確保したい要素数)
だよ。
なので、ふつー
sizeof(Kou) * 100*100;
てする。
で、ここが勘違いしやすいんだけど、
sizeof(配列変数名)
ってやると、その配列全体のサイズが返ってくるのね。
つまり、char buf[100]; て宣言すると、sizeof(buf)は100。
0243デフォルトの名無しさん
NGNGなんだよそれ
0244デフォルトの名無しさん
NGNG1. sizeof の引数が型ではなく値である場合、括弧は不要。
2. #define の引数は常に括弧つきで利用すべき。
→ sizeof (x)[0]
でしょ。
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG(sizeof(x))[0]じゃなくて
sizeof((x)[0])なのか
0247デフォルトの名無しさん
NGNGじゃ君は全部脳内コンパイルしているのかい。
>「やってみた時は、うまく動きました。」って何回聞かされたことか
もちろんこういうことはあるし特にCではたまたまうまく動くということはあるから
言いたいことがわからないでもないけどさ。
実際コードを書いてみることで理解が深まると思うんだけど。もちろんそういう際は
様々な試行錯誤をして文献に当たってさらにコードを書いて確認すると言う意味。
今回だってコード書けば一発でわかりそうなんだけど。もし自分の理解を超える
数字になったときには文献に当たるなりこういうところで聞くなりしてさ。
0249デフォルトの名無しさん
NGNGmain()
{
char charray[]="あ";
prntf("%s",charray);
printf("い\n");
return 0;
}
でエラーが一つできてしまいます。何がまずいでしょうか?
コンパイラはvisual c++です。
これcでも使えますよね?
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGprntf -> printf
エラーについて聞くときは、エラーメッセージも添えて。
0252デフォルトの名無しさん
NGNGなんて関数はない
0253249
NGNGとしか出なかったので書かなくていいと思っていました。ゴメンナサイ
0254デフォルトの名無しさん
NGNGなきゃ) 使えねーぞ。つーか、このエラーがエラーメッセージ見てわかん
ないなら、VC++ なんか使うなよ。
という、書き込みが多数あるものと思われ...。
0255252
NGNG一応付加すると、stdio.hに
prntf()という関数はないということで。
0256デフォルトの名無しさん
NGNGどういう設定したら、そう言う表示になるんだ ?
0257デフォルトの名無しさん
NGNGリンカエラーにはなるけど。そういうことだと予想
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNGそうして人はキャストを多用する
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGどうやるんですか?
作成したプロセスは入力待ちの状態になるので、stdinに送り込めば
と思ってるんですけど・・・
0262デフォルトの名無しさん
NGNGdup(), dup2() かな。
0263デフォルトの名無しさん
NGNG○言語仕様や処理系依存の部分に関しては、資料を調べる
○関数の動作の場合は、机上でも追ってみる
を、併せてやってほしいとは思うけど、関数やモジュールの動作は、
最終的には、動かして結果を見る事への依存度が高い。
だから、日ごろから、動かした結果、資料を調べなくても正しい事が
わかるような、「調べ方」を、身につけて欲しいな、と思う。
そうしてるうちに、言語仕様についても、これについては試せば解かる、
ってのが見えてくるさね。
(だれに言ってるんだろう…)
0264C房
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNGCまで逝ったら子供が出来ました。
彼女のメモリーにマウントしてデータを抹殺したいんですけど、どんなコードを書けば良いですか?
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGunlinkかremoveを使え。
・・・ってファイルじゃないね。
他人のメモリーの領域を勝手に書き換えようとしたらOSにゴルァされないか?
0269デフォルトの名無しさん
NGNG中絶かよ!
0270デフォルトの名無しさん
NGNGすでにファッキングされてるから大丈夫じゃないのか?
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGってどういう意味ですか?
数学の世界では絶対にあり得ないことなのですが・・・
0274デフォルトの名無しさん
NGNG本読めや。
0275デフォルトの名無しさん
NGNGよって厳密に数学的に書くと、a(t)を時刻tにおけるaの値として、a(t+1)=a(t)+1であり
何の問題もありません。
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNG数学の本や参考書などをみましたが余計解らなくなりました。
この方程式はどうやって解くんですか?
0279デフォルトの名無しさん
NGNG一から十まで全部人に聞く気かよ。
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGaが極めて大きな数でも成り立たないか?
0282デフォルトの名無しさん
NGNG1にFAQ読め、K&R読め、アヒル本読めって書いてあるじゃん。
0283デフォルトの名無しさん
NGNG0284仕様書無しさん
NGNG0285デフォルトの名無しさん
NGNG1から数学を勉強しテクださい
0286デフォルトの名無しさん
NGNGってことじゃないの?
0287デフォルトの名無しさん
NGNGWindowsのフォルダ名がスペースを含む事を許さず、
かつ、フォルダ(ディレクトリ)の区切りを\じゃなく、素直に/にしてくれていたら
人生もっと明るく生きれたなぁ って思ったことはありませんか?
0288デフォルトの名無しさん
NGNG童姦。ドライブレター自体うざい。
0289デフォルトの名無しさん
NGNG-∞=-∞+1
だめなやつは何をやってもだめな式。
0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNGCygwinいれれば?
0294デフォルトの名無しさん
NGNG関数を定義・宣言するときに戻り値の型を void にしておいて、
return を下記のように使うのって、やめた方がいいですか?
個人的には途中で処理がブッタ切レルのでいいかなと思うんですが。
何かまずいことあるでしょうか?
void func(){
return;
}
0295デフォルトの名無しさん
NGNGint a;
int b;
}aa;
int
main(){
aa **AA;
AA = malloc(sizeof(aa) * 100);
AA[0]->a = 1;
のように確保した領域にアクセスしようとすると、落ちるんですが、なぜですか?
0296デフォルトの名無しさん
NGNGまったく問題なし。
0297デフォルトの名無しさん
NGNG> 何かまずいことあるでしょうか?
特にない。
>>295
> のように確保した領域にアクセスしようとすると、落ちるんですが、なぜですか?
配列とポインタのしくみを良く理解していない為、
配列を確保したいなら
> aa **AA;
aa *AA;
としよう
0298デフォルトの名無しさん
NGNGなんか深みにハマってきてるなぁ。
aa *AA;
aa **BB;
AA = (aa *)malloc(sizeof(aa) * 100);
AA[0].a = 1;
BB = (aa **)malloc(sizeof(aa *) * 100);
BB[0] = (aa *)malloc(sizeof(aa));
BB[0]->a = 1;
0299デフォルトの名無しさん
NGNGソレダ!!
0300デフォルトの名無しさん
NGNG300キタ━━━━━━(゚∀゚)━━━━━━!!!!
0301295
NGNGそうだそうだ
やりたいことは
AA = malloc(sizeof(aa *) * 100)
for(i<0;i<100;i++)
AA[i]=malloc(sizeof(aa));
AA[0]->a = ...
で、できました!
サンクスコ!
0302デフォルトの名無しさん
NGNGねぇ、
aa AA[100];で事足りない?
0303295
NGNGその「100」を動的にとるように変えてハマッテタのれす。
0304デフォルトの名無しさん
NGNGaa *AA;
AA = malloc(sizeof(aa) * i);
じゃだめ?
0305デフォルトの名無しさん
NGNG? ?
? (゚д゚) ? なんで2次元配列を1次元にするの?
0306295
NGNG今までグローバルに
*AA[n];
と取って使っていたのを、nを動的に取るようにしたために
グローバルに
**AA;
と取るようにして初期化ではまっていたのdeath
0307デフォルトの名無しさん
NGNGint main(void)
{
int num, i;
printf("2以上の整数を入力\n");
scanf("%d", &num);
for(i=2;i<=num;i++){
if(num == i){
printf("%dは素数です\n", num);
}
else if(num%i == 0){
printf("%dは素数ではありません\n", num);
break;
}
}
return 0;
}
すみません、ド初心者なんですが質問させて下さい。
上のコードは、入力された数字が素数かどうかを判断するコード
なんですが、何故 if(num == i) で素数と判断されるかが解らないんです。
どなたか教えて下さい。
0308デフォルトの名無しさん
NGNG自分自身(num)以外では割り切れなかったということだから。
0309307
NGNG0310デフォルトの名無しさん
NGNGtypedef struct _aa {
int a;
int b;
} aa;
int main(void)
{
aa *AA;
aa **BB;
AA = (aa *)malloc(sizeof(aa) * 100);
AA[0].a = 1;
BB = (aa **)malloc(sizeof(aa *) * 100);
BB[0] = (aa *)malloc(sizeof(aa));
/* 下の二行は同じ意味 */
BB[0]->a = 1;
BB[0][0].a = 1;
return 0;
}
0311デフォルトの名無しさん
NGNGなんだか、豪快なアルゴリズムだな…
0312マッハ若乃花
NGNG\nいりません!おいら,どうしたらいいでしょうか!?
0313デフォルトの名無しさん
NGNGfor(i=2;i<=num;i++){
for(i=2;i*i<=num;i++){
でいいんじゃないの?
0314デフォルトの名無しさん
NGNGもっと変える必要があるか。
0316デフォルトの名無しさん
NGNGK&Rの正誤表って何処にあるんでしょうか?
vectorにあるって見たのですが、見つかりません。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNGいままではプログラムの本を買って読むとき、読むだけではなかなか頭に入らないので
ノートに本の内容をはじめから最後までまとめていました。おかげで600ページほどの本をまとめるのに
2ヶ月ぐらいかかってました。さすがにこれではまずいなと思い、現在は一度読んで大体の内容を頭に入れた後
"何ページから○○のことが書いてある"のように自分用目次を作って必要なときに必要な部分
を見れるようにしました。これは効率がよくとても助かりました。他になにかおすすめの学習方法が
ありましたら教えてください。
0320デフォルトの名無しさん
NGNG実際に作れよ
0321デフォルトの名無しさん
NGNGhttp://www.cs.bell-labs.com/cm/cs/cbook/2ediffs.html
ではなくて?
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG勉強に使えるコンピュータを持っていないの?
0324デフォルトの名無しさん
NGNG私は頭の中でコンパイルしています
0325デフォルトの名無しさん
NGNGいい言葉だ
0326デフォルトの名無しさん
NGNGVBからByteの配列を受け取り、その配列の内容を変えてまたVBに返す方法(宣言)を
教えてください。
0327仕様書無しさん
NGNG0328デフォルトの名無しさん
NGNGおそらくこんな感じ。
(lengthはお好みで。)
int __stdcall hoge(unsigned char *bytes, int length)
{
pBytes[0] = 0xff;
:
:
}
>>327
C++++あたりの言語が出そうな予感
0329デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG鬱だし脳
0332デフォルトの名無しさん
NGNG配列の内容が反映されていませんでした。
0333デフォルトの名無しさん
NGNGlong r;
/*なんか処理*/
P[r]=1;
return 0;
}
って感じなのですが…
0334デフォルトの名無しさん
NGNGVBでいう true ってVCではどうあらわせばいいんでしょうか?
0335デフォルトの名無しさん
NGNG16bit
0336319
NGNG貯金で5万円ぐらいです。
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG5万円あればPC買えるんで、買え
0339デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <curses.h>
int
main(void)
{
WINDOW *s;
FILE *fp=NULL;
if ((fp = fopen("/home/hoge/testfile", "r")) != NULL)
free(fp);
s= initscr();clear();endwin();exit(0);
}
なぜかこれでセグメンテーションフォルトが出ます.
gdb で調べると
#0 0x400c3aef in _IO_adjust_column () from /lib/libc.so.6
#1 0x400c3bed in _IO_flush_all () from /lib/libc.so.6
#2 0x400c3da1 in _flushlbf () from /lib/libc.so.6
#3 0x40083ed4 in exit () from /lib/libc.so.6
#4 0x0804ac46 in main (ac=1, av=0xbffffbd4) at main.c:43
#5 0x4007117f in __libc_start_main () from /lib/libc.so.6
ライブラリの問題なんでしょうか..
0340デフォルトの名無しさん
NGNGfree(fp); って一体…。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGfclose(fp)でした!
なんでこんな間違いを。。。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGgetchってconio.hにある関数だっけ?
だとしたらないと思う。
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c19.html#0
0347デフォルトの名無しさん
NGNGあっそ。
だからどうしたの?
0348デフォルトの名無しさん
NGNG出来ました。ありがとう。
0349デフォルトの名無しさん
NGNG>>339 >>342
マジレス。
とりあえずデバッグにデバッガ使うのは当分やめといた方が良い。
ある程度の量と質をこなせるようになるまでは printf とコンパイラのエラーメッセージで我慢する。
0350デフォルトの名無しさん
NGNG>>319
本でプログラムを勉強するとは、根性あるなぁ。
自作なら十分な金額なんだけど、
一台目はメーカー品の方が、安心できるからなぁ。
あと、月々の通信費もかかるし。
近くの公共施設とか当たってみ。
あとは、自作に詳しい友人とか。
なきゃぁ、バイトだな。
プログラムの勉強頑張れよ。
何か作れるのは楽しいぞ。
スレ違いなのにマジレス スマソ >> その他のみなさん
スレ違い sage
0351デフォルトの名無しさん
NGNGすげえ。
いや、まじでそれ貫いてくれ。
0352デフォルトの名無しさん
NGNGPCは大学とかに落ちてるの拾ってきて、Linux入れれば(・∀・)イイ!
あ、5万あるんなら中古でノーパソでも買うほうが善いな。
0353デフォルトの名無しさん
NGNGそれにSolarisかBSDかLinux入れよう。
0354デフォルトの名無しさん
NGNGもちろんイイ意味で。
0355デフォルトの名無しさん
NGNGプログラムのみならず、全てに当てはまる事だな。
0356デフォルトの名無しさん
NGNGDLL_API int __stdcall hoge(long a, char *b){
で失敗しました…化けてしまいました。
0357デフォルトの名無しさん
NGNG構造体沢山書く
↓
free専用の関数をfree_Typename(Typename *)で記述する
↓
fcloseの存在を忘れる(解放=freeと頭の中に焼きついてしまう)
↓
fopen->free ???
という感じでした
*いっそのこと#define free_File(fp) fclose(fp)でもしとこうか..
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGどういう構造が良いのでしょうか。
まずゴーストの記録を取るのですが
自分が考えたものとしては,selectとwhileで回しているループ中で
1.イベントが起きるとその時の時刻とイベント内容,状態を取得して配列にする
2.特定時刻ごとの状態のみを取得して配列にする
の二つを考えました。
1はイベント数によって配列の長さが変わり要reallocの可能性があります。
イベント内容を取得しておけるのでリプレイ(ゴーストとは別)がしやすそうです。
2は時刻が固定されてるので配列も固定で良さそうです。
ゴーストの実装も1に比べ楽そうです。
今1を採用しているですがプレイ中にreallocするのはどうも嫌な気分です。
2の方が良いのでしょうか。
0360デフォルトの名無しさん
NGNG他人が見たときバカにされるよ。
0361デフォルトの名無しさん
NGNG小生は現在VC++を使っています。
mallocで大きな配列を宣言して2次元配列のように
使いたい場合に、
matrix[i*n + j] と指定するのが見にくいので
#define matrix(i, j) matrix[i*n + j]
main()
{
int n = 3;
}
として使っているのですが
これはまずいのでしょうか。
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNGどこからもmatrix()呼び出してないからちゃんと動く。
>>360
0365デフォルトの名無しさん
NGNG偉そうな割に頭悪すぎ。
0366デフォルトの名無しさん
NGNGmatrix(x,y) = 13;
C++でやれば参照と勘違いされ(そもそもマクロ使用自体がナンセンス)、
Cでやれば気味悪がられる。
俺も>>360に一票。
0367デフォルトの名無しさん
NGNGゲームは通常、一定時間を単位としてプログラムします。
http://pc.2ch.net/test/read.cgi/tech/1011722640/838-
で、例えば1/60秒を1単位(1フレーム)としてプログラムした場合、
1秒間に60回分のキーの状態を記録しておけば、完全なリプレイ
(=ゴースト)が再生できます。
レースゲームで、使うキーが上下左右+アクセル+ブレーキの6bitなら、
1回分は1バイトで足りるので、1秒間に60バイト。1分間で3600バイト。
1時間で216000=約210KBで足ります。
重要なのは、「キー入力イベントが発生することによってゲームの
処理をするのではなく、プログラム側のタイミングでキーの状態を
読みに行く」ようにプログラムすることです。
つまり、>>359の2が正解。
0368デフォルトの名無しさん
NGNG>>357
その使いかただけを見ると、
close(閉じる) と、 free(解放)に対する理解が不十分と思われ。
ごっちゃになってる。
1度、別々に突っこんで調べてみるといいと思う。
>>360 >>366
このスレの厨房占有率が少しでも下がるから、
1行でいいからアドバイスしてやれよぉ。
0369デフォルトの名無しさん
NGNG*alloc->free
fopen->fclose
と対にして覚えればいいだけじゃねーか(w
0370デフォルトの名無しさん
NGNGもっと簡単に沢山のことをできる言語があるよ。
0371デフォルトの名無しさん
NGNGとりあえずね。
#define matrix(i, j) matrix[(i)*n + (j)]
って書け。
0372デフォルトの名無しさん
NGNGそもそもそんな怪しげな形にdefineしない。
0373デフォルトの名無しさん
NGNG後、気持ちはわからないことはないけどそれなら2次元配列使えば済む話ではと。
0374デフォルトの名無しさん
NGNGmallocと書いてあるので二重ポインタでそう。
0375デフォルトの名無しさん
NGNGつぅかソースの全容見ないと何ともいえないよ。
やつが書いたコードdefineマクロ使ってないし。w
0376koubou�U
NGNG考えても考えてもわかりません。
+2を使うべきかー2を使うべきか・・・・変数は最低何個で作れるのか・・・
教えてください。限界です。
0377デフォルトの名無しさん
NGNGfor(sum=0,k=1;k<=n;k+=2) sum+=k ;
printf("%d\n",sum) ;
0378デフォルトの名無しさん
NGNG#defineはあんま使うな
0380デフォルトの名無しさん
NGNGint sum,k,n;
scanf("%d",&n);
sum=0;k=1;
while(k<=n){sum+=k;k+=2;}
printf("%d\n",sum);
whileは関数じゃないよ
0381デフォルトの名無しさん
NGNG0382koubou�U
NGNGwhileは関数ではないんですか!?〜();
〜に当てはまるものは関数だと思ってたのに・・・
答えはちゃんと出ました。ありがとうございます。
0383koubou�U
NGNG0384デフォルトの名無しさん
NGNG宿題、手伝おっか?
http://pc.2ch.net/test/read.cgi/tech/1011722640/
0385koubou�U
NGNGトモダチにそんなこといってもわかりませんよ
たぶんバカにされるだけだと
0386デフォルトの名無しさん
NGNGscanf( "%d", &n );
printf( "%d"), (n+(n&1))*((n+1)>>1)>>1 );
0387koubou�U
NGNGわかりました
0388385
NGNG0389388==386
NGNG0390デフォルトの名無しさん
NGNGまた遅れた・・
0391デフォルトの名無しさん
NGNG2つの文字列str1、str2を引数として受け取り、両者が同じ文字列の場合に
int 型の 1、異なる場合には 0 を返す関数 str_eq をつくりなさい。
int str_eq(char *str1, char *str2)
{
int hantei=0,i;
for(i=0;i<3;i++){
if(str1[i]==str2[i])
hantei=hantei+1;
else
hantei=0;
}
if(hantei=3)
hantei=1;
else
hantei=0;
return(hantei);
}
こう作ったのですがうまくいきません何が悪いのでしょうか?
よろしくお願いします。
0392デフォルトの名無しさん
NGNG{ return !strcmp(str1, str2); }
0393デフォルトの名無しさん
NGNG突っ込みどころ満載。とりあえず、2つの文字列str1、str2の文字数が3文字だと思ってるようですが、なぜ3文字だと思ってるのでしょうか。それも問題文に定義されてるのん?
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNGまず「文字列」の定義を確認する。
0396デフォルトの名無しさん
NGNGソースから判断するに標準関数は多分使わないんじゃないかと。
0397デフォルトの名無しさん
NGNG正解は、誰か書くだろうからいいとして、プログラム中の 3 ってなんだ ?
あと、うまくいかないなら「どううまくいかないか」書かないとダメだ
よ。みんなそれ見て、君のレベルを推定することができるしね。
0398デフォルトの名無しさん
NGNGあえて言うなら!がイヤーンな感じだが。
0399デフォルトの名無しさん
NGNG{
int c = 0;
while (str1[c] == str2[c]) c++;
return c == strlen(str1);
}
0400デフォルトの名無しさん
NGNGそれだと、str_eq("", "") で、str1[1] を参照して、あぼーんするぞ。
初歩からやり直せ。
0401穴埋め *** & +++
NGNG{
int i;
for(i = 0; *** ;i++)
if( +++ ) return 1;
return 0;
}
0402デフォルトの名無しさん
NGNGなんでこんな、無謀なプログラム書けるのよ。
str1 か str2 の終端まで達しているか確認せずにいきなり比較なんかす
るなよ。あと strlen() 使うぐらいなら、>>392 でいいんじゃねーのか。
0403デフォルトの名無しさん
NGNGint str_eq(char *str1, char *str2){
if(!str1 || !str2) return 0 ;
do{if(*str1 != *str2) return 0 ;}while(*(str1++) && *(str2++)) ;
return 1 ;
}
0404デフォルトの名無しさん
NGNG{
if(strcmp(str1,str2))
return 0;
else
return 1;
}
0405デフォルトの名無しさん
NGNG{
do {
if ( *str1++ != *str2++ ) return 0;
} while ( str1[-1] );
return 1;
}
0406デフォルトの名無しさん
NGNGわざと?
0407デフォルトの名無しさん
NGNGANSI Cだと!0 == 1のはずだし。
0408デフォルトの名無しさん
NGNGint str_eq(const char* str1, const char* str2)
{
return *str1!=*str2 ? 0: *str1 ? str_eq( str1+1, str2+1 ) : 1;
}
0409デフォルトの名無しさん
NGNGstack over flow
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG{
int i = 0;
while(s[i] && p[i])
if(s[i] == p[i])
i++;
else
return 0;
if(s[i] == '\0' && p[i] == '\0')
return 1;
return 0;
}
0412408
NGNG0413デフォルトの名無しさん
NGNGgcc以外は末尾再帰最適化してくれないし。
0414デフォルトの名無しさん
NGNGなにかLISPのような・・・w
0415デフォルトの名無しさん
NGNGありがとうございます。
>>391,397
問題は3文字指定だったのです。
説明が足りませんでした。
>>397
ご指摘のようにどうダメなのか説明します。
これを実行すると違う文字列なのに1の値
しか帰ってこないで0の値が帰ってきません。
0416デフォルトの名無しさん
NGNGreturn str1[0]==str2[0] && str1[1]==str2[1] && str1[2]==str2[2];
0417デフォルトの名無しさん
NGNGだな。
マクロでもできそうな感じ。
0418デフォルトの名無しさん
NGNGint str_eq(const char *s1, const char *s2)
{
return *s1 == *s2 && (!*s1 || str_eq(++s1, ++s2));
}
0420デフォルトの名無しさん
NGNG{
return strcmp(str1,str2)?0:1;
}
これじゃだめなの?
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGありがとうございます。
もしよろしければ私の作った関数は
どこが間違っていたのか教えてもらえないでしょうか?
0424デフォルトの名無しさん
NGNGとっても簡単なケアレスミス
> if(hantei=3)
これ代入してる。
ほかにも問題は無いわけじゃ無いけど、結果には影響しないと思う。
0425397
NGNG> 問題は3文字指定だったのです。
うむ、>>395 の姿勢が正しいということだったな。
> これを実行すると違う文字列なのに1の値
> しか帰ってこないで0の値が帰ってきません。
それは、君が...
> if(hantei=3)
と書いているからだな。上のほうで...
> if(str1[i]==str2[i])
と書いているので、'=' と '==' のミスだろうね。コンパイラはなに使ってる ?
使ってるコンパイラによっては、エラーレベルを設定すると警告してくれるものも
あるから、そう言うのを使うのもいいかも知れない。
0427デフォルトの名無しさん
NGNG問題の意図が「strcmpっぽいのを実装しろ」
って事だからだろ
3文字限定で(藁
0428デフォルトの名無しさん
NGNGと
char *p[] = { "hoge", "hage", "foo", "boo" };
で
上のほうが容量食わないけど、文字列を変更しないなら下のほうがいいのかな?
0429デフォルトの名無しさん
NGNG(゚д゚)ハァ?
0430デフォルトの名無しさん
NGNG消費するスタックのことではないかと。
0431デフォルトの名無しさん
NGNG消費するスタックなら下の方が少ないだろ
0433361
NGNG確かに二重ポインタが正当だけど面倒でしょ?
二次元配列だとでかい配列つくれないし。
小手先で簡単にサイズ可変の行列作れないかなぁと。
既にC++で行列クラス作ってあるから
それ使えば済むんだけどね
0434428
NGNG上は5*4=20
下は5*2+4*2+4*4=34
(ポインタが4バイトのとき)
だと思ったけど違う?
0435デフォルトの名無しさん
NGNGこの宣言が関数内か関数外かどっちだ ? また、気にしているのはスタック領域だ
けか ? 固定文字列領域は気にしなくていいのか ?
0436428
NGNGあと宣言は関数ないかな。
0437デフォルトの名無しさん
NGNGコピー元の文字列分要るだろ。
0438デフォルトの名無しさん
NGNG4*4 ってなんだよ。
0439デフォルトの名無しさん
NGNGスマソ。ポインタのポインタのパターンと錯覚してた。
0440デフォルトの名無しさん
NGNG通常、文字列リテラルはスタックとは別の領域に確保されるが、
charの配列を初期化している場合は文字列定数じやなくて単なる初期化子。
すなわち、
char array[] = "hoge"; /* 宣言と同時に初期化 */
は
char array[] = {'h','o','g','e','\0'};
と同じで5バイト。
これが"配列の配列"になっても同じ。だから
>>434
> 上は5*4=20
で良い。
一方、下はポインターの配列を宣言すると同時に文字列リテラルの
アドレスを代入してるのでスタックにポインター分と書き込み禁止領域に
文字列リテラル分のメモリー消費でイイんじゃない
(処理系に依存すると思うけど)
# const 指定すれば上も変更できないからどっちでもって感じ >>428
0441デフォルトの名無しさん
NGNG下でリテラルを含めるなら、上もリテラルを含めるべきでは?
0442438
NGNGなら、OK。
と言うことで、上は 4 * 5 = 20, 下は 4 * 4 = 16 バイトがスタック
に取られる。後、双方とも 2 * 5 + 2 * 4 = 18 バイト文字列領域が
必要。(正確には、最低限は。VC なんかだと、文字列の先頭アドレスを
4 バイトバウンダリにおいたりするので、パディング分が更に増える。)
0443デフォルトの名無しさん
NGNGん?
よく考えてみな。
5*4 = 20の5は下の文字列リテラルに当たる、文字配列分。
0444デフォルトの名無しさん
NGNGは初期化。
char *array = "hoge";
とするとこれはポインターへのアドレスの代入(==コピー)。
違いワカル?
0445デフォルトの名無しさん
NGNGそーじゃなくて。スタックに確保した5*4を埋める為の
「元の」文字列はどこにあるのよ?
0446デフォルトの名無しさん
NGNG違う。幅が不揃いの配列は作れない。
0447デフォルトの名無しさん
NGNG揃ってるけど・・・
0448444
NGNGchar *array = "hoge";
これも"初期化"なんだけど、ポインターの指し示す先は別にあって、
配列には文字を格納してるって事。
0449デフォルトの名無しさん
NGNGchar *p[] = … は(5+α)*2+(4+α)*2+ボインタのサイズ*4バイトの
領域が用意されるから、char p[][5]の方が、必要なサイズは小さいと思う…。
0450デフォルトの名無しさん
NGNGchar *array = "hoge";
これも初期化だろ。
char *array; array = "hoge";
だったら代入だが。
0451デフォルトの名無しさん
NGNGそれ同じ
0452450
NGNG0453441
NGNGchar str[] = "abcd";と
char *str = "abcd";
の比較と等価なわけだな。
で、下が、ポインタ4+リテラル5なわけ。
上は、配列5+リテラル5なわけ。
なぜかっちゅーと、上は、内部的には
char str[5]; strcpy(str,"abcd");
と等価で、リテラルの"abcd"が
消えて無くなるわけではないから、
0454デフォルトの名無しさん
NGNG何で誰も K&R とか $18 の規格書を引用しないのか。
0455デフォルトの名無しさん
NGNGうそつくな。
こんなもんは実装依存だ
0456デフォルトの名無しさん
NGNG0457長いのでもう一回書きます
NGNGLPSTR Text[7]={
"あああああああああああああああああ",
"いいいいいいいいいいいいいいいいい"
"ううううううううううううううううう",
・・・・・
}
//文字数の調査(文字が長かったら,2行にして表示)
ByteNum=strlen(Text[Seen-1]);
if(ByteNum >= 10){
strncpy(TextLine[0],Text[Seen-1],10);
strcpy(TextLine[1],Text[Seen-1]+10);
}
else{
strcpy(TextLine[0],Text[Seen-1]);
}
0458デフォルトの名無しさん
NGNGうまくいきません。
strncpyで,TextLine[0]にテキストの途中まで入れるのは,あっていると思うんですけど(バグりますけど),
TextLine[1]にTextLine[0]に入れたテキストの続きをどのようにして入れればいいのかわかりません。
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG0461悩みつづけて3ヶ月!
NGNGソフト:Visual C++ 6.0
3次元配列を定義したいのです。
double val[3][100][100];
上記のように定義してコンパイル時にエラー及び警告は出ないのですが、
実行しようとすると、“メモリがwriteになれない”のような警告が出て
実行することが出来ません。
いろいろやってみたのですが、解決法がわかりません。
どうすればうまくいくのか教えてください。
0462デフォルトの名無しさん
NGNGつか、リテラルを書き換えようとするなよ‥‥
0463デフォルトの名無しさん
NGNGメモリを確保しすぎ
0464デフォルトの名無しさん
NGNGそれは、「実行中にエラーが発生した」といって、
「実行できない」とはまた区別するべきでしょう。
原因は「3次元配列の定義」以外の場所にあるでしょう。
がんばってDEBUGするように。
>462
8*3*100*100=240,000byteで確保しすぎかどうかは微妙なところ。
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNGリッチィー先生の画像ハケーン!!
0467デフォルトの名無しさん
NGNGすまんかった
0468デフォルトの名無しさん
NGNGstatic領域に確保すればどうでしょうか?
static double val[3][100][100];
0469458
NGNGはったんあみか
0470デフォルトの名無しさん
NGNG>>462
0471デフォルトの名無しさん
NGNG{
goto mejirushi;
......
mejirushi:
}
というコードに対し、問題なくコンパイルしてくれるgccと、;をつけろと言うVC++6.0はどちらが正しいのですか?
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNG・・・・・。
じゃあ言い直し・・・・
while(1){
goto mejirushi;
......
mejirushi:
}
というコードに対し、問題なくコンパイルしてくれるgccと、;をつけろと言うVC++6.0はどちらが正しいのですか?
0474デフォルトの名無しさん
NGNGつまり「;」をつけろというVCが正しい。
0475デフォルトの名無しさん
NGNGあ、なるほど。
ありがとうございました。
0476デフォルトの名無しさん
NGNGcontinueしないあなたが一方的に悪いです(w
0478デフォルトの名無しさん
NGNGmejirushi:;
なんてことはしないように。
mejirushi:
;
インデントをつけとくのがマナー。
0480デフォルトの名無しさん
NGNG意地を張ってでも使わないのが正解。
0481デフォルトの名無しさん
NGNG適切につかうべし。
>>480
アホは去れ
0482悩みつづけて3ヶ月!
NGNG配列確保が出来るかどうかを確認するために以下のプログラムをコンパイルすると
当然のことながらdを使っていないという警告がでますが、エラーはでません。
#include<stdio.h>
void main (void)
{
int a=1;
double val[3][100][100];
printf("%d\n",a);
return ;
}
しかし、実行すると>461のようになってしまいます。
Cマスターの方々、どうか解決策をお願いします。
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG3ヶ月も悩みなさんな。
>>468にもあるが、取り敢えず
static double val[3][100][100];
でやってみてくらさい。
ダメなら次善の策をうpするから。
0485デフォルトの名無しさん
NGNG当方も、Win2000 VC6Sp5ですが、そのプログラムは
無事に実行されましたが。
0486デフォルトの名無しさん
NGNGスタック上にそんなでかいローカル変数を作ってはだめ。
double = 8byte なので 8*3*100*100 = 240KB 近くのサイズがある。
>>484の言うとおり、staticにするか、グローバル変数にしましょう。
デバグ用ならば #ifdef などを使って、必要なときだけ組み込む。
0487悩みつづけて3ヶ月!
NGNGすみませぬ。
double val[3][300][300] ; の間違いでした。
>484
static を使って定義したらうまく実行できました。
けれども、どうして実行できなかったのでしょうか?
0488悩みつづけて3ヶ月!
NGNGそうなんですか。
240KBくらいならいいのかと思っていました。
これで一度プログラムを組んでみます。
ありがとうございました。
0489デフォルトの名無しさん
NGNGスタック領域はCコンパイラにもよるが、デフォルトで64KB〜256KB程度。
オプションで設定すればもっと取れる。
でもこの中にはプログラムカウンタの情報や戻り値など、各種のデータを
入れるので、キツキツの使い方は危険。
staticはスタック領域ではなく、グローバル領域、もしくはヒープ領域に確保
されるので、スタック領域とは無関係にかなりの大きさを確保できる。どれ
位大きく確保できるかは、処理系依存。
0490デフォルトの名無しさん
NGNGそんなことだから、超FAQのくだらねーことで悩むんだよ。このバカチンが。
いいか。自動変数は、VC++の場合はスタックに確保され、スタック領域は、デフォルトで1MB。
このばあい、valは約2MBなので「スタック使いすぎだぞ(゚Д゚)ゴルァ!」とWindowsが怒る。
staticにすると、メモリが別の場所で確保されるる。また、静的変数を格納する領域は、
スタックより広い。
0491悩みつづけて3ヶ月!
NGNGそうだったんですか・・・!
いやぁ、助かりました。
私は、全くのプログラミング音痴(言語痴)なので!
本当にありがとうございました。
また分からないことがあったら、そのときはまた宜しくお願いします。
0492デフォルトの名無しさん
NGNGVC++はデフォルトで1Mバイトですか。Borland-C++も1Mバイトですね。
これらの設定はリンカオプションで指定できますね。
0493悩みつづけて3ヶ月!
NGNGちんぷんかんぷんな質問なのかもしれないのですが、
グローバル領域に確保できる変数領域っていうのはメモリの空き容量だけいけるのですか?
メモリが256MBならば、100MB程度は大丈夫とか!?
0494デフォルトの名無しさん
NGNG理論上、2GBまで
0495デフォルトの名無しさん
NGNG人に聞く前に自分で試してみろ。
実メモリは関係ない。スワップするだけだ。
0496デフォルトの名無しさん
NGNG仮想記憶という言葉をご存じかな?
もちろん実メモリが多ければ多いほど、ディスクスワップの頻度が減る。
フォトレタッチソフトをガンガン使う人がメモリ多く積むのはそのせい。
0497悩みつづけて3ヶ月!
NGNGごもっともです。すみませぬ。
>>496
仮想メモリですよね!?
意味はわからないのですが聞いたことはあります。
スワップというのは、ハードディスクとメモリ間のデータの行き来のことを意味しているんですよね!?
0498デフォルトの名無しさん
NGNG「トータルイメージサイズが最大値 (268435456) を越えています」
とおこられます。
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501悩みつづけて3ヶ月!
NGNGメモリ:512MB
CPU:Duron 850MHz
ソフト:Visual C++
0502デフォルトの名無しさん
NGNG>>498 = >>485 なんてお前にしかわかんないだろうが、バカ。
malloc() 使えや。
0503デフォルトの名無しさん
NGNG相手の環境はどんなものだったんだろ。
私は1MBも取ったら取りすぎだと思うけど。
0504デフォルトの名無しさん
NGNGUnix だったら、いいんじゃない ? (自動拡張するからねぇ...。)
0505デフォルトの名無しさん
NGNGメモリなんか何百MBも積んでて一部ではGBにも突入している今の時代。
まぁいいんでないかねぇ。
0506デフォルトの名無しさん
NGNG可読性や実行速度で問題がなければいいんだろうけど、
自動変数として数十MB使うってのはやっぱり妙な気分がするな。
0507デフォルトの名無しさん
NGNG1MBを越えるようなら作りを考えろ、と言っていたな。
10年くらい前に。
0508デフォルトの名無しさん
NGNG>>502
お前の人間部分は失格。
0509デフォルトの名無しさん
NGNGまぁまぁ、マターリしようよ。
>>499 も、出来れば >>498 へのポインタつけてほしいな。
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNGリンクする際にスタックサイズは固定されてしまいます。
0512デフォルトの名無しさん
NGNG>概して、たった数メガしかメモリを使わないなら、メモリの使用を減らす努力を 行うことに悩まないように。
(GNU coding standard邦訳より)
0513デフォルトの名無しさん
NGNGデフォルトでは1MB分のメモリ空間が確保されていて、そこまでは自動的に拡張されます。
1MBを超えられる保証はありませんが、隣接するメモリが空いていれば拡張されます。
デフォルトの確保サイズは変更することができます。
0514デフォルトの名無しさん
NGNGそれって、
char a[100];
と書いて、a[200] = '\x1a'と書いて、
たまたまa[200]が使われてなかっただけとか言うのと同じ事?
0515デフォルトの名無しさん
NGNG> 1MBを超えられる保証はありませんが、隣接するメモリが空いていれば
> 拡張されます。
これほんとか ? 隣接するメモリってなんだ ? とりあえず仮想空間って
言葉を理解してから喋ってくれ。
0516デフォルトの名無しさん
NGNG>>513が正しい。仮想空間は1MB確保されていて、最初は確か4KBコミットされてるはず。
コミットができることが保証されるのは最初に確保した1MBまでで、そこから先は
隣接する仮想メモリ空間が *空いていれば* (reserveされていなければ)
伸びる。
0517デフォルトの名無しさん
NGNGVB用のDLLをBCCで作ろうとしているのですが、うまくいきません。
「DLL内に関数 "test"がありません。」 てな感じにVBに突っ込まれます。
あちこち巡って見たのだけど、VC向けの方法ばかりで、困ってます。
基本的にVCと同じ手順でやってみたのですけど・・・。
例えば、VBから a, b を受け取って a+b を返す関数をDLLに作る場合、
どう書けばVBから使えるでしょうか?
0518デフォルトの名無しさん
NGNGDQN++VCD//#$
0519デフォルトの名無しさん
NGNGスレ違いだが、エクスポートするときの名前の問題じゃなかった?
0520デフォルトの名無しさん
NGNG同意。
クイックビューアとかmapファイルで確認。
後、stdcallしてないとか。
0521デフォルトの名無しさん
NGNG>隣接する仮想メモリ空間が空いていれば
これはMMUの動作を知っている人が見ればおかしな
表現だ。一体どういうことか説明せよ
0522517
NGNG__stdcall を関数名の前につけるのは聞いたことあります。
てか、どこぞでは「WINAPI」と書けとあったのでそう書いてたんですけどね。(同じこと?)
クイックビューア、昔は右クリックしたら出たのに最近見ないな…。
0523デフォルトの名無しさん
NGNGたまたま知ってるからって偉そうになるなよ
0524デフォルトの名無しさん
NGNGなっちゃったものはしょうがない
0525デフォルトの名無しさん
NGNGマターリマターリ(;´ー`)
0526とおりすがり
NGNGそのスタックを使っているプロセス自身が拡張先のアドレス空間を使ってしまっていることも
あるってことじゃないの?
プロセス内から見えるアドレス空間は仮想メモリ空間とはいわないのか?(教えて偉い人)
0527デフォルトの名無しさん
NGNG割り当てられているアドレス空間すべてに
仮想メモリが割り当てられているとは限らない。
0528デフォルトの名無しさん
NGNGもちろんアプリケーションから見えるアドレス空間は仮想メモリ空間。
>そのスタックを使っているプロセス自身が拡張先のアドレス空間を
>使ってしまっていることもあるってことじゃないの?
空いている物理アドレスにリニアアドレスを
割り当てるわけだからその意味が分からない。
>>527
??。仮想メモリ空間というのは論理メモリ空間のことだよ
0529515
NGNGその情報のソース希望。
Windows は知らないのだが、普通の OS は Heap は上から、Stack は下から
取っていって、ぶつかったら「メモリーがねぇぞ」とかいう風に実装すると思う。
大体今時の 32bit プロセサなら最低 1GB 程度のアドレス空間をプロセスに割り
当てているはず。
で、知りたいのは、「そこから先は隣接する仮想メモリ空間が *空いていない*」
状態ってどういう状態かを教えてくれ。
0530526ではない
NGNGここのリニアアドレスってどういう意味?x86用語でリニアアドレスというのが
あるのは知っているがそれだと話があわない。
>>529
SPARC版SolarisなんかではHeapとStackの間に共有ライブラリの空間を置い
たりするみたいですよ。ソースは『Solaris Internals』P.137。Intel x86版
Solarisはテキストの低位側にスタックを置くようです。なんでこんなふうに
するんだか。。。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG知ったか厨は、でてくんな。
0533デフォルトの名無しさん
NGNGC言語の話か?
0534デフォルトの名無しさん
NGNG知らない厨は、でてくんな。
0536デフォルトの名無しさん
NGNG0537ロートル
NGNG1Gちかくスタック領域のところまでメモリをmalloc等で確保されてんだろうもちろん。
NTだと予約されたページでもアクセスされるまでは物理メモリ割り当てられないから
1G物理メモリなくてもそういう事はできる。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGスワップファイルの容量不足を別けて考えられない人のスレッドはここですか?
0540デフォルトの名無しさん
NGNGそんなのは明らかに環境依存の話だからです。
漏れのターゲットなんてスタック10KB無ぇよヽ(`Д´)ノウワァァン!!
KB単位で取れるだけ、かなり恵まれてはいるんだが。
0541515
NGNGやって見りゃわかると思うけど、malloc() なんか全然つかってなくっても、ス
タックに 1MB 程度取ると、エラーになるんだよね。まあ、printf() とかは
使ってるからヒープの使用量が 0 とは言わないけど、1GB なんてとても考えら
れないよ。
だから、>>516 のソース希望って書いてんのよ。
ちなみに、「予約されたページでもアクセスされるまでは物理メモリ割り当てら
れないから1G物理メモリなくてもそういう事はできる。」って言うのはおかし
い。Over commit について言ってんだろうけど、Over commit してない OS で
も「仮想記憶」をサポートしてたら、そう言うことはできるよ。できないのは、
1G の仮想メモリがない場合だよ。
0542デフォルトの名無しさん
NGNG横からごめん。
>>529で、Windowsは知らんって言ってるけど
VC++って、Windows以外にも対応してるの?
0543542
NGNG1年弱2chから離れてたから分からないけど
最近では、スレが違っても、あまり気にしないの?
これが最近の流行なら仕方ないが、そうでないなら
続きは、好きな所に行ってやって下さい。
VisualC++相談室
http://pc.2ch.net/test/read.cgi/tech/1017843192/
□□□VC 初心者質問スレ 2□□□
http://pc.2ch.net/test/read.cgi/tech/994129650/
C++相談室 part6
http://pc.2ch.net/test/read.cgi/tech/1018454705/
0544デフォルトの名無しさん
NGNGC++相談室は違うだろ
0545デフォルトの名無しさん
NGNGそれより知ったか君がうざい
0546デフォルトの名無しさん
NGNG解説キボン
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNG書き込みアクセスしたら物理ストレージを割り当てればいいと思う
0550515
NGNGすまそ。スレ違いは、認識してんだが >>545 が言うように適当なスレなく
て。OS 板かなぁ...。
> VC++って、Windows以外にも対応してるの?
は、知ってて聞いてんだよね ?
>>546
ttp://www.asia.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpwinpf/_win32_virtualalloc.htm
あたりを読むと、いいかも...。
>>549
誰に対するレスなの ?
0551デフォルトの名無しさん
NGNGVC++はセグメントの中央から両端に向かって伸びる。
0552デフォルトの名無しさん
NGNG・・・・・・・・・
}
このwhile文から抜け出すには、\nを実行中に入力すればいいんですよね?
でも、いくら\nと入力しても抜けれません
0553デフォルトの名無しさん
NGNG「\」「n」 と入力するんではなくて、\n は改行のことなので、エンターキーを押せばいいのじゃ。
・・・ネタ?
0555デフォルトの名無しさん
NGNGネタではありません 助けて
0557デフォルトの名無しさん
NGNG>>552
fgets は改行の後に'\0'を入れて、文字列にします。
$ abc[return]
と入力すると、バッファーには
'a','b','c','\n','\0'
と格納される。
だから >>552 だと、入力がある限りいつまでたっても抜けられない。
抜けるには プロンプトから EOF 打ち込むか、
while ループの中で何か条件つけるとかしないと。
>>553
面白くない。
0558デフォルトの名無しさん
NGNGstdinが指すファイルの終わり(EOF)を検知したとき。
stdinが標準入力だとすると、EOFは検知することはないような気が・・・・・
0560デフォルトの名無しさん
NGNGhttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/fgets.3.html
fgets()の仕様。よく読んでおいて。
0561デフォルトの名無しさん
NGNGDOSなら CTRL+Z
UNIXなら CTRL+D
でEOFのような気がするけど、試してない。すまん。
0562522
NGNGなにか条件をつけてループを抜ける事にします
0563デフォルトの名無しさん
NGNG0564522
NGNGvisualC++を使っているのですがCTRL+Zだとプログラムそのものが
終わってしまいます
0565デフォルトの名無しさん
NGNGんなこたーない。
0567デフォルトの名無しさん
NGNGMS-DOS系統のOSは(Winも含めて) EOF は ctrl-z です。
ちなみにNT
0568566
NGNG勘違いしました。
>>563 >>565 が EOF がわからないって言う話ではないのね。ゴメン。
>>522
fputs 等でコンソール上に出力するだけだったら、
EOF の入力と同時にプログラムが終了する場合もあります。
いっそのことソースコード出してみては?
0569デフォルトの名無しさん
NGNG>>522 よ、お前は >>552 ではないのか・・・?
0571デフォルトの名無しさん
NGNGがある関数の中だけ、例外と違反のエラーを
かえすんだけど、その原因はなんだったっけ?
前にも一回あって解決したんですけど忘れてしまいました。
szstr = のところに原因はないっす。
とりあえずszstr = とりのぞいてもエラーはでるっす。
static とか関係あったんだっけかな・・・・
0572デフォルトの名無しさん
NGNGmallocの引数は?
0573デフォルトの名無しさん
NGNGだめだったよ。
0574デフォルトの名無しさん
NGNGとある関数って言われてもわからない。
0575デフォルトの名無しさん
NGNGの中で自作関数GetAHref(){
lpszlist = szlist;(ポインタのポインタ)
....
*lpszlist = (char *)malloc(nlen +1);
lpszlist ++;
}
を呼んでる。
わけわかんないからとえあえず
char **szlist;
をグローバルで宣言。
0576デフォルトの名無しさん
NGNGszlistはmallocなどで初期化されているよね?
0577デフォルトの名無しさん
NGNG(というか、"*lpszlist = "の部分抜かしても
やっぱりmalloc関数自体エラー返すから。)
0578デフォルトの名無しさん
NGNGどういう風に初期化したの?
そこだけコードをみせてくれない?
0579578
NGNGそれは単にメモリーの確保に失敗しただけなんじゃ・・・・
0580デフォルトの名無しさん
NGNG.......
case WM_INITDIALOG:
szlist = (char **)malloc(256);
ZeroMemory(szlist,256 * sizeof(char **) );
..........
case FD_CLOSE:
GetAHref();(szlistはグローバルだからここでは引数として与えてない)
break;
・・・・まずいかな。
0581デフォルトの名無しさん
NGNGNULLを返すんじゃないんだよ。
NULLさえ返さず失敗してページ違反エラー返すの。
MessageBox();でチェックしたから。
0582デフォルトの名無しさん
NGNGあ、やっぱり・・・・
szlist=(char **)malloc(sizeof(char **)*256);
こうでしょ。
ポインターひとつが1バイトだとは思えないし。
多分ZeroMemory()でアクセス違反が起きているはず。
0583デフォルトの名無しさん
NGNG結局同じ事だけど正確にはこうじゃないの?
szlist = (char **)malloc(sizeof(char *) * 256);
0584デフォルトの名無しさん
NGNG生きてるってなんですかーーーーーーーああ
>582
もうこれだからやだよ・・・・・
static とか未だによくわかってないから
自信なくて自分で答え出せないんだよな
・・・
さんきゅー。
(ZeroMemory()のとこでは明示的にアクセス違反が
表示されないのが味噌だよな・・・)
0585デフォルトの名無しさん
NGNGあ、、、
0586デフォルトの名無しさん
NGNGstaticとかじゃなくて単に確保したメモリーの量が少なかっただけ。
charは1byteだから普通はsizeof〜は書かないけど。
0587デフォルトの名無しさん
NGNGまあ、ヘタレのいじれる環境では、結局おなじことだけど。
0588デフォルトの名無しさん
NGNG俺もあ、と思ってもどってきた。
0589デフォルトの名無しさん
NGNGはぁ?
何を指そうがポインタはポインタだろ。
だからこそvoid *なんてものが実現するわけだし。
0590デフォルトの名無しさん
NGNG勉強不足だな。
ポインタはある特定のアドレスを指し示す変数だから、
ポインタへのポインタもポインタだよ。
0591デフォルトの名無しさん
NGNG私のために喧嘩しないで☆
0592デフォルトの名無しさん
NGNG大きさが違うことはあり得るよ。
DOSのプログラムとか。
まあ、この場合はたぶん大丈夫だろうが。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG一次配列の方が使用頻度が高いから
sizeof(char **)<sixeof(char *)
だろうね。
char **はそんなつかわないから
大きい数字必要ないっしょ。
(591)
0595デフォルトの名無しさん
NGNGbit数がどう関係あるんだ?
0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG同じシステムではポインタのサイズは何を指そうが同じだと言っているんだよ。
0598デフォルトの名無しさん
NGNG一般的な32bit環境のコンパイラはすべてのポインタが32bit=4byteだから。
それ以外の環境は見たこと無い。
64bit環境だと32/64bitポインタ混在だったりする。
gccのvoid*型が64bitで、型へのポインタが32bitだったり
0599デフォルトの名無しさん
NGNGなんのメリットがあるの?
0600デフォルトの名無しさん
NGNG俺に聞くな
0601デフォルトの名無しさん
NGNGまあそうだけど。。。
わけわからん・・・・void *なら指せても、char *なら指せない領域ができるってことだよね?
0602デフォルトの名無しさん
NGNGhttp://www2.airnet.ne.jp/pak04955/ramble-199912.htm
>ポインタ変数の大きさはintの大きさと同じではない。現状sizeof(int) = 4, sizeof(void*) = 4の環境が多いが,64bit環境ではsizeof(int) = 4, sizeof(void*) = 8となる場合がある。
0603デフォルトの名無しさん
NGNG誰もそんなこと言っていないぞ。誤爆?
0604デフォルトの名無しさん
NGNG一番上の条件でググって、上から3番目の貼り付けたリンクに、
引用部分の記述があるぞ
0605デフォルトの名無しさん
NGNGそういう意味じゃなくて、
このスレの誰もがそんなこと言っていないと言ったの。
0606デフォルトの名無しさん
NGNGint main(void){
printf("sizeof(char *): %d\n", sizeof(char *));
printf("sizeof(int *): %d\n", sizeof(int *));
printf("sizeof(float *): %d\n", sizeof(float *));
printf("sizeof(double *): %d\n", sizeof(double *));
printf("sizeof(void *): %d\n", sizeof(void *));
printf("sizeof(char **): %d\n", sizeof(char **));
printf("sizeof(int **): %d\n", sizeof(int **));
printf("sizeof(float **): %d\n", sizeof(float **));
printf("sizeof(double **): %d\n", sizeof(double **));
printf("sizeof(void **): %d\n", sizeof(void **));
printf("sizeof(char ***): %d\n", sizeof(char ***));
printf("sizeof(int ***): %d\n", sizeof(int ***));
printf("sizeof(float ***): %d\n", sizeof(float ***));
printf("sizeof(double ***): %d\n", sizeof(double ***));
printf("sizeof(void ***): %d\n", sizeof(void ***));
.
.
.
return 0;
}
0607デフォルトの名無しさん
NGNGどうでもいいが%uにすべき。
0608デフォルトの名無しさん
NGNGvoid main (void)
{
double lex,let,rix,rit,x,tei,answer;
printf("左辺のxの係数を入力して下さい\n");
scanf("%d",&lex);
printf("左辺の定数を入力して下さい\n");
scanf("%d",&let);
printf("右辺のxの係数を入力して下さい\n");
scanf("%d",&rix);
printf("右辺の定数を入力して下さい\n");
scanf("%d",&rit);
x=lex-rix;
tei=rit-let;
answer=tei/x;
printf("方程式の解 x=%.2f\n",answer);
}
これコンパイルするとエラーがでるんです。
超初心者なのでなにも分かりません。
どこが間違ってるのかおしえてください。
0609デフォルトの名無しさん
NGNG普通は同じでしょう?
0610デフォルトの名無しさん
NGNG%dは整数型のみ。
double型なら%lf
float型なら%f
0611610
NGNG0612デフォルトの名無しさん
NGNGだからそのエラーを書けよ。
たとえコンパイルできても%dはやめといたほうがいいぞ。
0613デフォルトの名無しさん
NGNGdoubleならlfだったキブーン
0614デフォルトの名無しさん
NGNGvoid main (void)
{
int lex,let,rix,rit,x,tei,answer;
printf("左辺のxの係数を入力して下さい\n");
scanf("%d",&lex);
printf("左辺の定数を入力して下さい\n");
scanf("%d",&let);
printf("右辺のxの係数を入力して下さい\n");
scanf("%d",&rix);
printf("右辺の定数を入力して下さい\n");
scanf("%d",&rit);
x=lex-rix;
tei=rit-let;
answer=tei/x;
printf("方程式の解 x=%d\n",answer);
}
このように最初の宣言をdoubleからintに変更したのですが
COMMAND.COM /C BCC32.EXE 一次方程式の解.c
*** コンパイル開始 ***
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
一次方程式の解.c:
エラー E2206 一次方程式の解.c 17: 不正な文字 ' ' (0x8140)(関数 main )
*** 1 errors in Compile ***
*** コンパイル終了 ***
となってしまいます…
0615デフォルトの名無しさん
NGNG全角スペースを入れていないか?
0616デフォルトの名無しさん
NGNGそりゃ、全角のスペースが17行目に入ってる罠。
0617デフォルトの名無しさん
NGNGまさかとは思うが、その最後の } の前の全角スペースは、
コピーミスじゃなくて、オリジナルにもついてるのか?
0618615
NGNG0619デフォルトの名無しさん
NGNGその可能性はあります。
探してみます
0620デフォルトの名無しさん
NGNG最後の } の前に全角空白はいってるのが駄目。
コメント以外で全角文字つかっちゃ駄目だよ。
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG文字列定数ならOK
0623デフォルトの名無しさん
NGNG次からは気をつけます。
0624デフォルトの名無しさん
NGNG思いっきり全角スペースが一番最後に入ってるやんけ
C/C++は全角文字は入れちゃだめなのよ、文字列とコメント以外はね
0625デフォルトの名無しさん
NGNGスマソ。ころっと忘れてた(w
0626624
NGNG結論は 609 さんが正しい気がする
http://www.catnet.ne.jp/kouno/c_faq/c5.html#17
0628デフォルトの名無しさん
NGNGvoid main (void)
{
float lex,let,rix,rit,x,tei,answer;
printf("左辺のxの係数を入力して下さい\n");
scanf("%f",&lex);
printf("左辺の定数を入力して下さい\n");
scanf("%f",&let);
printf("右辺のxの係数を入力して下さい\n");
scanf("%f",&rix);
printf("右辺の定数を入力して下さい\n");
scanf("%f",&rit);
if(lex!=rix)
{
x=lex-rix;
tei=rit-let;
answer=tei/x;
printf("方程式の解 x=%.2f\n",answer);
}
else if(let==rit)
{
printf("解は全ての実数\n");
}
else
{
printf("解なし\n");
}
printf("終了します。Enter キーを押してください。");
rewind(stdin);
getchar();
return 0;
}
整数から実数に拡張するためintをfloat、%dを%fに変更したのですが
どんな数値を入れても解が0.00になってしまいます…
何がおかしいのでしょうか?
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG実数の場合は==や!=で同じかどうか判断するのはやめた方がいいみたい。
もっとも、この問題には関係ないけど。
0631デフォルトの名無しさん
NGNGそういうの作るときはさ、
入力受け付けた後にその値を一度出力してみるんだよ。
0632デフォルトの名無しさん
NGNGそうだけど、指し示すものによって大きさを変えるひねくれた環境もあるんだってさ。
0633デフォルトの名無しさん
NGNG>>631で言われたとおりにやってみます。
0634デフォルトの名無しさん
NGNGそうだよ。
だけど、アドレス幅は型に依存する。
0635デフォルトの名無しさん
NGNG%fでなくて、%lf。
0636デフォルトの名無しさん
NGNGfloatなら%fだよ。
%lfはdouble
0637デフォルトの名無しさん
NGNGfloatだから%fでいいんでない?
0638デフォルトの名無しさん
NGNGvoid main (void)
{
float lex,let,rix,rit,x,tei,answer;
printf("左辺のxの係数を入力して下さい\n");
scanf("%f",&lex);
printf("左辺の定数を入力して下さい\n");
scanf("%f",&let);
printf("右辺のxの係数を入力して下さい\n");
scanf("%f",&rix);
printf("右辺の定数を入力して下さい\n");
scanf("%f",&rit);
/* printf(" %f %f %f %f\n",lex,rix,let,rit);*/
if(lex!=rix)
{
x=lex-rix;
tei=rit-let;
answer=tei/x;
printf("方程式の解 x=%.2f\n",answer);
}
else if(let==rit)
{
printf("解は全ての実数\n");
}
else
{
printf("解なし\n");
}
printf("終了します。Enter キーを押してください。");
rewind(stdin);
getchar();
return 0;
}
>> printf(" %f %f %f %f\n",lex,rix,let,rit);
この行を追加したらなぜか上手くいったので
コメントにしてみたらやっぱり上手くいきました。
こんなことってあるのでしょうか
0639デフォルトの名無しさん
NGNGコンパイル忘れて古いファイルを実行してたとかね。
無いことは無い。
0640デフォルトの名無しさん
NGNGそういえばなんでrewind(stdin)しているの?
0642デフォルトの名無しさん
NGNG作成されたexeファイルをダブルクリックで実行すると処理が終わった瞬間ウィンドウが
閉じてしまうのでそれを防ぐために入れています。
>>639
僕がうっかりしていたという以外の理由はないのでしょうか?
0643640
NGNGそれはgetchar()でしょ?rewindはいらない。
0645デフォルトの名無しさん
NGNGホームページで「意味が分からないならとりあえずそのまま書き込んでおけ」
というような感じだったのでそのままコピペした部分もあります。
だからどういう意味なのか良く分からないという部分が結構あるのです。
0646デフォルトの名無しさん
NGNGそのホームページはどこ?
と、祭を誘ってみるテスト。
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNGC99ではそうなったのか?C89ではそんなことないぞ。
C89ではアライメント制限以外に制限無し。char*, void*に入れて戻せないポイ
ンタは無い。ただし関数へのポインタを除く。
0649教えて君です
NGNGwin2000でも動くやつでいいやつどなたか知りませんか?
98SEをゲストOSで使うの飽きちゃって、
どなたか教えてください。
0650デフォルトの名無しさん
NGNGhttp://www.borland.co.jp/cppbuilder/freecompiler/
FAQ だぞ。
0651デフォルトの名無しさん
NGNGOS関係あるのか?
とりあえず Borland C++ Compilerがフリーだからそれでも使っとけ。
0653デフォルトの名無しさん
NGNGどちらかというと2000などのNT系でよく使われているぞ。
つまり仕事でな。
0654デフォルトの名無しさん
NGNGそれはWin2kの所為じゃなくて、あんたの環境の所為
0655デフォルトの名無しさん
NGNGお願いだからそんな恥づかしい読み方しないでくださいw
エフエーキューって俺は読んでるけど…
俺は2000でVC6動いてるよ。SP5にした?
OS再インストール…ってわけにはいかないかねw
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGmonadazo(eyei);
}
else{
monajyanee(utudazo);
}
ahya -> BltFast(0,0,---,---,DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
と
if(mona == YES) monadazo(eyei);
else monajyanee(utudazo);
ahya -> BltFast(0,0,---,---,DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);
どちらが可読性がありますか?
0658デフォルトの名無しさん
NGNG俺もそう読んでいる。
0659デフォルトの名無しさん
NGNG改行しているから上
0660デフォルトの名無しさん
NGNGガーン…
大学の研究室に女の子いるから絶対そんな風には言えん…
>>657
tabが反映されなくてどちらも読みづらい罠
0661デフォルトの名無しさん
NGNGif と { が同じ行だから上も駄目。
0662デフォルトの名無しさん
NGNG今は前者を推奨しているケースが大多数
0663デフォルトの名無しさん
NGNG女の子もファッキューと読んでいます。
0664デフォルトの名無しさん
NGNG関数以外は同じ行でないと読みにくい。
0665デフォルトの名無しさん
NGNGオレもふぁっきゅー上。
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG俺的それは無い。
if
}
while
}
switch
}
てな感じじゃないと嫌。
0668デフォルトの名無しさん
NGNGサンクス
これから会社行って直してくる
0669デフォルトの名無しさん
NGNGif(mona== YES) {
monadazo(eyei);
} else {
monajyanee(utudazo);
}
ahya->BltFast(0,0,---,---,
DDBLTFAST_SRCCOLORKEY| DDBLTFAST_WAIT
);
0670教えて君です
NGNG0671デフォルトの名無しさん
NGNG>>670
だね。2000はSP2までだと思う。
あとVC++のSPも当てておくのが吉かと。
0672デフォルトの名無しさん
NGNGVC++6.0のことだろ(ワラ
0673あ
NGNG”関数は値を返すべき”
というエラーがでます。
どっかおかしいでしょうか?
#include <stdio.h>
/*fahr = 0,20,40・・・・・・・300に対して、摂氏ー華氏対応表を印字*/
main()
{
int fahr, celsius;
int lower, upper, step;
lower = 0; /* 温度表の下限 */
upper = 300; /* 上限 */
step = 20; /* 刻み */
fahr = lower;
while (fahr <= upper) {
celsius = 5 * (fahr - 32) / 9;
printf ("%d\t %d\n",fahr,celsius);
fahr = fahr + step;
}}
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNGmain関数の戻り値の型が省略されているからint型の値を返すべき。
0676デフォルトの名無しさん
NGNG返り血を明示的に指定しない関数はint型とみなされます。
基本だろ…。
0677デフォルトの名無しさん
NGNG}}
がすげーやだ。
0678あ
NGNGってのが良く意味分からないんですが・・・・・・・・・
0679デフォルトの名無しさん
NGNG警告とエラーの区別くらいはつけような。
0680デフォルトの名無しさん
NGNGmain()の中の好きな場所にreturn 0;とでも書く。
0681デフォルトの名無しさん
NGNGchar func()はchar型を返すでしょ?
この型を省略して、func()と書くと戻り値の型がint型とみなされて、必ずint型の値を返さなければならなくなるの。
戻り値を持たないのならvoid func()とかく。
とりあえず最後の行にreturn 0;と書いておけ。
0682デフォルトの名無しさん
NGNG勉強不足。
本読んで意味がわかるようになってから質問してください。
0684あ
NGNG0685デフォルトの名無しさん
NGNG鬼だ・・・
>>681
}}になってるから、最後の行に書いても悲惨なことに・・・
0686デフォルトの名無しさん
NGNGそれK&Rの11ページだろ
明日本屋逝ってもっと薄いCの入門書買ってこい
0687あ
NGNGをそのまま写したのですが、駄目なんですね。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGあー、本当にreturnがないねぇ・・・・・
0690デフォルトの名無しさん
NGNG第二版はANSI準拠だが・・・・
0691デフォルトの名無しさん
NGNGやけに日下部が進めるから今度買おうと思ったのに・・・
0692デフォルトの名無しさん
NGNGたとえば166ページ。
0693デフォルトの名無しさん
NGNGそうなのか。じゃあ>>673が持ってるK&Rは年代物なんだな。
0694デフォルトの名無しさん
NGNG第二版だけどはじめの方に載っているサンプルはreturn 0していなくて、後の方に載っているサンプルはしている。
0695デフォルトの名無しさん
NGNG辞書として一冊はもってたほうがいい。
ただ、K&Rだけで勉強しようとするとつらいので、
K&Rオンリーってのはお薦めできない。
0696デフォルトの名無しさん
NGNGいえてる。
私は他の本で勉強した後に間違って覚えたことや無駄なことを直すためにK&Rを読んだ。
0697デフォルトの名無しさん
NGNG言語の開発者の思想書だと思って、
書き方のスタイルとか、標準ライブラリの実装法とか、
そういう「ココロ」を汲みながら読むのが正しいだろう。
K&Rの例題くらいはきちんとやっておけよ。
別売りの本まで買って答え合わせする必要はないが。
0698686
NGNGおっと、スレ違いになるからこれ以上書かないけど
K&Rが悪いんじゃないぞ
あまりに >>673 が勉強しなさ過ぎるから書いただけだぞ。
「main関数ってナニ」って状態でいきなり2chに聞くなゴルァ
ってこった。
0699デフォルトの名無しさん
NGNGって遅いか(w
0700691
NGNG第2版が最新だよね(1のリンク先より)。
なぜ『ホーキング、未来を語る』と”あわせて買いたい”のかは謎だが・・・
いや実際読みたいけどさ、ホーキング。
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG省略は int アドレスも int 。
{も1文なら省略って、暗号みたいだた。
0704デフォルトの名無しさん
NGNGgotoを使えばいいんでしょうか?
本来ならそういうループ構造にしないのが一番いいんでしょうけど(−−;
0705デフォルトの名無しさん
NGNG質問はageで。
gotoかフラグ変数で。
0706705
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGreturn
0709デフォルトの名無しさん
NGNGちょっと待て(笑)
void* から任意へのポインタへの型変換とその逆は保証されてるっていうのは
アドレス幅が違う場合は処理系がうまく動くように補正してくれるよって
ことで、幅が同じじゃなきゃいけないとかは保証されてないと思うよ。
つまりunsinged longとかでポインタをキャストして無理矢理計算するみたいなやりかたはダメなはず
でも漏れは厨房なのでアライメント制限の意味がわかりません。
0711デフォルトの名無しさん
NGNGそれ以外の型は規定されていないというだけじゃないか?
0712デフォルトの名無しさん
NGNGCのソースファイルを
コマンドプロンプトで
コンパイルして実行しようとすると、
ファイルを開くアプリケーションの選択
っていうウィンドウが出てくるんですけど、
どうしたら上手く実行できるのでしょうか。
ちなみにコンパイラはボーランドのフリーのコンパイラを使っています。
0713デフォルトの名無しさん
NGNGそんなはずはないよ。
そのコンパイラが出力するファイルは*.exeのはずだからそのまま実行できるはず。
0714デフォルトの名無しさん
NGNGとりあえず、K&Rの242ページから読んでみろ。
0715デフォルトの名無しさん
NGNGム板で質問する以前の問題だな。どっか初心者板逝け。
0716デフォルトの名無しさん
NGNG#include<stdlib.h>
void main(main)
{
int s,i,x,s1=0,s2=0,s3=0,s4=0,s5=0,s6=0;
float d1,d2,d3,d4,d5,d6;
printf("サイコロを振る回数を決めてください。\n");
scanf("%d",&s);
for(i=1;i<=s;i++)
{
x=(int)(6*(rand()/32767.1)+1);
printf("%d ",x);
switch(x){
case 1:s1++;break;
case 2:s2++;break;
case 3:s3++;break;
case 4:s4++;break;
case 5:s5++;break;
case 6:s6++;break;
}
}
printf("\n");
printf("%d回振った結果1は%d回、2は%d回、3は%d回、4は%d回、5は%d回、6は%d回出ました。\n",s,s1,s2,s3,s4,s5,s6);
d1=(float)(s1*10000/s);
d2=(float)(s2*10000/s);
d3=(float)(s3*10000/s);
d4=(float)(s4*10000/s);
d5=(float)(s5*10000/s);
d6=(float)(s6*10000/s);
d1=d1/100;
d2=d2/100;
d3=d3/100;
d4=d4/100;
d5=d5/100;
d6=d6/100;
printf("1は%.2f%2は%.2f%3は%.2f%4は%.2f%5は%.2f%6は%.2f%です。\n",d1,d2,d3,d4,d5,d6);
printf("終了します。Enter キーを押してください。");
rewind(stdin);
getchar();
return 0;
}
このようなプログラムを書いて実行してサイコロを500000回振ったのですが
2回とも同じ結果になりました。
毎回違った結果が出るようにするにはどうすればいいのでしょうか?
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGx=(int)(6*(rand()/32767.1)+1);
を
x=(int)(6*(srand(time(0))/32767.1)+1);
にしたのですがエラーがでてしまいます。
0719デフォルトの名無しさん
NGNGお前は使ってる関数がどんな機能なのか調べもせずにプログラム書くのかよ。
0720デフォルトの名無しさん
NGNGすみません、昨日プログラミング始めたばかりなので全然わからないんです。
面白い
0722デフォルトの名無しさん
NGNGsrand()は値を返さんぞ。
0723デフォルトの名無しさん
NGNGsrand()
rand()
time()
これらの関数が何をするのか解ってる?
単に言われたことをコピペするだけじゃ成長しないよ。
0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNGおっしゃるとおりです。rand以外あるいはそれすら全然意味が分かりません。
しかし調べても書いてあるころがさっぱり理解できないのです。
0726デフォルトの名無しさん
NGNGそれは719で指摘されたことに対する言い訳にもならない。
ちゃんとどんな機能か調べてから書け。
もしシステムを破壊するような命令だったらどうするんだ?
0727デフォルトの名無しさん
NGNG理解できるようになってから質問してください。
0728デフォルトの名無しさん
NGNG言えてる、特にここは2chだし。
0729デフォルトの名無しさん
NGNGどうします?strstr(szbuf,"http://")
ここらあたりは常識っぽいんですけど、あと、は、そこから、
「.」と「/」と、空白および記号を意識しつつIsCharAlphaNumeric
とか使うのは常識ですか?
0730デフォルトの名無しさん
NGNGフォルダの中に入っているファイルを参照させたいのですがうまく行きません。
"data/Data.dat"や,"data\PlayerData.dat"ではないようです。
CreateFile(ここ,-,-,-,-,-,・・・);
0731デフォルトの名無しさん
NGNGIsCharAlphaNumeric ってWin32API…だよな?
0732デフォルトの名無しさん
NGNGRFCにURIに使える文字が定義されてる。
0733デフォルトの名無しさん
NGNGhttp://pc.2ch.net/prog/kako/1000/10005/1000542653.html
このスレを参考にして良さそうな入門書を明日買ってくること。
そして最初から最後まで読破するように。
0734デフォルトの名無しさん
NGNG求めていた答えは得られなかったけど
それ以外のこといろいろ得ることができました。
もっと本読んで勉強します。
0735デフォルトの名無しさん
NGNGsrandくらいググればいっぱいヒットするんじゃない?
srandって名前が得られただけでもだいぶいい収穫だと思うよ。
0736デフォルトの名無しさん
NGNGあれのK&Rにあるオーバラップしても動くってどんなことをしても動くんですか?
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGまぁ、そうとも言う。Cでも似たようなのあるけどさ。
全部小文字だから許せない(嘘)
で、常識を教えてくれ。(下さい)
0739shige
NGNGプログラミング言語はRubyがさいこーが常識!!!!
0740デフォルトの名無しさん
NGNGおしい。
"data\\PlayerData.dat"
じゃない?
0741デフォルトの名無しさん
NGNGあなたレスで笑い出す俺はいまヤヴァいんだろうか…
0742デフォルトの名無しさん
NGNG日本語.comが使える時代にIsCharAlphaNumericなんて役に立たんぜよ。
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNGだいじょうぶ。オレもちょっと面白かったから。
0745デフォルトの名無しさん
NGNG空白か改行か多バイトコードが出現したら、そこで切ればいんじゃない?
0746デフォルトの名無しさん
NGNGスペース、括弧、クオーテーション、カンマ以外全部だと思ってればいいんでない?
0747デフォルトの名無しさん
NGNG常識なんてないだろ…
0748746
NGNG0749デフォルトの名無しさん
NGNGやっぱでもあれだ、IsCharAlphaNumericで、.と/だけ飛ばす、と、
いうので、決行完璧なのだろうか。
0750デフォルトの名無しさん
NGNG親切にありがとうございました。
うまくいきましたよ。
もっと文字列勉強します。
0751デフォルトの名無しさん
NGNGそれかあれだ、CharNextとか使うのか、あーかったるい。
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNGつまり結論として、URIとして使っていい文字かどうか調べるより、
使っちゃいけない文字かどうかを調べたほうが手っ取り早いぽい。
もしくは、使っていい文字かどうかのフラグをがつっとテーブルで持つ。
char uri_valid_chars[] = {0,0,0,0,0,1,1,1,1,0,0,0....}
みたいな。
0754デフォルトの名無しさん
NGNG用途がわからんので詳しくはわからんが、
HTML中からリンクを抽出するのが目的なら、
"javascript:func('A',\"B\")"
だってありえるぞ?
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNG俺なら、定義が楽なタグの中だけにするけどな…。
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGとかもありえる。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGfloat d1,d2,d3,d4,d5,d6;
srand(time(NULL)); <-- ここらで。
printf("サイコロを振る回数を決めてください。\n");
謙虚な奴にはおしえてやれよー。
勉強し始めは動くのが大切なんだからー。
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGだとしてもその引数に何を渡すか問題だ・・・
0766デフォルトの名無しさん
NGNGついでに、736にも答えてあげれば?
0767762じゃないけど
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGで、区切り文字調べろ。
0770デフォルトの名無しさん
NGNG動くんでない
0771デフォルトの名無しさん
NGNG現実にはそこに書かれていない文字も使用されているという罠。
仕様にあわせてまともに動作しないものを作るか、
実情に合わせて仕様を無視するか、それが問題だ。
0772デフォルトの名無しさん
NGNGUNIX系だとプロセスの外側の領域には無理でないかい。
Windows系、Mac系はわからん。
ヘンナコト スルナヨ。
0773デフォルトの名無しさん
NGNGタイーホ
0774デフォルトの名無しさん
NGNG移動する方向で転送の方法を変えるから
移動前と移動後の領域が重なっても大丈夫。
0775712
NGNGそれがそうなんですよ。
いや、最初はHellow Would!!
がプロンプトに何の問題も無く表示されたんですけど
別のプログラムコンパイルして実行しようとすると
あのウインドウが。
ついてにHellowWouldの方でもその
ウィンドウが出るようになった。
コンパイラを上書きインストールしても直らないし。
どうしたら良いのでしょうか
0776デフォルトの名無しさん
NGNGどのタイミング?
コンパイル?
実行?
打ち込んでるコマンドライン、良ければここに書いてみたら?
0777デフォルトの名無しさん
NGNGそれが本当なら今あなたが使っているブラウザだって起動できなくなるってことだよ。
もしかして.cや.objとかを実行しようとしていない?
0778デフォルトの名無しさん
NGNGたぶん
Hellow Would!!
が原因。
0779デフォルトの名無しさん
NGNG茶化すな
0780712
NGNGこれでbccフォルダ(ソースファイルのあるところ)に移動して
bcc32 test.c
これでコンパイル
test.c
これで実行すると
例のウインドウが開くのですが・・・・・・・・・・・・
0781デフォルトの名無しさん
NGNG面白いよ。
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNG最初は出来たっての嘘だろ。
0784デフォルトの名無しさん
NGNGやっぱり(笑)
ソースコードを実行しようとしてどうするのよ(笑)
test.cじゃなくてtest(もしくはtest.exe)ね。
0785デフォルトの名無しさん
NGNGここでそれはムリ
0786712
NGNG馬鹿丸出しでしたね。
いや、最初の頃はマニュアル読みながらだったんで。
いつのまにか変な勘違いをしてしまいました。
でも解決できて嬉しい!!!
どうも有難うございました!!!
0787デフォルトの名無しさん
NGNGやっぱりそんなことだろうとは思ってたよ(藁
0788デフォルトの名無しさん
NGNG.cは実行できないよ。ただのテキストファイルじゃん。
.exeを実行しようね。
ちなみに、ハリウッドのスペル間違ってるよ。HollyWoodだろ。
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG爆笑してうまくキーが打てねーじゃねぇかドルァ!
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNG自然対数と正弦と余弦と正接ってなんですか?
数学バカな漏れに教えてください
0793デフォルトの名無しさん
NGNGなんでここで聞くのよー(/_;。) ウッウッウッ
数学バカなら自分で分かるはずでしょ。
0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNG数学無知ってことにしてください
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG#include <math.h>
double log(double);//自然対数
double sin(double);//正弦
double cos(double);//余弦
double tan(double);//正接
0798デフォルトの名無しさん
NGNGあーそうそう、もしgccなら-lmをつけてね。
0799792
NGNG超絶倫兄貴板に逝ってきます、スンマセンデシタ
0800796
NGNG0801デフォルトの名無しさん
NGNG・・・妙に可愛い。
いじめて イイ?
0803デフォルトの名無しさん
NGNGうん
0804デフォルトの名無しさん
NGNGage
0805801
NGNG0806デフォルトの名無しさん
NGNG随時Cに関する質問を受け付けています。
0807デフォルトの名無しさん
NGNG興味があったので読んでいました。
日頃から秀丸エディタのマクロを覚えてみたいと思っていて、
C の知識が多少無いと。とか聞いていたのですが、本当ですか?
あと、VB等のように専用のソフトは要らないんでしょうか?
書いてある文を読むところでは、コンパイラがあればよく、
付属のCD-ROMに入っているので、これを使えば良いらしいのですが。
0808デフォルトの名無しさん
NGNGCD-ROMがあるなら、とりあえずインストールしてみな。
自分でやれるところまでやって、いきづまったら質問してみそ。
あと、そのCD-ROMに入ってるのが有名なコンパイラなら、
Web検索すれば、インストールのしかたを説明したページが必ずあるから
そういうのを探すのも覚えれ。
0809デフォルトの名無しさん
NGNG.NETのC++とかc#とかは
C言語もコンパイルできますよね?
0810デフォルトの名無しさん
NGNGVisual C++.NETは多分できると思う・・・
C#は無理でしょ。
0811デフォルトの名無しさん
NGNGうわ〜
後輩に出来るとか言っちゃった…
今日給料日だからいきなり買ってました…(汗
どうしよ(涙
0812デフォルトの名無しさん
NGNG> Visual C++
> C/C++ 言語の学習から、Web アプリケーションや WindowsR アプリケーションの作成まで対応した C/C++ 開発環境です。使いやすい開発環境、豊富な資料を備えていますので、C/C++ 言語によるプログラミン
> グの学習に最適です。
少なくともVC++はできるな。できないと困るし・・・
0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNG文法はC。ただそれだけ。
薄いCの入門書の半分くらい読めば書ける。
0815デフォルトの名無しさん
NGNG{
int c, e, i, n;
for(i = n = 0;p[i];i++){
for(;p[i] != '-';i++)
if(p[i] == '\0') break;
if(i == 0 || !isalnum(c = p[i-1]) || !isalnum(e = p[i+1]))
continue;
for((n && s[n-1] == c)? n-- :0;c <= e;)
s[n++] = c++;
}
s[n] = '\0';
return s;
}
A-Z表記をexpandする関数なんだけど評価してくれる?
0816デフォルトの名無しさん
NGNGあとポインタ使え。
前後にあちこち動く添え字演算はおうの面倒だ。
isalnumあたりはマクロで実装されてる場合があるから
(isalnum)(xx)みたいにしとけ。
細かい動きは追ってないけど、もっとすっきり書け。
0817デフォルトの名無しさん
NGNGisalnumのときだけ、という要件ならこんなかんじ。
文字コードの大小もしっかり見た方がいいがとりあえずコレで。
char *expand(char s[], char *p)
{
char *d = s;
while (*p)
{
if (p[1] == '-' && isalnum(p[0]) && isalnum(p[2]))
{
int c = (p[0] & 0xff);
int ed = (p[2] & 0xff);
while (c <= ed)
{
*d++ = c++;
}
p += 3;
}
else
{
*d++ = *p++;
}
}
*d = '\0';
return s:
}
0818807
NGNGC言語 (1) はじめてのCプログラミング
倉薫 著 定価:1900円 翔泳社
0819デフォルトの名無しさん
NGNGconst付けられない実用上の理由でもあるのか?
つか、sとpって名前が意味不明すぎ。
0820デフォルトの名無しさん
NGNGpはとりあえず先頭を渡すけどなかでぐりぐりうごかしちゃうぞ。
と意を汲むべきだと思うがね。
constを覚えてないうちは、とりあえずコレでもいいんでないの?
0821デフォルトの名無しさん
NGNG読んだことないけど。
ポインタは電話番号
にワラタ。
たまに普通だったり秘書がでてきたりするのか?
0822デフォルトの名無しさん
NGNGつまり、
s[i++] = *p++;
みたいに使うってことなのか?
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG必要ない文脈でもキャストしなきゃいけなくなる
0825デフォルトの名無しさん
NGNG重要だろう。最小特権を強制できるし。キャストは抜きにして。
0826デフォルトの名無しさん
NGNG0827デフォルトの名無しさん
NGNGchar * const *p
p は 「charへの読み出し専用ポインタ」への(読み出し専用でない)ポインタ
char * const * const p
p は 「charへの読み出し専用ポインタ」への読み出し専用ポインタ
でいいですか? constついてるとなんかわかりにくくて
0828デフォルトの名無しさん
NGNGぞ。」ってことが、コンパイラと保守する人 (自分を含む) に伝わるから、
書くにこしたことはない。あと一部の環境では、変数を ROM 領域に置くとか
の嬉しい機能があるかもしれない。
0829デフォルトの名無しさん
NGNGCD-ROMで付属してるコンパイラって使えるのでしょうか?(Win XPですが)
0830829
NGNG0831デフォルトの名無しさん
NGNGおぃおぃ、そこまでわかるならなぜ種類を書かない?
0832830
NGNG立ち読みしただけなので、わからないんです。
調べてきます。
0833デフォルトの名無しさん
NGNGどんな本だったか(Windowsの本か?)、もしくは本の名前は何か書けばわかるかもな
0834デフォルトの名無しさん
NGNG下のやつ、だけどpの値を変更できないことに気付いてる?
p++ ---> だめ
--p ---> だめ
p = xx ---> 初期化以外はダメ
0836デフォルトの名無しさん
NGNGその時期なら、LSC-Cの試食版か bcc32 だろう、たぶん。
XPになって使えなくなったコンパイラなんて聞いたこと無いから
大丈夫だと思う。
0837デフォルトの名無しさん
NGNGchar * const * (const p); /* pはconst(更新不能) */
char * const ( * (const p) ) /* (ポインタp(更新不能))はポインタ変数である */
char * ( const (* (const p) ); /* (ポインタp(更新不能))はポインタ変数で、指し示す先は変更不能である */
char( * ( const (* (const p) ) ); /* (ポインタp(更新不能))はポインタ変数で、指し示す先は変更不能なポインタである */
( char( * ( const (* (const p) ) ) ); /* ((ポインタp(更新不能))はポインタ変数で、指し示す先は変更不能なポインタ)で、char型の領域を指す */
0838815
NGNGアホな部分が多くて申し訳ないっす、みなさんのアドバイスを親身に受け取るっす。
どうもでしたm(_ _)m
0839827
NGNGchar const *hoge
と
const char *hoge
はどっちが普通?
質問ばっかすいません。
0840デフォルトの名無しさん
NGNGかな。
0841デフォルトの名無しさん
NGNG記憶クラス指定子と型就職子はなんとなく左。
だけど__huge, __far, __nearは右。
上の書き方はあまり見かけないねえ。
0842デフォルトの名無しさん
NGNGchar const c;
char const * const pc;
char const * const * const ppc;
const char c;
const char * const pc;
const char * const * const ppc;
↑これ見てどう思う?
0843デフォルトの名無しさん
NGNG書いてもいいんだが、その、つまり、面倒でなあ。
ポインタのエリアスを作るときはそういうの重要になるけど、
普通に使う分には、最終的な参照先がconstか非constか、しか
気にしてないね。
コンパイラの警告がでたら、正しい型宣言に直すけど。
0844デフォルトの名無しさん
NGNG仮引数自体がconstかどうかは呼出元にとって意味ないからね。
実装の問題であって、インターフェイスの問題ではない。
register修飾とかもそうだよな。
それがポインタのときの指す先についてのconstはインターフェイスの問題になる。
0845デフォルトの名無しさん
NGNG> char const * const * const ppc;
この位になってくると絶対どこかで切ってtypedefしちゃうので
const char * c; // 定数(const char)を指しているポインタ
char * const c; // c 自体が定数っぽい気分になる
と直感的に読める書き方をしてしまう傾向があるなぁ、俺は。
0846827
NGNG僕もそうです。んで、ちょっとここで聞いてみたわけです。
ポインタのエイリアスって、C++の「参照」から「参照先の値を得るときに
*をつけなくてもいい」って機能を除いた感じですか?
(c++知らないので馬鹿言ってるかも)
0847デフォルトの名無しさん
NGNG混乱してないか?
参照は*いらないぞ。
0848デフォルトの名無しさん
NGNGchar **pp;
とかがあるときに、
処理の途中で
char *p = *pp;
みたいなことするよね。
p もppも同じエリアを見に行く可能性があるとき、後から作った方をエリアスっていうんだけど
constとかvolatileとかポインタ演算とか関数呼び出しが入り乱れてくると
コンパイラがうまく最適化できなくて間違ったコードを生成したり、
最適化をあきらめちゃうことがある。
まともな最適化コンパイラなら、エイリアスに対してどういう最適化をするか
決めるオプションとかあるでよ?
0849デフォルトの名無しさん
NGNG過ったコードを生成するトリガになる。
一処理一関数。
シンプルに問題を切り分けていけば、べつに混乱することもないんだけどね。
0850829=807
NGNGほんの名前はこれです。
C言語 (1) はじめてのCプログラミング
倉薫 著 定価:1900円 翔泳社
0851デフォルトの名無しさん
NGNGhttp://www.seshop.com/detail.asp?pid=720
LSI-C試食版だな。
ある程度回線に余裕があるか、テレホなら
http://www.borland.co.jp/cppbuilder/freecompiler/
からBorland Free C/C++コンパイラを落として使った方がいいと思う。
0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNGhttp://www.vector.co.jp/soft/maker/lsi/se001169.html
0855デフォルトの名無しさん
NGNG>C言語 (1) はじめてのCプログラミング
>倉薫 著 定価:1900円 翔泳社
ポインターは電話番号だって逝ってるヤツか?
なら他を探した方がイイぞ
簡単にイメージさせようとしてるんだろうが余計ワケワカになる
てゆーか秀丸のマクロ組みたいだけならスゴイ遠回りと思われ
0856855
NGNGこの作者はたぶんCでの実戦経験が少ないと思う
配列の添字が0から始まってる事がCのバグの原因のほとんどだ
なんて書いてた気がする(W
0857デフォルトの名無しさん
NGNGそりゃひでぇ(禿藁
0858デフォルトの名無しさん
NGNGBASIC上がりなのかね。
0859デフォルトの名無しさん
NGNGワラタ
添え字が0から始まらなかったら、a[i]==*(a+i)の関係が成り立たなくてそれこそバグの原因になると思う。
0860855
NGNG構造体のメンバーにポインターを介してアクセスするとき
なんで" -> "なんて書くのか意味不明とかも書いてたと思う
手元に無いので記憶はあやふやだが、
誰か持ってない?
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNGって宣言して5こ分しか確保されないのが納得いかないんだろうね<BASIC上がり
0863デフォルトの名無しさん
NGNG0864850
NGNG0865デフォルトの名無しさん
NGNG話のたねにはいいかも(藁
でも参考にしてはいけない。
0866デフォルトの名無しさん
NGNGパチモソは移管。
0867デフォルトの名無しさん
NGNGま、まなタンですか?ハァハァ・・・・・・
0868デフォルトの名無しさん
NGNGこれかい?
改訂第3版 はじめてのC ANSI C対応
椋田 實 著
ISBN 4-8740-8546-6 技術評論社 1845円
0869867
NGNG読んだことないけど。
0870デフォルトの名無しさん
NGNG麻奈タン・・・(*´д`)
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNGシラネーヨ
0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNGありがとです。^^
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNGIMEのバッファにデータを入れる方法を教えてください。
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG0880教えて!
NGNG接頭子の長さを返すってどういうことですか?
あとstrcspnも・・
0881デフォルトの名無しさん
NGNGsize_t strspn( const char *string1, const char *string2 );
string2 で指定した文字群にない文字が string1 内に最初に現れた位置
のインデックスを返します。終端の NULL 文字 (\0) は、検索の対象外で
す。
の説明でわかんない ? ついでにサンプル...
--------------------------------------------------------------
char string[] = "cabbage";
int result;
result = strspn( string, "abc" );
printf( "文字列 '%s' のうち a、b、c のみから構成される"
"部分の長さは %d バイトです。\n", string, result );
出力
文字列 'cabbage' のうち a、b、c のみから構成される部分の長さは 5
バイトです。
--------------------------------------------------------------
をみてもわからんか ? だったら、この関数使わなきゃいいと思うが...。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGもしかして、URLに指定しちゃいけない文字列をstring2に渡せば、
上のほうで議論してた「URLっぽい文字列抽出」に役立ったりして。
0884デフォルトの名無しさん
NGNG(・∀・)ソレダ!
0885デフォルトの名無しさん
NGNGそりゃ名案だ!
const char *str2="0-9A-Za-z_-.*/?#=&"; /* 0-9A-Za-zは実際は展開して書く */
こんな感じかな?
本当は使えないけど'~'も入れておいた方がいいかも。
0886885
NGNG0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNGchar temp[10];
int a;
sscanf(hoge, "%s,%d", temp, &a);
とするとtempが"hoge,3"となり、aにゴミが入ります、
hogeと3が"hoge 3"と空白で分けられていたら
"%s %d"でいけたんですが、カンマの場合はsscanfはつかえないんですか?
"hoge,3" を"3,hoge"にするというのは無しで。
0889デフォルトの名無しさん
NGNG0890デフォルトの名無しさん
NGNG>>888もたぶんバカ。
きちんと規格書嫁。
sscanf(hoge, "%[^,],%d", temp, &a);
にしとけ。
業務用のコード書いてるなら、書式に長さの指定もきちんとかいとけ。
0891888
NGNG多分じゃなく確実に馬鹿な888です。
ありがとう。それでいけました。
特に業務用のコードってわけじゃなく、Cの勉強中です。
[^,]というのは正規表現で使う文字クラス指定のことですか?
あと、規格書ってどこで読めるんでしょう?
0892デフォルトの名無しさん
NGNGISOからPDF購入してください。
\2k程度です。($18)
0893893
NGNG0894デフォルトの名無しさん
NGNG0895893
NGNG0896888
NGNGと、おもったら、[^...]の解説はk&Rにちゃんと載ってますね。
すいません。読みたりませんでした。
>>892
ああ、買わないといけないんですか。この機会にかってみようかな。
0897デフォルトの名無しさん
NGNGK&Rあるならとりあえずそれで足りるよ。
Win系ならコンパイラにライブラリのヘルプが付いてるだろ?
0898デフォルトの名無しさん
NGNGおまえは出来ないの?
0899893
NGNGPerlのCGIをテストしているのですが、Cで作ったCGIも動かしたくて、
いい方法を探していたのですが…。
参考になりそうな、サイトありませんか?
0900デフォルトの名無しさん
NGNGそのうち、な。
0901デフォルトの名無しさん
NGNG> 0-9A-Za-zは実際は展開して書く
せっかくだから、使ってやれや >>817
0902888
NGNGフリーのbcc32なので、ライブラリヘルプがありません。
あと、書式付出力のとき精度や、幅を
変数で指定したいときにつかう*のようなものを使いたいんですが
書式付入力のときには * は代入抑止になるようで出来ませんでした。
890さんのいう「長さ指定しとけ」ってのは長さを直接書いておくんですか?
別に変数にして、そのつど長さを変えるというより
あらかじめ文字列長を#defineしておいて、'\0'の分1引いて
最大でSTR_SIZE-1だけ読み込むという形にしたいのですが。
分かりにくい&長くて すいません。
0903デフォルトの名無しさん
NGNGん?コンパイルすれば実行できるはずだが?
0904903
NGNG私はgccでコンパイルしているけど。
0905デフォルトの名無しさん
NGNGもしかしたらマイクロソフトのMSDNライブラリWeb版に載っているかも。
0906デフォルトの名無しさん
NGNGいわゆるC89の範囲内でよければ、JISになっています。2000年度版まではJISハ
ンドブックの情報処理、プログラミング言語編に含まれていました。JISハンド
ブックは公立図書館に置いてあったりするので重宝しましたが、2001年度版に
はプログラミング言語編は含まれてません。Cの規格標だけを買おうとすると
たしか8,000円くらいです。
http://www.jsa.or.jp/
なんかWeb Storeを開設する予定はあるらしい。安くなるといいね。
0907880
NGNGふむふむφ(..)
詳しい解説、感謝です!
0908デフォルトの名無しさん
NGNGで、分かったの?
0909デフォルトの名無しさん
NGNG> URLに指定しちゃいけない
ではなくて「URLに指定できる」じゃない?
0910デフォルトの名無しさん
NGNG日本語ドメインを忘れているぞ。
0911デフォルトの名無しさん
NGNGそんなものを考慮していたらきりがない。
考慮するなら、http://から行末までリンクするしかないだろ。
http://www.お名前.com/
0912デフォルトの名無しさん
NGNGURLエンコードの%を忘れている。
0914デフォルトの名無しさん
NGNGコレもK&Rに載ってるはずだが、プリプロセッサがマクロに渡した引数を
リテラルに置き換える機能、連続したリテラルを一つのリテラルにまとめる
機能を持っている。
こんなかんじ。
#include <stdio.h>
#define LEN 32
#define TOSTR(x) #x
int main()
{
char buf[256];
char buf2[LEN+1];
while (fgets(buf, sizeof(buf), stdin) != 0)
{
sscanf(buf, "%" TOSTR(LEN) "s", buf2);
}
return 0;
}
0916899
NGNG0917デフォルトの名無しさん
NGNGきちんと必要最低限のヘッダーを出力しているか?
Content-Typeとか。
0918899
NGNGint main(int argc,char* argv[])
{
printf("content-type:text/html\n\n");
printf("<html><body>Hello World!</body></html>\n");
return(1);
}
をコンパイルすればいいんですよね?
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGそうそう。
(ヘッダーの単語の一文字目は大文字にしようよ・・・)
0922899
NGNGこれをコンパイルして、どのファイルを実行すればいいんですか?
0923デフォルトの名無しさん
NGNG(T_T)
コンパイルしてできたファイルに決まっているじゃない(T_T)
.cgiをCGIとして実行するようにしているならファイル名をhello.cgiとでもする。
0924899
NGNGMicrosoft Visual C++でコンパイルしているんですけど、.dsp .dsw .ccp .h とか
いろいろな、拡張子のファイルが出来ちゃうんですけど…。
0925914
NGNG0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG統合開発環境を使っているのか。
ビルドするとDebugかReleaseフォルダに.exeファイルができるでしょ。
それを.cgiに変えればよいの(.cgiをCGIとして実行するようにしている場合)
CGIプログラムならテキストエディタにコードを書いてコマンドラインからコンパイルした方がいいと思う。
「-o 出力ファイル名」でうまくやってくれる。
0928927
NGNG-oオプションね。
cl -o hello.cgi hello.cってな感じ。
0929899
NGNGHTTP 500 内部サーバー エラー
になっちゃうんですけど。
0930899
NGNGところで、
あなたは、何のコンパイラーを使っていますか?
0931デフォルトの名無しさん
NGNGtelnetで出力を見てみろ
0932デフォルトの名無しさん
NGNG...
0933デフォルトの名無しさん
NGNGLinuxではgccでwinではVC++6.0
0934899
NGNGtelnetってwindows2000に付属しているやつでいいんですか?
0935デフォルトの名無しさん
NGNGとりあえずコンパイルしたプログラムを一度DOS窓から実行してみろ。
0936デフォルトの名無しさん
NGNGなんでもいいから
telnet 127.0.0.1 80
GET /cgiのパス↓
↓
と入力しろ。矢印はエンターな
0937デフォルトの名無しさん
NGNG# 演算子への引数は、それ以上マクロ展開されないよ。
>>918
関係ないとは思うが、なんで return 1 なの ?
0939899
NGNGtelnet 127.0.0.1 80
はどこに入力するんですか?
0940デフォルトの名無しさん
NGNG...
もしかして壮大なネタ?
0941899
NGNGいいサイトがあったら、自分でやりますが…。
0942デフォルトの名無しさん
NGNG>>938は偽者。
しっかし、なんで動かないんだか・・・・
Perlなら動いたんだよな?
0943デフォルトの名無しさん
NGNG\r\n\r\nだろ?
0944デフォルトの名無しさん
NGNGAN HTTPdってそんな糞仕様なの?
少なくともApache(Win32)なら\n\nでできるが。
0945日下部圭子
NGNG新スレ作りました。
早めの移行をお願いします。
0946899
NGNG0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNGああ、それだ!
今見てみたら、*.pl *.cgiは無条件でperlに渡してる。
*.exeなら直接実行する設定だ。
0949899
NGNGあんまり設定とか、いじってません。
kentさんの
http://www.kent-web.com/www/anhttpd/settei.html
のページのように設定しました。
0950デフォルトの名無しさん
NGNGうわ・・・・なんちゅう糞な仕様だ。
さっさとそんなソフトは捨ててApacheにでも乗り換えろ。
0951デフォルトの名無しさん
NGNG手順を書く。
1 プログラムを書く
2 コンパイルする
3 できあがったexeを、public_htmlなどドキュメントルート以下に置く
3 ブラウザでアクセスする
以上。拡張子の名前はexeのままで。
0952デフォルトの名無しさん
NGNGなるほどね・・・・
コンパイルされた機械語をPerlに渡しちゃ、そりゃエラーになるわな・・
0953899
NGNGということは、拡張子が.cgiならPerlのCGIって決め付けてるんですか?
AN httpdが。
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNGそうそう。
0956899
NGNG0957デフォルトの名無しさん
NGNGだな。
0958デフォルトの名無しさん
NGNG設定を変更すれば可能だけど、
説明するのがめんどくさい
0960デフォルトの名無しさん
NGNGWindowsの仕様すら理解してなかったり。
0961899
NGNG0962デフォルトの名無しさん
NGNGうるせーな。
せっかくだからこっち消化しようや
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNGん?
0965デフォルトの名無しさん
NGNG.cgiで普通に動きます。
0966デフォルトの名無しさん
NGNG1000ゲットしたいだけちゃうか?
0967デフォルトの名無しさん
NGNG.cgiのような汎用的なものじゃなくて、中身によって変えた方がいいのかなと。
Apache(Win32)だと最初の行の#!を理解してくれるからその必要はないけど。
0968デフォルトの名無しさん
NGNG設定したとおりにしか動きません。
*.cgiをperlに設定したら、ネイティブコードやRubyスクリプトで動作させるのは不可能です。
0969デフォルトの名無しさん
NGNGマルチユーザーのシステムでは使わないことだ。
ひとりなら、*.cgiを一つのアプリケーションに設定しても問題ないだろ
0970デフォルトの名無しさん
NGNG俺はもう新スレで1000取ったので満足です。
0971デフォルトの名無しさん
NGNGうん。
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975899
NGNG0976デフォルトの名無しさん
NGNG0977899
NGNG0978デフォルトの名無しさん
NGNG世界一のシェアを誇るWebサーバソフト。
0979デフォルトの名無しさん
NGNG0980899
NGNG0981デフォルトの名無しさん
NGNG0982899
NGNG0983デフォルトの名無しさん
NGNGWindowsでは普通はIISを使う。
ApacheはUNIX系OSで動かすのが一般的。
で、ウェブサーバはUNIX系OSを使っていることが多いから、Apacheが世界一のシェアを誇っている。
0984983
NGNGとにかくWindowsサーバに限って話せばApacheはあまり使われていないってことだ。
0985899
NGNGありがとうございました。
0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG||
||
||
||
||
||
||
||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0988デフォルトの名無しさん
NGNG||
||
||
||
||
||
||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0989デフォルトの名無しさん
NGNG||
||
||
||
||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0990デフォルトの名無しさん
NGNG||
||
||
||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0991デフォルトの名無しさん
NGNG||
||
||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0992デフォルトの名無しさん
NGNG||
||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0993デフォルトの名無しさん
NGNG||
∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0994デフォルトの名無しさん
NGNG∧||∧
( ⌒ ヽ
∪ ノ
∪∪
0995デフォルトの名無しさん
NGNG( ⌒ ヽ
∪ ノ
∪∪
0996デフォルトの名無しさん
NGNG/'⌒'ヽ \ ./\ |
(●.●) )/ |: |
>冊/ ./ |: /
/⌒ ミミ \ 〆
/ / |::|λ| |
|√7ミ |::| ト、 |
|:/ V_ハ |
/| i | ∧|∧
и .i N /⌒ ヽ )
λヘ、| i .NV | | |
V\W ( 、 ∪
|| |
∪∪
0997デフォルトの名無しさん
NGNG|
|
@ノハ@
( / ⌒ヽ
| | |
∪ / ノ.
.(_/_/
0998デフォルトの名無しさん
NGNG/⌒ヽ )
i三 ∪ モウ ダメポ・・・
|三 |
(/~∪ ::::::::::::::::::::::
 ̄ ̄ ̄ ̄| ::::::::::::::::::::::::::::::::::::: ビュゥゥゥー・・・
口 口 |:::::::::::/ ̄ ̄ ̄\::::::::::::
口 口 |::::::::/ ヽ::::::::::::::
口 口 | ̄┌┐l ̄l .| ̄ ̄ ̄| ̄ ̄
口 口 | | ̄ ̄ ̄| | | | ̄ ̄
口 口 | | | | | |
0999デフォルトの名無しさん
NGNG/⌒ヽ )
i三 ∪ モウ ダメ・・・ポ・・・
|三 |
(/~∪ ::::::::::::::::::::::
 ̄ ̄ ̄ ̄| ::::::::::::::::::::::::::::::::::::: ビュゥゥゥー・・・
口 口 |:::::::::::/ ̄ ̄ ̄\::::::::::::
口 口 |::::::::/ ヽ::::::::::::::
口 口 | ̄┌┐l ̄l .| ̄ ̄ ̄| ̄ ̄
口 口 | | ̄ ̄ ̄| | | | ̄ ̄
口 口 | | | | | |
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。