ご質問させていただきます。
これは、fin2というファイルから数値を抜き出し配列に格納して、finの文字列と比較し、その文字列のある場所で配列の数値と比較し、合致したら、ある出力をするというものなんですが、
配列に格納した数値が、
a[1]=[123] b=[234]
a[1]=[345] b=[400]
というふうに増えていくときは問題ないですが、途中でたとえば
a[n]=100 b[n]=400
a[n+1]=300 b[n+1]=358
という風にn+1番目のaより、n番目のbが大きいときに、止まってしまうんです、これをうまく処理して最後まで比較させたいんですが、どうしてもうまくいきません。どなたかたすけてください。やはり、
n==b[yabu]の処理の後になんか書けばいいんでしょうか?長々と申し訳ございませんでした。

if(fin2!=NULL)
{
int yabu=0;
for(int i=0; fgets(c,CHARMAX,fin2)!=NULL;i++)
{
sscanf(c,"%d%*c%*c%d",&a[yabu],&b[yabu]);
fprintf(fout2,"%d::::::::::::::%d:%d\n",yabu,a[yabu],b[yabu]);
yabu++;
}
}

int yabu=0;
n=0;
while(fgetc(fin)!=EOF)
{
n++;
if(n==a[yabu])
{
fprintf(fout2,"A ");
}

else if(n==b[yabu])
{
fprintf(fout2,"B ");
yabu++;}

else
{fprintf(fout2,"C ");
}

}

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

このQ&Aに関連する最新のQ&A

A 回答 (21件中1~10件)

こんにちは。

itohhといいます。

もし、固定で良いのでしたら、補足で書かれているように配列に持っておくほうが楽ですね。

char strData1[]={(char)0x90,
          (char)0x3C,
          (char)0x40,
          (char)0x83,
          (char)0x60,
          (char)0x80,
          (char)0x3C,
          (char)0x00};

   :
   :
   :

fwrite( strData1, sizeof( char ), sizeof(strData1), fout2 );

strlen(strData1)では、最後の0x00を数えてくれません、ですからsizeof(strData1)ですね。


strData1を必要な分だけ用意しておくと良いのではないでしょうか。
strData2,strData3などなど。

こんなとこでしょうか?
    • good
    • 0
この回答へのお礼

どうもありがとうございました。長期間にわたり回答寄せてくださってありがとうございました!!!
おかげさまで、いろいろ勉強することができました!!また、わかんないことがでてきたらここで質問してべんきょうしていきたいと思います。
本当にありがとうございました!!

お礼日時:2002/02/19 16:25

こんにちは。

itohhといいます。

>903C408360803C00という文字列
なんか凄いデジャビュを感じるので過去の回答を検索してみたら
同じことを聞かれたのを思い出しました。
これは、単なる偶然ですよね!


以下の質問でわたしが一度アドバイスしていますのでそちらを参考にしてください。

この方法では、ダメということなら、再度、補足してください。

・質問:バイナリファイルの書き出し
URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=175147

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=175147

この回答への補足

なんか、驚きました!!MIDIデータいじくってる人って意外にいるもんですね。
ところで、あのプログラム鬼のようにむずかしいっす。
じっくり解読してみますが、もっと手軽にできる方法ってありません?
あのプログラムとこのプログラムを合体させるだけでも難しそう・・。
・・なんか凄いですね!!なかなか私にはかけたもんじゃないです・・(泣)
わがままばっかりですみません・・・・。

補足日時:2002/02/18 18:01
    • good
    • 0

こんにちは。

itohhといいます。

すみません、言い忘れたことがあります。

malloc関数で動的に配列を獲得した場合は、使い終わったときに解放することを
忘れずにしてください。

>lpBuf = (char*)malloc( lLen+1 );
  :
  :
  :
  :
>fwrite( lpBuf, sizeof( char ), lLen, fout2 );

// 関数で使い終わったときに解放する。
free( lpBuf );

この回答への補足

