Oh-Orange の回答履歴
- BCCで出来るのにVCだと出来ない。
あるソースをborlandでコンパイル(メイク)して実行するとうまくいくのですが そのソースをVisual stdioでコンパイルして実行するとエラーが出てしまいます。 このようなことが普通あるのでしょうか? それともVisual Stdioのどこかがおかしいのでしょうか?
- ベストアンサー
- noname#61385
- C・C++・C#
- 回答数6
- 無限ループに陥ります
プログラム中の以下の部分で無限ループに陥ってしまいます while(*a != EOF){ *a = fgetc(fi); if(*a == 32){ b++; } if(b == 3){ b = 0; t = *(a-1); if(t == '1'|| t == '3' ||t == '5' || t == '7'|| t == '9'){ c[n] = 1; } else{ c[n] = 2; } n++; } } fiに読み込んでいるファイルの末尾はこんな感じです。 50 49 0 34 34 34 34 34 34 34 34 34 34 34 34 50 49 0 68 68 68 51 51 50 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 [EOF] どなたか分かる方お願いします。
- 無限ループに陥ります
プログラム中の以下の部分で無限ループに陥ってしまいます while(*a != EOF){ *a = fgetc(fi); if(*a == 32){ b++; } if(b == 3){ b = 0; t = *(a-1); if(t == '1'|| t == '3' ||t == '5' || t == '7'|| t == '9'){ c[n] = 1; } else{ c[n] = 2; } n++; } } fiに読み込んでいるファイルの末尾はこんな感じです。 50 49 0 34 34 34 34 34 34 34 34 34 34 34 34 50 49 0 68 68 68 51 51 50 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 [EOF] どなたか分かる方お願いします。
- 3Dテトリス
普通のテトリスのような2Dでゎなく、3Dでテトリスを作成してみたいと思います。 言語などゎといませんので参考サイトや参考文献などありましたら教えて下さい。 まんまのソースが書いてあるものでもかまいません、いろいろアレンジを加えてみようと思います。
- ベストアンサー
- son333
- その他(プログラミング・開発)
- 回答数1
- HOSTENT構造体を宣言する必要はないのですか?
ネットワークプログラミングを勉強しているのですが,ソケットを用いた通信のサンプルで, HOSTENT *lphost として,HOSTENT構造体へのポインタを宣言して, lphost = gethostbyname(ホスト名の文字列); で,サーバーのアドレスをHOSTENT構造体にセットするとあります。 構造体へのポインタを宣言しても,構造体自体の領域は確保されないのではないかと思うのですが,gethostbyname関数が返すポインタは,いったい誰がどこに確保した領域を指しているのか,そしてその領域はいつまで保持されるのか,よく理解できません。構造体そのものを宣言せずに,それへのポインタを宣言し,それに関数の戻り値を代入するというのが,よく理解できないです。どなたか解説していただけると幸いです。
- 多元配列について(ANSI C)
動的多元配列で、 Voidポインタに、多種の型がぶら下がった多元配列を作り、 読み書きをしたいのですがどのようにしたらよろしいでしょうか。 具体的には、 x[0][1]は、intで「2」が入っている x[0][4]は、intで「9」が入っている x[1][2]は、charでしかも文字列の配列で「goo」が入っている x[1][5]は、charでしかも文字列の配列で「教えて」が入っている x[0]は、int型の配列。X[1]は、文字列型の配列。 というようなものです。 一応ソースは作ってみたのですが、int型では問題なくいくのですが、 文字列は、コンパイルはできますが、実行すると予期せぬことが起きます。 #include <stdio.h> #include <stdlib.h> #include <string.h> int main (void) { void **topPointa; int * iDataInput; int * iDataOutput ; char * chDataInput; char * chDataInput2; char * chDataOutput1 ; // ポインタアドレス用のメモリ確保 topPointa = (void *) calloc (10 , sizeof(void *)); if(topPointa == NULL) { printf("メモリが確保できません\n"); exit(-1); } //int配列のメモリ確保 iDataInput = (int * ) calloc (10 , sizeof(int)); if(iDataInput == NULL) { printf("メモリが確保できません\n"); exit(-1); } iDataInput[0] = 3 ; iDataInput[1] = 4 ; topPointa[0] = (void * ) &iDataInput; //int配列の取り出し iDataOutput = *(int *) topPointa[0]; printf( "int: %d\n", iDataOutput[0] ); printf( "int: %d\n", iDataOutput[1] ); //char配列 のメモリ確保 chDataInput = (char * ) calloc (10 , sizeof(char *)); if(chDataInput == NULL) { printf("メモリが確保できません\n"); exit(-1); } chDataInput2 = (char * ) calloc (10 , sizeof(char)); if(chDataInput2 == NULL) { printf("メモリが確保できません\n"); exit(-1); } strcpy(chDataInput2 , "hoe"); chDataInput[0] = &chDataInput2; topPointa[1] = (void * ) &chDataInput; //char配列の取り出し chDataOutput1 = *(char *) topPointa[1]; printf( "char: %S\n", chDataOutput1[0] ); free(iDataInput); free(chDataInput); free(chDataInput2); return 0; } 言語は、C言語ANCI Cでお願いします。 以上。よろしくお願いします。
- こんなプログラムVisual C++ 2005 で作れます?
コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう) 例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。 例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。 例)英文.txt → new英文.txt
- ベストアンサー
- graces5368
- C・C++・C#
- 回答数6
- キャレットの現在位置の表示 (Win32API)
Win32APIの習作としてエディタを作っているのですが, ステータスバーに現在のキャレット位置を表示する部分で困っています. いろいろ調べて下記のコードを書いてみたのですが, エディットコントロールに更新が無いとき(矢印キーで移動など) にキャレット位置の更新ができないです. 良い方法がありましたらご教授下さい. (ここのサンプルコードが良いとかでもありましたらお願いします.) //////////////////////////////////////////////////////////////// // MyEditor.c static const int FONT_WIDTH = 6; static const int FONT_HEIGHT = 18; int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { ...略... } LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wp, LPARAM lp) { ...略... switch (uMsg) { ...略... case IDC_EDIT:{ char str[64]; POINT pt = {0, 0}; RECT rc = {0, 0, 0, 0}; GetCaretPos(&pt); wsprintf(str, "現在のキャレット位置 (%d, %d)", pt.x / FONT_WIDTH, pt.y / FONT_HEIGHT); SendMessage(hStatusbar, SB_SETTEXT, 1, (LPARAM)str); GetClientRect(hStatusbar,&rc); InvalidateRect(hStatusbar, &rc, TRUE); break ;} ...略... } return 0L; }
- こんなプログラムVisual C++ 2005 で作れます?
コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう) 例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。 例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。 例)英文.txt → new英文.txt
- ベストアンサー
- graces5368
- C・C++・C#
- 回答数6
- キャレットの現在位置の表示 (Win32API)
Win32APIの習作としてエディタを作っているのですが, ステータスバーに現在のキャレット位置を表示する部分で困っています. いろいろ調べて下記のコードを書いてみたのですが, エディットコントロールに更新が無いとき(矢印キーで移動など) にキャレット位置の更新ができないです. 良い方法がありましたらご教授下さい. (ここのサンプルコードが良いとかでもありましたらお願いします.) //////////////////////////////////////////////////////////////// // MyEditor.c static const int FONT_WIDTH = 6; static const int FONT_HEIGHT = 18; int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { ...略... } LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wp, LPARAM lp) { ...略... switch (uMsg) { ...略... case IDC_EDIT:{ char str[64]; POINT pt = {0, 0}; RECT rc = {0, 0, 0, 0}; GetCaretPos(&pt); wsprintf(str, "現在のキャレット位置 (%d, %d)", pt.x / FONT_WIDTH, pt.y / FONT_HEIGHT); SendMessage(hStatusbar, SB_SETTEXT, 1, (LPARAM)str); GetClientRect(hStatusbar,&rc); InvalidateRect(hStatusbar, &rc, TRUE); break ;} ...略... } return 0L; }
- こんなプログラムVisual C++ 2005 で作れます?
コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう) 例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。 例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。 例)英文.txt → new英文.txt
- ベストアンサー
- graces5368
- C・C++・C#
- 回答数6
- こんなプログラムVisual C++ 2005 で作れます?
コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングです。 実際の内容の結果は次のようになる。 -------------------英文.txt------------------------------- I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers? ------------------new英文.txt(プログラムによって新規作成)------------------------------ I was wondering if my plant needs friends, do need to get more of the same so it can polinated and produce peppers? ------------------------------------------------- ポイント (1) NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう) 例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。 例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。 例)英文.txt → new英文.txt
- ベストアンサー
- graces5368
- C・C++・C#
- 回答数6
- ODE (Open Dynamics Engine)を使ったプログラムで
ODE (Open Dynamics Engine)を使ったプログラムで人型のモデルを作ってみたいのですが、簡単な人型モデルのサンプルのプログラムを作っていただけないでしょうか。もしできる方がいらっしゃいましたらお願いします。
- 簡単だと思うんですがわかりません
printf("………\n\ (スペース) あ"); これを実行すると、 ……… (スペース) あ となってしまって、『あ』が左詰めになりません。 プログラムが長いので見やすくするために\で改行して書いたんですが、どうすればいいのでしょうか。どなたかお願いします。 ちなみに、プログラム上で『あ』を右に持って行くときにTabキーを使ってみましたがそれでは動かなかったので、スペースキーを使い上のような状態にしました。 (スペース)←としたのは、質問を投稿するとあたかも左詰めで投稿したかのように表示されてしまったためですので、分りにくいかもしれませんがご了承下さい。 ほんとうは、"の下に『あ』がくるように書いてます
- C++を学習するにあたって
質問は以下の3つですよろしくお願いします 1.vc++ と c++の違いを教えてください。 vc++は開発環境でc++の画面をプログラミングするときに使うもの という認識でいいでしょうか。 2.vc++とc++の開発環境を教えてください。 javaでいうeclipsの様なものまたその開発環境はcやc++やc#でも使えるか否か 3.vc++ や c++ は制御系システムで用い業務系システムでは 利用しないのでしょうか 初歩的な質問で申し訳けありませんがよろしくお願いします。
- ウィンドウ名を知るには
いくつかのウィンドウ(Microsoft Internet Explorerやフォルダ、ワードなどの)を開いていて、それらの中で特定のウィンドウの名前を知る方法をご存じの方がいらっしゃれば、アドバイスいただきたいと思います。 何が目的かといいますと、指定したウィンドウの画面をキャプチャして保存するまでを一連で行うプログラムを作りたいので、指定するウィンドウの名前を知る必要があります。
- 足して100になるような乱数のアルゴリズム
次のような、8つの変数にそれぞれランダム(0から100まで)に発生させた数を入れて 毎回合計で100になるようにしたいです。 a[0] = 12; a[1] = 21; a[2] = 8; a[3] = 30; a[4] = 0; a[5] = 14; a[6] = 5; a[7] = 10; もう1回実行したとしても a[0] = 2; a[1] = 14; a[2] = 62; a[3] = 5; a[4] = 0; a[5] = 0; a[6] = 1; a[7] = 16; と合計で100になります。 a[0] = 0; a[1] = 0; a[2] = 100; a[3] = 0; a[4] = 0; a[5] = 0; a[6] = 0; a[7] = 0; と滅多にありないですけど、このようになる可能性もあると思います。 このような乱数を発生させるためにはどのようなアルゴリズムになるのでしょうか?
- ベストアンサー
- takagoo100
- C・C++・C#
- 回答数8
- ウィンドウ名を知るには
いくつかのウィンドウ(Microsoft Internet Explorerやフォルダ、ワードなどの)を開いていて、それらの中で特定のウィンドウの名前を知る方法をご存じの方がいらっしゃれば、アドバイスいただきたいと思います。 何が目的かといいますと、指定したウィンドウの画面をキャプチャして保存するまでを一連で行うプログラムを作りたいので、指定するウィンドウの名前を知る必要があります。
- C *での三角形描画
課題で*を使って三角形を描画するプログラムを作るんですが、ネットで見たかぎり、 #include<stdio.h> int main() { int n, i, j, k, l; printf("段数を入力してください:"); scanf("%d", &n); for(i = 0; i < n; i ++) { for(j = 0; j < n; j ++) { for(k = 0; k < n*n-i*n-j-1; k ++) printf(" "); for(k = 0; k < i; k ++) { for(l = 0; l < j*2+1; l ++) printf("*"); for(; l < n*2; l ++) printf(" "); } for(k = 0; k < j*2+1; k ++) printf("*"); printf("\n"); } } return 0; } となっているのが、 段数を入力してください:2 * *** * * *** *** という風に表示されるので、これを 段数を入力してください:2 * *** という形に表示させられるよう変更すべき箇所を教えてください。
- 足して100になるような乱数のアルゴリズム
次のような、8つの変数にそれぞれランダム(0から100まで)に発生させた数を入れて 毎回合計で100になるようにしたいです。 a[0] = 12; a[1] = 21; a[2] = 8; a[3] = 30; a[4] = 0; a[5] = 14; a[6] = 5; a[7] = 10; もう1回実行したとしても a[0] = 2; a[1] = 14; a[2] = 62; a[3] = 5; a[4] = 0; a[5] = 0; a[6] = 1; a[7] = 16; と合計で100になります。 a[0] = 0; a[1] = 0; a[2] = 100; a[3] = 0; a[4] = 0; a[5] = 0; a[6] = 0; a[7] = 0; と滅多にありないですけど、このようになる可能性もあると思います。 このような乱数を発生させるためにはどのようなアルゴリズムになるのでしょうか?
- ベストアンサー
- takagoo100
- C・C++・C#
- 回答数8