C・C++・C#
- C++開発アプリとDLLとで同じ領域のデータを共有するには
お世話になっています。 ただいまC++でアプリ開発をしていますが、C++で作成したアプリと、DLLとで同じ領域のデータを共有して使いたいと思っています。 C++で外部で宣言した変数(構造体)のデータをDLLで参照して、内容を変更、C++アプリで変更した内容を参照して処理すると言う具合です。 DLLの方は既に作成済みで、引数としてC++アプリのデータを渡すことが出来ないので、どうにかしてC++で宣言した変数を参照したいのですが。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- riverman2005
- 回答数3
- C言語でチャットプログラミングを・・・
C言語(unix環境)でチャットプログラミングを作りたいのですが、まずは、TCP/IPによるマルチクライアントで簡単なメッセージのやりとりができるプログラムを練習として作りたいと考えています。 そこでサーバにクライアントからメッセージが届いた時点で全クライアントにメッセージを送信(write)し、逐次更新されるようにしたいのですが、クライアント側で常にread関数を呼び出すのは非常に不格好だし、メッセージを入力するといった他の処理ができなくなると思うのです。 何か方法はありますでしょうか? なにぶんネットワークプログラミングは始めたばかりですので初心者向けの解説をお願いします。
- ベストアンサー
- C・C++・C#
- fantagrape
- 回答数3
- リスト構造がうまく動きません!!
C言語で以下のようなプログラムを作りました。 「main関数内で下記のデ-タを構造体に格納し、キーボードから入力された名前と該当する学生の身長と年齢を画面に表示するプログラムを作成せよ。」というものです。 このプログラムはコンパイルは通るのですが、2人目以降のデータを表示させようとしても表示してくれません。。。どうもリスト構造のfor文がうまくループしていないみたいなんですが原因が分かりません。どなたか原因の分かる方アドバイスをお願いしますm(_ _)m #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct data{ char name[20]; int height; int age; struct data *next; }person; person *newperson(void); int main(void){ char namae[20],s[20]; int toshi,shinchou,i; person *head; person *list; person *nlist; person *LIST; head = newperson(); nlist = head; printf("データを入れてください。\n"); for(i=0;i<=4;i++){ scanf("%s",namae); scanf("%d",&shinchou); scanf("%d",&toshi); list = newperson(); strcpy(list ->name,namae); list -> height = shinchou; list -> age = toshi; nlist -> next = list; nlist = list; } printf("知りたい人の名前は?\n"); scanf("%s",s); for(LIST = head->next;LIST ->next != NULL;LIST = LIST->next){ if(strcoll(s,LIST ->name)==0){ printf("%s\t%d\t%d\n",LIST->name,LIST->height,LIST->age); break; } printf("%s\n",LIST->name); printf("%s\n",LIST->next->name); } return(0); } person *newperson(){ person *dummy; dummy = (person*)malloc(sizeof(person)); dummy -> next = NULL; return(dummy); }
- 音楽を流しながら処理を進めるには?
WindowsでC++を書いています。 ただ音楽を流すだけなら PlaySoundでいけると思うんですけど、 音楽をループして他の処理を進めていくにはどうしたらいいのでしょうか。 どなたか教えてください><
- 探索アルゴリズム
テキストファイルを読み込んで、該当する文字列を含む行を表示するというプログラムを作りたいのです。ファイルを読み込むことはできるのですが、該当する文字列を含む行を表示するやり方がわかりません。どなたか助けてもらえないでしょうか? 一応私が作ってみたプログラムはこんな感じになったんですけど・・・ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *fp; char ch; if( argc != 3) { printf(" 使用法 : <プログラム名> <ファイル名> <文字> \n"); return -1; } if((fp = fopen(argv[1],"r")) == NULL) { printf("ファイルを開くことができません\n"); return -1; } while(( ch = fgetc(fp)) != EOF) if(ch == *argv[2]) { printf("%cが見つかりました\n",ch); break; } fclose(fp); return 0; }
- 生のパケットデータを取得
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html#pktcapture ここに書かれているように、 「トランスポートデータインターフェース(TDI)かネットワークデバイスインタフェース仕様(NDIS)層と話をしなければなりません」をしたいのですが、参考になる書籍やサイトをご存知の方、ご教授下さい。 最終的にしたいのはPPPoEクライアントを作るか、コマンド操作できるPPPoEクライアントを自前のプログラムから実行したいです。 なにとぞ宜しくお願い致します。
- ベストアンサー
- C・C++・C#
- mirror-name
- 回答数2
- 「Get! Visual Studio 2005」キャンペーン のダウンロード先
「Visual Studio .NET theSpoke Premium 2003 を購入し、メンバシップ登録したユーザは、 キャンペーン期間中、いち早く「Visual Studio 2005 Professional」を追加費用なしでダウンロードすることができるそうですけど、いったいどこからダウンロードすればいいのですか?誰か知ってる人おしえてください。
- PGM形式の画像。。。
LinuxでC言語を用いて画像処理を行いました。(pgm形式です) 新しく作ったpgm形式の画像をwindowsで開こうとしたら開けなくて困っています><!!! どなたかLinuxで作ったpgm形式の画像をwindowsで開く方法をご存知の方がいらっしゃいましたらよろしくご教授願います。
- 締切済み
- C・C++・C#
- katayakise
- 回答数2
- MSDNライブラリのダウンロード
テキスト編集ツールでWin32 APIを使ったプログラミングをしているのですが、そのときにいつもMSDN Libraryで関数を毎回調べながら作業を行っています。 なのでネットに繋げない環境ではMSDN Libraryに接続できなく、作業ができません。(けっこうそういう環境でPC触ることも多いです) ちょっと見てみたんですけど、一括ダウンロードというのはMSDN Libraryでは見つけれませんでした(情報量が多すぎてどうやって探せばいいのかわからないというのが本音です)。 MSDN Libraryの情報の一括ダウンロードなどは提供されていないのでしょうか? また、そうだとした場合、オフラインで作業をする手段はありますか?あったら教えてください。
- C言語の参考書
「基礎的な知識があれば思いつくかもしれないけど、ちょっと頭をひねらないと(ちょっとした応用力がないと)思いつかないかもしれない」という程度のことを手助けしてくれるような、プログラムのセンスを磨けるような本はないでしょうか? というのは、自分の教科書ではfor文の説明で「i++」までしか書かれてなかったんですが、学校の課題で (1)数文字の文字列(アルファベット)をまるごと逆の順序で表示せよ。 というものが出題され、「i- -」を思いつくことができなければ解けませんでした。C言語の勉強が不安です。説明が詳しい本でもいいので、良書をご存知の方がいればお教えください。ちなみに「猫でもわかる…」とかいうシリーズは、今自分が使っている教科書ほどの内容ではなかったので、それ以外でお教えください。 よろしくお願いいたします。
- pingの結果を取得する方法
任意のホストにpingをうって、 返ってくるかこないかを考慮したプログラムを作りたいのですが、 こういうときにOSに既にあるpingを利用して結果を取得するということはできますか? それともpingの機能を自分で実装しなければなりませんか? 環境:FreeBSD 5.4 言語:C よろしくお願いします。
- 文章中から特定の文字列を抜き出すプログラムについて C言語
log.txtの文章からIPを抜き出しip.txtに書き込むというものです。log.txtの文章は基本的にfrom IP:port の順です。しかし文章中にfromがないとip.txtで空欄になってしまいます。 例192.168.1.100 192.168.1.110 理想はfromがない行はなにも追加せず次に移りたいのですがどうすればいいでしょうか? 例192.168.1.120 192.168.1.130 192.168.1.140 void addLine(const char*,FILE*); char *getFromIP(const char*,char*); int main() { FILE *pFileA = fopen("log.txt","rt"); char buff[256]; if(pFileA){ FILE *pFileB = fopen("ip.txt","wt"); if(pFileB){ for(;fgets(buff,256,pFileA) != NULL;){ char buff2[32] = {'\0'}; addLine(getFromIP(buff,buff2),pFileB); } fclose(pFileB); } fclose(pFileA); } return 0; } char *getFromIP(const char *line, char *buff) { char *src, *dst; src = strstr(line, "from"); if(src==NULL) { return buff; } src += 4; dst = buff; while(1) { if(isspace(*src)) { src++; continue; } else break; } while(1) { *dst = *src; if(*dst == ':') { *dst = '\0'; break; } if(*dst == '\0') { break; } dst++; src++; } return buff; } void addLine(const char *str,FILE *pFile){ char buff[1024]; sprintf(buff,"%s\n",str); fputs(buff,pFile); }
- コマンドプロンプトを使ったコンパイル
学校の授業でプログラミングを勉強し始めたばかりの右も左もわからぬ初心者であるということを前提に、質問させてください。 作った.cppファイルをコマンドプロンプトで bcc32 ファイル名 としてコンパイルしたいのですが、何故か出来ません。 「'bcc32' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されてしまいます。 どうしたらコンパイルすることが出来るでしょうか、どなたか親切な方、教えてください。
- ベストアンサー
- C・C++・C#
- orientalplanet
- 回答数2
- VisualStudio .Net 2003 ヘルプについて
VisualStudio .Net 2003 OSはWinXp です。 F1キーヘルプでAPIなどを調べようとすると英語ヘルプが優先して表示されてしまします。 日本語ヘルプをはじめに表示するにはどうしたらいいのでしょうか? ちなみにC言語です。
- 文字コードによる表記
非常に初心者的な質問なんですが、 文字コードのS-JISで「、」を表記する場合、 「0x8140」と表記するのが正しいのでしょうか? xの部分は区数を入れるのか、そもそも0xの部分は必要なのか 調べてもよくわかりませんでした。 どうかお願いします。
- ベストアンサー
- C・C++・C#
- gocho_kusu
- 回答数4
- C言語 この記述のどこが間違っているのでしょうか?
最大10文字の文字列入力を受け付け、 10回入力するか、「OK」が入力された時に 文字列を出力するプログラムを作ろうと思い、 その中で、1回目に『OK』が入力された時には、エラーメッセージを表示して終了するようにしたいのですが、 以下を入力したところ、うまく動作しませんでした。(見づらいのはご容赦ください) 制御文と配列を使って動作させるには、どう修正するべきでしょうか。 初心者ですが、ご教授お願い致します。 #include <stdio.h> #define MAX_INP 10 /* 入力最大回数 */ #define MAX_LGTH 5 /* 入力可能最大文字数 */ int main(void) { char str[MAX_INP][MAX_LGTH]; int cnt; /* 入力用カウンタ */ printf("\n"); for(cnt = 0 ; cnt < MAX_INP ; cnt++) /* 入力ループ */ { printf("Input String. -> "); /* 文字列入力メッセージ */ scanf("%s",&str[cnt][0]); /* 文字列入力 */ if(str[cnt][0]=='O' && str[cnt][1]=='K' && str[cnt][2]=='\0') { /* OKと入力された場合 */ break; /* ループから抜ける */ } if(cnt == 0) /*「OK」入力が1回目の場合 */ { printf("Error."); /* エラーメッセージ */ return 0; } } printf("\n"); for(cnt = 0 ; cnt < MAX_INPUT ; cnt++) /* 出力ループ */ { printf("%s\n",&str[cnt][0]); /* 文字列出力 */ } printf("\n"); return 0; } 【動作結果1】 Input string. -> abc Error. > 【動作結果2】 Input string. -> OK OK Uウ@ @ ■p 『 『 >
- このプログラムのアルゴリズムを教えていただけませんか?
ファイルlog.txtの文章中からIPアドレスを抜き出し、ip.txtに書き込むというプログラムです。文章は 日付 http attempt from xxxx.xxxx.xxxx.xxxx:ポート番号とう具合に並んでいます。 /* ・・・ from IP:portなフォーマットが前提*/ より下でIPを検出しているとおもうのですが、具体的にどういう手順で検出しているのかわかりません。 どうか宜しくお願いします。 #include <stdio.h> #include <string.h> void addLine(const char*,FILE*); char* getFromIP(const char*,char*); int main() { FILE* pFileA = fopen("log.txt","rt"); char buff[256]; if(pFileA){ FILE* pFileB = fopen("ip.txt","wt"); if(pFileB){ for(;fgets(buff,256,pFileA) != NULL;){ char buff2[32] = {'\0'}; addLine(getFromIP(buff,buff2),pFileB); } fclose(pFileB); } fclose(pFileA); } return 0; } /* ・・・ from IP:portなフォーマットが前提*/ char* getFromIP(const char* line,char* buff){ const size_t length = strlen(line); size_t top,back = length-1,i,k; for(back = length-1;line[back] != ':';--back); for(i=0,top = back - 1;i<3;++i){ for(;line[top] != '.';--top); } for(;line[top-1] != ' ';--top); for(i=top,k=0;i<back;buff[k++] = line[i++]); return buff; } void addLine(const char* str,FILE* pFile){ char buff[1024]; sprintf(buff,"%s\n",str); fputs(buff,pFile); }