ご丁寧な回答ありがとうございました!!!!
非常によく全体の、構造がわかりました!!!!!
・・・・・で、なんですが、ここで追加質問するのもどうかとおもったんですが、
今は、A,B,Cをテキストに出力してますよね?
これを、バイナリに出力したいんです。
いままで、903C408360803C00という文字列をバイナリに出力するとき、
C[0]=0x90 C[1]=0x3C・・・・という風に配列を用意して
fwrite(C,8,1,fout);という風にしてました。
これをlpBuf[a[i]-1]='A';のとこで
903C408360803C00を出力したいんです。そのままやってもだめなようなんで・・。
なにか、うまい方法ってありますか?

度々すみません。これで最後にしたいと思います。
また、疑問でてきたら新たに質問しなおしたいとおもいます。

補足日時:2002/02/18 15:16
    • good
    • 0

こんにちは。

itohhといいます。

ソースを見てみました。
>if(fin2!=NULL)                 <-----(0)
>{
>int yabu=0;                   <----(1)
>for(int i=0; fgets(c,CHARMAX,fin2)!=NULL;i++)
>{
   :
   :
>yabu++;                     <----(2)
>}
>}
   :
   :
>int yabu=0;                   <----(3)
>long lLen=0;
>char *lpBuf=NULL;
>if( (fin = fopen( "sample.txt", "r" )) != NULL ) { //sample.txtはfinファイル名
   :
   :
>for(i=0; i<yabu; i++ ) {            <----(4)
   :
   :
> }
  :
  :

yabu変数を考えてみてください。
最終的に、yabu変数の中に入っている値によってforループの回数が変わります。(4)
yabu変数は、(2)でfin2ファイルを読み込むときにカウントアップされていますよね?

今度は宣言するところを見てみると、2カ所あります。(1)(3)

(1)の宣言では、(0)のifブロック内にありますからこのブロックを抜け出たときに
スコープがはずれそれ以降は使えなくなります。


しかし、(3)で再度宣言がされているため(4)で使用することが出来るのです。
ですが、一度、スコープがはずれているため、折角カウントした値はクリアされています。
(forループがゼロ回しか廻らないことになる)

使う直前に変数を宣言することを薦める人もいますが、まだなれていない人には間違いの
元ですから、関数内で使用する変数の宣言は全て先頭で行うことをお薦めします。

まとめますと。
(1)では宣言をやめる。

int aaaaaa()     <---------関数の先頭
{
 int yabu=0;
 long lLen=0;
 char *lpBuf=NULL;
 FILE *fin;
 FILE *fin2;
 int i=0;
 (その他の宣言を行う)
  :
 
 
 

 if(fin2!=NULL)                 <-----(0)
  :
  :


}
    • good
    • 0

 ANo.#13の注意点にも書いたようにcc[]の宣言位置に注意


する必要があります。cc[]の宣言が現在localになっている
と思いますが、local変数に対してはメモリーに制約がある
ようで、大きなサイズは宣言できません。globalにして関数
の外で宣言すると100万や1000万位はOKだと思います。
マシンのメモリー要領による制約もありますので確認して
ください。(この辺の詳しい事は私も余りよく知りません。)

 実際に100万の文字を読み込むのなら、私の方法より
itohhさんの方がよいのではないかと思います。

 プログラムが質問で提示されたもので全て(つまり、質問
のために縮小されたものを作って提示したのではない)なら、
finのファイルから読み込まれる文字データは全く未使用で
文字データの個数のためのみにfinにアクセスしていることに
なりますので、何らかの別の方法でこの文字数が分かれば
そちらを参照するようにする事を検討された方がよいと思い
ます。取りあえず現在の方法でやって行くことは可能は可能
です。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。大きさの問題ってむずかしいです・・・・。
とりあえず、このプログラムでやっていって、また別に勉強していきたいと思います!!どうも、ありがとうござました!!

お礼日時:2002/02/18 15:04

失礼しました。


char cch[4]={"ABC"};
または
char cch[]={"ABC"};
としてください。

この回答への補足

またしても、質問で申し訳ないですが、char cc[]の部分の配列の数についてなんですが、一般的にこれって限界の数ってあるんでしょうか?
たとえば1000000ぐらいにするとまともに動かないんですが・・・。
ちなみに環境はVC++6.0です。

補足日時:2002/02/17 00:54
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
素早いお返事本当に嬉しいです。
早速、やってみます。ポイントもうちょっと、待って下さい。

お礼日時:2002/02/16 09:08

こんちには。

itohhといいます。

すみません、(3)の処理でfinファイルの長さを越える処理が入っていませんでした。

for(i=0; i<yabu; i++ ) {
  if( a[i] <= lLen ) {
    lpBuf[a[i]-1] = 'A';
  }
  if( b[i] <= lLen ) {
    lpBuf[b[i]-1] = 'B';
  }
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
返事がおそくなって申し訳ございませんでした。
で、早速やってみたんですが、下のtgbさんに対するレスでもかいたんですが、
初期化子の数が多すぎるといったエラーがとれないんですが、なにかが
いけないんでしょうか?

お礼日時:2002/02/16 02:08

こんにちは。

itohhといいます。

先ほどは、時間がなかったのでサンプルを載せることが出来ませんでした。
改めて、じっくり解説します。

(1)fgetc(fin)したデータを使用していないので、まずは、finファイルのサイズを測ることにします。
(2)finファイルのサイズ分のエリアを確保して初期クリアします。
   (この後は、ほぼtgbさんと同じ回答です。)
(3)tgbさんが回答したように"A"、"B"を動的配列に設定していく。
(4)A,B,Cを設定した動的配列を出力する。


FILE *fin;
long lLen=0;
char *lpBuf=NULL;

// (1)の処理
if( (fin = fopen( "fin.dat", "r" )) != NULL ) {
  fseek( fin, 0, SEEK_END ); // ファイルの最後に移動する
  lLen = ftell( fin ); // 現在のファイルポインタの位置を取得する(ファイルサイズ)
  fclose( fin );
}

// (2)の処理
lpBuf = (char*)malloc( lLen+1 ); // ファイルのサイズ+1分のエリアを確保。
memset( lpBuf, 0x00, lLen+1 );
memset( lpBuf, 'C', lLen ); // 'C'で初期クリア

// (3)の処理
for(i=0; i<yabu; i++ ) {
// 省略します。

}

// (4)の処理
fwrite( lpBuf, sizeof( char ), lLen, fout2 );

こんな感じではどうでしょうか?

この回答への補足

こんばんは。結局このプログラム考え抜いたんですが、どうしてもむずかしくておてあげです。以下のようにやるとCしか出力されません・・・・。
何度もお恥ずかしいんですが、なにか根本的に間違ってます?お時間あれば教えてください・・・。

if(fin2!=NULL)
{
int yabu=0;
for(int i=0; fgets(c,CHARMAX,fin2)!=NULL;i++)
{
sscanf(c,"%d%*c%*c%d",&a[yabu],&b[yabu]);
fprintf(fout2,"%d::::::::::::::%d:%d\n",yabu,a[yabu],b[yabu]);
yabu++;
}
}
int yabu=0;
long lLen=0;
char *lpBuf=NULL;
if( (fin = fopen( "sample.txt", "r" )) != NULL ) { //sample.txtはfinファイル名
  fseek( fin, 0, SEEK_END );
  lLen = ftell( fin );
  fclose( fin );
}

lpBuf = (char*)malloc( lLen+1 );
memset( lpBuf, 0x00, lLen+1 );
memset( lpBuf, 'C', lLen );

for(i=0; i<yabu; i++ ) {
  if( a[i] <= lLen ) {
    lpBuf[a[i]-1] = 'A';
  }
  if( b[i] <= lLen ) {
    lpBuf[b[i]-1] = 'B';
  }
}
fwrite( lpBuf, sizeof( char ), lLen, fout2 );

補足日時:2002/02/17 01:51
    • good
    • 0

 ANo.#11の補足を読むとA(800)やB(850)をfinファイルの何番目文字


として出力するのか曖昧になってしまいます。
「a[],b[]にある数値に対応した位置にそれぞれA、Bを出力し、
それ以外ではCを出力する。その際、数値が必ずしも単調に
増加するとは限らない」
と言う条件では行けないのでしょうか?

 上のような前提で処理例を示しますのでやってみていただけ
ないでしょうか?
 a[],b[]を読み込んだ後、以下のようにしてください。

int n=0;
int i,k;
char cch[3]={"ABC"};
char cc[1000];
while(fgetc(fin)!=EOF) {cc[n]=cch[2];n++;}
for(i=0;i<yabu;i++){
k=a[i]-1;cc[k]=cch[0];
k=b[i]-1;cc[k]=cch[1];
}
for(i=0:i<n;i++)fprintf(fout2,"%1c ", cc[i]);

注意点:
・cc[1000]のサイズ1000をfinファイルにある文字数より大きな
 値に適当に修正してください。
・a[]、b[]に同じ数値があるときは"B"が出力されます。
・fin2を読み込むときに設定したyabuの値をそのまま使用します。
・cc[]のサイズが大きいときは宣言の位置を適当に変えてください。
    • good
    • 0
この回答へのお礼

お返事おそくなって申し訳ございません。パソコンがこわれちゃったんで・・・。
で、早速、やってみたんですが、
char cch[3]={"ABC"};
のところの、エラーで、「初期化子の数が多すぎます」というエラーが取れません。なにがいけないんでしょうか?

お礼日時:2002/02/16 02:06

こんにちは。

itohhといいます。

前から思っていたのですが、finファイルを実際に読む必要性がないのではないでしょうか?
finファイル内のデータを使うのではなく、データの長さだけが必要なのですよね?

finファイルとは、例えば"fin.dat"みたいにプログラムが動く前に実在するファイルなのですよね?
finファイルの長さを測ってその長さ以内のa,bを順に出力するのではいけないのでしょうか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q結婚相談所の口コミや人気比較ランキングサイトってありますか?

結婚相談所の口コミや人気比較ランキングサイトってありますか?

結婚相談所の利用を検討しています。出会い系、合コン、パーティー、お見合い等、数をこなしても結局は実っていません。

出会いの質を変えたいのですが、結婚相談所ではツヴァイ、オーネット、ノッツェ、サンマリエ、パートナーエージェント・・・違いがよく分かりません。

実際に結婚紹介サービスを利用した方の体験談などが掲載されているサイトを探しています。

Aベストアンサー

結婚相談所の口コミ・評判
http://2marry.biz/138.html

[結婚相談所選びのポイント]
・結婚相談所の料金は大切ですが費用の高い安いだけで選ぶのは危険です。安いに越した事はないのですが安いのはそれだけの理由があります。サポートの不足もありえます。高いからとサービスが良い訳ではないのですが、極端に安い所は注意した方がいいです。

・提出する書類も大切です。提出書類からプロフィールが作成されますから、少なければ自分は楽ですが、相手の情報は多く得られることができません。○○が必要、●●証明を提出して下さいなど面倒くさいですが、相手にも求めている訳ですから信頼性は間違いなく増します。悪徳相談所ではサクラとかありますしね。

Qfp = fopen(argy[1], "r");の[1]の意味は

https://oshiete.goo.ne.jp/qa/8940272.html
 の11行目に
fp = fopen(argv[1], "r");の[1]の意味が分かりません。
試したいのですが、ソフトがうまく動きません
 よろしくお願いいたします。

Aベストアンサー

前の例題も読みました。

大分苦戦しているようですが、配列については理解が進みましたでしょうか?
お答えしますと、最初のパラメータ文字列が代入されています。

古いC言語の約束でして大変有名なものです。

コマンドラインコンソールから実行ファイル名を書いて、
パラメータをスペースで区切って指定したとします。

このパラメータ文字列が[1]以降に入ります。
例として、"test"と言う名前の実行ファイルがあったとします。

例)> test test1 test2 3 4

このようにコマンドラインから入力し実行すると、

argc = 5
argv[0] = "test"
argv[1] = "test1"
argv[2] = "test2"
argv[3] = "3"
argv[4] = "4"

と文字列が入ってきます。

以下はサンプル。

void main( int argc , char *argv[])
{
if( argc < 2 )
{
// パラメータ指定がなかった場合の表示
printf( "test に続けて4つまでパラメータを入力できます\n");
exit(0);
}
if( argc > 5 )
{
 // パラメータが5つ以上あった場合の表示
printf( "5つ以上のパラメータは受け付けません\n");
exit(-1);
}

// 正常ルート
printf( "パラメータの数は%d個ですね?ニヤッ\n", argc-1);
printf( "最初のパラメータは%sでしょ?\n", argv[1]);
printf( "残りはargv[2]以降ですが、面倒なので表示しません\n");
}

と言う具合に、引数を活用できます。argv[0]には、実行ファイル名が入ります。
argc は実行ファイルの名前も含めてカウントされます。

プログラムによっては必要な引数の数が変わりますし、
ユーザーのコマンドラインからの入力ミスなどでパラメータがなかったり、
必要なパラメータが不足していたりしますので、
argcとargvを使って最初にシンタックスエラーチェックをするのが常道です。

実行ファイル名の指定がなく、プログラムが実行されることはないと思われます
から、argcは1以上の値になります。

argc, argvの活用は、
実行コマンドを手打ちで打ち込むコンソール形式でよく用いられる基本的な
アプリケーションの開発手法です。

ご質問の箇所は、
第一パラメータにプログラム内で読み込むファイルのファイル名を指定してるの
でしょう。(よくあります)

しかし、Windowsなどのウィンドウを使用するアプリケーションは、
これとは違っておりますので注意が必要です。
(C言語とは別に、Windowsに特化した開発ノウハウの勉強が必要です)

Windows系で上記の様な基本的なプログラムを作成する場合は、
プロジェクトの作成時に(VisualStudioなどで)コンソールアプリケーション
を選んで作成します。実行時にコンソールが開きます。

Linuxの場合は、コンソールがデフォルトになっているでしょうから、
(特殊な設定がなければ)そのまま作成できます。

テキストエディタでソースを記述し、gcc などでコンパイルします。
実行形式ファイルが出来ていれば、想定どおりの動作をするでしょう。

ファイルの読み込みが出来るようになったら、
ファイルの内容を書き換えて保存したり、
ファイル名を変えたり、
ディレクトリ内のファイルを全て表示したり、
ファイル内に含まれる文字列を検索し、該当するファイルをリストしたりなど、

有用なサンプルプログラムを沢山作って練習します。

ファイルを読み込む先は、char型の配列でバイトサイズのメモリーとして確保
します。メモリーと変数の関係を充分に理解することをお勧めします。
殆どのプログラムは、このメモリーの確保やメモリーサイズの計算と格闘する
場合が多くなるからです。

バイナリー形式のファイル(すべてはバイナリー形式として良いのですが)に
ついて理解が深まった後は、
bmpの画像ファイル、wavなどの音声ファイルをあけて、
これの中身を書き換えて遊びます。

特にwavファイルは、音量の変更や周波数フィルタなども掛けれますので、
メモリ、配列、ファイルの関係を(焦らずに)ゆっくり理解するだけで、
今の知識レベルでも面白いことが沢山出来ます。

以上、ご参考に成れば。

前の例題も読みました。

大分苦戦しているようですが、配列については理解が進みましたでしょうか?
お答えしますと、最初のパラメータ文字列が代入されています。

古いC言語の約束でして大変有名なものです。

コマンドラインコンソールから実行ファイル名を書いて、
パラメータをスペースで区切って指定したとします。

このパラメータ文字列が[1]以降に入ります。
例として、"test"と言う名前の実行ファイルがあったとします。

例)> test test1 test2 3 4

