BLK314 の回答履歴

全271件中61~80件表示
  • C言語で配列の連結について教えてください

    以下のような構造体でmember[]の要素の後にmember2[]の要素を追加して、member[]を返す関数を作りたいのですがやり方がわかりません。よろしくお願いします。 (C++ vectorのpush_back、phpのarray_push()に相当する関数) typedef struct _MEMBER { char *name; int age; char *address; } MEMBER; MEMBER member[] = { "山田", 25, "東京都aaaaa", "木村", 30, "東京都bbbbb", "森田", 24, "東京都ccccc", }; MEMBER member2[] = { "伊藤", 23, "大阪府ddddd", "山野", 31, "大阪府eeeee", };

    • kahata
    • 回答数3
  • 領域の開放がされているかどうかはどうやって調べればいいのでしょう。

    #include <stdio.h> #include <stdlib.h> int main(void){ char *str; printf("&str : %d\n", &str); // ●領域割り当て前のアドレス(NULL) printf("str : %d\n", str); str = (char *)calloc(15, sizeof(char)); // (1)領域割り当て後のアドレス printf("str : %d\n", str); // str領域開放 free(str); // (2)領域解放後のアドレス printf("str : %d\n", str); return 1; } 開放した後は●と同じくNULLになると思っていたのですが、 実際に実験してみて(1)と(2)のアドレスが同じものでした。 アドレスは割り当てたままに見えますが、実際にはちゃんと開放されているのでしょうか? それとも、何か間違えているでしょうか。 よろしくお願いします。

  • なぜエラーになるのでしょう。

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define STR_MAX 512 #define LINE_MAX 30000 int main(void){ // ※↓がエラー原因※ char str[LINE_MAX][STR_MAX]; printf("%d\n", sizeof(int)); printf("%d\n", sizeof(int[10])); printf("%d\n", sizeof(char[10])); printf("%d\n", sizeof(char[STR_MAX])); printf("%d\n", sizeof(char[LINE_MAX])); printf("%d\n", sizeof(char[LINE_MAX][STR_MAX])); printf("%d\n", sizeof(long[STR_MAX][LINE_MAX])); printf("%d\n", sizeof(str)); return 1; } というプログラムを実行すると「問題が発生したため~を終了します。ご不便をかけて~」という問題が発生して終了してしまいます。 原因は、 printf("%d\n", sizeof(str)); の部分であるのですが、 char str[LINE_MAX][STR_MAX]; という宣言でメモリ使用量が大きすぎるということでしょうか? しかし、 printf("%d\n", sizeof(char[LINE_MAX][STR_MAX])); printf("%d\n", sizeof(long[STR_MAX][LINE_MAX])); でも正常に実行できているのに・・・ もともとは、何万行もあるテキストファイルを配列に一度格納し、それらを編集して出力しようと思っていたのですが、毎回エラーが発生するので、調べたところ配列宣言の部分 char str[LINE_MAX][STR_MAX]; にエラーがあるということが分かったのですが、原因が分かっても理由がさっぱり分かりません。 googleで配列の上限について調べたり、仕様について調べたのですが、ほしい回答が得られず質問させてもらいました。 分かる方いましたら教えてください。 ちなみにExcelのマクロを組んだときにdim StrTemp(512, 30000) as stringと宣言して Option Explicit Function SampleTest() Dim StrTemp(512, 30000) As String Dim i, j As Integer For i = 1 To 512 For j = 1 To 30000 StrTemp(i, j) = "SampleTest" Next j Next i End Function と処理をすることはできたので、パソコンのメモリ容量が足りないとは思えないのです。

  • やってみてもわからないので教えてください

    組み合わせ(nCm)を計算するプログラムを作成せよ。 ただし、nの階乗を計算する関数factorialと組み合わせを計算する関数combinationを作成し、 関数combinationの中で関数factorialを使用して組み合わせを計算すること。 <実行結果> 組み合わせnCmを計算します。 nとmを入力してください(n>m) n --> 8 m --> 6 異なる8個の整数から6個の整数を取り出す組み合わせは28通りです。

  • クリップボードにデータを転送したアプリは誰か知りたい

    おせわになります。 先日クリップボード関連の質問をさせていただきましたが、 さらに質問させて下さい。 今回知りたいのは、クリップボードにデータを転送したのは どのアプリか、ということを知りたいのです。 たとえば、PrintScreenキーによるスクリーンショットなのか、WORD等のアプリからなのか、はたまたAcrobat Readerからなのか・・・・ その転送元のアプリによって、データを受信したりしなかったり、ということをしたいのです。 ちなみに、受け取るデータの種類は一種類(静止画)で、データの種類によって動作を買えることは考えておりません。 もしこの方法をご存知の方がいらっしゃいましたら、 教えていただければ幸いです。 よろしくお願い致します。

  • long型の定数の末尾にLを付ける意味

    long型の変数に値を代入する時に、値の末尾に"l"または"L"を付けることが推奨されていますが、なぜLを付けるのでしょうか?Lを付けることによって何かが変わるのでしょうか?回答よろしくお願いします。

    • noname#113783
    • 回答数3
  • ウィンドウ枠をいちいち作るのがめんどくさい

    ウィンドウの作成の部分を書き出してみました。 BOOL InitInstance(HINSTANCE hInst,int nCmdShow) { HWND hWnd; hWnd=CreateWindow(szClassName, TEXT("文字列を表示する"); WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL); if(!hWnd) return FALSE; ShowWindow(hwnd,nCmdShow); UpdateWindow(hWnd); return TRUE; } 毎回やるのはめんどくさいのでコピー&ペーストでもいいでしょうか? または、覚えた方がいいのでしょうか?

  • ダイアログを継承したダイアログの作成について

    お世話になります。 今回お聞きしたいことは、 オリジナルに作成したダイアログを継承したオリジナルのダイアログを作成した際に、オリジナルに作成した基底ダイアログのダイアログ上のコントロールや、そのコントロールの位置を継承することはできますでしょうか? ということです。 何がしたいかといいますと、4つのダイアログをメインダイアログから呼び出すのですが、その4つのダイアログには共通するコントロールがあり、そのコントロールの動作もその位置も全く同じなのです。 そのため、いちいち4つのダイアログにコントロールの貼り付けや、処理を記入せずに、その共通のコントロールをもった基底ダイアログを作成して、その基底ダイアログの継承としてダイアログが作れたらなと思い、質問させて頂きました。 継承をすると、基底クラスの関数等を使うことができるというのはわかるのですが、ダイアログ上のコントロールの位置までは不可能なのかなと疑問に思いました。 ご回答を宜しくお願い致します。 開発環境は Windows CE 6.0 Visual Studio 2005 です。

    • fujtomo
    • 回答数2
  • MFCで変数の追加を選択したらWebページエラー

    MFCでダイアログベースのアプリを作成しようと思い、エディットボックスを配置した後、変数の追加を行なおうとしたところ、 「Webページエラー」というダイアログが現れました。 「デバッグしますか?」と訊かれたので「いいえ」を選択すると、変数の追加ダイアログが表示されたのですが、 なぜか変数の種類のエディットボックスが表示されず、変数名を設定し強引に完了ボタンをクリックした後 ビルドしても「○○(変数名)が定義されていない」とエラーになってしまいます。 このような現象になった方はいるでしょうか? これはどのようにすれば解決できるのでしょうか? 環境は、 WindowsXP Home Version2002 SP3 VisualStudio2008 Professional Edition 90日評価版 宜しくお願いします。

  • VC++2005のtmpfile_sで開いた時にどこに作成されるのでしょうか?

    VC++2005で、tmpfile_s関数を使ってテンポラリファイルをオープンして書き込みましたが、通常どこに作成されるのでしょうか? 一時的なので、見る必要はあまりないのですが、気になりまして・・・

    • kourei
    • 回答数5
  • VC++2005のtmpfile_sで開いた時にどこに作成されるのでしょうか?

    VC++2005で、tmpfile_s関数を使ってテンポラリファイルをオープンして書き込みましたが、通常どこに作成されるのでしょうか? 一時的なので、見る必要はあまりないのですが、気になりまして・・・

    • kourei
    • 回答数5
  • VC++2005のtmpfile_sで開いた時にどこに作成されるのでしょうか?

    VC++2005で、tmpfile_s関数を使ってテンポラリファイルをオープンして書き込みましたが、通常どこに作成されるのでしょうか? 一時的なので、見る必要はあまりないのですが、気になりまして・・・

    • kourei
    • 回答数5
  • 作成したフォルダをエクスプローラからアクセス禁止したい

    VC++2008にてプログラムを作成しています。 プログラムにてフォルダを作成し、 そのフォルダ内に、ファイルや別フォルダを作成しているのですが、 プログラムでのみ、内部のファイルやフォルダにアクセスでき、 エクスプローラやコマンドプロンプトからは、 トップのフォルダ自体をアクセス禁止にしたいのですが、 可能なのでしょうか? やりたい事は、エクスプローラから、トップのフォルダ自体は 見えてて構わない(出来れば見えない方が良いが) トップのフォルダをダブルクリックしても、 フォルダを開かせない。=中のファイル等は開くことはできない。 以上になります。 よろしくお願いします。

    • lhouse
    • 回答数2
  • c++

    プログラミング初心者なのですが 2つの整数を入力してその2つの間の数を全て足すプログラムを 作りたいのですがどうしてもできません。 #include <stdio.h> intmain(void) { int no = 1 int sum = 0; do{ sum = sum + no; no = no + 1; } while (no <= 5); printf("1から5までを足した数は%d\n", sum) return(0); } これで1から5までを足すプログラムにはできるのですがどこを 変えればできるでしょうか?

  • MFC vs .NET

    マイクロソフトが.NET Frameworkの普及を進めていますが、 質問1:今後は.NETで組んだ方が良い場合があるとしたらどんな場合ですか? 質問2:MFCのまま開発を続けてもかまわない場合があるとしたらどんな場合ですか?

  • VC++2005のtmpfile_sで開いた時にどこに作成されるのでしょうか?

    VC++2005で、tmpfile_s関数を使ってテンポラリファイルをオープンして書き込みましたが、通常どこに作成されるのでしょうか? 一時的なので、見る必要はあまりないのですが、気になりまして・・・

    • kourei
    • 回答数5
  • どのようにすればいいですか?

    10個の1桁の整数を入力して、その中から最も大きい数字を3つを 入力した順番通り出力するにはどのようにすればいいですか? #include<iostream> using namespace std; int main(void){ int b[10]; int a; for(int i=0; i<10; i++){ cin >> a; b[i]=a; } int i, j, temp; for (i = 1; i < 10; i++) { temp = b[i]; for (j = i; j > 0 && b[j-1] > temp; j--) b[j] = b[j -1]; b[i] = temp; } for(int i=0; i<3;i++){ cout << b[9-i]; } return 0; }

  • どのようにすればいいですか?

    10個の1桁の整数を入力して、その中から最も大きい数字を3つを 入力した順番通り出力するにはどのようにすればいいですか? #include<iostream> using namespace std; int main(void){ int b[10]; int a; for(int i=0; i<10; i++){ cin >> a; b[i]=a; } int i, j, temp; for (i = 1; i < 10; i++) { temp = b[i]; for (j = i; j > 0 && b[j-1] > temp; j--) b[j] = b[j -1]; b[i] = temp; } for(int i=0; i<3;i++){ cout << b[9-i]; } return 0; }

  • 初歩的なCプログラム(引数をかえす)

    こんにちは 現在学校でC言語の初歩を習っているのですが、いきなり挫折しています。 先日学校で ファイル名…prime 引数   …int 戻り値  …int 内容   …引数に一番近い素数をかえす といったプログラムをかけと言われたのですが、 書き方が全く分からない上に、たとえ先生に聞いたとしても難しく説明されてよくわかりません。 自分なりに調べてみたのですがそれでもわかりません。 次の授業(明日27日)で発表しなくてはいけないのでできるだけ更に焦っています; どなたか詳しく教えていただけないでしょうか。

  • クラスの宣言でのメモリ使用サイズの違い

    お世話になります。 現在、Visual Studio 2005にてMFCのC++のプログラムを作成しているのですが、そこでメモリの使用容量について疑問に感じた点があったのでこちらで、質問させて頂きました。 お聞きしたい内容は あるクラス1内で別のクラス2を宣言する際に、メンバ変数としてそのクラス2を宣言し、クラス1のコンストラクタでnewでメモリを確保し、デスクリタでdeleteする方法と、その都度クラス2の変数または関数が必要なときにnewでメモリを確保して、deleteで開放する方法とでは、メモリの確保等で違いがなにかありますでしょうか? また、クラス2をクラス1,クラス3で使用する場合には、クラス1,クラス3でそれぞれクラス2のオブジェクトを宣言するのと、クラス1でクラス2のオブジェクトを宣言し、そのオブジェクトをクラス3でexternするのではどちらの方がメモリの使用等からよい方法なのでしょうか? 今までほとんどメモリを気にせずにプログラムを作っていた為、メモリの使用の点ではほとんど無知な為、変な質問なのかもしれませんが、ご存知の方がいらっしゃいましたら、ご回答をお願い致します。 開発環境は Widows CE 6.0 Visual Studio 2005 です。

    • fujtomo
    • 回答数3