Oh-Orange の回答履歴

全2508件中181~200件表示
  • EDITコントロールで入力できる文字を制限するには?

    Windows APIを使ってソフト開発しています。 EDITコントロールで文字入力を受ける際、入力できる文字をアルファベットと数字のみ(もしくは任意の文字のみ)にするにはどうすればよいのでしょうか?ユーザーが記号キーなどを押しても無視されるようにしたいのですが。 「ES_NUMBER」スタイルを付加すると数字のみの入力にできますが、こうゆう感じで任意の文字のみを許可するようにできるでしょうか?

  • 簡単で面白い問題

    来年度、研究室に配属される学生のために、ゼミ資料としてC言語の問題を作成中です。 簡単で達成感のある問題って何かあるでしょうか? 課題としては、基本的な能力の向上とファイルの入出力などです。 今のところ、素数を求めたり、サインカーブをエクセルに出力しての描画などを考えています。 50行程度の簡単な問題でよいのですが、何かご存知でしたらよろしくお願いします。

  • 仮想メモリアドレスについて

    OSが管理している仮想メモリアドレスについて質問させて下さい。 物理メモリのアドレスといわれるものと、 仮想メモリのアドレスといわれるものは、 いずれもハードディスク上に存在し、ハードディスク上で OSによって管理されている情報(アドレス)ということになりますか?

  • 仮想メモリアドレスについて

    OSが管理している仮想メモリアドレスについて質問させて下さい。 物理メモリのアドレスといわれるものと、 仮想メモリのアドレスといわれるものは、 いずれもハードディスク上に存在し、ハードディスク上で OSによって管理されている情報(アドレス)ということになりますか?

  • fgetsを用いたループ処理後の入力について

    http://oshiete1.goo.ne.jp/qa3853689.htmlにて質問した内容ですが、 想定していたソースの範囲内では解決しないことが分かりましたので、新規に立てさせていただきます。 下記でfgetsを使って入力した後についてですが、*2のgetcharを無視して、*1のscanfで入力を受け付けなくなります。 *2のgetscharについては、その個数を増やしても同様に無視されます。 これを解消する方法はないでしょうか? ちなみにコンパイラはBBC、開発環境はVistaです。 なお、簡略のため#includeなどは省略しています。 #define SIZE 16384 void main(void){  int mode,r;  while(1){   do{    r = scanf("%d", &mode); //*1 return後に停止    while(getchar() != '\n'){ };   }while(r == 0)   switch(mode){ //その他選択肢あり    case 1:     execute();     break;   }  }  return; } void execute(void){  char moji[SIZE];  char buf[SIZE];  while(fgets(buf, sizeof(buf), stdin) != NULL){   if(sizeof(moji) < strlen(moji) + strlen(buf))    break;   strcat(moji, buf);  }  while(getchar() != EOF){ }  getchar(); //*2 これを無視して動作(scanfでも同様)  return; }

  • dos.hについて

    outportbなどの関数を使用しようとして dos.hをインクルードしているのですが bccでコンパイルするとエラーをはきます。 原因がわかる方いれば教えてください。 下記にソースを載せています。 #include <dos.h > void outportb(unsigned int portid,unsigned char value){ _asm mov edx,portid _asm mov al,value _asm out de,al } エラーは エラー E2451 080311-1.c 6: 未定義のシンボル de(関数 outportb ) *** コンパイル中に 1 個のエラーが発生しました *** とでます。

  • fgetsを用いたループ処理後の入力について

    http://oshiete1.goo.ne.jp/qa3853689.htmlにて質問した内容ですが、 想定していたソースの範囲内では解決しないことが分かりましたので、新規に立てさせていただきます。 下記でfgetsを使って入力した後についてですが、*2のgetcharを無視して、*1のscanfで入力を受け付けなくなります。 *2のgetscharについては、その個数を増やしても同様に無視されます。 これを解消する方法はないでしょうか? ちなみにコンパイラはBBC、開発環境はVistaです。 なお、簡略のため#includeなどは省略しています。 #define SIZE 16384 void main(void){  int mode,r;  while(1){   do{    r = scanf("%d", &mode); //*1 return後に停止    while(getchar() != '\n'){ };   }while(r == 0)   switch(mode){ //その他選択肢あり    case 1:     execute();     break;   }  }  return; } void execute(void){  char moji[SIZE];  char buf[SIZE];  while(fgets(buf, sizeof(buf), stdin) != NULL){   if(sizeof(moji) < strlen(moji) + strlen(buf))    break;   strcat(moji, buf);  }  while(getchar() != EOF){ }  getchar(); //*2 これを無視して動作(scanfでも同様)  return; }

  • dos.hについて

    outportbなどの関数を使用しようとして dos.hをインクルードしているのですが bccでコンパイルするとエラーをはきます。 原因がわかる方いれば教えてください。 下記にソースを載せています。 #include <dos.h > void outportb(unsigned int portid,unsigned char value){ _asm mov edx,portid _asm mov al,value _asm out de,al } エラーは エラー E2451 080311-1.c 6: 未定義のシンボル de(関数 outportb ) *** コンパイル中に 1 個のエラーが発生しました *** とでます。

  • fgetsを用いたループ処理後の入力について

    http://oshiete1.goo.ne.jp/qa3853689.htmlにて質問した内容ですが、 想定していたソースの範囲内では解決しないことが分かりましたので、新規に立てさせていただきます。 下記でfgetsを使って入力した後についてですが、*2のgetcharを無視して、*1のscanfで入力を受け付けなくなります。 *2のgetscharについては、その個数を増やしても同様に無視されます。 これを解消する方法はないでしょうか? ちなみにコンパイラはBBC、開発環境はVistaです。 なお、簡略のため#includeなどは省略しています。 #define SIZE 16384 void main(void){  int mode,r;  while(1){   do{    r = scanf("%d", &mode); //*1 return後に停止    while(getchar() != '\n'){ };   }while(r == 0)   switch(mode){ //その他選択肢あり    case 1:     execute();     break;   }  }  return; } void execute(void){  char moji[SIZE];  char buf[SIZE];  while(fgets(buf, sizeof(buf), stdin) != NULL){   if(sizeof(moji) < strlen(moji) + strlen(buf))    break;   strcat(moji, buf);  }  while(getchar() != EOF){ }  getchar(); //*2 これを無視して動作(scanfでも同様)  return; }

  • fgetsを用いたループ処理後の入力について

    http://oshiete1.goo.ne.jp/qa3853689.htmlにて質問した内容ですが、 想定していたソースの範囲内では解決しないことが分かりましたので、新規に立てさせていただきます。 下記でfgetsを使って入力した後についてですが、*2のgetcharを無視して、*1のscanfで入力を受け付けなくなります。 *2のgetscharについては、その個数を増やしても同様に無視されます。 これを解消する方法はないでしょうか? ちなみにコンパイラはBBC、開発環境はVistaです。 なお、簡略のため#includeなどは省略しています。 #define SIZE 16384 void main(void){  int mode,r;  while(1){   do{    r = scanf("%d", &mode); //*1 return後に停止    while(getchar() != '\n'){ };   }while(r == 0)   switch(mode){ //その他選択肢あり    case 1:     execute();     break;   }  }  return; } void execute(void){  char moji[SIZE];  char buf[SIZE];  while(fgets(buf, sizeof(buf), stdin) != NULL){   if(sizeof(moji) < strlen(moji) + strlen(buf))    break;   strcat(moji, buf);  }  while(getchar() != EOF){ }  getchar(); //*2 これを無視して動作(scanfでも同様)  return; }

  • C言語におけるfgetsを用いたループ処理について

    C言語において、文章を読み込むためにfgetsを用いて下記のプログラムを書いたのですが、*において入力を受け付けなくなります。 これを解消する方法はないでしょうか? ちなみにコンパイラはBBC、開発環境はVistaです。 なお、簡略のため#include,main等は省略しています。 //以下プログラム #define SIZE 16384 char moji[SIZE] = {""}; char buf[SIZE]; //EOF(^Z)になるまで、文字列を受け取る while(fgets(buf, sizeof(buf), stdin) != NULL){ if(sizeof(moji) < strlen(moji) + strlen(buf)) break; strcat(moji, buf); }; getchar(); //* //プログラムここまで

  • 1ByteのChar型変数を文字列として扱いたい

    1Byteのchar型変数に入ってる値を文字列として扱う方法を教えて下さい Char a; a=30; この30を文字列として出力したいのです 期待している出力:30 判る方、よろしくお願いします

  • 文字列の入力、数値変換について

    入力された数字を数値に変換するプログラムを作ったのですが、うまくいきません。 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <ctype.h> unsigned long long atollu(char[16]); void main(void){ unsigned long long input; char str[16]; char test[16] = "123456789012345"; int i,j=1; //atollu の動作確認・・・(1) printf("atollu test:%llu\n\n",atollu(test) ); //入力 NG: printf("%d回目 数値を入力(1~100000000000000 終了:exit)>",j); gets(str); input = atollu(str); //str と atollu(str) の確認 printf("%s %llu\n\n",str,atollu(str)); //exitと入力すると終了・・・(2) if(strcmp(str, "exit") == 0){ exit(0); } //数字以外がないか確認・・・(3) else { for( i=0; i<=15; i++){ if(isdigit(str[i]) == 0){ printf("NG\n"); for( i=0; i<=16; i++){ str[i]='\0'; } printf("moji\n"); j++; goto NG; } } } //範囲外 if(input>100000000000000 || input==0){ printf("NG\n"); printf("hani\n"); j++; goto NG; } printf("\n入力値は% llu",input ); } unsigned long long atollu(char str[16]){ unsigned long long t=0; int i,n; n = strlen(str) - 1; for( i=0; i<=15; i++){ if(str[i] == '\0'){ str[i] = 0;} else { t = t + (str[i] - '0') * pow(10.0,n-i);} } str[16] = '\0'; return t; } /* 数字を数値に変換する関数atolluは自分で作りました。 これの動作は(1)でちゃんとした値が出ているのでうまくできているようです。 (2)も"exit"と入力すれば終了するのでうまくいっています。 また、例えば "12" と入力したとき 12 9 NG moji 表示されますが、二回目以降は 12 12 NG moji となり、atollu(str)はうまく出力されている一方で、最後に「moji」と出てきているので、(3)でうまくいっていないようです。 どう直すべきなのか見当もつかないので困っています。 よろしくお願いします。

  • if文

    if(num) if(num%2) っていうのは、どういう意味ですか? if(num%2==0) とかだったら分かるんですけど・・・

  • C言語。どうしてコンパイルできません^^;

    最近プログラミングの勉強をはじめました。 C言語を勉強しています。 /*入力した値の、平均値・最大値・最小値・を出す。*/ #include <stdio.h> int main(void) { int x[5],i,j,w,x,y,z,sum; printf("5つの実数の平均、最大値、最小値を求めます\n"); sum = 0; for(i=0; i<5; i++){ printf("値%d:",i+1); scanf("%d",&x[i]); sum += x[i]; } for(y=0; y<5; y++){ for(j=0; j<4; j++){ w=j+1; if(x[j] < x[w]){ z = x[i]; x[i] = x[w]; x[w] = z; } } } printf("平均値:%f\n最大値:%d\n最小値:%d\n", (double)sum/5, x[0], x[4]); return 0; } Microsoft Visual C++ 2008 Express Edition でコンパイルをしようとしたのですが、 「error C2040: 'x' : 'int' は 'int [5]' と間接操作のレベルが異なります。」 と出てできませんでした^^; 何度も見直したのですが、どうしても間違っている場所がわかりません^^; どこがいけないのでしょうか^^;

  • ゲームなどのプログラムを作るために

    こんにちは。 プログラミング初心者です。 簡単なゲームやツールなどの実行ファイル(exeファイル?)を 色々と作ってみたく、そのためC言語を勉強することを考えています。 本屋などでそれに適してそうな書籍を探してみると、 C言語の入門書などと書かれた同じような本がたくさんあり、 全くの素人なので、本の題名や中身をパラパラと見ただけでは、 どれが一番実践に敵しているのか全く分かりませんでした。 一冊や二冊本を買って勉強しただけで、プログラムを作り出すのは難しいですか? 知識などは最小限で良いです。とにかく簡単なプログラムを自力で色々と作れるようになりたいです。 もし、こんな自分におすすめの本などあれば教えて下さい。

  • cl.exeを呼び出して実行する方法について

    C言語初心者です。基本的な質問で申し訳ございません。 自作コンパイルコマンドのためのコーディング内容を考えてますが、 cl.exeを呼び出して実行する方法がわかりません。 自作コンパイルコマンドで処理したい内容としては、 ・コマンド実行時の引数より、以下の指定を可能にしたいと思います。 - 出力ファイル名を指定するためのオプション名(例: -o) - 出力ファイル名 - ソースファイル名を指定するためのオプション名(例: -f) - ソースファイル名 - ソースの中で定義されているサービス(関数名)を指定するための オプション名(例: -s) - ソースの中で定義されているサービス(関数名) コンパイルコマンド実行時にcl.exeを内部的に実行したいと考えておりますが、cl.exeを呼び出して実行するための方法がわかりません。

  • ゲームなどのプログラムを作るために

    こんにちは。 プログラミング初心者です。 簡単なゲームやツールなどの実行ファイル(exeファイル?)を 色々と作ってみたく、そのためC言語を勉強することを考えています。 本屋などでそれに適してそうな書籍を探してみると、 C言語の入門書などと書かれた同じような本がたくさんあり、 全くの素人なので、本の題名や中身をパラパラと見ただけでは、 どれが一番実践に敵しているのか全く分かりませんでした。 一冊や二冊本を買って勉強しただけで、プログラムを作り出すのは難しいですか? 知識などは最小限で良いです。とにかく簡単なプログラムを自力で色々と作れるようになりたいです。 もし、こんな自分におすすめの本などあれば教えて下さい。

  • よく分からない関数?がある

    プログラミングが良く分かっていないため、このプログラムを読みきる事ができませんでした。 #include <stdio.h> int (*get_sign)(); int iget_sign(int *a); int dget_sign(double *a); main(){ int sgn, idt=5; //intを2つ作成。idtは5 double fdt = -3.234; //ダブル型のfidを作成、数値は-3.234 get_sign = iget_sign; //不明:get_sigin sgn = get_sign(&idt); //get_siginにidtの数値を渡してsgnにいれてる printf("*date:%d sgn:%d\n",idt ,sgn); get_sign = dget_sign; sgn = get_sign(&fdt); printf("*data:%lf sgn:%d\n", fdt, sgn); } int iget_sign(int *a){ if(*a == 0) return 0; else if(*a > 0) return 1; else return -1; } int dget_sign(double *a){ if(*a == 0) return 0; else if(*a > 0.0) return 1; else return -1; } 数値が0なら0を、プラスなら1をマイナスなら-1を返すプログラムだと言うことは分かります。 しかし、2行目の「int (*get_sign)();」や10行目の「get_sign = iget_sign; //不明:get_sigin」が良く分かりません。 ぜひアドバイスをお願いします。

  • C言語。どうしてコンパイルできません^^;

    最近プログラミングの勉強をはじめました。 C言語を勉強しています。 /*入力した値の、平均値・最大値・最小値・を出す。*/ #include <stdio.h> int main(void) { int x[5],i,j,w,x,y,z,sum; printf("5つの実数の平均、最大値、最小値を求めます\n"); sum = 0; for(i=0; i<5; i++){ printf("値%d:",i+1); scanf("%d",&x[i]); sum += x[i]; } for(y=0; y<5; y++){ for(j=0; j<4; j++){ w=j+1; if(x[j] < x[w]){ z = x[i]; x[i] = x[w]; x[w] = z; } } } printf("平均値:%f\n最大値:%d\n最小値:%d\n", (double)sum/5, x[0], x[4]); return 0; } Microsoft Visual C++ 2008 Express Edition でコンパイルをしようとしたのですが、 「error C2040: 'x' : 'int' は 'int [5]' と間接操作のレベルが異なります。」 と出てできませんでした^^; 何度も見直したのですが、どうしても間違っている場所がわかりません^^; どこがいけないのでしょうか^^;