このようにコマンドラインから...続きを読む

Q鉄道のコストパフォーマンス比較

気まぐれ鉄道比較質問ですw

お暇な方適当でいいのでおしえてください^^

運賃を距離で割った場合、以下のJR3つと都内5私鉄の、
計8路線ではざっくり言ってどんなランキングになりますか?

一応JRなどは都市部中心に考えて下さい。
(郊外入れると多分比較できなさそうな為)

また車内が快適だと思うランキングを主観でお願いします^^w


JR東日本、JR東海、JR西日本
東武池袋、西武池袋、京王、小田急、京急

ざっくりでいいのでよろしくです!

Aベストアンサー

コストパフォーマンスはこの順だな。
1.京王
2.JR東日本(山手線)、JR西日本(大阪環状線)
4.小田急
5.西武池袋、京急
7.東武池袋、JR東日本、JR西日本
10.JR東海

Qfor(int i = 100, long n = 1; i > n/3i; i++)

for(int i = 100, long n = 1; i > n/3i; i++)
のように、初期設定で型の違う変数を宣言したいんだけど
C++ではこんなふうに2つ以上の型を宣言してはいけないんですか?

Aベストアンサー

,

コンマ演算子の原理です。
forの初期化文で "," で区切れるのは値を返す文だけです。
よってintステートメントもlongステートメントも値を返さないので、この文では使用できません。

