トップページ⇒tech
43コメント12KB

【初心者歓迎】C/C++室【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C/C++について、質問、雑談するスレ。
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。

【ラウンジ】質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【関連スレ】
C言語なら俺に聞け! Part 62
http://pc2.2ch.net/test/read.cgi/tech/1058754682/l50

C++相談室 part21
http://pc2.2ch.net/test/read.cgi/tech/1057580107/l50

<`Д´>C/C++の宿題は私にやらせるニダ!Ver11
http://pc2.2ch.net/test/read.cgi/tech/1058283913/l50

★初心者にVisual C++を教えるスレ★ Part7
http://pc2.2ch.net/test/read.cgi/tech/1056280510/l50

C++Builder相談室 Part6
http://pc2.2ch.net/test/read.cgi/tech/1054280736/l50

GCCについて part2
http://pc2.2ch.net/test/read.cgi/tech/1046179115/l50

Turbo C++ 5.0 プログラミング
http://pc2.2ch.net/test/read.cgi/tech/1030878794/l50
0002デフォルトの名無しさんNGNG
このスレいらないYO!!
0003デフォルトの名無しさんNGNG
2gets
0004デフォルトの名無しさんNGNG
C言語でMIDIシーケンサーをつくりたいんだけど、どうすればいいの?
環境はWindows2000 VisualC++6.0だよ。
0005デフォルトの名無しさんNGNG
このスレの存在意義は何?
0006デフォルトの名無しさんNGNG
>>4
よくわかんない。良さそうなのでリンクなら
http://www.yamaha.co.jp/product/syndtm/read/xgworks4/whatsq.html
http://www.vector.co.jp/magazine/softnews/970910/n709105.html
http://www.vector.co.jp/magazine/softnews/980528/n9805285.html
http://subsite.icu.ac.jp/cla/miyazaki/ongakuright.htm
本なら「Windowsサウンドプログラミング」がよさげ。
0007デフォルトの名無しさんNGNG
>>5
C言語なら俺に聞け、C/C++の宿題やらせて等で、
文字色を変える、○の移動、星が上から落ちてくる、テトリスの作り方
等、質問する人が多かったので。
0008デフォルトの名無しさんNGNG
>>7
要するに重複だな
0009デフォルトの名無しさんNGNG
テンプレートについて相談に乗って下さい。

template< typename T > class AAAA
{
  AAAA()
  {
    処理
  }

  略
};

というコードはコンパイルできるのですが、
ヘッダと.cppファイルに分けて

template< typename T > class AAAA
{
  AAAA();

  略
};

別ファイルで

#include "ヘッダ名"

// コンストラクタ
AAAA:AAAA()
{

}
0010デフォルトの名無しさんNGNG
とすると「<が必要です」といったエラーになります。
ネットや本を読んでみましたが、ヘッダに実装を書く、
つまり前者の書き方ばかりで解決できませんでした。
どうすれば正しく書けるのかご指導お願いします。

コンストラクタを

template< typename T >AAAA<T>::AAAA()
{
}

とするとコンパイルは通りますが、リンクエラーになり、
プロジェクトを見てみると、ソースファイルのコード量が0、
つまり何も書いていないかのようです。
0011デフォルトの名無しさんNGNG
#include "AAAA.h"
#include "AAAA.cpp"

int main()
{
  AAAA<int> aaaa;
 
  return 0;
}
0012デフォルトの名無しさんNGNG
>>670
#include <stdio.h>
#include <stdlib.h>
#define Y_SIZE 11
#define X_SIZE 19
int main(void){
  int a,b,c,d,e,f,y,x,g0,g1;char str[BUFSIZ];int gurafu[2][X_SIZE*2+1]={0};
  printf("ax+by+c>0とdx+ey+f>0の2つの式のa,b,c,d,e,fを入力してください\n");
  if(fgets(str,sizeof(str),stdin)==NULL) exit(1);
  if(sscanf(str,"%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f)!=6) exit(1);
  for(x=-X_SIZE;x<=X_SIZE;x++)
  {
    gurafu[0][x+X_SIZE]=(-a*x-c)/b;//(((-a*x-c)/b*2)+1)/2;
    gurafu[1][x+X_SIZE]=(-d*x-f)/e;//(((-d*x-f)/e*2)+1)/2;
  }
  for(y=Y_SIZE;y>=-Y_SIZE;y--,puts(""))
    for(x=-X_SIZE;x<=X_SIZE;x++)
    {
      g0=gurafu[0][x+X_SIZE];
      g1=gurafu[1][x+X_SIZE];
      if(y==g0||y==g1) printf("*");
      else if(y==0&&x==0) printf("╋");
      else if(y==0) printf("━");
      else if(x==0) printf("┃");
      else if(g0>0&&g1>0) printf("%c%c",0x14,0x14);
      else printf(" ");
    }
  return 0;}
0013デフォルトの名無しさんNGNG
>>12
場所間違えてる(^^;。
0014山崎 渉NGNG
(^^)
0015独習Cの表記なんですが。NGNG
gets()を使ってプログラムを組んで、
コンパイルすると
warning: this program uses gets(), which is unsafe.
と出たんです。
なぜ不安定なのですか? 
そしてよりよい、つまりは安定したgets()にかわるものって
あるのでしょうか?
0016デフォルトの名無しさんNGNG
>>15
不安定じゃない。安全でないだけ。
0017デフォルトの名無しさんNGNG
fgets使え。
0018デフォルトの名無しさんNGNG
>>15
fgets()を使え, gets()はサイズ指定ができない.
001918NGNG
>>15
ついでに言うとCのライブラリは危険な関数が一杯ある.
簡素化されている関数は勉強につかうのはいいが, 実践では使わないほうがいい.
gets()然り, strcat()もサイズが指定できない.

ここで教えられなくてもWebで探ればこういうのは書いてある.
0020デフォルトの名無しさんNGNG
バッファオーバーフローをおこさずに
入力するための汎用的な方法が無いのがCの欠点。
0021デフォルトの名無しさんNGNG
はげどう!
002215NGNG
ありがとうございました。
次からはしらべてみることにします…。
0023デフォルトの名無しさんNGNG
意外に環境依存してないね
0024デフォルトの名無しさんNGNG
あれれ〜?
0025イベントシンクNGNG
IUnknownをIConnectionPointでAdviseした後、
EventSinkでInvokeしたいのに、できないYo!
おしえれ〜
0026デフォルトの名無しさんNGNG
>>25
環境依存してもいいからせめて何の環境か書いてくれ。
0027イベントシンクNGNG
>>26
環境はVC++6.0 IE_5.5ライブラリを使ってます。
おねがいしますっ!
0028デフォルトの名無しさんNGNG
へなちょこな質問ですが、
参考書のサンプルで以下のようなコードをよく見かけるんですが、
これってメモリリークにはならないのでしょうか?
newしてないので、delete する必要ないのでしょうか?

int main()
{
int *p;
/* delete p しなくても良い? */
/* スコープ抜けたら自動解放?*/

return 0;
}

0029デフォルトの名無しさんNGNG
なりません。
そうです。
0030デフォルトの名無しさんNGNG
>>28
ポインタ、メモリ あたりを勉強しなはれ。
0031デフォルトの名無しさんNGNG
printfで%を表示させるにはどうすればいいのでしょう?
0032デフォルトの名無しさんNGNG
%%
0033デフォルトの名無しさんNGNG
>>28
メジャーリーグ級の馬鹿だな
003428NGNG
変数なんですね・・・
逝ってきます

   ||
 ∧||∧
(  ⌒ ヽ 
 ∪  ノ  
  ∪∪
0035デフォルトの名無しさんNGNG
C++でプログラムが動作してるプラットフォームの情報を取得したいのですがどうすればよいのでしょうか。
0036山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0037デフォルトの名無しさんNGNG
こういうコード書いて計算すると…

#include <stdio.h>
void main(){
float m1 = 29999 * 0.025;
float m2 = 29999 * 0.25;
printf("m1=%f\n",m1);
printf("m2=%f\n",m2);
};

m1=749.974976
m2=7499.750000

になってしまうんですけど、なんででつか?
VC++6です。
0038デフォルトの名無しさんNGNG
floatを使うなとあれほど言っただろ。

floatの精度を調べれば分かるが、10進換算で高々7桁程度しかない。
なので、m1はfloatでは誤差のある数値になってしまう。
0039デフォルトの名無しさんNGNG
あれれ〜?
0040デフォルトの名無しさんNGNG
OS:Win98、コンパイラは全てフリーのものを使うという環境で、
C言語によってDLLを作成しようと色々試してみたのですが、
あまり上手くいきませんでした。
良い方法知っている方いましたら教えていただければと思います。
0041デフォルトの名無しさんNGNG
Windows.h眺めていたのですが、なんで定数をenum使って宣言していないのでしょうか?
enumを使ってはいけないような暗黙の了承でもあるのでつか?
0042デフォルトの名無しさんNGNG
あひゃproc
0043デフォルトの名無しさんNGNG
>>41
超古いCコンパイラだとenumが通らないからじゃねーのか?
■ このスレッドは過去ログ倉庫に格納されています