C言語ならアタシに聞きなさい<36>
レス数が1000を超えています。これ以上書き込みはできません。
0001美奈
NGNGアタシがいないときも優秀な下僕たちが答えてくれるわ☆
でも課題丸投げなら他スレにいってね。
・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/
推薦図書/必読書のためのスレッド PART6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/
・前スレ <35>
http://pc3.2ch.net/test/read.cgi/tech/1034337064/
コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002デフォルトの名無しさん
NGNGgcc
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
0003デフォルトの名無しさん
NGNG乙!
0004デフォルトの名無しさん
NGNGhttp://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html
【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0005デフォルトの名無しさん
NGNGJFrameでactionListenerを使ってイベントをうまく拾えないのですが、
いい見本となるソースはありませんか?
0006デフォルトの名無しさん
NGNGCのgoto文はどんな時に使うのが好ましいのか教えてください!!
0007デフォルトの名無しさん
NGNGlabel: goto label;
0008デフォルトの名無しさん
NGNGC言語じゃないのでJavaスレに行きなさい。
>>6
乱用は避けるべきですが、例外処理に使うのが適当だと思われます。
00095
NGNG差別ですか?
教えてくれてもいいと思いますが?
0010デフォルトの名無しさん
NGNGありません。
はい、次。
0011デフォルトの名無しさん
NGNGinfo の 'Labels as Values' にある。
0012デフォルトの名無しさん
NGNG>>10
( ̄ー ̄)ニヤリ
0013デフォルトの名無しさん
NGNG以下のプログラムを書いたのですが、system関数はでかいプログラム
を実行すると、エラーになると本に書いてました。system関数を使わず
にすます方法はないでしょうか(あくまでもCのプログラムとして実行
させたいと思っています)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <process.h>
void main(int argc, char *argv[])
{
char g_name[50] = "tcc -IB:\\include -LB:\\lib -e";
strcat(g_name,argv[1]);
strcat(g_name," ");
strcat(g_name,argv[1]);
strcat(g_name,".c");
system(g_name);
}
コンパイラ tc2.0 dos版(涙)
0014デフォルトの名無しさん
NGNGDOSの文字数制限の話だろ。
MAKEファイルを作成して、MAKEしる。
0015デフォルトの名無しさん
NGNG今度はアタシに聞きなさいになったんですか?
0016デフォルトの名無しさん
NGNG現在テスト中の環境、CPUが特殊らしくて
char型の実体のアドレスはどこでもいいがshort,int,longは偶数アドレスに
実体が配置されていないとシステムが暴走するとのこと。
こ〜ゆ〜特殊な環境で宣言された以下の構造体があるとします。
typedef struct stdata {
intia;
charca;
charcb;
shortsa;
charcc;
intib;
} STRUCT_DATA;
で、
a = b + sizeof(STRUCT_DATA);
と
a = sizeof(STRUCT_DATA);
a = a + b;
で最終的なa の値が変化するんですが、こゆ事って有り得ることすかね?
あー書いててもわけわかんね。
0017デフォルトの名無しさん
NGNGあんたのコードがバグってるんじゃないの?
0018デフォルトの名無しさん
NGNG再現する最小限のソース作ってみ。
0019デフォルトの名無しさん
NGNGそれは特殊ってほどでもないと思う。
あと普通のCPUでも、偶数とか8バイトおきにメンバを置くってのは
やってる。(そのほうが効率いいから)
0020デフォルトの名無しさん
NGNGなんか宿題スレと合体したような感じだね
0021デフォルトの名無しさん
NGNGgethostbyname((char*)"www.xxxxx.com")
とかくと、必ずNULLを返します。
これを使うには、なにか前に実行しなければならない関数があるのでしょうか?
0022デフォルトの名無しさん
NGNGWSAStartup()なんじゃない?
サンプルは検索すれば見つかると思う。
0023デフォルトの名無しさん
NGNGAPIって書いてありますからWinだけかもしれませんね。
0024名無しさん@カラアゲうまうま
NGNGwinsockは別ライブラリになってるから、個別に初期化する必要がある。
0025デフォルトの名無しさん
NGNG納得できるご説明お願いします!
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGvoid main ( void )
{
char s[100];
fgets( s,100, stdin );
if ( instr( s, "YASU" ) == 1) {
printf( "%sにYASUは含まれる\n", s );
} else {
printf( "%sにYASUは含まれない\n", s );
}
}
どなたかこの文字列検索のプログラムの作成の仕方を教えて下さい
0028デフォルトの名無しさん
NGNG仕様
0029デフォルトの名無しさん
NGNG#define instr(s, t) strstr((s), (t))
0030デフォルトの名無しさん
NGNG#define instr(a,b) (strstr(a,b)!=NULL)
0031デフォルトの名無しさん
NGNG#include <string.h>
0032デフォルトの名無しさん
NGNG規格で決まっている。
>>27
1 が読めんのか。
>>29-31
宿題スレじゃないんだから答えないように。
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGお前どっか行けよ
浮いてる
0035デフォルトの名無しさん
NGNG> 浮いてる
60cmぐらい?
0036デフォルトの名無しさん
NGNGややワロタ。
>>34
前スレで宿題・課題の丸投げウザイってことで >>1 に「丸投げ禁止」が入ったんだから、
>>32は間違ってない。宿題スレに誘導してやればイイんでないの?
0037デフォルトの名無しさん
NGNG((( (゚∀゚))) アヒャ
↑
│ ウイテル・・・
ウイテル・・・ │ ∧_∧
∧∧ 60cm (,,, ) ウイテル・・・
( ,,). .│ ( ) ∧_∧
/ | │ | | | (,, )
〜(__). ↓ (__)_) (____)〜
""""""""""""""""""""""""""""""""""""""""""
0038デフォルトの名無しさん
NGNG003929
NGNG正しく動くけど、宿題だとしたら間違いなく×をつけられる解答にしてみたつもりだ。
いや、○をもらえるかもしらんが…
どっちにしろ教師の想定していた解答ではないだろうからつっこみが入ると思うぞ。
0040デフォルトの名無しさん
NGNGおしえてください。
VC.netでグラフやアニメーションかけますか?
0041デフォルトの名無しさん
NGNGかけます
はい次
0042デフォルトの名無しさん
NGNGたとえば、http://www.tecnet.or.jp/~tdap3/tentai.html
にある奴Cでもできますか??
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG環境ってVCだけでいいっすか??
0045デフォルトの名無しさん
NGNGぼく、staticな関数のプロトタイプなんか専用のも別に作って、一個のソースファイルに
つきヘッダ2こづつ作ってるんですけど、これってもしかして無駄?
まったく一人で書いてるので、ミュータントみたいかもしれないけど....
0046デフォルトの名無しさん
NGNGそれならOK。
ここはWin以外の環境も含まれるからね。
次から VC or MFC or Win32API 関連スレで聞くといいよ。
0047デフォルトの名無しさん
NGNGそういうページ好き。
おもしろい。
004844
NGNGありがとうございました。感謝(・略)感謝
0049海外出張から帰ってきたビル・ジョブス
NGNGところで、おれのスレタイ変えてんじゃねーよゴルァ!
「おれに聞け!」シリーズなんだけど・・・。
0050デフォルトの名無しさん
NGNGユニークな値を#definesしてヘッダーの2重インクルードをしないとか。
#if !defined(structs_H__01234567_89AB_CDEF_0123_456789ABCDEF__INCLUDED_)
#define structs_H__01234567_89AB_CDEF_0123_456789ABCDEF__INCLUDED_
/*ここから俺様の好き放題*/
/*EOF*/
#endif // !defined(structs_H__01234567_89AB_CDEF_0123_456789ABCDEF__INCLUDED_)
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGまったく無駄とまでは思わないけど、「staticなプロトタイプが入ってて
特定のソースからしかincludeしないヘッダ」と「externのプロトタイプが
入ってて複数のソースからincludeするヘッダ」が混在してるのはあまり
好ましくないような。せめて見ただけで区別できるようなファイル名を
付けるとかした方がいいんじゃないかな。
でも漏れなら、staticなプロトタイプはソースの頭に入れてしまうけどね。
0053デフォルトの名無しさん
NGNGだせ。
0054デフォルトの名無しさん
NGNG無駄。
0055hiloshi
NGNG某HPにあった「文字列の巡回」というプログラムを作ってみました。
これはたとえば”1234”と入力すると、
1234
4123
3412
2341
と表示されるプログラムです。
試行錯誤しながら作ったんで、みづらいかもしれませんが、
0056デフォルトの名無しさん
NGNGsock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
のようなsockについて,来た接続を切断するにはどうすればいんでしょうか?
0057hiloshi
NGNG#include <string.h>
/*文字列strを後ろに一つずらして文字列cpにコピー*/
char *copy(char *str,char *cp,int len)
{
int a;
char *s=cp;
cp[0]=str[len-1];
for(a=0;a<len-1;a++)
cp[a+1]=str[a];
while(*str++=*cp++)
;
return(s);
}
0058hiloshi
NGNG{
char str[51];
char cp[51]={0};
int len;
int i;
puts("■文字列の巡回パターン■");
printf("50字以内で文字列を入力してください。\n");
gets(str);
printf("\n%s\n",str); /*入力された文字をそのまま出力*/
len=strlen(str);
printf("%s\n",copy(str,cp,len)); /*一つだけずらしたのを出力*/
for(i=1;i<=len-2;i++)
printf("%s\n",copy(str,cp,len));
return(0);
}
0059hiloshi
NGNG�@charへのポインタ型を返す関数copyの返却値を、
return(cp)とするとうまく表示されません。
自分の認識では、上のcpは文字列cpの先頭要素のアドレス、つまりポインタですから
これをそのまま返しても問題ないように思います。
しかしうまく表示されなかったので、はじめにcpの先頭要素のアドレスを
ポインタsに初期化子として代入して、そのsを返すとうまく表示されました。
これがどうしてかわかりません。
�Aこのソースでプログラムを実行しても特に問題はなかったんですが、
コンパイルの段階で、「警告」と出て、
copy関数内のwhle文の条件式である
「*str++=*cp++」について、
「おそらく不正な代入」と表示されました。
どうしてなんでしょうか?
そもそも、Warningや警告というのはエラーとは違う意味で出てくると思うんですが、
実行してもエラーがなければOKっていう訳にはいかないんですかね?
0060海外出張から帰ってきたビル・ジョブス
NGNGでもファイル分けないと出来ないこともあるね。分かるかな?
0061デフォルトの名無しさん
NGNG0062海外出張から帰ってきたビル・ジョブス
NGNG処理系教えてくれ
0063hiloshi
NGNGすいません。文字列の実体ってどういうことすか?
例えばvc[3]={1,2,3}だったら
1,2,3のことですか?
0064hiloshi
NGNGOSがXPで、コンパイラはbccです。
答えになってなかったらすいません。
0065名無しさん@XEmacs
NGNGソース見ないと分かんないんだけど、
*str++=*cp++
のところで cp がインクリメントされてるみたいだけど?
それが原因じゃない?>> return(cp) でうまくいかない
0066hiloshi
NGNGああああああ!!!
そうっすね。ありがとです。
つまり関数の最後では、cpはヌル文字直前をさしてるってことですかね?
0067デフォルトの名無しさん
NGNGcloseすればいいだろ。
遮断ならshutdown
0068名無しさん@XEmacs
NGNGおそらくヌル文字直後
0069デフォルトの名無しさん
NGNG0070海外出張から帰ってきたビル・ジョブス
NGNG正解(代入後に++されるから)
0071デフォルトの名無しさん
NGNG> �@charへのポインタ型を返す関数copyの返却値を、
> return(cp)とするとうまく表示されません。
はもう回答されてるから
> �Aこのソースでプログラムを実行しても特に問題はなかったんですが、
> コンパイルの段階で、「警告」と出て、
> copy関数内のwhle文の条件式である
> 「*str++=*cp++」について、
> 「おそらく不正な代入」と表示されました。
変数の値を調べるつもりで
while(i == 10)
とか書くところを
while(i = 10)
と書いてしまうコーディングミスがなされる事が多いから
57 のコードは問題無い
どうしても警告消したい場合は判定を省略しないで
while((*str++ = *cp++) != '\0')
とかやってみる
0072名無しさん@XEmacs
NGNG2の方だけど、条件式を
(*str++=*cp++) != '\0'
にしたら警告消えない?
コンパイラによってはカッコで囲むだけで消えるかも
(*str++=*cp++)
0073hiloshi
NGNG!!!
えーと、whileの中身は非0である限り実行ですよね?
するとcpがどんどん増えて、いずれヌル文字に・・・
そしたらcpがヌル文字になった時にも
評価式は評価されてるってことすか?
cp++って後置増分演算子だから、評価した後に増えるんですよね?
ヌル文字の時は条件が0になるから評価されないんじゃないんですか?
なんか混乱してきましたw
0074hiloshi
NGNG>>72
ありがとうございます。
(*str++=*cp++) != 0
で警告が消えましたw
やっぱりきちんと書いた方がいいってことですね。
それにしても皆さんすごすぎて
こんな初歩な質問ですいません。
0075デフォルトの名無しさん
NGNG> cp++って後置増分演算子だから、評価した後に増えるんですよね?
「条件が0になるかどうかを調べる評価」 *cp++ が終わった後に増えるんですよね?
0076デフォルトの名無しさん
NGNG66 も 68 も 70 も不正解
while 終了後に cp はぴったり '\0' を指している
ついで
>>58
入力する文字列の桁数が決まっている場合は fgets() がよろし
メッセージ無視して 51 文字以上入力されたら目も当てられない
char str[51];
printf("50字以内で文字列を入力してください。\n");
fgets(str, sizeof(str), stdin);
こんな感じで
入門書だと説明してくれないのね
007776
NGNG78 ではなく 73
0078デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG入力するうんこの桁数が決まっている場合は fgets() がよろし
メッセージ無視して 51 文字以上入力されたら目も当てられない
char str[51];
printf("50字以内でうんこを入力してください。\n");
fgets(str, sizeof(str), stdin);
こんな感じで
入門書だと説明してくれないのね
0081hiloshi
NGNGいったいどれが本当なんだああ
わからなくなってしまいました。
どなかたか、完璧な回答をお願いできないでしょうか・・・
>>76
fgetsなんてはじめて聞いたんですが、
引数のstrは文字列ですよね
sizeofがstrの長さで、
stdinっていうのはなんですか?
ちなみに今、柴田望洋さんの「定本 明解C言語」っていう本で勉強してるんですが
この本どうなんすか?
オレ的にはちょっとむずかしいかなってw
バカなだけかもしれないんですけど・・・
0082デフォルトの名無しさん
NGNGうんこをたくさん入れないと思われ。
0083hiloshi
NGNGあくまで評価式ですもんね。
評価するだけして、空文になってますけど
その後は無視してって事か!!
あー、ちょっとわかった気がします。
0084海外出張から帰ってきたビル・ジョブス
NGNGまぁ処理系依存なんだからそんなにアツクなるなよ。
おれの作ったコンパイラはノンオプティマイズ時は\0の次を指すよ。
0085デフォルトの名無しさん
NGNG0086hiloshi
NGNGこんなの載せちゃまずいでしょうが、勉強だと思って勘弁してください。
http://rina.jpn.ph/~rance/c_language/check.html#1
ここにある問題1の設問3、Aをやってみたんですが、できません!
2段目以降が全部Dになるんです。
0087hiloshi
NGNGvoid turn(char *a,char *b,char *c,char *d)
{
char *x,*y,*z;
while(*x++=*a++)
;
while(*y++=*b++)
;
while(*z++=*c++)
;
while(*a++=*d++)
;
while(*b++=*x++)
;
while(*c++=*y++)
;
while(*d++=*z++)
;
}
0088hiloshi
NGNG{
char anny[]="A";
char bany[]="B";
char chery[]="C";
char domy[]="D";
int i;
puts(" anny bany chery domy");
puts("------------------------");
printf(" %s %s %s %s\n",anny,bany,chery,domy);
for(i=1;i<=4;i++)
{
turn(anny,bany,chery,domy);
printf(" %s %s %s %s\n",anny,bany,chery,domy);
}
return(0);
}
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG0091海外出張から帰ってきたビル・ジョブス
NGNGところで、C言語における"真"と"偽"の各値を知ってる?
0092デフォルトの名無しさん
NGNG偽 !0
009392
NGNG0094hiloshi
NGNGう・・・
正直いってよく意味が・・・
真は非0で偽は0じゃないんですか?
0095海外出張から帰ってきたビル・ジョブス
NGNG正解です。
0096hiloshi
NGNGなんか合ってたw
勉強した成果がちょっとだけ出ました。
こんな問題いいですね。
プログラムばっか作ってたら、もっと根本のとこを忘れがちになるんで。
0097名無しさん@XEmacs
NGNG間違い過ぎ
0098hiloshi
NGNGどこがどう間違ってるんですか?
それすらもわからない・・・
ああ・・・
0099lets thinking!
NGNGint main(void){
char anny[]="A";
char bany[]="B";
char chery[]="C";
char domy[]="D";
int i;
puts(" anny bany chery domy");
puts("------------------------");
printf(" %5s %5s %5s %5s\n",anny,bany,chery,domy);
for(i=1;i<=4;i++)
{
char *tmp;
*tmp=*anny;
*anny=*bany;
*bany=*chery;
*chery=*domy;
*domy=*tmp;
printf(" %5s %5s %5s %5s\n",anny,bany,chery,domy);
}
return 0;
}
010129
NGNGヒントを出してあげよう。
問題ではanny〜domyはchar型の変数となっている。
で、代入する値は'A'〜'D'となっている。"A"〜"D"とは違う。
それともう一つ。ポインタは何かを指すものということは知ってるよな?
>>87のx,y,zはどこを指してるんだ?
0102デフォルトの名無しさん
NGNG>>81
fgets() は gets() とほぼ同じだけど、バッファサイズと読み出し場所を指定でき
stdin は簡単に説明すると gets() がデータ呼んでくるのと同じモノ
知らないキーワードを示されたら Web 検索しるようにしると吉
自分で調べられるようにならないと実力伸びていかないとか
>>80
漏れの文体が気に入ったのね
でも &nbsp; 抜けてるし
0103デフォルトの名無しさん
NGNGcharbany = 'B';
charchery = 'C';
chardomy = 'D';
これでいーじゃん。
なぜ文字列?
0104デフォルトの名無しさん
NGNG問題からすると、これでいいじゃなくて、
そうでなければならない。
0105デフォルトの名無しさん
NGNGしまたタブが…
char anny = 'A';
char bany = 'B';
char chery = 'C';
char domy = 'D';
ですな。
0106デフォルトの名無しさん
NGNGニヤリ
0107海外出張から帰ってきたビル・ジョブス
NGNGいっぱい間違えて、禿げそうになるまで考えると、君の未来は明るいぞ!
しかし、結果だけにとらわれず、格好良くてセンスの良いコード記述を心がけよう!
例えば、
for (cp[0] = str[len-1], i = 1;・・・
のように、解釈ブロックを意識して記述すると読むほうも楽で、後のデバッグも楽。
0108デフォルトの名無しさん
NGNGsize_t l, i, j;
const char * const s = "The C Language*";
puts("==== Q2_B ====");
l = strlen(s);
for(i = 0; i < 10; i++)
{
for(j = 0; j < l; j++)
putchar(s[(j + l - i) % l]);
putchar('\n');
}
じゃないか?
0109hiloshi
NGNGいくつか質問があるんですが。
>>101
’と”の違いがまだよく分かってないみたいです。
どういう風に認識すればいいんでしょうか?
>>103
これも今までは
char vc[]="ABC";
のように”でくくっていたのに
’でいいのは文字列じゃなくて文字定数だからですか?
putcharみたいな。
>>107
すいません。解釈ブロックって一体・・・?
0110デフォルトの名無しさん
NGNGchar a[] = "abc"; は、char a[] = {'a', 'b', 'c', '\0'}; と同じ。
0111デフォルトの名無しさん
NGNG意味が違うので注意。
0112デフォルトの名無しさん
NGNGどう違うのでしょうか、先生。
0113デフォルトの名無しさん
NGNGhttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
0114デフォルトの名無しさん
NGNG0115112
NGNGそれはa[]の方は変更してはいけないところに置かれていて、*pの方は変更してもいいところにおかれているということでしょうか?
0116デフォルトの名無しさん
NGNG逆でしょう。
aはスタックに、pはどこだっけコード領域?、
組み込み系だとROMを指すことになるかと。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG> それはa[]の方は変更してはいけないところに置かれていて、*pの方は変更してもいいところにおかれているということでしょうか?
これは、反対だよ。a[] の内容は、変更してもいいけど、p の指す先は、変更しちゃダメ。
>>111 は、多分こういうことを言いたいんだと思うけど、"abc" と書くと、char a[] = "abc"; の "abc" 自体は、ROM エリアに置かれたりする (開始時に a[] にコピーする) から余計混乱する。
0120デフォルトの名無しさん
NGNGいや、別に混乱はしないでしょ
int a[]={1,2,3};
と本質的にはかわらないよ
0121デフォルトの名無しさん
NGNGchar *p = "abc"; は pが"abc"を指すように初期化される、って
事かな?
"abc"自体には差はないかも。
0122デフォルトの名無しさん
NGNG> int a[]={1,2,3};
で、char *p = "abc"; みたいな書き方できる ?
0123デフォルトの名無しさん
NGNGコピーされるというかabcの各文字+\0で初期化されるってだけ。
char a[]={'a','b','c','\0'};と書くのは面倒だから。
0124デフォルトの名無しさん
NGNG(何を言いたいんだろう...。そんなことは、みんなわかっていると思うけど...。)
0125デフォルトの名無しさん
NGNGコピーされると言うと、メモリー上のどこかに"abc"をおいてそれをa[]にコピーするみたいじゃない。
0126デフォルトの名無しさん
NGNGvoid foo()
{
char a[] = "abc";
...
}
なら、そうするのが普通だと思うけど。
0127デフォルトの名無しさん
NGNGchar a[] = "abc";
pには"abc"の先頭アドレスが代入されてて、
配列aには文字列"abc"が代入されてるってことですよね。
aは配列aの先頭アドレスを指すから
printf("%s\n",a);でも
printf("%s\n",p);でも
abc
って表示されるけど。
aもpもアドレスを表してるから。
・・。あってますか?
0128海外出張から帰ってきたビル・ジョブス
NGNG処理の集約をしたほうが良いということ。
例のcp[]に対しての前処理なら、for文に含めたほうがスッキリしませんか?
0129デフォルトの名無しさん
NGNG概ね正解。でも、何か気持ち悪い。
0130デフォルトの名無しさん
NGNGgccで="abc"と={'a','b','c','\0'}の時のソースをコンパイルして吐き出したアセンブラのコードを見てみた。
同じことやっているのにコードが変わるんだねぇ。
="..."だと必ず最後に\0がつくけれど、={...}だとつくとは限らないから同じコードを吐くようにするのは面倒なのかな。
0131130
NGNG配列の要素数と文字列の長さが同じなら\0はつかないな。
0132デフォルトの名無しさん
NGNGwindowsでこういう書き方ってできないですね
どーかけばいいのでしょうか
0133デフォルトの名無しさん
NGNG文字列の長さを変えて、sizeof(p)とsizeof(a)の値を比べてみると勉強になるよ。
0134デフォルトの名無しさん
NGNG\は\\と書いて\をエスケープ
0135デフォルトの名無しさん
NGNG\→\\
ってこと?
0136デフォルトの名無しさん
NGNGa[]に'a','b','c','\0'を一文字ずつ代入しても別にいいから。
"abc"をコピーするとばかり思ってたアタシは頭固かったです。
0137デフォルトの名無しさん
NGNG\→\\
0138デフォルトの名無しさん
NGNGフリーのでいいのがあったらぜひ教えてください
0139デフォルトの名無しさん
NGNG0140おばかです。
NGNGとするフィボナッチ数列の値anを計算し、表示し、終了するプログラムを書け。
ただし、a1=1,a2=1,an+2=an+1+anである。範囲以外の数値を読み込んだら、1以上100以下の整数値を
入力せよというメッセージを表示して入力を待つ。
このプログラムをできるだけ簡単なプログラムで教えてください。(for,while,if程度のプログラムで)
0141デフォルトの名無しさん
NGNGcopy con
0142デフォルトの名無しさん
NGNGこの程度自分で出来ないなら今行ってる学校やめて違う道を探した方が良い。
0143デフォルトの名無しさん
NGNGint main(){
int piyo;
hoge:
printf("→");
scanf("%d",&piyo);
if(piyo < 1 || piyo > 100) goto hoge;
else if(piyo == 1)puts("a1=1");
else if(piyo == 2)puts("a2=1");
else if(piyo == 3)puts("a3=2");
else if(piyo == 4)puts("a4=3");
...
}
0144デフォルトの名無しさん
NGNGヒップは?顔は誰似?
0145デフォルトの名無しさん
NGNGswitch禁止みたいだからif-elseを使ったの?
0146デフォルトの名無しさん
NGNGネカマ歴は?
住んでる場所は?
ワキガですか?
彼女いない歴は?
お母さんとできてますか?
0147デフォルトの名無しさん
NGNG無料掲示板
無料レンタル掲示板
0148143
NGNG0149デフォルトの名無しさん
NGNGこれは丸暗記するしか無し
で
char a[] = "abc"; /* Statement1 */
char *p = "abc"; /* Statement2 */
となるとイメージ的にはこんな感じ
罫線多少ズレるけど許して
a[0] a[1] a[2] a[3]
.┏━━┯━━┯━━┯━━┓
a┃char.│char.│char│char.┃
.┗━━┷━━┷━━┷━━┛
Statement2 が ↑ ↑ ↑ ↑Statement1 が実行
実行されるたびに .│ │ │ │されるたびにコピー
. ┏━━━┓アドレスをセット ┌──┬──┬──┬──┐
p┃char * ┃←──────.│ 'A' │ 'B' │ 'C' │ '\0'.│←どっかの変更不能
. ┗━━━┛ └──┴──┴──┴──┘ なメモリ領域
p[0] p[1] p[2] p[3]
なお、a と p はそれぞれ配列型 (char[4]) とポインタ型 (char*) で全然別の型
でも関数とかに渡すと配列型はその最初の要素へのポインタ型 (この場合は
char*) に成り下がる
>>133
> sizeof(p)とsizeof(a)
この場合はどっちも 4 だからよくわからない
0150デフォルトの名無しさん
NGNG133 :デフォルトの名無しさん :02/10/23 01:09
>127
文字列の長さを変えて、sizeof(p)とsizeof(a)の値を比べてみると勉強になるよ。
~~~~~~~~~~~~~~~~~~~~
0151デフォルトの名無しさん
NGNGhttp://www.catnet.ne.jp/kouno/c_faq/c6.html
1 のリンクは役に立ってないのかな
0153デフォルトの名無しさん
NGNGポインタが4バイトと決めてかかるなよぉ〜
0154デフォルトの名無しさん
NGNG0はいけないってことは、数列の最初の要素の添え字は1?
0156デフォルトの名無しさん
NGNGつくってみた。
俺の環境(4byte integer)だと添え字が100になる前にオーバーフロウしたよ(泣
0157デフォルトの名無しさん
NGNGやっとわかりますた。
ありが�d。
0158デフォルトの名無しさん
NGNGint main()
{
int i, j = 1, k, f1 = 1, f2 = 1, fib;
while (1) {
scanf("%d", &i);
if (1 <= i && i <= 100) break;
puts("1以上100以下で入力して下さい");
}
j = 1; k = i;
while (k--) {
if (j == 1 || j == 2)
fib = 1;
else {
fib = f1 + f2;
f2 = f1;
f1 = fib;
}
j++;
}
printf("fib(%d) = %d\n", i, fib);
return 0;
}
0159デフォルトの名無しさん
NGNG32-bit の unsigned でも、46 あたりでもう Overflow するね
double でも 80 あたりから精度が足りなくなる模様
64-bit unsigned でも 93 で Overflow
問題作った人の気が知れない
0160143
NGNGとかいってみるテスト。
0161デフォルトの名無しさん
NGNG確かにオーバーフロウの可能性はないな(ワラ
でもプログラム作るときに自分で計算しないといけないぞー
電卓も桁が足りなくて使えないと思うし。
0162デフォルトの名無しさん
NGNGソースをちゃんと完成させてから勝ち誇りなさい
0163おばかです。
NGNG0164デフォルトの名無しさん
NGNGあなたのプログラムに "A" と入力していいですか?
0165デフォルトの名無しさん
NGNG#define ZONE_DECIMAL_MAX_COLUMNS 32
#define ZONE_DECIMAL_MAX_BUF (ZONE_DECIMAL_MAX_COLUMNS + 1)
void zd_SetUInt(char *DecValue, unsigned long NewValue)
{
char buf[ZONE_DECIMAL_MAX_BUF];
size_t l, i = 0;
l = sprintf(buf, "%u", NewValue);
memset(DecValue, 0x00, ZONE_DECIMAL_MAX_BUF);
for(; ; )
{
l--;
DecValue[i] = buf[l] - '0';
if(!l)
break;
}
}
0166デフォルトの名無しさん
NGNG{
size_t i;
char Carry = 0;
for(i = 0; i < ZONE_DECIMAL_MAX_COLUMNS; i++)
{
if((DecValue[i] += AddValue[i] + Carry) >= 10)
{
DecValue[i] -= 10;
Carry = 1;
}
else
Carry = 0;
}
}
0167デフォルトの名無しさん
NGNG{
size_t i = ZONE_DECIMAL_MAX_COLUMNS;
size_t j = 0;
for(; ; )
{
if(DecValue[i])
{
for(; ; )
{
StrBuf[j++] = DecValue[i] + '0';
if(!i)
break;
i--;
}
StrBuf[j] = '\0';
break;
}
if(!i)
break;
i--;
}
return StrBuf;
}
0168デフォルトの名無しさん
NGNG{
char prev2[ZONE_DECIMAL_MAX_BUF], prev1[ZONE_DECIMAL_MAX_BUF], cur[ZONE_DECIMAL_MAX_BUF];
int i;
char buf[ZONE_DECIMAL_MAX_BUF + 1];
zd_SetUInt(prev2, 1);
zd_SetUInt(prev1, 2);
printf("1:1 2:2 ");
for(i = 3; i <= 100; i++)
{
memcpy(cur, prev2, ZONE_DECIMAL_MAX_BUF);
zd_Add(cur, prev1);
memcpy(prev2, prev1, ZONE_DECIMAL_MAX_BUF);
memcpy(prev1, cur, ZONE_DECIMAL_MAX_BUF);
printf("%d:%s ", i, zd_ToAscii(cur, buf));
}
getchar();
return(0);
}
0169デフォルトの名無しさん
NGNG1:1 2:2 3:3 4:5 5:8 6:13 7:21 8:34 9:55 10:89 11:144 12:233 13:377
14:610 15:987 16:1597 17:2584 18:4181 19:6765 20:10946 21:17711 22:28657
23:46368 24:75025 25:121393 26:196418 27:317811 28:514229 29:832040
30:1346269 31:2178309 32:3524578 33:5702887 34:9227465 35:14930352
36:24157817 37:39088169 38:63245986 39:102334155 40:165580141
41:267914296 42:433494437 43:701408733 44:1134903170 45:1836311903
46:2971215073 47:4807526976 48:7778742049 49:12586269025 50:20365011074
51:32951280099 52:53316291173 53:86267571272 54:139583862445
55:225851433717 56:365435296162 57:591286729879 58:956722026041
59:1548008755920 60:2504730781961 61:4052739537881 62:6557470319842
63:10610209857723 64:17167680177565 65:27777890035288 66:44945570212853
67:72723460248141 68:117669030460994 69:190392490709135 70:308061521170129
71:498454011879264 72:806515533049393 73:1304969544928657
74:2111485077978050 75:3416454622906707 76:5527939700884757
77:8944394323791464 78:14472334024676221 79:23416728348467685
80:37889062373143906 81:61305790721611591 82:99194853094755497
83:160500643816367088 84:259695496911122585 85:420196140727489673
86:679891637638612258 87:1100087778366101931 88:1779979416004714189
89:2880067194370816120 90:4660046610375530309 91:7540113804746346429
92:12200160415121876738 93:19740274219868223167 94:31940434634990099905
95:51680708854858323072 96:83621143489848422977 97:135301852344706746049
98:218922995834555169026 99:354224848179261915075 100:573147844013817084101
0170デフォルトの名無しさん
NGNG電卓起動して、
貼りつけて、
log押したら21桁と言うことが分かりました。
0171デフォルトの名無しさん
NGNG(・∀・)イイ!
ゾーンなんて久しぶりに聞いたな…。
それ自体は別にダサくないと思うけど、インスタンスが配列むき出しなのはダサい。
0172デフォルトの名無しさん
NGNG0173165
NGNG10 進で 21 桁という事は、2 進で何 bit あれば表現できる?
>>171
> インスタンスが配列むき出しなのはダサい
C++ ならともかく、C では仕方ないと思う。
それとも、struct で包めという話?
確かにそれなら、代入に memcpy() でなく = が使えるが。
ちなみに 167 は 全域 0x00 の DecValue を受けるとマズいな。
StrBuf[j] = '\0'; は return の直前だった。
実際、 169 + 143 が最強かもな。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGえっと、 312か。
0176173
NGNGああ、まさしく。
>>175
pow(2, 70) == 1180591620717411303424 で 22 桁。
これで 10 進で 21 桁を十分に表現できる。
普通に計算するなら 128-bit の int が必要という事だな。
pow(2, 312) は・・・とんでもない数字になるぞ。
8343699359066055009355553539724812947666814540455674882605631280555545803830627148527195652096
実に 95 桁、無量大数 pow(10, 88) をゆうに超える。
0177デフォルトの名無しさん
NGNG>>60
> ファイル増えると管理が大変になるよ。
> でもファイル分けないと出来ないこともあるね。分かるかな?
ごめんねこれ分からない
分割コンパイルとかそういう事じゃないよね
0178デフォルトの名無しさん
NGNG{
char *a;
char *b;
a = GetA(temp);
b = GetB(temp);
}
とやると、aとbの値が同じになるんですが、
どうすればいいでしょうか?
0179デフォルトの名無しさん
NGNG何を言いたいのか全然わからない。
0180デフォルトの名無しさん
NGNG何がやりたいか、まず それから書け。
0181デフォルトの名無しさん
NGNG1から勉強しなおせ
0182デフォルトの名無しさん
NGNGGetA() と GetB() の内容が示されないと何とも言えないし
もし両者が同じ挙動なら a と b が同じになるのも納得いくかも
でも最初の 「char TEST(*temp)」 って仮引数の型が指定されてなくて
コンパイルエラーになると思うし
そういえば return も無いね
0183デフォルトの名無しさん
NGNGC より先に質問の仕方を考えろ。
0184デフォルトの名無しさん
NGNGどうしてもコンパイルすると
「ツールを開始できません。
この操作を正しく終了しました。
ツールを開始できません。
'vcspawn.exe' 実行時のエラーです。 ビルドを実行できませんでした。
test.obj - エラー 1、警告 0」
が、出てしまいます・・・。コンパイルしたプログラムはサンプルからとったので
間違えているはずがないのですが・・・
何が原因だか教えてくれませんか?
0185デフォルトの名無しさん
NGNG割れ厨は氏ね
0186デフォルトの名無しさん
NGNGインストールの仕方が間違ってる。
マニュアルを熟読すべし。
0187デフォルトの名無しさん
NGNGlong i=x/y;
res=x-i*y;
のようにやっているのをライブラリ関数のfmod(x,y)としたら
急に動作が遅くなってしまいました。
どのような理由が考えられるのでしょうか。
0188184
NGNGやっぱり製品版買わないと正式に動かないのですか?
0189デフォルトの名無しさん
NGNG馬鹿者。
動く動かないの問題ではなく、それは犯罪だ。
0190178
NGNGchar TEST(char *temp)
でした。。
returnは書き込むときに消えちゃったみたいです、
GetA()とGetB()の処理は全然違います。
でも、aの値がbの値になってしまうんです。
b = GetB(temp);
を消すと、aの値は正常に出るんですが、
入れると、aがbの値になります。
初心者ですみませんがよろしくおねがいします。。
0191デフォルトの名無しさん
NGNGこの学習姿勢
0192デフォルトの名無しさん
NGNGint getrusage(int who, struct rusage *usage);
ってものの、rusage構造体のどのメンバーを
調べればよいか知っている方いませんか?
manみても、よくわからんし、
ru_maxrssかなぁなんて思っていたのだが、机上計算と違う値を返すし。
0193デフォルトの名無しさん
NGNGhttp://www.cs.u-gakugei.ac.jp/~miyadera/LECTURE/ElecBook2/ptech20.htm
while( current=getmemory(), scanf("%d", ¤t->data) != EOF )
/* 24 */ {
/* 25 */ previous->next = current;
/* 26 */ previous = current;
/* 27 */ }
while( scanf("%d", &temp) != EOF )
/* 22 */ {
/* 23 */ current=getmemory();
/* 24 */ current->data = temp;
/* 25 */ if( previous == NULL )
/* 26 */ head = current;
/* 27 */ else
/* 28 */ previous->next = current;
/* 29 */ previous = current;
/* 30 */ }
ここのEOFが、認識できません。previous=current;
とすると、末尾ソードを差し込むっていうのはわかって
ます。scanf()関数は、位置インジゲータを返さない
奴だというのはわかってます。
0194デフォルトの名無しさん
NGNGx と y は double?
なら fmod() 呼び出しのオーバーへッドくらいしか考え付かない
というより一度 long i を経由することで型変換のオーバーヘッドがあるはず
なんだけど・・・
x と y が long なら、fmod() 呼び出しで要らない型変換してるので遅い
というか x % y でいいとか
どれくらい違うの?
アセンブリリスティングは出せる?
コードがもうちょっとはっきりしないと何とも言えない
0195デフォルトの名無しさん
NGNGなくて自分がEOFの流れがわからない。<<194
0196デフォルトの名無しさん
NGNGだ〜か〜ら〜
GetA() と GetB() の内容が示されないと何とも言えないし
return が消えてて関数終端の } が残ってるのは解せないけど
先に a を求めてるのにその後の b = GetB(temp); のせいで a が変わるとすれば
GetA() は temp を返しててかつ GetB() 内部で temp を変更してる?
想像ではこれ以上辿れないよ
0197デフォルトの名無しさん
NGNGchar *GetA(char *p)
{
return strcpy(p, "漏れはA");
}
char *GetB(char *p);
{
return strcpy(p, "漏れはB");
}
という2つの関数があったとして、
それを
void test(void)
{
char *a,*b;
a = GetA(temp);
b = GetB(temp);
printf("%s", a);
}
のように呼び出すと「漏れはB」が表示されるということ?
だったらそれが当たり前なんだけど。
0198デフォルトの名無しさん
NGNGスレ違いかもね
ここでは純粋 C を訊いて
「UNIXプログラミング質問すれ」
http://pc3.2ch.net/test/read.cgi/tech/992057422/l50
0199197
NGNG0200hiloshi
NGNGあれから自分なりに考えたんですがいい結果が得られません。
つくりたいプログラムは4つの配列に
A、B,C,Dとそれぞれ初期化して
一つずつずらして表示するっていうものです。
ソースは次レスに
0201hiloshi
NGNGvoid turn(char *a,char *b,char *c,char *d)
{
char *x=d;
while((*d++=*c++)!=0)
;
while((*c++=*b++)!=0)
;
while((*b++=*a++)!=0)
;
while((*a++=*x++)!=0)
;
}
0202hiloshi
NGNG{
char anny[]={'A','\0'};
char bany[]={'B','\0'};
char chery[]={'C','\0'};
char domy[]={'D','\0'};
int i;
puts(" anny bany chery domy");
puts("------------------------");
printf(" %s %s %s %s\n",anny,bany,chery,domy);
for(i=1;i<=4;i++)
{
turn(anny,bany,chery,domy);
printf(" %s %s %s %s\n",anny,bany,chery,domy);
}
return(0);
}
0203デフォルトの名無しさん
NGNGtempはどこにあるの?
グローバル変数?
0204hiloshi
NGNG0205197
NGNGvoid test(void) の中
char temp[40]; /* サイズは適当 */
という変数を追加。
0207デフォルトの名無しさん
NGNGその質問のしかた(涙
0209デフォルトの名無しさん
NGNGまともなプログラム書きたいなら scanf() と gets() は絶対ダメ
scanf() やめて fgets() + atoi() 使えば
こんな感じで
char bug[256];
while(fgets(buf, sizeof(buf), stdin))
{
current = getmemory();
t->data = atoi(buf);
previous->next = current;
previous = current;
}
それと EOF って要するに入力の終わりを判定したいんだろうけど
例えば相手がキーボードだと打てば打つだけ続いて永遠に終わらない
適当に切り上げる条件付けなきゃダメ
あと行頭にコメントアウトで行番号入れるの見づらいし編集しづらいし
行挿入した時大変だし止めた方がいいよ
行番号を表示してくれるエディタを使えば幸せ
0210209
NGNG×: char bug[256];
○: char buf[256];
0211デフォルトの名無しさん
NGNG> 例えば相手がキーボードだと打てば打つだけ続いて永遠に終わらない
いいえ、Winだとctrl+z, Unixだとctrl+dで終わりますが何か?
0213デフォルトの名無しさん
NGNGかわいそうな人だ・・・日常に余裕無いんだね。
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG昨日の続きというと >>86 の事かな
そうすると設問は
| char型の変数 anny, bany, chery, domy を宣言し、それぞれに初期値として
| 'A', 'B', 'C', 'D' を持たせる。
って書いてあるけどそれがどうして
> つくりたいプログラムは4つの配列に
> A、B,C,Dとそれぞれ初期化して
になっちゃうの?
C の前に日本語を理解してね
0216デフォルトの名無しさん
NGNGinb
でも
そういうのを環境依存
だから
そういう話題を扱いたいならスレ違い
だとおもうよ。
0217デフォルトの名無しさん
NGNG204がかわいそうだろ
答えてやれよ
そういうオレもめんどくさい
0218デフォルトの名無しさん
NGNGfread
0219214
NGNGしまった!sage進行ですか?もしそうならすみません。
0220デフォルトの名無しさん
NGNG行と列の中をカウントするソースの一部です。
この中のfor文を利用して'A'+(i1+j1)のようにしてみては
どうでしょうか。 なお、i2とj2についてはユーザー指定です。
改行が、多すぎると( ゚Д゚)ゴルァでの全部かけません。
ij=i2*j2;
for(i1=0;i1<ij;i1+=j2){
putchar('\n');
for(j1=0;j1<j2;j1++){
i3=(len++)%j2;
p[i3][j1]=i1+j1;
printf("%3d",p[i3][j1]);
}
}
0221デフォルトの名無しさん
NGNGまさか。
どちらでもいいけど、質問ならageるべき。
0222デフォルトの名無しさん
NGNGはいはい、どうせ DOS と UNIX しか知らないんでしょ
>>214
その A-D 変換ボードの仕様書以外にそれを解決する情報は無いよ
0223デフォルトの名無しさん
NGNGMSDNライブラリにでてないのですが…?
0224デフォルトの名無しさん
NGNGcとかbとかインクリーメントとされたあとに代入が行われているけどいいの?
0225デフォルトの名無しさん
NGNG215 の通り前提条件が間違ってる
だから 204 に答えるとしたら 「問題のとらえ方が悪い」
よって 201-202 のソースは添削しようが無い
0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNGDLソフトのように取得した画像に番号を割り振ってフォルダに
保存していく機能を持たせるにはどんな感じのプログラムにすればいいのでしょうか?
房な質問ですみません。使用する関数を教えてもらえれば幸いです。
まだ、学習したてで、コンストラクタを使えば良いのか、ただ単にハンドル渡して
組み立てれば良いのか混乱しています。
よろしくお願いします。
0228hiloshi
NGNGすいません。よく分かってないもので。
char型の変数にいれるってことは
char a={'A'};
とかってことですか?
この時はヌル文字とかいらないんですか?
文字列の時だけヌル文字がいるんですか?
でもchar型の変数で表現できるのは2バイト文字だけですよね?
0229デフォルトの名無しさん
NGNGコンストラクタはC++とかでしょ?
Cにはないから他のスレッドにいって。
0230デフォルトの名無しさん
NGNG>まだ、学習したてで、コンストラクタを使えば良いのか、ただ単にハンドル渡して組み立てれば良いのか混乱しています。
どっちも突拍子のない気がするのは確かです。
もう少し勉強を続けてはどうでしょうか?
0231デフォルトの名無しさん
NGNG222 読んでね
実際に inb 使うかどうかき知らないよ
inb は <asm/io.h> で思い切り環境依存
>>227
あのね、ここは C のスレだよ
激しく弾けるほどスレ違い
0232デフォルトの名無しさん
NGNG>でもchar型の変数で表現できるのは2バイト文字だけですよね?
実装依存(藁が無ければ1バイトだけだと思います。
0233デフォルトの名無しさん
NGNGそうか?仕様言語がCカモしれん。
コンストラクタと言う言葉だけで判断するにはあまりにも彼は電波だ。
0234デフォルトの名無しさん
NGNG大体どんな感じのプログラムになるのかだけでも教えてもらえませんか?
イメージがわかないんです。
0235デフォルトの名無しさん
NGNG解決じゃ・・・。
0236デフォルトの名無しさん
NGNG> はいはい、どうせ DOS と UNIX しか知らないんでしょ
プッ、DOSもUNIXも知らない人が必死です。
>>200
答えだけ示す、理由は自分で考えろ
ヒント:while((*d++=*c++)!=0)実行後、dとcは何処を指している?
void my_strcpy(char *a, char *b)
{
while((*a++=*b++)!=0)
;
}
void turn(char *a,char *b,char *c,char *d)
{
char *x=d;
my_strcpy(d, c);
my_strcpy(c, b);
my_strcpy(b, a);
my_strcpy(a, x);
}
0237デフォルトの名無しさん
NGNGポインタもまともに張れんのか・・・。
0238デフォルトの名無しさん
NGNG指してる先をインクリメントしてるのでdもcも指してる場所は変わらないと思われ。
0239デフォルトの名無しさん
NGNGなんでここで環境云々の話になるんだ?
そもそもfgets使ってる時点で思いっきり環境依存なのだが。
0240デフォルトの名無しさん
NGNGん?
ポインタをインクリメントして、インクリーメントする前のポインタが指さしているところを間接参照しているんじゃないの?
0241デフォルトの名無しさん
NGNGネタでつか?
0242デフォルトの名無しさん
NGNG>>240
ごみん。食べるスパゲティは好きなんだけどね。
0243デフォルトの名無しさん
NGNGそういう話題を扱いたいならスレ違い
0244デフォルトの名無しさん
NGNG193 には 209 で答えたよ
第一 220 は何をやってるか分からないし、215 は読んだ?
0245デフォルトの名無しさん
NGNG> そもそもfgets使ってる時点で思いっきり環境依存なのだが。
(゚Д゚)ハァ?
0246227
NGNGすれ違いなのは分かってるんですがVC++関係のスレがいま寂れてて
まともなレス返ってこないんですよね…
0247デフォルトの名無しさん
NGNGC++スレッドがあるでしょ(^_^;)
0248デフォルトの名無しさん
NGNGC++ is Not C
0249デフォルトの名無しさん
NGNG> 大体どんな感じのプログラムになるのかだけでも教えてもらえませんか?
sprintf(fname, "hoge%04u.jpg", i++);
fp = fopen(fname, "wb");
fclose(fp);
0250193
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG激しく同意。
標準入出力なプログラムの話題は別スレでやれ。
0253デフォルトの名無しさん
NGNGスレ立てるまでも無いへ逝けばたいてい答え出る。
0254デフォルトの名無しさん
NGNGネタはつきないぜ(*^_^*)
0255デフォルトの名無しさん
NGNGMACユーザですか?
0256デフォルトの名無しさん
NGNG後NULLな。
0257デフォルトの名無しさん
NGNGまともなレス返ってこなくて当たり前だよ
あのね、あんたの用件は VC++ スレでもスレ違いだよ
なぜならあんたは言語について訊いてるんじゃなくて
ソフトの設計について訊いてるんだから
0258デフォルトの名無しさん
NGNGvoid main(void)もな。
0259デフォルトの名無しさん
NGNG最近はまともなのが付いてるけどな。
CodeWarrior時代は苦労した。
0260デフォルトの名無しさん
NGNG標準入出力は標準ですが何か?
0261デフォルトの名無しさん
NGNGC は ク ソ 言 語
0262デフォルトの名無しさん
NGNG>>253 ありがとうございます。そちらでもきいてみます。
スレ違いでご迷惑かけました。答えてくれた方ありがとうございました。
C++スレでも無駄だと思う…
>246
なんていうか、スレ違いとかそう言うレベルじゃないと思います…。
とりあえずK&Rなりストラウストラップ本でも読んでください。
0264デフォルトの名無しさん
NGNGそのOSでな。
UNIXのコンソールからDOSにパイプでデータ送れたりしたら認めるが。
0265デフォルトの名無しさん
NGNGそれは同意するが、Cを使わないとできないようなことがあるのも事実。
Cを使わないとするとアセンブラレベルに降りないとならなくなるし、
だから便利ではあるのよ。
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNGがーん!
printfもスレ違いなの?
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNGどこでもprintfが使えると信じてるうちは幸せだ。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGprintf("%s\n",NULL);の結果は処理系依存だす。
0272デフォルトの名無しさん
NGNGアフォ
標準ライブラリが使えないのは環境依存だ
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG標準ライブラリが使えるか使えないかは環境に依存する。
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGだからといって標準ライブラリは使えないという前提で話を進めるとものすごいことになる。
0280デフォルトの名無しさん
NGNG文法エラー: 文字列リテラルが終了していません。
>>275
そんな事はわかっている。
しかし規格の上では定められてるものなんだから、このスレで扱ったって
いいだろう。
しかしキーボードから EOF を打つ方法や A-D 変換ボードなんてのは規格で
決まってないだろう。
そういうのを環境依存と言うんだ。
>>276
良し。
0281デフォルトの名無しさん
NGNG「C言語」と強弁している人がいる人がいるスレはここですか?
0282デフォルトの名無しさん
NGNGここです。
0283デフォルトの名無しさん
NGNGそうそう。
大部分の質問に「環境依存だからでてゆけ」と答えないといけなくなる(涙
0284デフォルトの名無しさん
NGNGこれ以上スレ違いだとバカにされるのはまっぴらなので教えてください。
0285デフォルトの名無しさん
NGNGC言語を使うならここでいい。
他の言語で標準入出力を扱うのならば、適切なスレッドで。
とマジレスしてみる。
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGそもそも、>>209がそういう狭量な態度だったから問題になっているのでは?
0288デフォルトの名無しさん
NGNGそうだね。
0290デフォルトの名無しさん
NGNG209 は特に間違っていない。
でなければ処理系に依存しないキーボードの EOF の判定方法を呈示してみろ。
0291290
NGNGって代替案を促してるのが狭量なのか?
0292デフォルトの名無しさん
NGNGただし決まった回数ループすると終了するというものはだめだよ。
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG209=280だとすれば、彼の言ってることも納得できる。
0296デフォルトの名無しさん
NGNGただの煽り。ちょっと遊んであげればすんだのにね。
まぁ、冗談を解する余裕もない心の狭い>>209だからこそこの偉業を達成できたと。
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGそんなつもりはなかったのに(涙
0299デフォルトの名無しさん
NGNGCにはキーボードなどは規定されていない、
しかし、たいがいのOSにはキーボードからEOFを検出できる仕組みがある。
例えばWinだとctrl+z, Unixだとctrl+d
209はCについては間違っていないが、OSの知識は無知だったという結論でいいか?
0300デフォルトの名無しさん
NGNG大目に見てやれよ
0301デフォルトの名無しさん
NGNGだから、そういう態度が狭量だって言うんだよ。
一般的なUNIXとDOSでキーボード入力でEOF発生できるという情報が出たんだからいいじゃん。
他の環境でのEOFを発生方法知ってるのならそれを提示してくれればいい。
わざわざ環境依存だ云々いって切り捨てなくてもいいと思うけどね。
#ちなみに、EOFの判定方法はfgetsがNULLを返したときだね。
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG>Cにはキーボードなどは規定されていない、
そのための標準入力か。勉強になる。
0304デフォルトの名無しさん
NGNG0305209
NGNGでも環境に依存するようなコードをここで呈示するのは極力避けるべき
だと思うのね
間違ってる?
0306デフォルトの名無しさん
NGNGレスどうも。
unsigned long modulo(unsigned long x,unsigned long y) {
unsigned long res;
long i=x/y;
res=x-i*y;
return (res);
}
これなんですが。この関数を呼ぶのをやめて単純にfmod(x,y)に
したのですが・・・。暗号化のために累乗と剰余を頻繁に行う
プログラムなのですが剰余をfmodに変えたら
4倍時間がかかってしまいました。
%については失念していたのでこれも試そうと思います。
ありがとうございました。
0307デフォルトの名無しさん
NGNG常識の範囲である程度認めてあげてよ。
常識って何と言われたら何もいえなくなるけど
0308デフォルトの名無しさん
NGNG0309デフォルトの名無しさん
NGNG「ctrl+zはCではEOFを表す!」って言ってるわけじゃないんだから。
Winではそうだね、よかったね、って話なんだから。
0310デフォルトの名無しさん
NGNGやりたいことは
ABCD
DABC
CDAB
BCDA
とか
ABCD
BCDA
CDAB
DCAB みたいな結果を得たいんだと思うけど
それなら一つの配列に入れたほうが簡単だと思うが
0311デフォルトの名無しさん
NGNGだね。
今まではある程度の環境依存なら環境を示せといってきたし
0312290
NGNG> 適当に切り上げる条件付けなきゃダメ
って代替案を促してるのが狭量なのか?
ってもう一回書かなきゃダメか?
209 は fgets() での EOF 判定方法もちゃんと提示している。
その辺を読み取れない方が狭量じゃないのか?
0313デフォルトの名無しさん
NGNG問題が変数名を指定している
0314デフォルトの名無しさん
NGNG前提をちゃんと挙げていた。
って言うか荒らしに反応する人も荒らしです。
0317ヘタレエンジニア
NGNGオベンキョ しなければならないのですが、「VC++」で数値計算させ
るために参考となる良い本がわかりません。
なんか、データベース用とか、ダイアログがどうした、とか、そんなの
ばかりが書店に溢れています。
変な質問ですが、こんな僕のためにお答えしていただける、奇特な方が
おられたら、神と崇めたいと思います。
0320デフォルトの名無しさん
NGNG多分、今の流れを見てのネタだと思うけど、
それは参考書スレッドでやって。
俺間違っているかな?(T_T)
0321デフォルトの名無しさん
NGNG「C言語」 「入門」 で検索してください。
あと勝手に崇められると迷惑だと思います。
0323デフォルトの名無しさん
NGNG0324ヘタレエンジニア
NGNGいえ、Windows板の方にここを教えてもらって、C言語とスレ名にあるから
ここに書き込んだまでです。
「推薦図書/必読書・・・」というスレでよろしいでしょうか。質問ばかり
ですいません。
0325デフォルトの名無しさん
NGNGそう。
>>1にリンクがあるよ
0326ヘタレエンジニア
NGNGありがとうございます。試してみまふ。
>>325
ありがとうございます。早速、書きました。
しかし、なんだかんだ言われている2ちゃんねるですが、物凄い有用な
サイトですね・・・。
0327hiloshi
NGNGchar型の変数をprintfで表示するための変換指定子はなんですか?
%dでやると、JISコードの値が出てしまう・・
0328デフォルトの名無しさん
NGNGJISじゃないだろ
%c
0329デフォルトの名無しさん
NGNG%c
つか、これくらいは聞くなよ。参考書読め。期待してるんだから頑張れよ。
0330デフォルトの名無しさん
NGNG> JISコードの値
おそらくAsciiコードかShift_Jisコードだと思うんだが
ところで文字コードも環境(以下略
0331デフォルトの名無しさん
NGNGputs(" anny bany chery domy");
puts("------------------------");
printf(" %c %c %c %c\n", anny, bany, chery, domy);
printf(" %c %c %c %c\n", domy, chery, bany, anny);
0332hiloshi
NGNGでもオレの持ってる本には文字列は詳しく書いてるんですけど
文字のことはさっぱりで・・・。
でもここのおかげで少しずつわかってきたんで
みなさんに感謝多々です。
0333デフォルトの名無しさん
NGNG何のためのWebだよ。
0334デフォルトの名無しさん
NGNG>すいません。今度はもっと上級な質問をします。
じゃなくて、ある程度自分で調べてから質問しろよってこと
0335hiloshi
NGNG0336hiloshi
NGNGオレの持ってる本はJISコードという文字コード体系が広く普及してる
って書いてあるんだけど、これは間違ってんの?
0337デフォルトの名無しさん
NGNGある程度調べる、じゃなくて
ある程度 *自分で* 調べる、だ。
0338デフォルトの名無しさん
NGNG次からは死のうな。
>>336
環境依存。メジャーどころだけ見ると明らかに間違い。
0339デフォルトの名無しさん
NGNGそれは間違っていない。
が、広く普及してるからと言ってあなたの環境もそれを採用しているかどうかは
別の話だ。
0340デフォルトの名無しさん
NGNG「調べる」 と 「訊く」 の区別は大丈夫か?
0341hiloshi
NGNGどうせ禿げたオタクばっかだろ
黙って質問に答えてればいいんだよ
それくらいしか能のないんだから
先生気分ですか?じこまんですか?
どうぞ死んでください。
0342ppp
NGNG画像ファイルの白黒化を教えて頂きたいです。
malloc()関数を使い、8・24ビットカラー画像どちらでも
変換できるといったように。
どなたか、ご親切な方のサンプルソースをご教授願いたいです。
/* #include */
#include<stdio.h>
#include<stdlib.h> //exit用
#include<conio.h> //getch用
#pragma pack(1) //構造体メンバを1バイトサイズの単位に設定
/* ファイルヘッダ構造体型 */
typedef struct tagBITMAPFILEHEADER {
unsigned short bfType; //フォーマットの種類を表す数値(Windows BMPの場合 0x4D42)
unsigned long bfSize; //ファイルサイズ
unsigned short bfReserved1; //予約領域(0)
unsigned short bfReserved2; //予約領域(0)
unsigned long bfOffBits; //ファイル先頭からのバイト数で表したイメージデータの位置
} BITMAPFILEHEADER;
0343ppp
NGNGtypedef struct tagBITMAPINFOHEADER {
unsigned long biSize; //情報ヘッダのサイズ(40)
long biWidth; //画像の幅(ピクセル単位)
long biHeight; //画像の高さ(ピクセル単位)
unsigned short biPlanes; //プレーン(レイヤー)の数(通常1)
unsigned short biBitCount; //1ピクセルあたりのビット数と画像の種類(下記補足参照)
unsigned long biCompression; //圧縮の種類(下記補足参照)
unsigned long biSizeImage; //イメージデータのみのバイトサイズ
unsigned long biXPelsPerMeter; //横軸画素数/メートル(省略値0)
unsigned long biYPelsPerMeter; //縦軸画素数/メートル(省略値0)
unsigned long biClrUsed; //画像中で使用されている色数(RGBQUADの個数)
//画像タイプの最大発色数と同じ場合は0
unsigned long biClrImportant; //画像を表示する上で重要な色の数、すべての色が重要な場合は0
} BITMAPINFOHEADER;
/* カラーテーブル */
typedef struct tagRGBQUAD {
unsigned rgbBlue; //青の輝度
unsigned rgbGreen; //緑の輝度
unsigned rgbRed; //赤の輝度
unsigned rgbReserved; //Must be zero
} RGBQUAD;
0344ppp
NGNGvoid printBmp(BITMAPFILEHEADER fh,BITMAPINFOHEADER ih); //BMPファイルのヘッダ情報の表示
void readBmp(char *filename,BITMAPFILEHEADER *fh,BITMAPINFOHEADER *ih); //BMPファイルのヘッダを読み込む
/* main start */
void main(int argc,char *argv[])
{
BITMAPFILEHEADER bfh; //ファイルヘッダ構造体
BITMAPINFOHEADER bih; //情報ヘッダ構造体
char *filename;
filename = argv[1];
readBmp(filename,&bfh,&bih);
printBmp(bfh,bih);
if(argc!=2)
{
printf("\nコマンドライン引数エラー!\n"); //コマンドライン引数の確認
exit(1);
}
fopen(argv[1],"rb");
}
/* main end */
0345ppp
NGNGvoid printBmp(BITMAPFILEHEADER fh,BITMAPINFOHEADER ih)
{
printf("<<ファイルヘッダの内容>>\n\n");
printf("ファイルタイプ = 0x%X (BM)\n",fh.bfType);
printf("ファイルサイズ = %d バイト\n",fh.bfSize);
printf("予約領域1 = %d",fh.bfReserved1);
printf(" 予約領域2 = %d\n",fh.bfReserved2);
printf("オフセット = %d バイト\n\n",fh.bfOffBits);
printf("<<情報ヘッダの内容>>\n\n");
printf("情報ヘッダのサイズ = %d バイト\n",ih.biSize);
printf("画像の幅 = %d ピクセル\n",ih.biWidth);
printf("画像の高さ = %d ピクセル\n",ih.biHeight);
printf("プレーン数 = %d\n",ih.biPlanes);
printf("ビット/ピクセル = %d bpp\n",ih.biBitCount);
printf("圧縮の種類 = %d (RGB)\n",ih.biCompression);
printf("イメージデータサイズ = %d バイト\n",ih.biSizeImage);
printf("横軸画素数/m = %d pixel/m ×",ih.biXPelsPerMeter);
printf(" 縦軸画素数/m = %d pixel/m\n",ih.biYPelsPerMeter);
printf("使用色数 = %d",ih.biClrUsed);
printf(" 重要色数 = %d\n\n",ih.biClrImportant);
return;
}
0346ppp
NGNGvoid readBmp(char *filename,BITMAPFILEHEADER *fh,BITMAPINFOHEADER *ih)
{
FILE *fp;
/* ファイルオープン */
printf("\n入力ファイル : %s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\nオープンエラー!\n");
exit(1);
}
printf("\n\n");
/* ファイル読み込み */
fread(&(fh->bfType),sizeof(fh->bfType),1,fp);
fread(&(fh->bfSize),sizeof(fh->bfSize),1,fp);
fread(&(fh->bfReserved1),sizeof(fh->bfReserved1),1,fp);
fread(&(fh->bfReserved2),sizeof(fh->bfReserved2),1,fp);
fread(&(fh->bfOffBits),sizeof(fh->bfOffBits),1,fp);
0347デフォルトの名無しさん
NGNGさっきの荒らしの方ですね。
0348ppp
NGNGfread(&(ih->biWidth),sizeof(ih->biWidth),1,fp);
fread(&(ih->biHeight),sizeof(ih->biHeight),1,fp);
fread(&(ih->biPlanes),sizeof(ih->biPlanes),1,fp);
fread(&(ih->biBitCount),sizeof(ih->biBitCount),1,fp);
fread(&(ih->biCompression),sizeof(ih->biCompression),1,fp);
fread(&(ih->biSizeImage),sizeof(ih->biSizeImage),1,fp);
fread(&(ih->biXPelsPerMeter),sizeof(ih->biXPelsPerMeter),1,fp);
fread(&(ih->biYPelsPerMeter),sizeof(ih->biYPelsPerMeter),1,fp);
fread(&(ih->biClrUsed),sizeof(ih->biClrUsed),1,fp);
fread(&(ih->biClrImportant),sizeof(ih->biClrImportant),1,fp);
fclose(fp);
getch();
}
0349デフォルトの名無しさん
NGNG0350hiloshi
NGNGどれくらいかかりました?
0351デフォルトの名無しさん
NGNG0352hiloshi
NGNGオレじゃないよーー!!!
誰だーーー!!!
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGナントモ言えない。
0356デフォルトの名無しさん
NGNGhttp://www02.so-net.ne.jp/~koujin/jpeg/RGB2YCbCr.html
で Y だけをビットマップにすれば白黒。
スレ違いという事はわかった上で書いてる?
次からは API スレでも行って。
0357デフォルトの名無しさん
NGNGポインタ単独ではそんなに時間がかからなかったが
それはメモリのアクセス方法とかアセンブラについての
基礎知識があったわけでそれを含めると結構時間がかかってると思う。。
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGトリップつけろや。ニセモノもつけてくるかもしらんが、
内容で本物かどうかはある程度判別つくんで心配すんな。
で、どの程度で習得できたといえるのかがわからんなあ。
ポインタは指すものと思っておけばいいんじゃないか。
あるメモリ領域があって、ポインタはそこを指してる。
頭のなかでポインタからその領域に向かって矢印が出てるとイメージすりゃいい(w
0360hiloshi
NGNG「C言語での文字とは、その文字に与えられたコードすなわち整数値である。ただし、たとえ同じ文字であっても
その値はプログラムの実行環境によって異なる可能性があります。より具体的には、プログラムが実行される
環境で採用されている文字コードに依存した値になります。
日本で広く普及しているパソコンの多くはJISコードという文字コード体系が利用されていますので
これを例にとって解説しましょう。」
って感じです
0361デフォルトの名無しさん
NGNGポインタはある日突然閃いたかのように分かるので、習得期間は不定。
0362デフォルトの名無しさん
NGNGASCIIコードに対抗するJISコード(典型的には、バックスラッシュと
円の違いを主とする)なわけで。
0363hiloshi ◆W2li6n5Xa6
NGNG何も書かないのもあれなんで、ちょっと質問いいですか?
ほんと考えたんですけど、わかんないんです。
void turn(char *a,char *b,char *c,char *d)
{
char *x=d;
*d=*c;
*c=*b;
*b=*a;
*a=*x;
}
っていう風にしますよね?
最初の、ポインタxの宣言のときにポインタdのアドレスをいれて
そのあとどんどん入れ替えていきますよね。
それで最後にaにもとのdの値をいれようとしても、
xはポインタだから、もう既にcの値が代入されたdをxに代入しますよね?
こういう時に、もとのdの値を関数内でちゃんと保存する方法ってないんですか?
0364デフォルトの名無しさん
NGNGあとは書名と著者と出版社とページを挙げれば引用の範疇になるから大丈夫。
で、その記述はなんとも不完全なような気がする。
色々推測するとして、
・その本はMS-DOSが全盛の時代に書かれた
・そうすると広く普及してるパソコンというのはNECのPC-98x1シリーズに該当するだろう
・確かにPC-98x1シリーズでは、text vramではJISコードを用いていた
だから、状況を限定すればその記述も間違いとはいえないような気がするが、
Cの参考書としてはよろしくないな。
日本で現状広く普及してるパソコンにはWindowsが乗っていて、
こいつが通常扱う文字コード体系はShift-JISかUnicodeだ。
0365デフォルトの名無しさん
NGNGwhile ( (p = getservent()) ) {
if (strcmp(name, p->s_name) == 0)
なんでnameとp->s_nameを比較してるんでしょうか
ちなみに本をよみながらやってるんですが
その本のサンプルプログラムには
getservbyname(argv[1],"udp")
として呼び出してありこのプログラムの実行例は
# ./a.out 1024
こうで
nameには"1024"
p->s_nameには"rtmp"
などのポインタが入ってます
全然ちがうものを比較してるようにみえるのですが
なぜでしょうか?
0366hiloshi ◆W2li6n5Xa6
NGNGすいません。間違えました。
xはポインタだから、もう既にcの値が代入されたdを、aに代入です
0367hiloshi ◆W2li6n5Xa6
NGNGそれらを書いた方がいいって事ですか?
でもたぶん98シリーズの事を言ってるんだと思います。
それ系の本を書いてる人みたいだし。
書かれたのは1999年ですけど。
0368デフォルトの名無しさん
NGNGchar x = *d;
...
*a = x;
0369デフォルトの名無しさん
NGNGdの指してる先の中身を保存したいんだろ。xにdを保存してどうするよ。
dの指してる先に'Q'があったとして、
d--------->'Q'
こんな状態。で、char *x = d;をやると、
d--------->'Q'
x----------^
xも同じ所を指すようになる。
そうじゃなくてやりたいことは'Q'そのものを保存したいんだろ。
だったら、char y = *d;とやるべきだ。
0370hiloshi ◆W2li6n5Xa6
NGNGそうですね。基本ですね。あんなに悩んだ自分がばかみたいです。
すいません。お手数かけました。
0371デフォルトの名無しさん
NGNGうん、書いたほうがいいと思う。
んで、その記述だけで本全体を判断するのは危険だが、
少なくともその部分の記述はウソと言ってもいい。忘れたほうがいい。
0372hiloshi ◆W2li6n5Xa6
NGNG書名:定本 明解C言語
著者:柴田望洋
出版社:ソフトバンク社
ページ:200ページ
です。
0373193
NGNGtypedef struct __node{
charname[20];
chartel[16];
struct __node *next;
}Node;
typedef struct {
Node *head;
Node *tail;
}List;
以下略
void Insertnode(List *list,const char *name,const char *tel)
{
Node *ptr=list->head;
list->head=getmemory();
strcpy(list->head->name,name);
strcpy(list->head->tell,tell);
list->head->next=ptr;
}
void Appendnode(List *list,const char *name,const char *tel)
{
Node *ptr=list->tail;
list->tail=getmemory();
strcpy(ptr->name,name);
strcpy(ptr->tel,name);
ptr->next=list->tail;
}
以下略 先頭へのノード挿入 末尾へのノード挿入
0374193
NGNGptrは、もちろんノードの省略の意味だけど。
微妙に、変化した記述の意味がわからん。
0375デフォルトの名無しさん
NGNGgetservbyname.c って何
0376デフォルトの名無しさん
NGNGその結果、引数で指定したサービスが見つからないことが期待されるのか
どうかでいろいろ変わってくると思うのだが。
0377デフォルトの名無しさん
NGNG日本語勉強して
何かわからないのか分からない
「微妙に、変化した記述」 って何を指すの
0378193
NGNG○->■に指すことは、積と表す事にする。
list->head->next=ptr;a*b*c=A
ptr->next=list->tail;A*c=a*b;
(A=a*b)としているが全部省略したら
同じ意味を指すので省略しないこととする。
ちなみに、headとtailの区別は考えてる。
この微妙な変化に、ソートの真髄があるんじゃ
ないかと考えている。
0379デフォルトの名無しさん
NGNG歪曲するのが好きなの?
0380デフォルトの名無しさん
NGNGシステムコールですね
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNGどこをどーしたら、そうなるん?
0383デフォルトの名無しさん
NGNG何か数学的なのかちっとも分からないし
「○->■に指すことは、積と表す事にする」 って定義が全然生きてないし
「微妙な変化」 がつまり何を指すのかやっぱり分からないし
どこにもソートになるような記述は無いし
結局何を訴えたいのかさえ
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGWin2kとWin98で動きが違って困ってます。
現象としては、CRLFのみの行を取得しようとした時
Win2kでは普通に読んでくれるんですが、
Win98だとeofになってしまいます。
何故eofになってしまうのかがよく分かりません。
申し訳ありませんが、ご存じの方がいらっしゃいましたらご教授下さい。
0386デフォルトの名無しさん
NGNGいずれにせよ、システムコールとはちと違うと思うが。
0387193
NGNGその一部分で、意味理解しないこと自体おかし。
日本語ちゃんと読んでる。 そう考えても自然じゃないの(積)
カンシャク持ちだねヽ(*`Д´)ノゴルァ
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGstrtol
0390デフォルトの名無しさん
NGNGlibrary call
0391hiloshi ◆W2li6n5Xa6
NGNGatoiじゃダメなんですか?
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNGそういえばそんなのありましたね。すっかり忘れてました。
>>391,>>389
ありがとうございました。
0394193
NGNG0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNGテキストの途中で読み込みが止まってしまうのは、元ファイルに EOF コード '\x1A'
が混じっている等がありますが、そりは Windows 3000 でも一緒だったはず。
よくわからないので、再現する最低のコードを示せませんか?
0397396
NGNG0398デフォルトの名無しさん
NGNG本当にfgetsがNULLを返すの?
0399385
NGNGこんな感じです
FILE* fpHoge;
char cHogeData[256];
char* cRet;
bool bRet = true;
if ((fpHoge= fopen("C:\\hogehoge.txt","r")) == NULL){
return;
}
while(bRet!=false){
memset(cHogeData, 0x20, sizeof(cHogeData));
cRet= fgets(cHogeData, 256, fpHoge);
if(cRet == NULL){
if(ferror(fpHoge)!=0){
fclose(fpHoge);
return;
}
if(feof(fpHoge)){
bRet = flase;
continue;
}
}
}
fclose(fpHoge);
0400デフォルトの名無しさん
NGNGなぜcHogeDataを0x20で埋めるのかサパーリわからん。
0401385
NGNG変数を使う前にクリアするのが癖なのです
でも、これが原因じゃないですよね?
0402400
NGNG/* いろいろ */
}
じゃだめなのか?(^_^;)
0404385
NGNG元々コボラーなので、この書き方好きじゃないんです。
もしかしてこの辺に問題有り?
0406デフォルトの名無しさん
NGNG問題となる現象は、CRLFだけの行を読んだときに
fgetsがNULL返して、ferrorがエラーなしで、feofがEOFだと言う
ということでいい?
0407405
NGNG0408デフォルトの名無しさん
NGNGerror C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。
VC++6.0
win98
です
0409デフォルトの名無しさん
NGNGポインタが指すものが違う。
キャストして。
0411デフォルトの名無しさん
NGNG1 番目の引数を
'int (__stdcall *)(void)' から
'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
に変換できないってことだよ。
0412デフォルトの名無しさん
NGNGとりあえず>>402の方法でやってみて。
/* いろいろ */というところにprintf("%s",cHogeData);とでもいれて。
0413385
NGNGありがとうございます。
自宅に98マシンが無いので、明日試して報告します。
0414412
NGNG0416385
NGNG当方もWindows 98 SE、VC++6SP5です。。
データのeofになってしまう部分をhexで見たら
0d0a0d0aだったのですが。
(前後3バイトを付けると 6161220d0a0d0a303030)
もう一度データも洗ってみます
0417デフォルトの名無しさん
NGNGうーん・・・
そのデータを使ったテキストでも、やっぱり再現しない。
399 への転記ミスとかと違う?
416 の環境で、399 まんまのコードは動く?
0418417
NGNG0419385
NGNG確かに>>399はここに載せる為に若干手を加えているので
これをそのまま動かしたって訳じゃないですね。
こちらも、試してみます。printf付きで
ありがとうございます
0420s.k
NGNGあと、ポインタが変数のアドレスを格納するのは分かるのですが、実際に
はどういう時に使うのですか?
0421デフォルトの名無しさん
NGNG> ダブルポインター
**p のようなものと思われ。
ポインタ変数を指すポインタ。
> 実際にはどういう時に使うのですか?
memset() とか scanf() とか使ったこと無い?
あんな風に呼び出し元の変数の値を変えたい時に使う。
あと、リンクリストとか作る時、
struct List
{
char data1[4];
int data2;
struct List *next;
}
とかやる。
0422デフォルトの名無しさん
NGNG( `Д) <ポインタのポインタ。
/(ヘ つ )ヘ 2次元配列もどきを作るときに使ったり、
ポインタの値そのものを変更する関数のパラメータに使ったり・・・
0423デフォルトの名無しさん
NGNGそれはただのポインタなんじゃ・・・
0424デフォルトの名無しさん
NGNGスマソ。
0425デフォルトの名無しさん
NGNG例えば、FILE *fi があったとして、これを他の関数で代入したい時、
f(fi); ではもちろんだめで、f(&fi); となる。
ところで、この関数のプロトタイプは
void f(FILE **fi);
となって、ポインタのポインタとなる。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG**といったら真っ先にstrtolを思い浮かべるんだけど。
0428427
NGNGダブルポインタの利用法じゃなくて、ポインタの利用法か。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGn3_data[6][7][8];
n2_data[7][8];
~n3_data初期化の処理
memmove(n2_data,n3_data[0],sizeof(char)*6*7);
でよいのでしょうか?
0431デフォルトの名無しさん
NGNGいいんじゃない?
ただ、そんなところで悩むのなら
for(i = 0; i < 7; i++){
for(j = 0; j < 8; j++){
n2_data[i][j] = n3_data[0][i][j];
}
}
にしたほうがいいとおもうが。
0432デフォルトの名無しさん
NGNGついつい自分の実力でできないようなので,やろうとしてしまう癖があるんですよ
ありがとう
0433デフォルトの名無しさん
NGNGchar num[10]={1,-1}
どっちでも,あとの配列は0で初期化する?
0434デフォルトの名無しさん
NGNG静内って知ってる?
0435デフォルトの名無しさん
NGNGANSI規格では要求される
0436デフォルトの名無しさん
NGNG> 静内って知ってる?
北海道の地名
0437デフォルトの名無しさん
NGNG北海道十勝郡浦幌町静内
0438デフォルトの名無しさん
NGNG怖くて修正できません。どうすればいいでしょうか?
以下エラーです。
gcc -DHAVE_CONFIG_H -I. -I. -I. -I. -I. -g -O2 -c -o src/ipc/semtool.o `test -f 'src/ipc/semtool.c' || echo './'`src/ipc/semtool.c
In file included from src/ipc/semtool.c:38:
/usr/include/sys/sem.h:93: field `sem_perm' has incomplete type
src/ipc/semtool.c:42: redefinition of `union semun'
src/ipc/semtool.c: In function `createsem':
略
make[1]: Leaving directory `/tmp/cygutils-1.1.2'
make: *** [all] Error 2
0439432
NGNG--------------------------------------------------------------------------------
ura@V:$ sed -n 93,101p /usr/include/sys/sem.h
struct ipc_perm sem_perm; /* permissions .. see ipc.h */
time_t sem_otime; /* last semop time */
time_t sem_ctime; /* last change time */
struct sem *sem_base; /* ptr to first semaphore in array */
struct sem_undo *undo; /* undo requests on this array */
ushort sem_nsems; /* no. of semaphores in array */
};
--------------------------------------------------------------------------------
ura@V:$ sed -n 42,52p src/ipc/semtool.c
union semun {
int val; /* value for SETVAL */
struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */
ushort *array; /* array for GETALL & SETALL */
struct seminfo *__buf; /* buffer for IPC_INFO */
void *__pad;
};
0441デフォルトの名無しさん
NGNGunion semunが2回以上出てきてるんじゃない?
0442デフォルトの名無しさん
NGNG関係あるんですか?
http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=%90%C3%93%E0+C%8C%BE%8C%EA
0443デフォルトの名無しさん
NGNGsemtool.c 内でunion semunを定義してるからじゃないか?
48〜52行目をコメントにしてみるとどうなる?
0444デフォルトの名無しさん
NGNG何をコンパイルしようとしてるのか知らんが、正しくconfigureできてないのかも。
0445デフォルトの名無しさん
NGNGつーかマルチすんな。
0446デフォルトの名無しさん
NGNGchar b[10];
とあって、
str(a,b)はエラーですよね?aにメモリ確保してないから。さらにaは大きさ10じゃなかったらやっぱり駄目ですよね?
0447デフォルトの名無しさん
NGNGじゃなくて、char a[]; そのものがコンパイル通らないだろ。
0448デフォルトの名無しさん
NGNG*aはよくてもa[]は駄目なんですか?何故?
0449デフォルトの名無しさん
NGNGグローバルならコンパイル通るかもね
その場合は (char *) 型になるし
内容は何指してるかわからないからダメダメ
0450デフォルトの名無しさん
NGNG初期化が必要だからじゃないのか。
char a[] = {"hogehoge"};
みたいに
0451デフォルトの名無しさん
NGNG最初a[]がどこか変なところを指しているのはわかってます。だからmallocでも使ってヒープとらないといけないんじゃないか?という質問なんですが。
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNGC-FAQの「配列とポインター」を読むこと。
0454デフォルトの名無しさん
NGNGこの件は C-FAQ に載っていない。
>>451
char a[] と定義する時、関数内であるならばそれはポインタではなく配列であり、
char a[] = "hogehoge"; のような初期化を要求することを意味している。
(450 の初期化は間違っている)
だから 447 の通り 「char a[]; そのものがコンパイル通らない」。
定義がグローバルである場合、それは extern char a[]; と等しく、配列ではなく
ポインタになる。
つまり、char *a; と宣言した場合に等しい。
なお、関数内でも extern char a[];と書いた場合はポインタになる。
0455デフォルトの名無しさん
NGNG> (450 の初期化は間違っている)
別に間違っていない。
> 定義がグローバルである場合、それは extern char a[]; と等しく、配列ではなく
> ポインタになる。
それは C++ の話で、C の場合はやっぱりコンパイルエラー。
0456デフォルトの名無しさん
NGNG要は、ポインタ使いたいなら a[] なんててせずに、素直に *a と書きなさいってこった。
0457デフォルトの名無しさん
NGNG> 定義がグローバルである場合、それは extern char a[]; と等しく、配列ではなく
> ポインタになる。
> つまり、char *a; と宣言した場合に等しい。
激しく間違い
C FAQを見たことはあっても、意味を理解できない阿呆は
以下の文章を16回声に出して読んでみろ。
6.1:
Q: あるソースファイルでchar a[6]と定義して、別のファイルで
extern char *aと宣言した、なぜこれはうまくいかないのか。
A: extern char *aという宣言が、実際の定義と食い違うからである。
「タイプTへのポインター」は「タイプTの配列」とは異なる。
extern char a[]を使え。
http://www.catnet.ne.jp/kouno/c_faq/c6.html
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1034337064/781
で出たような話題が早くもまた話題になるなんて・・・
これがCスレの恐ろしさか・・・
0460デフォルトの名無しさん
NGNG> これがCスレの恐ろしさか・・・
その通り、ジ○ンプのこ○かめと同様です。
0461デフォルトの名無しさん
NGNG同じものとは考えないほうがいい。
同じものとして扱える局面はあるが、根本的には別のものである。
混乱に拍車をかけてるのは関数の宣言で、
void foo(char str[]);
なんてできてしまうことだ。この場合「だけ」は例外でstrはポインタになる。
それ以外で、[]をつけて宣言した場合は全部配列だ。
0462デフォルトの名無しさん
NGNGまぁ、そのくらい住人が多いし初心者も気軽に質問できるってことですよ。
ていうか、前スレのことは全然気がつかなかった。
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1034337064/781
↑周辺みて笑いました。さも本当のようにどうどうと書いる。
0465デフォルトの名無しさん
NGNGgokurousan
0466hiloshi ◆W2li6n5Xa6
NGNG質問とかじゃないんですけど、以前、ソースの中身を気にしろって
事を言われたので、チェックして欲しいなと思いまして。
ちゃんと実行はされるんですけど、もっといい書き方があったら
教えて欲しいです。
作ったプログラムは、車を移動するってやつです。
今オレが使えるものを駆使しましたw
この程度ですが、どうかお願いします。
0467hiloshi ◆W2li6n5Xa6
NGNG/*mycarの座標*/
typedef struct
{
int x1;
int y1;
}point;
/*車(mycar)*/
typedef struct
{
double fuel;
point p;
}car;
/*X方向にx2、Y方向にy2移動*/
void move_car(car *a,int x2,int y2)
{
a->p.x1+=x2;
a->p.y1+=y2;
}
0468hiloshi ◆W2li6n5Xa6
NGNGvoid print_sub(car a)
{
printf("現在位置 x:%d\n",a.p.x1);
printf(" y:%d\n",a.p.y1);
printf("残り燃料:%.1f\n\n",a.fuel);
}
int main(void)
{
car mycar; /*車*/
int sel;
int x,y; /*移動距離*/
double use_fuel; /*移動して消費した燃料*/
puts("■車移動プログラム■");
mycar.p.x1=mycar.p.y1=0;
mycar.fuel=1000;
print_sub(mycar);
0469hiloshi ◆W2li6n5Xa6
NGNG{
do /*selが1か0でない時は繰り返す*/
{
printf("移動しますか(Yes/1 No/0):");
scanf("%d",&sel);
}while(sel!=1&&sel!=0);
if(sel==1)
{
puts("移動距離を入力してください。");
printf("X方向:"); scanf("%d",&x);
printf("Y方向:"); scanf("%d",&y);
0470hiloshi ◆W2li6n5Xa6
NGNGmycar.fuel-=use_fuel;
if(mycar.fuel>=0) /*燃料が残るなら動かす*/
move_car(&mycar,x,y);
else /*残らない時はその旨を表示して、燃料を戻す*/
{
puts("\n燃料不足で移動できません。\n");
mycar.fuel+=use_fuel;
}
print_sub(mycar);
}
else /*selが0の時、プログラムは終了へ*/
break;
}
return(0);
}
0471デフォルトの名無しさん
NGNG{
double fuel;
point p;
}car;
のpは,ポインタと間違われる可能性がある
あと,コピペの仕方が見にくいです
スペースを入れてくらはい
0472デフォルトの名無しさん
NGNGそして,すれ違い感が漂っている
0473hiloshi ◆W2li6n5Xa6
NGNG>テキストファイルとかに書いてうp
ってどういう事ですか?
あとすれ違い感って
スレ違いってことですか?
0474デフォルトの名無しさん
NGNG名前見てみろ!
0475472
NGNG| ̄ ̄( ゚Д゚) ̄ ̄| < もう寝るよ。おやすみ。
|\⌒⌒⌒⌒⌒⌒\ \
| \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
\ |⌒⌒⌒⌒⌒⌒|
\ |_______|
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGchar *GetAdr()
{
int i;
for(i=0;i<12;i++)
box[0][i]=1;
return box;
}
void main()
{
int i;
char *pbox;
pbox=GetAdr();
for(i=0;i<12;i++)
printf("%d\n"pbox[0][i]);
}
いろいろとエラーが出てしまいます。
どのようにすればいいでしょうか?
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGreturn box;
の時にどうすればいいのかわかりません。
0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG> いろいろとエラーが出てしまいます。
> どのようにすればいいでしょうか?
エラーが出たらエラーメッセージが指摘していることを直せ。
基本だ。
それをしようとしないで人に訊くだけなら迷惑だからプログラミングするな。
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNGんー、それで論争はちょっと無理げ
0488デフォルトの名無しさん
NGNGプ
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG間違えて文字入力した時の対策をしてくれ
この世の終わりまで回り続けるところだった
0491490
NGNG・・・鬱だ氏のう
0492デフォルトの名無しさん
NGNG0493Zetton ◆Rp2WIrE1u2
NGNGputs()関数やstrcpy()関数などは
配列の先頭のアドレスを渡すだけで
配列全体にアクセスできるんでしょうか?
puts()関数の内部的動きを教えて下さい。
0494デフォルトの名無しさん
NGNGあってるやん
0495Zetton ◆Rp2WIrE1u2
NGNG初歩的な質問ですいません。
puts()関数やstrcpy()関数などは
配列の先頭のアドレスを渡すだけで
配列全体になぜスできるんでしょうか?
puts()関数の内部的動きを教えて下さい。
0496デフォルトの名無しさん
NGNGa[0]='m';
a[1]='n';
a[2]='\n'`;
\nが見つかり出力はそこで終わり
0497デフォルトの名無しさん
NGNGなんでマニュアルを見ないんだろう・・・・
putsもstrcpyも配列内に\0が見つかるまで永久に処理を続けるの。
0498デフォルトの名無しさん
NGNG0499496
NGNG0500デフォルトの名無しさん
NGNGハァ?
0501デフォルトの名無しさん
NGNGこれだから窓際なんだ・・・
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGputsは\nを見つけても処理を終えないけど・・・・
0504デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGfgetsの仕様とごちゃまぜにした。に190円。
0507Zetton ◆Rp2WIrE1u2
NGNGvoid func(int arg[]);
main()
{
int a[]=
{
0,1,2,3
};
func(a);
/*
この時、関数にはaの先頭のアドレス
が渡されると思うんですが、
その場合、ユーザー関数の引数は
ポインタ変数じゃないといけない、
などいろいろな矛盾が出てくるんです。*/
}
void func(int arg[]) /* この時、ユーザー関数の引数には何が入っているのでしょうか? */
{
arg[0]=10;
arg[1]=11;
arg[2]=12;
arg[3]=13;
printf("%d %d %d %d",arg[0],arg[1],arg[2],arg[3]);
}
お願いします。
0508デフォルトの名無しさん
NGNGやはりあのZettonか
0509デフォルトの名無しさん
NGNG> お題:構造体をいちいちtypedefするのってどうよ?
宣言の時にいちいち struct つけなくていいからそうする
0510デフォルトの名無しさん
NGNGなんといっていいか、おそらくこういうことをやりたいんだろう。
二次元の配列をパラメータでやり取りするときはこうやる。
boxがポインタ型になったときはは(char**)じゃないぞ。(char (*)[12])だ。
---
#include <stdio.h>
char box[10][12];
char (*GetAdr())[12]
{
int i;
for(i=0;i<12;i++)
box[0][i]=1;
return box;
}
int main()
{
int i;
char (* pbox)[12];
pbox=GetAdr();
for(i=0;i<12;i++)
printf("%d\n", pbox[0][i]);
return 0;
}
0511デフォルトの名無しさん
NGNG> void func(int arg[]) /* この時、ユーザー関数の引数には何が入っているのでしょうか? */
&a[0]
0512デフォルトの名無しさん
NGNG逆にいうとそれだけなんだよな
0513デフォルトの名無しさん
NGNGprintf("%d %d %d %d",a[0],a[1],a[2],a[3]);
func(a);
printf("%d %d %d %d",a[0],a[1],a[2],a[3]);
で検証しないいけないんじゃなかろうか。
0514デフォルトの名無しさん
NGNG構造体宣言の時に 1 回だけ typedef するのと、構造体定義のたびに struct を
つけて回るのとどっちがいい?
0515デフォルトの名無しさん
NGNGあとはFILEみたいに構造体であることを使用者が知らなくてよいものをつくるときとか。
それならひとつの型とした方が自然。
0516デフォルトの名無しさん
NGNG'\0' との区別がついていないに \240-。
0518デフォルトの名無しさん
NGNGもしかしてさ、仮引数におけるvoid arg*とvoid arg[]はまったく同じだということをしらないとか?
0519518
NGNG0520デフォルトの名無しさん
NGNGFILEは使用者がメンバを使うわけじゃないからいいけど
メンバを使う場合は構造体であることがわかりやすい方がいいんじゃないかなぁ。
0521515
NGNG俺はそう考えてメンバーにアクセスするときはtypedefしないようにしているよ。
あまり受け入れられないスタイルだけど(^_^;)
0522主婦のサークルで〜す
NGNG私たち主婦が楽しめる安全でちょっとトキメキのある出会を求めて
只今男性会員を募集中です!! 女性会員も募集(^○^)/"
http://f-cc.com/~tokimail/
0523デフォルトの名無しさん
NGNGとりあえず、ざっと見た感想を。
燃料が足りるかどうか判別するのは、move_carの中でやったほうがよくないか?
で、move_carが返す値で燃料が足りてるかどうかmainで表示する。こんな風に。
#define MOVE_EMPTY_FUEL 1
#define MOVE_NORMAL 0
int move_car(...) {
:
if (燃料が足りない)
return MOVE_EMPTY_FUEL;
:
return MOVE_NORMAL;
}
int main() {
:
switch (move_car(...)) {
case MOVE_EMPTY_FUEL:
puts("\n燃料不足で移動できません。\n");
exit(0);
break;
みたいな感じ。
あと、print_subという名前はあまりよくないような気がする。
print_carとかね。できるだけ名前は具体的なものをつけた方がいいと思うぞ。
0524デフォルトの名無しさん
NGNGマジでか!
0525デフォルトの名無しさん
NGNGC言語の得意な主婦と出会いたいです!
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG/* いろいろ */
if(a==1||a==2||a==3||a==4){
/* いろいろ */
}
これは
switch(a){
case 1:
case 2:
case 3:
case 4:
/* いろいろ */
}
と書くべきですよね?
0530デフォルトの名無しさん
NGNGと書くべき。
0531530
NGNGじゃあ、、、
int a;
/* いろいろ */
if(a==1||a==2||a==4||a==5){
/* いろいろ */
}
これは
switch(a){
case 1:
case 2:
case 4:
case 5:
/* いろいろ */
}
と書くべきですよね?
0532531
NGNG529だ
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGそれ(switchの方)で良いんでねえの。
switch (var) {
case 1: case 2: case 4: case 5:
/* 処理 */
}
の方が見やすいかもしれない。その辺はお好みで
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNGお前の少ない脳でもちょっとは考えて発言しろや
便利に決まってんだろ。ヴォケ
0540デフォルトの名無しさん
NGNG俺にとっては不便だけどな。
05411/2
NGNG下記のプログラムで、逆ポーランド表記は可能でしょうか?
確認手段がなく、頭の中で実行可能かどうかの判断もできないヘタレなもので。
#include<stdio.h>
char stack[50],polish[50];
double v[50];
int pri[256];
int sp1,sp2;
int main(void)
{
int i;
char *p="逆ポーランド表記にする式";
for(i=0; i<=255; i++)
pri[i]=4;
pri['+']=pri['-']=1;
pri['*']=pri['/']=2;
pri['^']=3;
pri['(']=5;
pri[')']=0;
stack[0]=0; pri[0]=-1;
05422/2
NGNGwhile(*p != '\0'{
while(pri[*p]<=pri[stack[sp1]] && stack[sp1] != '(')
polish[++sp2]=stack[sp1--];
if(*p != ')')
stack[++sp1]=*p;
else
sp1--;
p++;
}
for(i=sp1; i>0; i--)
polish[++sp2] = stack[i];
for(i=1; i<=sp2; i++)
putchar(polish[i]);
}
誤字脱字等は自分でなんとかできますが、
何か決定的な間違いとかありましたらアドバイスを。
0543デフォルトの名無しさん
NGNG神
普通の書籍では,char (*GetAdr())[12]のようなことが書いていないので助かりました
0544デフォルトの名無しさん
NGNG主婦だぁ?
中学生以下でないと反応しません
0545デフォルトの名無しさん
NGNGif (0 < a && a < 5 && a != 3)
0546デフォルトの名無しさん
NGNG全角スペース入れて見やすくしてくれ
0547デフォルトの名無しさん
NGNG546 には従うな
&nbsp; にしろ
0548デフォルトの名無しさん
NGNGそれ、ABONEのリンク先表示機能で見たとき死ぬほど読みにくい。やめてくれ。
0549デフォルトの名無しさん
NGNG数字が 2 桁以上になると実行結果が訳わからなくなる
0550デフォルトの名無しさん
NGNGそんな事は A Bone の作者に文句言え
547 に言うのは筋が違う
0551hiloshi ◆W2li6n5Xa6
NGNG一通り基礎はやったかなって感じです。
ファイルの入出力とかはまだなんで、新しい本を買いたいと思うんですが
そこで、これが出来たら基礎はおkみたいな
問題出してくれませんか?
テキストの問題とか、Web上のとかは一通りやってみたんで。
お願いします。ぺこり
0552デフォルトの名無しさん
NGNG「C言語による最新アルゴリズム事典」を立ち読み。
0553hiloshi ◆W2li6n5Xa6
NGNG奥村晴彦
『C言語による最新アルゴリズム事典』
技術評論社,1991年,ISBN4-87408-414-1,2400円
ですか?
0554デフォルトの名無しさん
NGNG0555hiloshi ◆W2li6n5Xa6
NGNG問題ないですかね?
0556デフォルトの名無しさん
NGNG0557hiloshi ◆W2li6n5Xa6
NGNGふふ。やってみますw
0558デフォルトの名無しさん
NGNG立ち読みするならコレ。
http://pc3.2ch.net/test/read.cgi/tech/1006933077/
0559デフォルトの名無しさん
NGNG公開されてるソースを片端から読んでみるとか。
*BSDやらLinuxやらはコードの宝庫だぞ。
あと、webだと
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
こんなのもある。これを読めば、どういうプログラムを
書いてはいけないかがわかる(w
0560>>541-542
NGNG>>549さん
後輩の宿題なんで詳細はわからないのですが、
二桁以上の式はないようなので、その点は大丈夫かと思います。
アドバイスありがとうございます。
#include<stdio.h>
char stack[50],polish[50];
double v[50];
int pri[256];
int sp1,sp2;
int main(void)
{
int i;
char *p="逆ポーランド表記にする式";
for(i=0; i<=255; i++)
pri[i]=4;
pri['+']=pri['-']=1;
pri['*']=pri['/']=2;
pri['^']=3;
pri['(']=5;
pri[')']=0;
stack[0]=0;
pri[0]=-1;
0561>>541-542
NGNGwhile(*p != '\0'{
while(pri[*p]<=pri[stack[sp1]] && stack[sp1] != '(')
polish[++sp2]=stack[sp1--];
if(*p != ')')
stack[++sp1]=*p;
else
sp1--;
p++;
}
for(i=sp1; i>0; i--)
polish[++sp2] = stack[i];
for(i=1; i<=sp2; i++)
putchar(polish[i]);
}
またやってしまった…
逆に迷惑だと思うので修正はひかえます…
0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564>>541-542
NGNGでも>>549さんのレスをみると一桁なら大丈夫のようなので、
宿題スレにはいかなくても良いかな?と思います。
皆さんアドバイスありがとうございました。
0565549
NGNG待った、漏れは、詳細な検証はしてないぞ。
1+2 とか 1+(2+3) くらい。
しかし、本人の宿題を持ってくるだけでスレ違いなのに、後輩の宿題とは・・・。
564 もその後輩も気が知れない。
0566デフォルトの名無しさん
NGNG0567hiloshi ◆W2li6n5Xa6
NGNGfgetsってどう使うんですか?
実引数が3つありますよね?
fgets(A,B,C)ってので、
それぞれどういう意味なんですか?
あと上記だとCのところにstdinとあるやつも
意味不明ですた
0568デフォルトの名無しさん
NGNGDon't mach!
0569デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt_fgets.2c_.fgetws.asp
0572デフォルトの名無しさん
NGNGおいおい、ファイルはやっとらんのか。fopenとかそういうやつだ。
man fgetsしろ、といいたいところだがwindowsだったな。
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/fgets.3.html
を見れ。これはLinuxのmanページだが、fgetsはISOの標準関数なので、
ここの説明でもんだいなかろ。
わかんない関数が出てきたらまず
http://www.linux.or.jp/JM/
のman on WWWで調べるといいと思う。
0573hiloshi ◆W2li6n5Xa6
NGNGありがとうございます。
ファイルはまだなんですよ。本に書いてる事は一通りやったんですが
一言も出てきませんでした。
だから今Cの解説サイトとか見て、ファイルIOの勉強します。
0575hiloshi ◆W2li6n5Xa6
NGNGCを勉強しながらC++もやりたいなって思ってるんですよ。
今大学でやってるのはCだけなんですけど
来年からC++とJavaもやるんで、ちょっと予習しようかなって。
CとC++を同時に学ぶ事は何か問題ありますか?
0576デフォルトの名無しさん
NGNG>>572 のページはあくまでLinux用だからな。標準ではない拡張がなさ
れてる関数も多いから注意しとけよ。
0577デフォルトの名無しさん
NGNGこれでも買ったらどうだ?
ttp://www.hir-net.com/book/book19/
0578デフォルトの名無しさん
NGNGC++ は、C を日本語と同じくらいスムースに使えないと手に負えないぞ。
C をベースにして拡張しまくった言語だから。
C++ コンパイラで C をコンパイルすることはできるが、それは C++ を学ぶとは
言わないし。
0579デフォルトの名無しさん
NGNGあー、この本いいっすよね。たまにバグがあるけど(w
おすすめの本です。
0580デフォルトの名無しさん
NGNG何を可能か訊きたいのかわからないが、コンパイルは可能だ。
0581デフォルトの名無しさん
NGNGそれならCなんてやらずにC++やっとけよ。
0582hiloshi ◆W2li6n5Xa6
NGNGじゃあやっぱりCをやりまくってから
移った方がいいですね。
やっぱもう一冊本買おうかなーって思うんですけど
「新C言語入門 シニア編」 ソフトバンク 林晴比古著
がおすすめだってよく書いてるんですが
この本持ってる人とかどうですか?
0583デフォルトの名無しさん
NGNG0584hiloshi ◆W2li6n5Xa6
NGNGでも今学校でCやってるんすよ。
それが無かったら今すぐにでもC++いきたいんですけどねー。
ああ、やらされる感が・・・
0585デフォルトの名無しさん
NGNGその本タメよタメタメ!バグだらけだし、未だに古いCのスタイル
使ってるし。
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG古い?どのへんが?
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNGだって学校の教科書だったんだもん!!
今では開くことなくなったなぁ。役に立たないから。
0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNGC で書いて下さい。
0598デフォルトの名無しさん
NGNG"マナたんハァハァだよな"
"592 :デフォルトの名無しさん :02/10/25 00:47"
"麻〜奈〜"
"593 :デフォルトの名無しさん :02/10/25 00:49"
"あんたらSMか"
"594 :デフォルトの名無しさん :02/10/25 00:50"
"まなタンに縛られて鞭打たれてハイヒールで踏まれたいです。"
"595 :デフォルトの名無しさん :02/10/25 00:52"
"マリオです"
"596 :デフォルトの名無しさん :02/10/25 00:52"
"ルイージです";
0599デフォルトの名無しさん
NGNGへ〜Cって遭難?
0600Windows 3.1
NGNG0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGまあ、先頭に char *dummy = とか書いてくれれば文法エラーではない。
0603デフォルトの名無しさん
NGNG( ´_ゝ`)プッ
0604デフォルトの名無しさん
NGNGこれだけでもOKだろ?
なんの意味もないから警告はでるかもしれないけど。
0605デフォルトの名無しさん
NGNGOK だ。
ところで、それで何をやりたい?
0607デフォルトの名無しさん
NGNG">>602の教訓を生かして、これからはコメントを定数として宣言します!!";
return 0;
}
0608つまらん
NGNG1; 名 無し さん
これだけでもOK :02/ 10 /2
なんの意 5 02 :39
605 :デフォ 味もなだろ? は
>>604 ルトのいから警告
OK だ。 ところで 名無しさん でるかもし
606 :デフォ 、それ :02/10/25 0
>>60 5 ルトので 何 をやりた れないけど。
>>602が定 名無しさん い? 2:41
60 7 :デフ ォ 数だけ :02/10/25 0
in t ma in ルトの書くのは違
">>6 () { 名無 しさ ん 反だと 言っ て2:42
retu 02の教 :02/10/25
} rn 0; 訓を 生かして いるみたいだ から・・・
、これからは 02:52
彡 コメ ント を定数
彡 とし て宣 言し
彡 ま す!!";
(,,ノ゚д゚)ノ
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620hiloshi ◆W2li6n5Xa6
NGNGCで2冊目に買う本としてお勧めってあります?
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG本の事なら ↓ に逝ってちょ
推薦図書/必読書のためのスレッド PART 6
http://pc3.2ch.net/test/read.cgi/tech/1033207156/l50
0623デフォルトの名無しさん
NGNGK&R
この本が理解できれば、Cを使えると言ってもいいし、
C++に移行してもいいだろう。
0624K&R厨
NGNGそれでもってんなら聖書イットケ
0625デフォルトの名無しさん
NGNG0626hiloshi ◆W2li6n5Xa6
NGNGすいませんでした。
今度から調べます。
0627デフォルトの名無しさん
NGNG0628hiloshi ◆W2li6n5Xa6
NGNGまあC言語に関する質問かなって・・・
0629デフォルトの名無しさん
NGNG0630hiloshi ◆W2li6n5Xa6
NGNG9月くらいにHello World作りましたから。
でも来年からはJavaとC++が出来る!!
0631デフォルトの名無しさん
NGNGガキ?
0632hiloshi ◆W2li6n5Xa6
NGNGオレは本を読みながらやったほうが
技術も身に付くと思ってるので聞いているだけです。
0633デフォルトの名無しさん
NGNG幻想です。
0634デフォルトの名無しさん
NGNG...
char str[MAX]
とする場合と
char str[100]
にする場合では何が違うんですか?どんなケースに使い分けるんですか?
0635デフォルトの名無しさん
NGNG出来るだけマクロ使ったほうが良い。
0636デフォルトの名無しさん
NGNG定数には名前を付けた方がわかりやすい。
って言うか、
hankei * PI * PIとhankei * 3.141592653589793238 * 3.141592653589793238の差。
後、値が変わったときの修正が一カ所ですむのも魅力。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG要素数でいろいろ処理することがあれば、プログラムを改良する
時に、マクロ一箇所書きかえれば済むでしょ。
0639デフォルトの名無しさん
NGNGその100という数字を後で、1000に変えるとき、
MAXを1000に変えるだけで済むか、
その変数のスコープ内の100という値を1000に変えるか。
後者の場合、その変数とは無関係な100が存在している
可能性も考慮しなくてはならない。
0640デフォルトの名無しさん
NGNG漏れは実行スピードは変わらないと思ってたけど・・・。
0641デフォルトの名無しさん
NGNGプリプロセッサが書き換えるから実行効率は変わらん
保守性向上や、読む人に意味をはっきりさせるためにマクロをつかう
p[100] と q[100] だと 100 が同じ意味なのか偶然同じ数なのかが区別できん
0642デフォルトの名無しさん
NGNGコンパイルの時多少落ちるよなw
0643デフォルトの名無しさん
NGNG真面目すぎ
0644デフォルトの名無しさん
NGNGマジックナンバーの問題って重要だと思うよ。
自分の主観的なイメージを周りに反映させようとしているの?
エゴだよ。それ。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG簡単な質問だから厨房がはりきってしまった
0647デフォルトの名無しさん
NGNGプログラムを見直すほうがよい”とかかれているんですが、どうして使わないほうが
よいのでしょうか?房な私から見れば書式も簡単で使いやすいんですが…。
0648デフォルトの名無しさん
NGNGプログラムが死ぬほど読みにくくなるんです。
昔のは関数とかの垣根を無視してジャンプできたりしたんで。
0649647
NGNG0650デフォルトの名無しさん
NGNG安易にループの中からループ開始前の行に戻れたりするんです。
x;
while(a == 0)
{
if(a != 8)
goto x:
}
後、順次、選択、繰返で構造化プログラムの制御は可能ってことになってるしね。
一つの命令でそれらを超えたことを出来るからね。
行儀の悪いおばはんみたいなもんだ。
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNGたとえばソース中にifとかwhileとあってもプログラムの制御が
どこに飛ぶか一目瞭然だけど、
goto label;
とかあると、ラベルがどこにあるか探さないと制御がどこにいくか
分からないでしょ。
でかい関数のなかで、gotoが多数使われていると、追いかけるのが
なかなかたいへん。
0653デフォルトの名無しさん
NGNG超分かりやすかったです、ありがと
0654デフォルトの名無しさん
NGNGっていたいなんなんでしょう?
誰か、おしえて〜〜
0655s.k
NGNGください。あと、静的記憶域期間はなんと読むのですか。
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG要はstaticな変数のスコープ?
0658s.k
NGNGそうです
0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNGJIS用語らしい。X3010に同じ語句があった。
0661デフォルトの名無しさん
NGNGじゃあ論争の火種を。
auto:宣言されたブロックとその子孫ブロック内でのみ生きられる。
static:プログラム終了まで居続ける。
0662デフォルトの名無しさん
NGNGそのままなので論争になりそうな気がしない。
0663655
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNGファイル有効範囲
auto:extern可
static:extern不可
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGは、意図的にそうしてるだけだわね。
0668デフォルトの名無しさん
NGNG「静的記憶域期間」)、名前のスコープをファイル内に限定するのと
(同じく>>655の「ファイル有効範囲」)、二つの違う意味を持つというのは
Cの言語仕様のよろしくないところだと思うんだが。
後者の意味のキーワードは"private"とかにすればよかったのに。
C++で使われてしまったのでもはや不可能だが。
0669655
NGNGint fx=0;
void func(void)
{
static int sx=0;
int ax=0;
printf("%3d%3d%3d\n",ax++,sx++,fx++);
}
int main(void)
{
int i;
puts("ax sx fx");
puts("----------");
for(i=0; i<10; i++)
func();
puts("----------");
return (0);
}
上記のプログラムでaxの値が変化しない所が分かりません。
0670デフォルトの名無しさん
NGNGauto変数は関数に入るたびに初期化されるから。
static変数はプログラム開始時に一度だけ初期化されるだけ。
0671655
NGNGありがとうございます
0672デフォルトの名無しさん
NGNGmalloc()とfree()を実現する方法が載っているらしい。
今課題中、近くに本がない
誰か、おしえて〜〜
0673デフォルトの名無しさん
NGNGとあって、
strcpy(a,"hoge");
とすると自動的にhogeのあとに\0は入りますか?
0674デフォルトの名無しさん
NGNG0675673
NGNG0676デフォルトの名無しさん
NGNG0677673
NGNGchar a[1024];
char b[1024] = "hoge";
で
for(i=0;i<4;i++)a[i]=b[i];
の時は?
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNG入るかもしれない。
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNGなんでそう言い切れるんだか理由を述べよ。
0682デフォルトの名無しさん
NGNGネタですか?
先頭から4文字を自分で数えられないの?
0683デフォルトの名無しさん
NGNGハァ?
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNGネタというか、ひねくれ者ですか?
要するに確保時に a[4]がたまたま \0になっているかも
しれないといいたいの?
0686デフォルトの名無しさん
NGNGハァ?
0687デフォルトの名無しさん
NGNGそれか静的変数だな。
ネタというか、アフォかと言いたい。
0688デフォルトの名無しさん
NGNG>>677のaがグローバルじゃないなんてどうしてわかるんだ?
0689デフォルトの名無しさん
NGNGだからネタですか?
低レベルなネタなら他へ逝ってくれ。
0690デフォルトの名無しさん
NGNG知るかよ。
0691デフォルトの名無しさん
NGNGはネタなので放置。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGお前の答えは幼稚なんだよ。
673と677はそういう主旨の質問じゃないだろうが。
それとも自作自演して喜んでるのか?
0696デフォルトの名無しさん
NGNGか。ネタなら少しは捻れよ。
0697デフォルトの名無しさん
NGNG自動か静的かによって答えが変わるんだから「かもしれない」で間違いではないだろ。
説明不足ではあるが。
0698デフォルトの名無しさん
NGNGこんな煽りを入れるヤシに今更マジレスされてもな。
0699デフォルトの名無しさん
NGNGどういう主旨でどういう答えが幼稚じゃない答えなんだか示して欲しいものだが。
0700デフォルトの名無しさん
NGNG自作自演じゃないんだが。
つーかマジレスされると困るのかよ。>>680の答えは。
0701デフォルトの名無しさん
NGNGネタは放置。
0702677
NGNGってか荒れましたねw
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNGだからaがグローバルなら入るっつの
0706デフォルトの名無しさん
NGNG>>677のforループでは'\0'は入らないぞ。
入っているか? という質問であればそりゃ入っているかもしれないし入っていないかもしれない。
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNGされる。ちなみにstaticな配列もグローバルスコープ、ブロックスコープ共に0クリアされる。
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG厳密にはauto変数な、ってautoって言葉は規格から消滅したのかな。
staticでないローカル変数のみ初期化されない。
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGみんな飢えてんだな。
もっとマシなのをきぼーん。
0716デフォルトの名無しさん
NGNGchar b[5]={};
0717デフォルトの名無しさん
NGNG/* 配列に空文字列をセットする3つの方法 */
strcpy(a, NULL);
strcpy(a, 0);
strcpy(a, "");
0718デフォルトの名無しさん
NGNGネタですか?
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGstrcpy(a, 0);
はありえない。文字列に数値をコピーて。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG要するにNULLのことでしょ。(関数が宣言されていることを前提に)
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGそのうち
717で書いたstrcpyは自作の関数(orマクロ)ですが、何か?
とか言い出すぞ。
0725デフォルトの名無しさん
NGNG違うけど。
0726デフォルトの名無しさん
NGNGまださっきの引きずってるのか。
0727デフォルトの名無しさん
NGNGそう言えよ。また盛り上げろ。
0728デフォルトの名無しさん
NGNG粘着ウゼ
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNGジサクジエンは放置(´・∀・`)
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG何でも聞け!
0733デフォルトの名無しさん
NGNGその関数でどういう動作を想定しているんだ。
0734デフォルトの名無しさん
NGNG数値って? strcpyは0を(char*)と解釈しますが。
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGこれも実は動くって知ってたか?
0738722
NGNG> その関数でどういう動作を想定しているんだ。
そんなことは知らんよ。というか、
ネタだろ というのを否定したわけじゃない。
> strcpy(a, 0);
> はありえない。文字列に数値をコピーて。
という書き込みに対して、
数値をコピーではなくNULLポインタを渡す動作でしょ
と言ってるだけ。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG動く動かない以前にコンパイル通らないんですけど。
%cat neta.c
#include <string.h>
int main(int argc, char * argv[])
{
char a[8];
strcpy(a, { 'b', '\0' });
return 0;
}
%gcc neta.c
neta.c: In function `main':
neta.c:5: syntax error before `{'
%
0741デフォルトの名無しさん
NGNGやり方がわからないです。
ご教授願えないでしょうか?
0742デフォルトの名無しさん
NGNG細かい話をすると、ポインタが与えられる文脈で
0が出てきたらコンパイラはNULLポインタと解釈する。
だから、strcpyのプロトタイプが与えられてないときに、
strcpy(a,0) なんてやると0はどう解釈されるかわからない。
単に、strcpyにバイナリ0がわたるだけ。
プロトタイプが与えられているとNULLポインタが生成されて、
strcpyにNULLポインタが渡る。
規格ではNULLポインタがバイナリ0である保証はない。
(ただしほとんどの処理系はバイナリ0だと思う)
0743デフォルトの名無しさん
NGNGtmpfileのプロトタイプは
FILE *tmpfile(void);
であるから、読むときはfgetcとかfgetsとかfreadとかを使えばよろしい。
ただし、普通tmpfileを読む前には書いてるのが普通だから(じゃないと空)、
読む関数を発行する前にfseekする必要がある。
0744デフォルトの名無しさん
NGNG書き込んだあとでrewind()すればファイルポインタが先頭に戻るので、
書いた内容が読めます。
0745741
NGNG動きました、ありがとうございます。
0746デフォルトの名無しさん
NGNGコピーしようとする。
0番地にアクセスした場合の動作は処理系依存。
0747デフォルトの名無しさん
NGNG> 0番地
もうネタは結構。
0748デフォルトの名無しさん
NGNG円とか書けないんですか?
0749デフォルトの名無しさん
NGNG>>748
printf("点円");
0750デフォルトの名無しさん
NGNGa=func();はコンパイルが通りますよね。
これってどう動作するんですか?
やっぱり未定義ってやつですか?
0751デフォルトの名無しさん
NGNG( ̄□ ̄;)!!
ないの!?
0752デフォルトの名無しさん
NGNG標準関数だけだと*と空白をつかって書き出すくらいしか・・・
0753デフォルトの名無しさん
NGNG標準関数以外を使えばできるとな
どんな関数でつか?
0754デフォルトの名無しさん
NGNG標準ではないから情報処理試験では線を引く関数などを独自に定義しているな。
0755デフォルトの名無しさん
NGNG正直しらん。
環境を書いてくれれば他の人が答えてくれるかも。
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG逆に言えば知らなくても大丈夫ってことか
それにしても何でないんだろな
いろいろ便利だと思うのに・・・
0758デフォルトの名無しさん
NGNGコンパイラはプロトタイプや定義の与えられてない関数があったとき、
その関数が返す値をintと仮定する。
これは古のCから引き継いだ仕様だ。
0759デフォルトの名無しさん
NGNGコンパイラは何つかってるの?
0760デフォルトの名無しさん
NGNG点を表示することは可能でしょうか?
0761デフォルトの名無しさん
NGNGputs(".");
0762デフォルトの名無しさん
NGNGwindows使ってる香具師はとりあえず猫みとけ。
0763ユカリ
NGNGここのスレは、面白いですね。
http://www.h5.dion.ne.jp/~gekitoku/
http://www.h4.dion.ne.jp/~gekiyasu/
http://www.h5.dion.ne.jp/~gekirea/
http://www.h4.dion.ne.jp/~shinsetu/
http://www.planning-instigator.com/silentpeople/best/index2.html
0764デフォルトの名無しさん
NGNG7 63 :ユカ :0 5 21:
どうも リ 、初めまし 0/2
このスレは、面 て。 すね。 itoku/
こ h t tp://www.h5 白いで e.jp/~gek
htt p 4. .dion.n iyasu/
ht t ://www.h ne.jp/~gek ea/
h tt p://www.h5 dion. jp/~gek ir
http p://www.h4 .dion.ne. p/~shinsetu/
://www .pla .dion. ne.j
nning -insti gato r.com/sile
ntpeople/be
彡 st/inde x2.ht ml
彡
(,,ノ゚д゚)ノ
0765デフォルトの名無しさん
NGNG0766また貴様か!&rlo;!ろり懲はし少&lro;
NGNGヽ \
/ \ \
∧_∧/
(;´Д`) i i i
/ ヽ _ i i i--、
./| | | |  ̄ ̄ ̄ |:::::|.
/ \ヽ/| | ノ__ノ..
/ \\| |
/ /⌒\ し(メ .i i i . .
/ / > ) \ ノノノ
/ / / / .\_ ザックザック
し' (_つ /:::::/::... /ヽ
; "ノ・ ./∴: / )i iヽ-、_へ ,ヘ
'',, : :―― / / i i i iヽ . ̄ ゙― ノ /
n_ _/; i .ノ / /ノ-' ̄ ゙ ― 、__ノ
_ノ 二二二、_( _Д_ ;)-ヽ_ノ-'>>763
゙ー ''~ ∨ ̄∨
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGRTCはそんなに高い精度持たないだろ。
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG「追加モードで "car.dat" をオープンする」
ってどういうことですか?
0774デフォルトの名無しさん
NGNGテラ単位越えてる?それ。
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNGなるほど。
r+とw+ってどう違うんですかね?
書き込んで読む込むのと
読み込んで書き込む?
逆か?
読み込んで書き込むのはわかりますけど、
書き込んでから読み込む必要ってあります?
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNG0779mokorikomo
NGNGそんな解像度のハードウェアが存在するのか?
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG2^(-15) or 10^(-15) Dotch?
0783デフォルトの名無しさん
NGNG以降はこちらへどうぞ
ここだけ時間が5年進んでいるスレ。
http://pc3.2ch.net/test/read.cgi/tech/1028450760/
0784デフォルトの名無しさん
NGNGなんでかわかる?
#include <stdio.h>
int check_str(char *name)
{
char *end="end";
while((*name++)==(*end++))
if(*name=='\0'&&*end=='\0')
return(1);
return(0);
}
0785デフォルトの名無しさん
NGNG{
FILE *fp;
char maker[20],car[20];
int cc;
fp=fopen("car.dat","w");
while(1)
{
printf("メーカ名を入力してください(終了条件/end):");
gets(maker);
if(!check_str(maker))
{
printf("車種を入力してください:");
gets(car);
printf("排気量を入力してください:");
scanf("%d",&cc);
fprintf(fp,"メーカ名:%s 車種:%s 排気量:%d\n",maker,car,cc);
}
else
break;
}
fclose(fp);
return(0);
}
0786デフォルトの名無しさん
NGNG取りあえずstrcmp()って知ってるか?
0787デフォルトの名無しさん
NGNGしらねーだ
なんだべかそれ?
0788デフォルトの名無しさん
NGNG思い出した!
stringヘッダのだ
文字列比較ってやっちゃな
0789デフォルトの名無しさん
NGNGそうだっちゃ
0791デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *fp;
char maker[20],car[20];
int cc;
fp=fopen("car.dat","w");
while(1)
{
printf("メーカ名を入力してください(終了条件/end):");
scanf(" %s", maker);
if (strcmp(maker, "/end"))
{
printf("車種を入力してください:");
scanf(" %s", car);
printf("排気量を入力してください:");
scanf("%d",&cc);
fprintf(fp,"メーカ名:%s 車種:%s 排気量:%d\n",maker,car,cc);
}
else
break;
}
fclose(fp);
return(0);
}
0792デフォルトの名無しさん
NGNGでもなんかね、二回目からのメーカ入力のところが
飛ばされるんだ。
一回目はちゃんと入力待ちになるのに、
二回目はなんねーんだよ。
なんなんだよこれはよー。
0793デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *fp;
char maker[20],car[20];
int cc;
fp=fopen("car.dat","w");
while(1)
{
printf("メーカ名を入力してください(終了条件/end):");
scanf("%s", maker);
if (strcmp(maker, "/end"))
{
printf("車種を入力してください:");
scanf("%s", car);
printf("排気量を入力してください:");
scanf("%d",&cc);
fprintf(fp,"メーカ名:%s 車種:%s 排気量:%d\n",maker,car,cc);
}
else
break;
}
fclose(fp);
return(0);
}
0794デフォルトの名無しさん
NGNG飛ばされるのは、scanf("%d", &cc); で残った改行文字が次の gets(); で
読まれるからだよ。
こういう場合は scanf("%s")にして、改行文字を飛ばせばいい。
0795デフォルトの名無しさん
NGNGなんでgetsじゃなくscanf?
もしかして変な動作はgetsが原因?
0796デフォルトの名無しさん
NGNGホワイトスペース文字 " ", "\t", "\n"は %c 以外での型指定文字では
読みとられないから。
gets()はホワイトスペース文字も読み込んでしまう。但し行末の改行文字
は"\0"に変えるけど。
0797デフォルトの名無しさん
NGNGやべー!どっちを使えばいいんだ!
scanfはスペース読めないんだよね?
しかも評判悪いし・・・。
でもなんでこのプログラムは
getsじゃだめなんべか?
わからんべ。
教えて欲しいだす。
0798デフォルトの名無しさん
NGNG>しかも評判悪いし・・・
何がだ?オーバーフローの可能性はgetsにもあるぞ?
0799デフォルトの名無しさん
NGNG基本的にはgets()とscanf()を混ぜるとよろしくない。どうしても
gets()を使いたいなら、全部gets()にして、最後のscanf()の
所をatoi()でコンバートすべし。
0800デフォルトの名無しさん
NGNGんー。
実行結果はこうなったんだよね。
メーカ名を入力してください(終了条件/end):HONDA
車種を入力してください:CIVIC
排気量を入力してください:1500
メーカ名を入力してください(終了条件/end):車種を入力してください:
排気量を入力してください:
a
メーカ名を入力してください(終了条件/end):車種を入力してください:end
たぶんgetsが原因だと思うんだけど
0801デフォルトの名無しさん
NGNGなんかね、C++の入門サイトみたいなとこに
「あの悪名高きscanf・・・うんぬんかんぬん」
って書いてあったよ。
しかもここの住人にもgets使えっていわれたし
0802デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE *fp;
char maker[20],car[20],buf[20];
int cc;
fp=fopen("car.dat","w");
while(1)
{
printf("メーカ名を入力してください(終了条件/end):");
gets(maker);
if (strcmp(maker, "/end"))
{
printf("車種を入力してください:");
gets(car);
printf("排気量を入力してください:");
gets(buf);
cc=atoi(buf);
fprintf(fp,"メーカ名:%s 車種:%s 排気量:%d\n",maker,car,cc);
}
else
break;
}
fclose(fp);
return(0);
}
0803デフォルトの名無しさん
NGNG田舎に帰るにはまだはやいんべ。んだ。
もう少しがんばりますんだ。んだ。(ほじほじ
0804デフォルトの名無しさん
NGNGこのスレで勧めたのはfgetsじゃないのか
0805デフォルトの名無しさん
NGNGgccとかご丁寧に警告出すしね。
0806デフォルトの名無しさん
NGNGfgetsってファイル入力の時に使うンでないの?
0807デフォルトの名無しさん
NGNGそうそう、このスレではfgetsとsscanfだったような。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG初心者のオレにはわからん!
ちなみに前はC言語の事ならオレにきけ!とか
行ってますた
今度からここにしよう
ところでsscanfとfscanfってどう違うン?
0811デフォルトの名無しさん
NGNG標準入力決め打ちか任意のファイルか。
0812デフォルトの名無しさん
NGNGで、stdinってのは標準入力ストリーム?だっけ?
つまりキーボードね、はいはい。
で、1つ目が文字列でしょ?代入する。
2つ目は文字数?これがよくわかんねーんだが・・・
さあ、どする!!??
0813デフォルトの名無しさん
NGNGfscanf()もホワイトスペース文字を読み飛ばさないから都合悪いよ。
sscanf()はバッファにホワイトスペース文字が残っても捨てられるだけ。
0814ユカリ
NGNGプランテック製の「 RX-2000�V 」を改造済み
にした、アイティーエス製の「 RX-2000�V 」↓
http://user.auctions.yahoo.co.jp/jp/user/neo_uuronntya#.2ch.net/
現在、本当に人気がある様です。
≪宣伝ではありません≫
関連ホームページ↓
http://www.h5.dion.ne.jp/~gekitoku/
http://www.h4.dion.ne.jp/~gekiyasu/
http://www.h5.dion.ne.jp/~gekirea/
http://www.h4.dion.ne.jp/~shinsetu/
http://www.planning-instigator.com/silentpeople/best/index2.html
0815デフォルトの名無しさん
NGNGchar buf[20]; とかしてあって、
fgets(buf, 20, stdin); とすれば、bufの文字数を超えて読みとられる
のを防げる。
0816デフォルトの名無しさん
NGNGその辺の話はまだオレには早いみたいね。
全然わからん。
オレの聞いた感じだと、
\nをちゃんと改行として認識できる関数と、
認識できない関数を混ぜてつかったら危険だ!
だからそんな改行とかなんて、切捨てる関数を使え!!
って感じ?
0817デフォルトの名無しさん
NGNGちょっとニュアンスが違うけど、だいたいそういうことです。
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG>>811
>標準入力決め打ちか任意のファイルか。
sscanfがキーボードで
fscanfはどっちでもって事かい?
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGfgets() + sscanf()がキーボード
fscanf()はファイル
という風にしておいた方がよさげ。
0822デフォルトの名無しさん
NGNGサンクス!!お礼にオレの溜め込んでるエロサイトから一つ・・
ttp://www.3wisp.com/asian/jscg/jh032/jscgirls02.htm
0823デフォルトの名無しさん
NGNG(・∀・)イイ!!
0824デフォルトの名無しさん
NGNGまだまだあるぜ・・・
ttp://www.girlshost.com/asian/jpsexy/008/gallery8.htm
0825デフォルトの名無しさん
NGNGまた教えてもらったら
公開するさ
おまえらがんばれ!
0826デフォルトの名無しさん
NGNG0827デフォルトの名無しさん
NGNG0828デフォルトの名無しさん
NGNG仲間キタ━(・∀・)━!
0829デフォルトの名無しさん
NGNGCの質問しろよ
もっときぼん
0830C言語初心者
NGNG2chのトリップを演算するコードをどなたかCで書いていただけませんか?
PHPだと、、
$name1 = $name;
if(strstr($name,"#")){
$pass = substr($name, strpos($name,"#")+1);
$pass = str_replace(',',',',$pass);
$salt = substr($pass."H.", 1, 2);
$salt = ereg_replace("[^\.-z]", ".", $salt);
$salt = strtr($salt,":;<=>?@[\\]^_`","ABCDEFGabcdef");
$name2 = substr($name, 0, strpos($name,"#"));
$name = $name2." ◆</b>".substr(crypt($pass,$salt),-10)."<b>";
}
こんな感じらしいですけど、これのC言語で書いたものを欲しいのです、、、
どなたか、お願いします。。。
0831デフォルトの名無しさん
NGNGオレはトリップの条件がわからん・・・
0832デフォルトの名無しさん
NGNGcrypt()がわからなければどうにもらならないのでは?
0833デフォルトの名無しさん
NGNGhttp://tcnweb.ne.jp/~takayu/cgi-bin/up/img/494.txt
俺もCはわからんが・・
0834デフォルトの名無しさん
NGNG結局ラウンジで公開されてたツールつかってたけど。
0835C言語初心者
NGNGまじですか?
ちょっとググって調べてみます。
0836デフォルトの名無しさん
NGNGソース付きだったよ
Delphi + c だったけど
0837デフォルトの名無しさん
NGNG別プロセスの標準出力の内容を取得したいのですが
どうやったらよいのでしょう?
OutputDebugString() の出力内容は取得できたのですが
printf()やらの内容の取り方がわかりません。
ちなみに「別プロセス」は完全に別(ソリティアとか notapad.exe )です。
ソースではなく、概要くらいでよいのでわかる人いらっしゃいますか?
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNG切り離すようになったんでないのかな
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG他はしらん。
0843842
NGNG0844837
NGNG>841
>842
サンクスです。
めちゃめちゃ盲点でした(w
ちょっとやってみます。
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGソリティアやメモ帳は標準出力を吐いてるのか?
0848デフォルトの名無しさん
NGNG>>837はそれをつきとめたんだよ、きっと!
・ソリティアの画→標準出力から画像バイナリ出力→BitBltで表示
・メモ帳→標準出力から(以下略
0849デフォルトの名無しさん
NGNG{
char *s = (char*)malloc(strlen(pass)+3), *t, salt[3];
char *tr[2] = {":;<=>?@[\\=^_`", "ABCDEFGabcdef"};
sprintf(s, "%s.H", pass);
sprintf(salt, "%c%c", s[1], s[2]);
free(s);
for (s=salt; *s; s++) if (*s < '.' || *s > 'z') *s = '.';
for (s=salt; *s; s++) {
if ((t=strchr(tr[0], *s)) != NULL)
*s = tr[1][s-tr[0]];
}
s = crypt(pass, salt);
return &s[strlen(s)-10];
}
0850デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
#define __USE_XOPEN
#include <unistd.h>
int main(int ac, char **av)
{
char *trip;
if (ac!=2) { printf("usage:%s pass\n", *av); exit(1);}
trip = pass2trip(*(av+1));/* 変換 */
printf("%s\n",trip);
return 0;
}
0851C言語初心者
NGNGおお!!
どうもありがとうございました。
0852デフォルトの名無しさん
NGNGおーすごい、早速いただきました。すばらしい。
0853アフォ
NGNG*s = tr[1][s-tr[0]];
*s = tr[1][t-tr[0]];
0854デフォルトの名無しさん
NGNGchar *pass2trip(const char *pass)
{
char *s = (char*)malloc(strlen(pass)+3), *t, salt[3];
char *tr[2] = {":;<=>?@[\\=^_`", "ABCDEFGabcdef"};
sprintf(s, "%s.H", pass);
sprintf(salt, "%c%c", s[1], s[2]);
free(s);
for (s=salt; *s; s++) {
if (*s < '.' || *s > 'z') *s = '.';
if ((t=strchr(tr[0], *s)) != NULL)
*s = tr[1][t-tr[0]];
}
s = crypt(pass, salt);
return &s[strlen(s)-10];
}
-------ここまで
検証してなくてスマンです。
./pass2trip hogehuga
qpAhStv0fs
今度は大丈夫の様。
http://pc3.2ch.net/test/read.cgi/tech/1020206592/130
0855デフォルトの名無しさん
NGNG0857もう氏にそうだけど
NGNG{
char *s = (char*)malloc(strlen(pass)+3), *t, salt[3];
char *tr[2] = {":;<=>?@[\\]^_`", "ABCDEFGabcdef"};
sprintf(s, "%sH.", pass);
sprintf(salt, "%c%c", s[1], s[2]);
free(s);
for (s=salt; *s; s++) {
if (*s < '.' || *s > 'z') *s = '.';
if ((t=strchr(tr[0], *s)) != NULL)
*s = tr[1][t-tr[0]];
}
s = crypt(pass, salt);
return &s[strlen(s)-10];
}
これでどうかな?
折角なので。
0858デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1035517888/
1 :hiloshi ◆W2li6n5Xa6 :02/10/25 12:51
とりあえずお前ら市ね
はげとデブとヒッキーが
9 :hiloshi ◆W2li6n5Xa6 :02/10/25 13:13
オレは天才
てかCとかマジいらねーし
C++やりてー
0859デフォルトの名無しさん
NGNGあら、割れちゃったのかね。
まーなんだ、それが本人だったとしても違っていたとしても、
面白い質問だったり、真摯な質問だったりしたら漏れは答えるよ。
0860デフォルトの名無しさん
NGNGでも、>>334-335 のようなスタンスだったらお断りだ・・・
0861デフォルトの名無しさん
NGNGそうね。そのときはぐぐれだの本読めだの言うか
流して終わりにするよ(そうしてるし)。
0862837
NGNGVC++6.0の [ビルド]-[デバッグの開始]-[プロセスへアタッチ]
で任意のプロセスにアタッチした後、
アウトプットウィンドウのデバッグタブに出力される文字列群が取りたいなぁと・・・
何に使うかというと、仕事でも使うんだけど
市販のゲームとか見てるとなかなか楽しいです。
さすがにソリティアでは何も出てこなかったけど、
サカつくとかでは、さりげなくエラー出てたり、製作者の名前とか出てきたり。
スレと関係ないので sage
0863アフォ ◆Ez1ZxZMJoU
NGNGDbgMOn
0864デフォルトの名無しさん
NGNGそこで、一つの関数の中でそれらの処理をできるだけ小さく分割して実行し、
上位ルーチンからコールを繰り返すことで完了させたいと思いました。
switch分を使い、staticな変数をcaseラベルに用いてプログラムカウンタ代
わりにし、それぞれのcase内には最小単位の処理を記述し、終わると自らcase
ラベルを必要に応じて(条件分岐,ループ動作を含み)書き換えます。
上位ルーチンへは、caseラベルを返り値とすることで、現在のステータスを知らせ
ており、上位ルーチンからは、caseラベルの初期化と、実行限界ラベルを受け取って
制御を行っています。上位ルーチンは、同時に実行したければそれらの下位ルーチンを
同じループの中で呼び出すことになります。
と、いうようなことをやっています。ひとりで書いているので変かもしれません。
しかし、冗長さの弊害がさけられず、switch文の使い方としても気持ちわるいものが
あります。他に合理的なアプローチがあれば教えて下さい。よろしくお願いいたします。
0865アフォ ◆Ez1ZxZMJoU
NGNG関数ポインタ
スレッド
0866デフォルトの名無しさん
NGNG> 終わると自らcaseラベルを必要に応じて(条件分岐,ループ動作を含み)書き換えます。
何を言っているのかさっぱり分からず
> しかし、冗長さの弊害がさけられず、switch文の使い方としても気持ちわるいものが
> あります。他に合理的なアプローチがあれば教えて下さい。よろしくお願いいたします。
どんな感じなのかまったく窺えないので、雰囲気をつかめる最小限のコードを晒せ。
0867アフォ ◆Ez1ZxZMJoU
NGNG> ある一連の処理を、複数個並行して実行することになりました。
AAAAAAAAAA?
ABCDEFGHIJ?
わからん
0868デフォルトの名無しさん
NGNGあのね、わからないのはあなたのレベルが低いからっていう可能性
もあるかもだから、むやみやたらにさっぱりわからんとか書き込む
もんじゃないと思うよ。
半分煽り、半分マジレスね。
0869rubyist@カラアゲうまうま
NGNG0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNG_( ´∀`) (´∀` )
三(⌒), ノ⊃ ( >>1 .) 糞スレは
 ̄/ /) ) | | |
. 〈_)\_) (__(___)
∧_∧ .∧_∧
( ´∀) (´∀` )
≡≡三 三ニ⌒) >>1 .) 立てるなって
/ /) )  ̄.| | |
〈__)__) (__(___)
∧_∧ ,__ ∧_∧
( ´)ノ ):;:;)∀`)
/  ̄,ノ'' >>1 . ) 言ってるだろうが
C /~ / / /
/ / 〉 (__(__./
\__)\)
ヽ l //
∧_∧(⌒) ―― ☆ ―――
( ) /|l // | ヽ ヴォケがーー!
(/ ノl|ll / / | ヽ
(O ノ 彡'' / .|
/ ./ 〉
\__)_)
0872デフォルトの名無しさん
NGNGあと 870 は何が言いたい?
0873デフォルトの名無しさん
NGNGswitch文使ってるのになんとか限界って言うのは必要?
default:に飛ばすとか。
sub(int label){
switch (label) {
case ONE:hoge(&label);
case TWO:huga(&label);
default:puni(&label);
}
return label;
}
parent() {
static int label;
label = sub(label);
}
0874デフォルトの名無しさん
NGNGが 0 を返すことは保証されていますか?
0875864:コードのみ
NGNG/* 返り値:0=処理完了, 1=実行中 */
char coldFire( int limiter )
{
static int myControl; /* switch文の制御数値 */
if( limiter < 0 ) /* limiterが無効値の場合は制御数値の初期化 */
myLabel = 0;
if( limiter < myLabel ) /* 実行限界まで処理したら処理をポーズ */
return 0;
result = 1; /* 返り値格納用 */
switch( myControl )
{
case 0: /* 通常の処理 */
/* 何らかの処理 */
myControl++;
break;
case 1: /* 条件ループ処理 */
/* あるいは何らかの処理 */
if( /* なんらかの条件 */ )
myControl++;
break;
/**** この間、その他case文の羅列:フラグ分岐等バリエーション多数 ****/
case endOfCase: /* 最後の処理 */
/* 何らかの処理 */
result = 0;
break;
}
return result;
}
0876864
NGNG基本的には値がゼロになるまで呼び出しを繰り返すことで
処理を完了するようになっています。
それで、なにがしたいかと言うと、同じような関数を複数、
同じループ内で呼び出し、かつ、それぞれの進行状況によっ
て他の処理やインターロックを行いたいというわけです。
0877デフォルトの名無しさん
NGNG有効で無い数字が現れた時点で終了するので保証される。
0878デフォルトの名無しさん
NGNGfor(i = 0; i < MAX_SHORI; i ++) {
shoriA0001_shokika(&j[i]);
shoriA0002_maeshori(&j[i]);
shoriA0003_bunkiMain(&j[i]);
shoriA0004_atoshori(&j[i]);
}
int shoriA0003_bunkiMain(int* j)
{
int state1 = shoriA0003_B01_shokika(j);
}
VBマンセー グローバル変数マンセー 構造体は戦場では必要無し
0879デフォルトの名無しさん
NGNG0880アフォ ◆Ez1ZxZMJoU
NGNG(・∀・ )< いくつぐらいで、「重複ですか?」アラート出るんかな?
_| ̄ ̄||_)_\_____
/旦|――||// /|
| ̄ ̄ ̄ ̄ ̄| ̄| . |
|_____|三|/
0881デフォルトの名無しさん
NGNG0882アフォ ◆Ez1ZxZMJoU
NGNGhttp://e-www.motorola.com/webapp/sps/site/homepage.jsp?nodeId=03M0ylgrpxN
0883デフォルトの名無しさん
NGNGみっそみそみそ
味噌スープ!
0884864:上位ルーチンではこんなふうに
NGNG#define untilEnd 10000
void dragonBall( void )
{
coldFire( initProc );
rabitt2000( initProc);
pic16f84( initProc );
while( rabitt2000(10) )
;
for(;;)
{
while( coldFire(5) )
rabitt2000( untilEnd );
while( coldFire(20) )
{
rabitt2000( untilEnd );
pic16f84(10);
}
while( rabitt2000( untilEnd )
;
rabitt2000( initProc);
while( coldFire( untilEnd )
{
rabitt2000( 10 );
pic16f84( untilEnd );
}
}
}
0885864
NGNG動いています。
もう、端的にお聞きして良いですか? 私、ヘンでしょうか?
0886デフォルトの名無しさん
NGNG??
0887アフォ ◆Ez1ZxZMJoU
NGNG0888864
NGNG0889デフォルトの名無しさん
NGNGBの次だからCってただそれだけ?
他に意味はないの?
0890デフォルトの名無しさん
NGNG> もう、端的にお聞きして良いですか? 私、ヘンでしょうか?
出されたコードだけ見た限りでは、少しヘンだと思う。
やってることが固定なんだから、
> static int myControl; /* switch文の制御数値 */
わざわざこんなものを用意して制御する必要はないと思う。
(仮に必要だったとしても、俺なら上位ルーチン側で変数を用意する)
0891890
NGNG0892デフォルトの名無しさん
NGNG「C言語は,1972年,アメリカAT&Tベル研究所のDennis M.Ritchieによって設計された、
彼の目的は、ミニコンピュータのオペレーティングシステム(OS)であるUNIXを開発する事
であったが、それにふさわしい言語を自らつくりあげたのである.C言語の前身は,1970年
にKen Thompsonによって開発されたB言語である.B言語も同じUNIX開発用に設計された
言語であり、BCPLという言語を改良した物であった.このB言語の次に開発されたものである事から、
”C言語”と名づけられたと言われている.」
と、「第2種情報処理試験合格ゼミC言語の総合研究(平成七年度)」(P.22)には書いてあります.
ってなんでこんな古いのがあるんだよ〜〜
0893892
NGNG0894デフォルトの名無しさん
NGNG何故かうまく動作しません。
どこがわるいんですか?
#include <stdio.h>
/* フィボナッチ数列を求める関数 */
int fibonacci(int n)
{
if(n==1||n==2)
return(1);
else
return(fibonacci(n-1)+fibonacci(n-2));
}
0895デフォルトの名無しさん
NGNG{
int data[50]={12,14,26,30,32,43,49,56,67,68,71,84,93,105,118,131,134,164,184,204,208,240,267,284,304,312,309,279,274,264,219,199,197,194,193,192,175,158,142,130,110,95,86,70,54,42,38,32,15,8};
int i=1;
int fn=1; /* 問題に適するフィボナッチ数列のnの値 */
int data_s=50; /* 配列dataの要素数 */
int sel=0; /* 判定用 */
puts("■フィボナッチ探索■");
0896デフォルトの名無しさん
NGNG{
if(fibonacci(i)==data_s)
{
fn=i;
break;
}
else if(fibonacci(i)<data_s)
if(data_s-fibonacci(i)<data_s-fibonacci(fn))
fn=i;
else
if(fibonacci(i)-data_s<data_s-fibonacci(fn))
fn=i;
else
sel=1;
if(sel==1)
break;
i++;
}
printf("%d",fn);
return(0);
}
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNGint x = 0, y = 1;
while (n--) {
int z = x;
x += y;
y = z;
}
return x;
}
0899デフォルトの名無しさん
NGNGはっきりどうかかるか示しなさい。
あと、無限ループじゃなくてforにする。
0901デフォルトの名無しさん
NGNGsel==0だ
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNG途中までだから。
いまつくる!!
0904デフォルトの名無しさん
NGNG#include <stdio.h>
/* フィボナッチ数列を求める関数 */
int fibonacci(int n)
{
if(n==1||n==2)
return(1);
else
return(fibonacci(n-1)+fibonacci(n-2));
}
0905デフォルトの名無しさん
NGNGint get_fn(int data_s)
{
int i;
int sel=0; /* 判定用 */
int fn;
for(i=1;sel==0;i++)
{
if(fibonacci(i)==data_s)
{
fn=i;
sel=1;
}
else if(fibonacci(i)<data_s)
{
if(data_s-fibonacci(i)<data_s-fibonacci(fn))
fn=i;
}
else
{
if(fibonacci(i)-data_s<data_s-fibonacci(fn))
fn=i;
else
sel=1;
}
}
return(fn);
}
0906デフォルトの名無しさん
NGNGint fib_search(int x,int data[],int sn)
{
int f1,f2;
int search_num;
f1=fibonacci(x-1);
f2=fibonacci(x-2);
printf("%d番目の要素:%d\n",f1,data[f1+sn]);
printf("%d番目の要素:%d\n\n",f2,data[f2+sn]);
if(data[f1]<data[f2])
search_num=f2;
else
search_num=f1;
return(search_num);
}
0907デフォルトの名無しさん
NGNG{
int data[50]={12,14,26,30,32,43,49,56,67,68,71,84,93,
105,118,131,134,164,184,
204,208,240,267,284,304,312,309,279,274,264,219,199,197,194,193,
192,175,158,142,130,110,95,86,70,54,42,38,32,15,8};
int fnum; /* 問題に適するフィボナッチ数列のnの値 */
int data_s=50; /* 配列dataの要素数 */
int serchnumber=0;
puts("■フィボナッチ探索■\n");
fnum=get_fn(data_s);
printf("%d",fnum);
fib_search(fnum,data,serchnumber);
return(0);
}
0908デフォルトの名無しさん
NGNGprintf("%d",fnum);
が表示されないよー。
なぜだああ!!
0909864
NGNGこの場合、呼び出し側で各下位ルーチンのswitch文制御数値を管理するとなると、
呼び出し側ルーチンでは、同時に呼び出される下位ルーチンの個数や、それぞれ
の下位ルーチンが担当する処理の寿命や、それぞれの下位ルーチンとそのswitch
文制御変数を保持する変数との結び付けについて間違いがないようにする必要が
あり、さらに、複数の呼び出し側ルーチンを通じて下位ルーチンが一連の処理を
継続する場合にはそのswitch文制御変数を保持する変数を上位ルーチン同士がな
んらかの方法で受け渡す必要があるので、そのようにしなかったのです。
0910デフォルトの名無しさん
NGNG結局オレにはよくわからん!
すまそ
0911デフォルトの名無しさん
NGNGで2文字以上入力するとエラーを出したいのです。
ヒント下さい。
0912デフォルトの名無しさん
NGNGむり
0913デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG2文字以上入力出来るけど、2文字しか受け取らへん。
エラー出そうと思ったらscanf()じゃ無理やから、環境に依存したコーディングになりま
0916アフォ ◆Ez1ZxZMJoU
NGNG0917915
NGNG2文字で入力を打ち切る場合かと思うてた。スマンでし。
fgets()で入力受けた後にstrlen()で調べたらおk。
0918デフォルトの名無しさん
NGNGchar buf[INPUTMAX];
fgets(buf, INPUTMAX, stdin);
if (buf[3] != '\0') {
/* エラー表示 */
}
0919デフォルトの名無しさん
NGNGfgets()やstrlen()など調べてみます〜♪
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG0922rubyist@カラアゲうまうま
NGNGhttp://www2a.kagoya.net/~adults-toybox/sample2.wmv
http://www2a.kagoya.net/~adults-toybox/
0924デフォルトの名無しさん
NGNGその再帰だと二回同じの呼び出さなきゃいけないでしょ。
そしてそれぞれが二回呼び出すわけだから良くない。
>>905
data_sに一番近いフィボナッチ数を選ぶんだとおもうけど、
int get_fn(int data_s) {
int i;
for (i=1; fibonacci(i) < data_s; i++) ;
if (i == 1) return 1;
if (fibonacci(i) == data_s) return i;
return (data_s-fibonacci(i-1) < fibonacci(i)-data_s)? i-1 : i;
}
0925デフォルトの名無しさん
NGNGなるほど。余計な計算を省くわけですね
勉強になります。
0926デフォルトの名無しさん
NGNGなんで!?
0927デフォルトの名無しさん
NGNG#include <stdio.h>
/* フィボナッチ数列を求める */
int fibonacci(int n)
{
if(n==1||n==2)
return(1);
else
return(fibonacci(n-1)+fibonacci(n-2));
}
/* 問題に適するnを求める */
int get_fn(int data_s)
{
int i;
for(i=1;fibonacci(i)<data_s;i++)
;
if(i==1)
return 1;
if(fibonacci(i)==data_s)
return i;
return(data_s-fibonacci(i-1)<fibonacci(i)-data_s)?i-1:i;
}
0928デフォルトの名無しさん
NGNGint fib_search(int x,int data[],int sn)
{
int f1=fibonacci(x-2); /* 1つ目のめくる値の添え字 */
int f2=fibonacci(x-1); /* 2つ目のめくる値の添え字 */
int search_num; /* 数え始める値の添え字 */
printf("%d番目の要素:%d\n",f1+sn,data[f1+sn]);
printf("%d番目の要素:%d\n\n",f2+sn,data[f2+sn]);
if(data[f1+sn]<data[f2+sn])
search_num=f1+sn+1;
if(data[f2+sn]<data[f1+sn])
search_num=sn;
return(search_num);
}
int main(void)
{
int data[50]={12,14,26,30,32,43,49,56,67,68,71,84,93
,105,118,131,134,164,184,204,208,240,267,284,304,312,309,279
,274,264,219,199,197,194,193,192,175,158,142,130,110,95,86,70,54,42,38,32,15,8};
int fnum; /* 問題に適するフィボナッチ数列のnの値 */
int data_s=50; /* 配列dataの要素数 */
int ser=0; /* 数え始める部分 */
int n;
int max; /* 最大値 */
0929デフォルトの名無しさん
NGNGfnum=get_fn(data_s);
for(n=0;(fnum+n)>=1;n--)
{
ser=fib_search(fnum+n,data,ser);
}
return(0);
}
0930デフォルトの名無しさん
NGNGでもまだポインタとか学校では習ってないんで
使わない方がいいかなって。
表示した要素の添え字を格納するopen_data[]とか作って
いろいろ試したんですけど、ポインタが必要になるんです。
ポインタ使わないでできます?
0931890
NGNG> 呼び出し側ルーチンでは、同時に呼び出される下位ルーチンの個数や、それぞれ
> の下位ルーチンが担当する処理の寿命や、それぞれの下位ルーチンとそのswitch
> 文制御変数を保持する変数との結び付けについて間違いがないようにする必要が
> あり
884のコードを見る限りでは、渡すのは定数だけで、
そんな(「間違いがないようにする必要が」と言うほどの)
複雑なことをやっているようには見えない。
ただし、コードに載せていない部分からも呼び出している
なら話は別だけど。
それと俺が
> (仮に必要だったとしても、俺なら上位ルーチン側で変数を用意する)
と書いた意味はわかってる?
別にcoldFire関数で静的な変数を用意しなくても、
引数で渡してそれを関数が更新して返却すればいいということ。
それと、「同時に呼び出される」と書いているけど、
シングルスレッドなら同時には呼ばれないよね。
あんたの書き込みは、言葉(用語)もなんか普通と違っていて
今いち理解できん。
0932デフォルトの名無しさん
NGNG引数は2つ。検索の開始点と終了点。
で、フィボナッチ数で三つにわけるのかな。
開始点と中間点1、中間点1と中間点2、中間点2と終了点。
でそれぞれ再帰かなあ。
0933デフォルトの名無しさん
NGNG以下のようなサンプルがありました。
int main{
ATDisc myDisc;
void DisposeDisc(myDisc);
}
static void DisposeDisc(ATDisc& disc)
{ DisposeATDisc(&disc); }
このDisposeDisc関数のdiscはポインタなんでしょうか?
下のように書き換えられますか?
int main{
ATDisc *myDisc;
void DisposeDisc(&myDisc);
}
static void DisposeDisc(ATDisc *disc)
{ DisposeATDisc(&disc); }
0934890
NGNGごめん。よく見ると909に
> 複数の呼び出し側ルーチンを通じて下位ルーチンが一連の処理を
> 継続する場合には
と書いてあった。ということは
884で載せたコード以外からも呼び出されるんだよね。
だったらそのやり方でもいいと思う。
0935デフォルトの名無しさん
NGNG参照渡し。
int main{
ATDisc *myDisc;
void DisposeDisc(myDisc);
}
static void DisposeDisc(ATDisc *disc)
{ DisposeATDisc(disc); }
0936デフォルトの名無しさん
NGNGもどきじゃなかったっけか?それ。
参照の情報を持った変数を値渡ししてるんで。
純粋なのはPascalのvarとかだと思う。
0937C言語初心者
NGNGVCでStrMatch()を使うと外部参照エラーが出ます。
Win32用のライブラリはないのでしょうか?
0938864
NGNGまとめてしまい申し訳ありませんが、みなさんありがとうございました。
用語やその他ヘンなところがあるのは、周囲に同職がいないため、本や
netだけを頼りに勉強しているせいなので、自分でも気にしています。
サンプルとはいえコードを他人に見てもらった経験もこれが初めてで、
職場では納期を守りさえすれば、ソフトのことなどだれも関心持ちません。
いろいろありがとうございました。みなさんの善意に感動しています。
いただいたレスは全てじっくり勉強いたします。ではまた。
0939デフォルトの名無しさん
NGNGのfor文の後に
printf文を書いたんですが何も表示しません!
エラーもなにもないのに・・・
どうしてですか!?
0940デフォルトの名無しさん
NGNGif (n <= 0) printf("fib(%d)", n);
って入れてみたら。なんか0以下呼び出してそうだし。
0941デフォルトの名無しさん
NGNGいきなり条件が偽なんだろう。
0942デフォルトの名無しさん
NGNGfor(n=0;(fnum+n)>=1;n--)
ser=fib_search(fnum+n,data,ser,&max);
printf("最大値は%dです。\n",max);
return(0);
}
って。
なんで表示されないの?
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG今日中に終わってしまいそうなので新スレたてました。
0945デフォルトの名無しさん
NGNG>みんな大好きなんです。このシリーズの速さがそれを物語っています。
学校の授業で教える言語なので厨房が多いだけ。
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNGいちおうライブラリを見て"w"と"b"については書いてあったんですが"wb"
については書かれて無かったです。
0950デフォルトの名無しさん
NGNG次スレよろ
0951デフォルトの名無しさん
NGNGfopenの間違いか?
fopenなら書き込み&バイナリモード(改行コード変換なし)で開くという意味。
UNIXでは全く意味のないもの。
>>950
たっているだろ
0952デフォルトの名無しさん
NGNG確信犯
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNGC++はそうなっているのは偶然ではないだろう。
0955951
NGNGなんか勘違いさせそう。
UNIXでは"w"と等価。というべきか。
0956デフォルトの名無しさん
NGNGそうなの?
0957デフォルトの名無しさん
NGNG単純にwとbを合わせただけなんですね。
0958デフォルトの名無しさん
NGNGsprintf(fname, "hoge%04u.jpg", i++);
fp = fopen(fname, "wb");
fclose(fp);
と解答をいただいたのですが、2行目以降でどうしてファイルオープンしてその後、閉じるのか
分からないのですがどなたかご教授いただけないでしょうか?
0959デフォルトの名無しさん
NGNGfstreamはそうなってる堕炉。
0960デフォルトの名無しさん
NGNGアフォすぎ。ネタかと思うくらい。
0961デフォルトの名無しさん
NGNGし つ も ん で す!!!
makeコマンドありますよね。
例えば、
SJIS_FILE=hoge.txt
nkf-e:
nkf -e < $(SJIS_FILE) > $(SJIS_FILE).euc
というMakefile
のSJIS_FILEという変数をMakefileを変更せずに例えば、
% SJIS_FILE=moge_dummy.txt;make nkf-e
みたいに指定して実行したいんですが、
上の方法では変数にmoge_dummy.txtが格納されません!
一体どうすれば可能なのでしょうか?
どなたか教えてください。
御願いします!!!
0962デフォルトの名無しさん
NGNGfopenとfcloseの間の処理はあんたしか仕様を知らないんだから
自分で作らないとダメだよ。
たとえばfwriteやfseekなどを組み合わせて。
そもそも、このスレの>>227で
> 房な質問ですみません。使用する関数を教えてもらえれば幸いです。
>>234で
> 大体どんな感じのプログラムになるのかだけでも教えてもらえませんか?
> イメージがわかないんです。
という質問だったんだろ。
0963デフォルトの名無しさん
NGNGスレ違い。
0964デフォルトの名無しさん
NGNG% make nkf-e SJIS_FILE=moge_dummy.txt
0965デフォルトの名無しさん
NGNGそうです
0966デフォルトの名無しさん
NGNGお前、こっちにもマルチしてたのか。
http://pc.2ch.net/test/read.cgi/unix/1035442907/149-
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG未定義
0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG漏れは男子校だった・・・
0971デフォルトの名無しさん
NGNGでも後輩から本命チョコもらってしまいますた。。。
(;´Д`)っ■
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG今夜中に 250 超えたりしてな。
0975デフォルトの名無しさん
NGNG越えてしまいますた。300に迫る勢いです。
0976デフォルトの名無しさん
NGNG300 も超えてしまいました。ウルムン・シュソト・ドラソクです
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNG今日中に次次スレにならないだろーな
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG何とかしてください次スレ
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG>>974 の予想なんてとんだ甘ちゃんだったわけだ
0985974
NGNG0986厨房次スレ45&前スレ1000
NGNG適当に書いたことなのに。
0987デフォルトの名無しさん
NGNG今朝方4時ぐらいまではみてたんだが
ム板でもこんなにレスが付くことがあるのか
0988デフォルトの名無しさん
NGNG仲間発見だ!
一週間も放置するとDAT落ちしてログを保存できないスレってのもム板では珍しいかも
0989デフォルトの名無しさん
NGNGつーか、609 は 45 を引きずってたから全部 45 ネタとも言えるかもな。
0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNGこのスレは、あと9回書き込めるよん。
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 0x03E8取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。