というか、むしろ、intステートメントの第2引数としてlongが認識されてしまいます。
外で

int i; long n;

とし

for(i = 0, n = 0; hoge; hoge)

なら可能です。

Q比較サイト

これ以外で、良い、充実した比較サイト知りませんか
教えて下さい(ランキングよりカスタマレビュー重視の物で)
http://www.hikaku.com/

Aベストアンサー

宣伝になってしまうので

"価格比較サイト"っていうキーワードで検索してみて下さい。
メジャーなところは殆どこれで見つかります。

ただ、価格比較サイトって殆どの場合、店が直接管理している
わけじゃないから内容は信用しない方がいいよ
信用してしまうと失敗します。
参考程度に考え検討は必ずその店のサイトへ行ってしましょう。

価格比較サイトは単なる広告サイトの一つですからね

Qchar AA[]{"全角文字"};から"全"という一字を取り出したい

 今晩は、Cの初心者です、宜しくお願いします。
 全角文字の入ったchar AA[]{"全角文字"};から"全"という文字一字を取り出す時にAA[0]とかくとエラーになります。
 どのようにしたら取り出せるのでしょう。
 ポインタを使う方法と使わない方法を教えて下さい。
 宜しくお願いします。

Aベストアンサー

お疲れ様です。

まずお伺いしたのがOSおよび開発するためのコンパイラです。

