【初心者歓迎】C/C++室 Ver.32【環境依存OK】 952 :
949 :2006/11/23(木) 19:36:42
申し訳ありません。移動します
953 :
デフォルトの名無しさん :2006/11/23(木) 19:50:13
駆け出しです。 char *r = "あいうえお"; として、最初の1文字、2文字を表示させようと思って printf("%-2s %-4s",r,r); としたのですが、これではすべてが出力されてしまいます。 どうすれば?
char buf[ BUF_MAX ]; で宣言された配列をwhile()ループで回す時に、buf[ BUF_MAX ]へのポインタ が必要になったのですが、 char *p_buf_end = buf[ BUF_MAX ]; にしてしまうと、p_buf_endという名前が buf[ BUF_MAX -1 ] と紛らわしい のではないか?と悩んでいます。 この場合、どのような変数名にするのが無難でしょうか?
>>953 ドットも忘れないでやってください。
Ex.
"%-.2s"
>>954 std::vectorでは、end()とlast()で使い分けている。
>>956 参照してみます。ありがとうございました。m(__)m
>>956 std::vector に last() なんてないぞ。
959 :
デフォルトの名無しさん :2006/11/23(木) 20:26:57
>>955 できたよ!
どうもありがとうございました。
960 :
デフォルトの名無しさん :2006/11/23(木) 23:25:31
>>954 for(i = 0; i < sizeof buf; i++) {
buf[i];
}
わざわざポインタ使う必要ないんじゃない?
>>960 名前の付け方に関する質問なんだからそのレスは見当違いだろう。
仮に今回はそれでいいとしても配列を超えたとこのポインタが必要になることはないとも限らん。
p_buf_goal = buf + BUF_MAX
loadavgファイルに過去の負荷が1行に1つで、 計10万ほど保存されていて、 下記のようなコードを書いて読み取ろうとしたところ、 はじめの3千から4千行ぐらい(?)まではうまくいくのですが、 途中からファイルから数値をよみこんでくれなく、 同じ数字のみが出力されるようになります。 どのようにすれば全部の数字を読み込んでくれるでしょうか? #include<fstream> int i; float avg,outavg; ifstream infile("loadavg"); for(i=0;i<60000;i++){ infile>>avg; outavg=avg/0.02 cout<<outavg<<"\n"; }
>>964 - for(i=0;i<60000;i++){
- infile>>avg;
+ while(infine>>avg){
>>965 今試してみましたが 8825行目ぐらいまでしか読み込んでくれません。 何事もなかったかのようにwhileループを抜けてしまいます。
>>966 8825行目あたりに float として読めない文字があるんじゃないの?
あとは、 #include <cstdio> して while ループ抜けた後
if (!infile.eof()) perror("infile"); ってしとけ。
出入力エラーがあれば、これで表示されるだろう。
>>967 ファイルを確認してみたところ特に変わったところはありませんでした
あと、試してみたところ,sucessと表示されました。
オーバーフロー
>>968 やっぱり途中で止まってるな。
>>967 のとおりだろ。
最後に読み込まれた数値の次にある文字列をファイルの
先頭にコピペすれば、どうせ最初で止まるだろう。
971 :
デフォルトの名無しさん :2006/11/24(金) 11:02:50
Hoge(Foo& foo); って宣言したコンストラクタがgccでコンパイルとおらない。 error: expected `)' が '&' トークンの前にあります こういうエラー出してくる。
>>971 同じ問題の発生する最小のソースと、コマンドラインを貼ってみろ。
Cとしてコンパイルしている落ちとか。
974 :
デフォルトの名無しさん :2006/11/24(金) 11:30:03
>>972 namespace foo
{
class Hoge
{
public:
Hoge(foo::Foo & foo);
virtual ~Hoge() = 0;
virtual void setStereo(bool flag) = 0;
virtual bool isStereo() = 0;
private:
protected:
};
}
/usr/local/bin/i386-mingw32-g++ -fno-exceptions -fno-rtti -I.
ステップ実行中ではifstreamがファイルの読み込みに失敗します。なぜですか? Microsoft Visual C++ 2005 Express Edition + STLPort 5.0.2の環境です。
>>974 namespaceのfooとHogeコンストラクタの仮引数のfooが被ってる
>>976 仮引数の名前を変えてもエラーが出ます。
>>977 namespace foo の中に Foo は解決されてるのか?
最小コードが
>>974 だとしたら、foo::Foo なんて型はないぞ
>>974 こういう情報を小出しにするアホは死んだ方がいい
>>980 何が必要十分であるか分からないくせに
自分で勝手に判断して情報を制限・抽象化する。
初心者とはそういうものだ。
初心者歓迎のスレタイ掲げてその台詞はちときつい気がするよ。
質問しても良いですか? メモリの指定範囲で書き込んだ値を調べる関数を作っています。 writeがメモリに書き込んだ値で、違う値が書き込んであったら-1を返します。 int color_false(char *memadd, char write, int sx, int sy) { char p; int x, y; for (y = sy; y <8; y++){ for (x = sx; x<8; x++){ p = memadd[ y * 320+ x ]; if(write != p) goto hoge; } } return 0; hoge: return -1; } まったく逆のメモリに書き込む関数は上手くいったのですが、 書き込んだ値を読み込む関数が上手くいきません。 何故か違う色を書き込んでいるところを指定しても 戻り値が0になってしまいます。 for文をネストしなくてVRAM[100]とかだと、上手く識別してくれます。 基本的に書き込む時と逆の処理しかしていないのですが 何故上手くいかないか分かる方いらっしゃいますでしょうか?
>>982 >for (y = sy; y <8; y++){
>for (x = sx; x<8; x++){
何やってんだよ
やりたいことは y < (sy+8) と x < (sx+8) か?
あと if( write != p ) return -1; でいっきに抜けたほうがきれいだぞ
がんがれ
>何やってんだよ >やりたいことは y < (sy+8) と x < (sx+8) か? 違うんです。 p = memadd[ y * 320+ x ]; memadd[0]、memadd[1]、memadd[3]、memadd[320]、memadd[321]・・・ 見たいな感じで調べたいんです。 変数を使うと上手くいかないんです。 >あと if( write != p ) return -1; でいっきに抜けたほうがきれいだぞ >がんがれ if( write != p ) return -1;って出来ますよねぇ。 何やつっても上手くいかないので、goto文使えばうまくいくかなっと思って いろいろ試してました。 頑張ります。
>>984 違うってことはsy,sxが8以上だと何もせずにチェックが終了することになるが・・・
やりたいことはfor (x = 0; x < sx; ++x) だと思うんだがなぁ。
エスパーが必要だな。
紙ヒコーキ先生に命中
ツいてないね
テレポーテーショーン
Cって関数の引数に構造体使うとコピーされるんでしたっけ?
関数の引数に構造体を指定できない処理系ってありますか?
よっぽど古かったりサブセット過ぎたりすると、構造体はポインタでないと渡せなかったり内部で勝手にポインタ渡ししたりする。
構造体の値渡しは勘弁してくれ
998 :
の :2006/11/24(金) 22:38:07
Windowアプリケーションが作りたくて、Win32 APIについて勉強しています。 その中で、C言語でつくったプログラムを使用したいのですが、どうすればよいのかまったくわかりません。 そもそも、そういうことはできるのですか?
ついでに1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。