- 1 名前:デフォルトの名無しさん mailto:sage [2007/07/18(水) 09:10:30 ]
- エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.39【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1182740506/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 962 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 04:28:03 ]
- >>957
いろいろ方法はある。 scanf 系関数を使うなら、 %*f のように書式に * を挟むことで 変数に格納しなくなるようにできるのを利用するとか。 あとは1行取得して、 それを strtok で "/" をデリミタにして処理した2番目の文字列を atof するとか。 strtok を使うのが気持ち悪いなら strchr を使ってもいいかもしんない。
- 963 名前:957 mailto:sage [2007/08/06(月) 04:48:30 ]
- 了解です、状況で判断しますorz
>>962 ご解答頂きありがとうございます。 教えていただいた通り、今回はstrtokを使ってみたいと思います。 %*fという表記は知らなかったので勉強になりました。 本当にどうもありがとうございましたm(_ _)m また皆様のお力をお借りすることがあるかと思いますが、その時はどうぞよろしくお願い致します。
- 964 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 04:52:45 ]
- strtok()は癖が強すぎるのでお勧めしない。
scanf()でフォーマットを'%*f/%f/%*f"にしてはいけないのか?
- 965 名前:957 mailto:sage [2007/08/06(月) 05:55:20 ]
- >>964
strtok()は癖が強いのですか。 strtok()を使ったことが無かったので使ってみようかと思ったのですが、 そういうことであれば素直に%*fを使ってみたいと思います。 アドバイスありがとうございましたm(_ _)m
- 966 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 05:56:20 ]
- test
- 967 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 08:26:44 ]
- for(int i=0;i<n1;i++) { ←ここに飛びたい場合どうするのが一般的でしょうか?
// 処理 ↑ for(int j=0;j<n2;j++) { ↑ if (a[j] == b) // 条件が成立したらループを抜けて↑ } //処理 }
- 968 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 08:35:09 ]
- >>967
つ[goto] まぁ、アルゴリズムを見直してbreakだな。
- 969 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 10:36:46 ]
- 中のループをboolを返す関数にしてしまって
trueだったらcontinueとかね
- 970 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:31:43 ]
- void f()
{ static char *theTxt; strcpy(theTxt,"TEST¥n"); printf("%s",theTxt); } これってtheTxt;がstaticでnull初期化されているから 駄目なんですか?
- 971 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:38:10 ]
- >>970
theTxtはポインタ。 strcpyはポインタの指すアドレスにデータをコピーする関数。 問題は、theTxtがどこも指していないこと。 mallocで確保するとか、配列にするとか、データの領域をまず用意
- 972 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:39:01 ]
- どこも指してない、つーかNULLで初期化されてっからアドレス0を指してる、とも言えるか。
まあ同じだけど。
- 973 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 12:41:58 ]
- 理解出来ました。
有り難うございます
- 974 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:35:12 ]
- >>972
>アドレス0を指してる、とも言えるか。 いえない。 因みに、初期化されていないポインタは 「何処を指しているかわからない」
- 975 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:35:58 ]
- >>974
staticがついてると0に初期化される
- 976 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:36:57 ]
- static だから = 0 で初期化されている。
ただ、アドレス 0 だとは限らない。
- 977 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:40:29 ]
- もうヌルポインタが0じゃない話はいいから
- 978 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 13:57:16 ]
- >>977
「ぬるぽはどこも指していない話」じゃないのか?
- 979 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 14:04:28 ]
- NULLが0なんじゃない、0がNULLなんだよ。
- 980 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 15:01:18 ]
- ぬるぽ! ぬるぽ!
ぬるぽ! ぬるぽ! ぬるぽ! ぬるぽ! ∩ ∩ ノ) ぬるぽ! ぬるぽ! 川 ∩ 川彡'三つ ぬるぽ! ぬるぽ! ⊂ミ∩、⊂ミ∩彡⊃ ぬるぽ! ぬるぽ! ⊂三ミ( ゚∀゚)彡三彡三⊃ ぬるぽ! ぬるぽ! ⊂彡川⊂彡川ミ⊃ ぬるぽ! ぬるぽ! ⊂彡川∪⊃ U川彡⊃ ぬるぽ! ぬるぽ! (ノ ∪ 川 ∪ミ) ぬるぽ! ぬるぽ! ∪ ぬるぽ! ぬるぽ! ぬるぽ! ぬるぽ! ぬるぽ! ぬるぽ! ぬるぽ!
- 981 名前:デフォルトの名無しさん [2007/08/06(月) 21:47:18 ]
- #define NULL ぬるぽ
#define 0 NULL
- 982 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:40:13 ]
- fopenやifstreamがどういう処理をしているか気になります。
遠回しにAPIを呼んでたりするんですか?
- 983 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:47:34 ]
- そりゃシステムコール呼ばないとファイル開けまへんがな(´・ω・`)
そこらのOS毎の差異を吸収するのも標準ライブラリの役目
- 984 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:48:24 ]
- そう。 遠まわしに、WindowsならCreateFileとかのAPIを呼んでる。
- 985 名前:デフォルトの名無しさん [2007/08/06(月) 22:51:22 ]
- まー結局、細部まで一致しないからWINDOWS API使うのが賢い
かなり単純なものでないとCのみでしょり出来ないからな
- 986 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:53:31 ]
- ×>>972,>>974
○>>976 C言語の仕様によれば、staticな変数は『定数ゼロ』(K&R第2版)で初期化される。 だから static char *theTxt; は、 static char *theTxt = 0; と置き換える。 ここで、定数ゼロは整数型に代入されれば整数0であり、ポインタに代入されればヌルポインタになる。 ヌルポインタは、(アドレス0を指す処理系もあるかもしれないが、) 『どこも指していないポインタ』が正解。実際のbit列がゼロの連続とも限らない。 従って、ヌルポインタはprintf()の引数として処理できない。 ちなみに、『ぬるぽ』はNullPointerExceptionの略で、ヌルポインタではない。
- 987 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:54:54 ]
- BCCで書いているのですが、突然ファイルオープンができなくなりました。
#include<stdio.h> main(void){ int i,j,k,t; int No1,No2; int Rs[3500][20],Hn[3500]={0}; double u,x,y; double Odds[3500][20],Poll[3500][20],Poll_S[3500][20],Poll_T[3500][20]; FILE *fpr,*fpw; fpr=fopen("horse.txt","r"); fpw=fopen("r.txt","w"); while(fscanf(fpr,"%d %d %lf %d",&No1,&No2,&u,&k)!=EOF){ Odds[No1][No2-1]=u; Rs[No1][No2-1]=k; Poll[No1][No2-1]=0.788/(u-1.0); Hn[No1]++; Poll_T[No1][No2]=0; Poll_S[No1][No2]=0; } 何か問題はありますか?教えてください。
- 988 名前:gotoです mailto:sage [2007/08/06(月) 22:55:51 ]
- たまには私を思い出してください。
ほら、try-catch句がなかったあの頃を思い出してください・・・
- 989 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 22:58:45 ]
- >>987
釣り?
- 990 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:02:37 ]
- マジです
- 991 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:03:22 ]
- >>987
とりあえずmainの'{'に対応する'}'と、fcloseが足りない。
- 992 名前:987 mailto:sage [2007/08/06(月) 23:07:22 ]
- すみません。
ソースが長いので省略しています。 コンパイルエラーはないんですが テキストファイルが読み込めないんです。
- 993 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:09:38 ]
- >>993
実行方法は? まさか、カレントディレクトリにファイルがないって落ちじゃないよな?
- 994 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:10:31 ]
- horse.txtが無いんじゃね?
- 995 名前:デフォルトの名無しさん [2007/08/06(月) 23:11:32 ]
- errno調べてみ
- 996 名前:987 mailto:sage [2007/08/06(月) 23:16:06 ]
- horse.txtはあります。
今まで動いていたプログラムもファイルが開かなくなりました。 ライトファイルはできます。
- 997 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:18:07 ]
- どっか別のアプリケーションがファイルを開いてるんじゃない?
アプリケーションを全部終了するか、最悪OS再起動したら直るんじゃないかね。
- 998 名前:987 mailto:sage [2007/08/06(月) 23:19:45 ]
- と思って再起動したんですが直りませんでした。
- 999 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:22:17 ]
- errno !!!
- 1000 名前:デフォルトの名無しさん mailto:sage [2007/08/06(月) 23:26:49 ]
- 次スレ!!!
pc11.2ch.net/test/read.cgi/tech/1186410368/
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|