ロケール等の話は分かりませんが、昔のC言語で日本語を扱う場合には全角文字1文字で2個つのchar領域を使用していました。
(マルチバイト文字セットと言います。)

詳細は参考URLを参照の事。

windowsでVCと仮定した場合、charを使われていると言うことは、多分、shift-jis(シフトJIS)で文字列を扱っていると思われます。

結論として全角文字1文字だけを取り出したいという場合は、結局char2個分のデータを取り出す必要があります。

>char AA[]={'全','角'};

char AA[]="全角";
とし
>printf("%s%s\n" , AA[0],AA[1] ) ;

printf("%c%c\n" , AA[0],AA[1] ) ;
とすれば、「全」だけを表示する事が可能と思われます。

日本語を文字列で表示する為の文字コードについては
Shift-JISだけでなく、UnicodeやUTF・EUC・JISなどがあります。

もう少し詳しく記載してあるホームページはないか探してみましたが、ちょっと無理でした。

参考URL:http://marupeke296.com/CPP_charUnicodeWideChar.html

お疲れ様です。

まずお伺いしたのがOSおよび開発するためのコンパイラです。

ロケール等の話は分かりませんが、昔のC言語で日本語を扱う場合には全角文字1文字で2個つのchar領域を使用していました。
(マルチバイト文字セットと言います。)

詳細は参考URLを参照の事。

windowsでVCと仮定した場合、charを使われていると言うことは、多分、shift-jis(シフトJIS)で文字列を扱っていると思われます。

結論として全角文字1文字だけを取り出したいという場合は、結局char2個分のデータを取り出...続きを読む

QFXの比較サイトってどれほどの信用度ですか

FXに興味を持って比較サイトを見ました。不思議に思ったのは、比較サイトによってランキング上位に出てくる会社はあまり違いすぎます。数日経っても変わらなく、あるいは他の比較サイトではずっと下位にあったりしています。評価の基準はもちろん違いますが、せめて上位5位から1位、10~1位の間に前後するなら理解できます。
何を信じたらいいのか分かりません。経験者の皆様、口座開設の時に何を参考にして選びましたか、教えてください。

Aベストアンサー

私もランキングは信用していません。
やはりアフィ報酬目当てのものが多く、ランキング上位のものは
アフィリエイト報酬が高いものが多いからです。

口座選びの基準としては、最近は破綻する業者もあるので
会社の信用度から選ぶというのが最低限必要だと思います。
セントラル短資や外為どっとこむなら全額信託保全だし
歴史も古い会社なので、高額を入れておくのも安心ではないでしょうか。
ただ、こういうところは手数料が若干高い傾向にあるので、
運用資産が少ないのであれば、手数料が安い(スプレッドが狭い)ところを選んでもいいかもしれません。
(パンタレイ・MJ・外為オンラインなど)

他に画面(チャートなど)の見易さ・使い勝手などもありますが
最近はデモトレードができる業者も多いので
デモトレードしてから使いやすいところの口座を開設するというのも手かと思います。

Qint nII[10] = { 0 }について

久々にCを使ってプログラムを組んでいるのですが、基本的な構文を思い出せず
いくつか教えていただきたく質問させていただきました。

1)配列すべてを初期化するのに、宣言時に

int nII[10] = { 0 };

で大丈夫だった(全ての要素が0で初期化)と記憶しているのですが、間違いないでしょうか?

2)構造体の初期化は

struct tm tm;
memset(&tm, 0, sizeof(struct tm))

で大丈夫でしょうか?

3)構造体の宣言は

typedef struct{
int a;
}HOGE, *LPHOGE;

HOGE st; // <- struct HOGE stと同じ
LPHOGE pst; // <- struct HOGE* pstと同じ

で問題ないでしょうか?

以上、3つ質問になって申し訳ないのですが、よろしくお願いします。

Aベストアンサー

1)OK
2)たぶんOK
3)HOGEという名前の構造体はない(当該の構造体には名前がない)ので、
// 以下のコメント記述が誤っています。ただし、

HOGE st;
LPHOGE pst;
という定義そのものはOK

Q軽1ボックスでアイドリング音のランキング

軽1ボックスでアイドリング音の大きさ(静かさ)ランキングってありますか?

バモスって静かだなーと思いましたが、他の車種と比較してどうかなと思いました。

よろしくお願いします。

Aベストアンサー

仕事でよくサンバーディアス、アトレーワゴンあたりにのりますが、サンバー静かです。

静かさ以外にも、個人の感じ方によるかと思いますが、エンジン音質が耳障りじゃなくてスムーズです。
フィーリングもスムーズです。
軽にありがちな「キャキャキャキャッ!」っていうエンジンのかかりでもないので、あのへんの車ではなかなか好きですね。
見た目は普通すぎますが。

Q&str[n]とpstr + nと&pstr[n]

あるプログラミングの本で

&str[n]
pstr + n
&pstr[n]

は同じだと書いてあり、考えたのですが、
上の二つはstr[n]のアドレスを表しているとしても、
三つ目はstr[n]のポインタのアドレスを表していると思うのですが
どこが間違っているのでしょうか?教えてください。

Aベストアンサー

>本にも突然でてきているのでよくわからないのですが・・・。

よくわからないもの同士が同じかと聞かれても、よくわからないというのが答えです。
本当に、突然出てきているのなら、そんな本は捨てましょう。


人気Q&Aランキング

おすすめ情報