[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 18:47 / Filesize : 239 KB / Number-of Response : 921
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C統合・質問スレッド



1 名前:デフォルトの名無しさん mailto:sage [03/11/09 15:37]
いろんなスレが乱立していますが、統合的なスレッドがないので立てました。
質問もOK

関連スレ
C#って死滅する理由がないよね! Part4
pc2.2ch.net/test/read.cgi/tech/1042464104/
C#最強伝説
pc2.2ch.net/test/read.cgi/tech/1061208152/
C#とJava、どっちをおぼえればいいの?
pc2.2ch.net/test/read.cgi/tech/1006715468/
C#Builder Professional 質問箱
pc2.2ch.net/test/read.cgi/tech/1062433418/

関連リンク
dir.yahoo.co.jp/Computers_and_Internet/Software/Programming_Tools/Programming_Languages/C_Sharp/


321 名前:デフォルトの名無しさん mailto:sage [05/02/09 23:57:32 ]
>>320
thx
SSEつかって高速化図ってみます、、

322 名前:デフォルトの名無しさん mailto:sage [05/02/11 00:36:27 ]
C言語のバージョン教えてと言われた。
どうやって知ればいいんだろうか。

323 名前:デフォルトの名無しさん mailto:sage [05/02/11 00:41:21 ]
sにcharを足すstrcatってないの?

324 名前:デフォルトの名無しさん mailto:sage [05/02/11 00:42:42 ]
>>322
seclan.dll.jp/c99d/c99d02.htm#dt19990412
の__STDC_VERSION__

325 名前:デフォルトの名無しさん mailto:sage [05/02/11 01:14:37 ]
>>323
ありませんよ。

Cで一般的に言われる文字列というものは、最後がヌル文字'\0'で終わることを前提
としています。提供されるシステム関数strcat()などもそうです。
一文字のcharはそういった関数で使用することはできません。

char dest[100];
char src1[] = "abc";
char src2 = 'x';
int len;

len = strlen(strcpy(dest, src1));
dest[len] = src2;
dest[len + 1] = '\0';

こんな感じですかね。もっとアクロバット的な方法もあるんでしょうが...。

326 名前:デフォルトの名無しさん mailto:sage [05/02/11 01:49:10 ]
int n = c;
strcat(s, &n);

327 名前:デフォルトの名無しさん mailto:sage [05/02/11 02:14:49 ]
>>326
関数内の自動変数の場合、
int n
の場合、cを代入した次のバイトがNULLである保証はありませんよ。

328 名前:デフォルトの名無しさん mailto:sage [05/02/11 02:16:47 ]
補足。
CPUのアーキテクチャによって異なります。
言語としてそういったことに依存すべきではないと言いたかったのです。

329 名前:デフォルトの名無しさん mailto:sage [05/02/11 02:50:54 ]
>>327
ん? cは1バイトだから他の3バイトは当然0になるでしょう。 しかしこれは
endianによっては右に詰まってだめだと思うので >>328は正しいと
思うけど。

ちなみにこんなのはどう?
sprintf(s, "%s%c", s, c);




330 名前:デフォルトの名無しさん mailto:sage [05/02/11 06:51:06 ]
>>329
未定義

>>326
char s2[] = {c, '\0'};
strcat(s, s2);でいいじゃん。

C99ならstrcat(s, (char []){c, '\0'});って書ける筈だけど。

331 名前:デフォルトの名無しさん mailto:sage [05/02/11 10:17:54 ]
私はこんな幹事かな。
sprintf(strchr(str, '\0'), "%c", ch);
或いはこう。
char * p = str + strlen(str);
p[0] = ch;
p[1] = '\0';

332 名前:デフォルトの名無しさん [05/02/27 16:56:10 ]
すみません、妙な質問で恐縮ですが、どなたか教えてください。

sprintf() の s ってどういう意味ですか?f は format の意味だと思うのですが。

333 名前:デフォルトの名無しさん mailto:sage [05/02/27 16:59:08 ]
stringじゃない?

334 名前:デフォルトの名無しさん mailto:sage [05/02/27 17:01:38 ]
sはsecond。fはfirst

335 名前:デフォルトの名無しさん mailto:sage [05/02/27 18:04:22 ]
string ですか。ありがとうございました。
scond ですか(ry

336 名前:デフォルトの名無しさん mailto:sage [05/02/28 12:51:53 ]
>>332
printf()「系」とかssanf()「系」とか言う言葉があるよ。
先頭の's'はstring、'f'は自分でオープンしたファイル、付かないものは対象がstdinか
stdout。結構系統立てられているんですよ。

337 名前:336 mailto:sage [05/02/28 12:53:07 ]
メンゴです。
一行目のssanf()はscanf()でした。

338 名前:デフォルトの名無しさん mailto:sage [05/02/28 14:16:48 ]
>>336
さらにva_listを引数に取るvprintf/vscanfも有る。当然fとsも有る。
vscanf系はC99で追加されたものだけど。

339 名前:デフォルトの名無しさん mailto:sage [05/02/28 18:51:54 ]
springfというのもある



340 名前:デフォルトの名無しさん mailto:sage [05/02/28 22:45:28 ]
さらに最新最強はsnprintf。 渡したchar *のサイズを2つ目の引数で指定でき、
そのサイズを超えて書かないことが保障されているのでやや安全。

341 名前:デフォルトの名無しさん mailto:sage [05/03/02 16:40:40 ]
アドレスに関する質問。
型は不明で、要素一つのサイズは分かってる場合。

次の要素にアクセスする方法を教えて下さい。
または次の要素へのアドレスを取得する方法。


342 名前:342 mailto:sage [05/03/02 16:42:50 ]
サイズがBYTEだってことに気づかなかった....。
解決しました。

343 名前:デフォルトの名無しさん mailto:sage [05/03/09 14:33:38 ]
POINT point[3] = { {0,0} , {1,0} , {0,1} };
っていう初期化はできるんですが

point[3] = { {0,0} , {1,0} , {0,1} }
という風に値を入れることが出来ません
配列全体に値を入れる方法は無いんですか?

344 名前:デフォルトの名無しさん mailto:sage [05/03/09 16:00:29 ]
>>343
配列に代入はできません。
精々コピー用の関数を用意するのが関の山です。
要素数が3で固定ならば、構造体にしてしまえば(直値ではありませんが)代入できなくもありません。


345 名前:デフォルトの名無しさん mailto:sage [05/03/09 16:10:27 ]
>344
関数でもつくってそれで入力するようにします
ありがとうございました。

346 名前:デフォルトの名無しさん mailto:sage [05/03/10 00:43:33 ]
Cって、こういうとこアフォだよなあ

347 名前:デフォルトの名無しさん mailto:sage [05/03/10 19:02:05 ]
やっぱりRubyがいいね

348 名前:デフォルトの名無しさん mailto:sage [05/03/13 17:13:30 ]
cでコンパイルする際に

windres: can't open `obj/EK-MAMEko/ui/mame32k.res' No such for directory
make: *** [obj/EK-MAMEko/ui/mame32.res] Error 1

こういうエラーが出て困ってるんだけど
これってどういう意味かわかる?

349 名前:デフォルトの名無しさん [05/03/13 17:14:00 ]
age



350 名前:デフォルトの名無しさん mailto:sage [05/03/13 18:48:41 ]
>>347
いや、Rubyは問題外。

351 名前:デフォルトの名無しさん mailto:sage [05/03/17 00:52:33 ]
変数を入れ替えるときに別の変数を用意せず、

X = X ^ Y, Y = X ^ Y, X = X ^ Y;

とするのがよくないのはなぜ?

352 名前:デフォルトの名無しさん mailto:sage [05/03/17 00:56:22 ]
>>351
数値以外には使えない
XとYが同じ変数を指していると上手くいかない

353 名前:351 mailto:sage [05/03/17 01:17:15 ]
>>352
なるほど。
これをプリプロッセスでやって構造体なんかを渡しちゃうとマズーだ。
アリガト。

354 名前:デフォルトの名無しさん mailto:sage [2005/03/22(火) 21:55:06 ]
new演算子で作ったオブジェクトをdeleteした後に
デストラクタでdeleteすると何か問題ありますか?

355 名前:デフォルトの名無しさん mailto:sage [2005/03/22(火) 23:09:33 ]
mallocで確保した領域をfreeで開放しますが、
システムはどのようにして、はじめに確保した領域を知ることができるのでしょうか。

356 名前:デフォルトの名無しさん mailto:sage [2005/03/23(水) 01:23:39 ]
>>354
deleteしたら、0を入れておけば大丈夫。

>>355
malloc()で戻されたポインタの指すメモリの直前辺りに管理情報を埋めておくのが一般的。

357 名前:デフォルトの名無しさん [2005/04/03(日) 14:07:55 ]
配列同士の数値の比較をしたいのですが、下記のようだとうまくいきません。
どのようにすればよいのでしょうか?
for(i=0;i<5;i++)
for(j=0; j<5; j++)
if(group[i] == group[j] && i != j) count[i]++;

358 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 15:10:03 ]
>>357
j = i

359 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 15:22:36 ]
>>357
配列の同じインデックスを持つ要素同士を比較したいのであれば、単純な(一重の)ループでいい。
つーか、>357では日本語の説明が足りんし、コードがおかしいし、何がしたいのか判らんのだが。



360 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 00:24:27 ]
すみません。初歩的な質問をさせていただきます。

char *func1(){
 return "a";
}

char *func2(){
 char *s = "a";
 return s;
}

こんな2つの関数があったとして、これらが関数の呼び出し元に返ってきた際に
戻り値のポインタが正しい場所を指し示すことはどこまで(いつまで)保障できるんでしょうか?
func1は保障できる、func2はできる、それとも両方できない/できる、どこまでなのか…等。
また、私の勉強不足のせいで、両者のメモリ上での違いがいまいちはっきりしてません。

一応どちらでも動作するにはするんですが、いつか不正な参照とかで
落ちちゃうんじゃないかと気になって怖くて夜も眠れません。

参考になるサイトを教えていただけるだけでも結構ですのでよろしくお願いします。

361 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 01:05:29 ]
規格ではどうか忘れたけど、たいがいいけるはず。
どうしても心配ならstatic const char ret_str[] = "a";とかすれば?
あとchar *じゃなくてconst char *を使え。

362 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 01:08:07 ]
>>360
定数(リテラル)の寿命はプログラムの開始から終了まで。
関数内で宣言されたauto変数の寿命は、関数の開始から終了まで。

char *func1(){
 return "a"; /* "a" を指すポインタを返している */
}
char *func2(){
 char *s = "a"; /* ポインタ s を "a" を指すポインタで初期化 */
 return s; /* ポインタ s の値、つまり "a" を指すポインタを返している */
}

つまり、どっちも同じ。
リテラルはいつでもどこからでも参照出来るので、戻り値を使ってても大丈夫。

363 名前:360 mailto:sage [2005/04/04(月) 02:05:28 ]
>>361-362
ありがとうございます!だいぶスッキリしました。
リテラルに関しては参照先が不正な値になるんじゃないかとかいう
心配は無用なわけですね。逆の場合(変数、関数のポインタ)は気をつけろと。

すみません。あとここからもう一段階お願いします。
実は言うと今、Unix系ソフトの移植作業をやってまして
こいつらと同等の動作をするものを作りました。

char *dirname(char *path);
char *basename(char *path);

basename()はパス名からディレクトリを除いた部分(ファイル名)を返せばいいので
引数のポインタをそのまま使い回してreturn path+pos;のようにして返してます。

dirname()の方は引数で与えられたパス名からファイル名を除いたものを返すものなので、
関数内でdir[MAX_PATH]のように宣言した配列に、引数の文字列からファイル名部分を
除いたものをstrncpyでコピーなどして、最後にdir(先頭アドレス)を戻り値にしてます。
(ちなみにさっきの質問は"."「カレントディレクトリ」を返す場合でした。)

長すぎるのでまとめると、
・basename()の戻り値は呼び出し先のローカル変数とは無関係である。
・dirname()の戻り値は呼び出し先のローカル変数に依存している。

この場合だと、dirで確保していたアドレスは戻り先で参照しても安全なのでしょうか?
ちゃんと動くし、自分でも大丈夫だと思ってたのに警告が出たので不安になりました。

やたら長くてすみません。何かこれより良い実装方法がもしあればご教授願います。

364 名前:360 mailto:sage [2005/04/04(月) 02:14:47 ]
何度もすみません。つまりさっき私が言ったdirname()の実装は

char *func2(){
 char *s = "a"; /* ポインタ s を "a" を指すポインタで初期化 */
 return s; /* ポインタ s の値、つまり "a" を指すポインタを返している */
}

この場合と同じと考えていいんでしょうか?ってことですね。
私の目には全く同じものに映るのですが、間違いありませんでしょうか。

365 名前:デフォルトの名無しさん [2005/04/04(月) 02:15:23 ]
floatがもてる最大値はどのように調べればよいのでしょうか?

366 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 02:30:48 ]
>>363-364
const char *func3(void){
const char s[] = "a";
return s; /* ローカルな配列 s へのポインタを返す */
}

const char *p;
p = func(); /* 0, func() の s へのポインタを受け取る */
printf("%p\n", p); /* 1, これは構わない */
printf("%s\n", p); /* 2, これは駄目 */

0 は何ら構わない。戻ってきたアドレスをコピーしているだけ。
1 も何ら構わない。コピーしたアドレスを表示しているだけ。

2 は駄目。アドレスの先を参照してしまっているから。
何故参照してはいけなかというと、アドレスの先にある func3() の s の寿命は、
func3() を抜けた時点で既に尽きてしまっているから。

func2(), func3() は全然違う関数。

367 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 02:35:17 ]
>>365
float.h にある FLT_MAX マクロで定義されてる。

#include <stdio.h>
#include <float.h>
int main(void)
{
 printf("%f\n", FLT_MAX);
 return 0;
}

368 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 02:50:42 ]
>364
ダメ。変数の寿命について学んでください。

1.関数の引数を変える。
void dirname(char *dest,int dest_size,const char *path)

2.静的に保持する。使用に若干注意が加わる
static char dir[]

3.動的に確保する。呼び出し側に解放義務が発生する
char *dir = malloc()

369 名前:デフォルトの名無しさん [2005/04/04(月) 03:05:49 ]
>>367
thx
limit.hしか知らなかった



370 名前:360 mailto:sage [2005/04/04(月) 03:13:01 ]
そのまま貼っちゃいます。今はこんな状態です。

char* dirname(char* path)
{
  int pos = strlen(path)-1;
  int lastPathSepFoundPos = -1;
  static dir[MAX_PATH]="";
  while(pos >= 0) {
    if (path[pos] == '/' || path[pos] == '\\') {
      lastPathSepFoundPos = pos;
      break;
    }
    else pos--;
  }
  if (lastPathSepFoundPos == -1) return "."; // current dir
  else{
    strncpy(dir,path,lastPathSepFoundPos);
    dir[lastPathSepFoundPos] = 0;
    return dir;
  }
}

static dir[MAX_PATH]="";をchar dir[MAX_PATH]にすると
→警告「ローカル変数またはテンポラリのアドレスを返します」
となってました。今考えてみれば当然ですよね。。

>>368
どうもです。ちょうど昨日、その2を回避策としてやってみてたとこでした。
その注意というのは関数へのアクセスが同時に起こるような場合でしょうか?

条件コンパイル(#ifdef-#endif)等が面倒になりそうですが、
1の方法が一番簡単そうなので、その方向でやってみることにします。

371 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 03:14:54 ]
↑static char dir[MAX_PATH]="";の間違いです。

372 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 12:12:39 ]
strrchr 使えば簡単にみえるな・・・

373 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 16:49:40 ]
すみません最近C++触ったばかしですみませんが

class auのコントラクタ関数
au(string s) : enr(s) {}について
文字列をsに代入し enrを生成する時にsを代入すると読めるのですが
なぜ au(string s) { enr(s); }とできないんですか?

個人的に関数内容 { }内 は動作命令のみの記述と解釈すれば
au(string s) { enr = s; }
はenr = s;という動作命令であるから適応であるが
{ enr(s); }・・・であるから不適と思ってしまうのですが・・

書いててよくわからなくなってきた・・
au (string s) : enr(s) {}について
なぜ : で区切るのかと enr(s)はなぜ{}内に記述してはいけないのかについて詳しくお願いします

374 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 17:09:15 ]
>>373
:の後は初期化。{}の中だとメンバ変数への代入になってしまう。

例えば、
class foo {
const int bar;
foo() : bar(0) {}
};
とした場合、この例のように初期化はできるが、
class foo {
const int bar;
foo() {bar = 0;}
};
このような代入はできない。

375 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 17:33:16 ]
>>374
全て解決できました。
どうもありがとです

376 名前:デフォルトの名無しさん mailto:sage [2005/04/19(火) 19:50:11 ]
共用体ってどういうときに使うんですか?
また利点とかあるんですか?

377 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 00:05:37 ]
すみません。教えてください。
下記のようなプログラムを書くと、結果に必ず0.0が混ざってしまい、困っています。
乱数を3つ表示させたいのですが、0.0を含まないようにするにはどうしたらよいのでしょうか?

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#define N 3
int main(void)
{ int i,j=0,check;
double data[N],dia[N],tmp;
srand((unsigned)time(NULL));
printf("\n乱数のつもり:\n");
for (i=1; i<=N; i++)
{data[i]=rand()%100+(double)rand()/32768.0;}
/* 並替えの計算 */
for (i = 1; i < N - 1; i++)
for (j = i + 1; j < N; j++)
if (data[j] < data[i]) /* <: 昇順, >: 降順 */
{ tmp = data[i];
data[i] = data[j];
data[j] = tmp;};
for (i = 0; i < N; i++)
printf("%.1f ", data[i]); /*並替えデータの表示*/
}

378 名前:デフォルトの名無しさん [2005/04/20(水) 00:47:24 ]
>>376

それくらい調べろよ。

379 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 01:25:42 ]
>>376
メモリの節約
同じメモリブロックを複数の型として解釈したい時



380 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 11:52:18 ]
>>377
取り敢えず落ち着け。
深呼吸でもした後、data[] の添え字の範囲が
0〜N-1 だと言うことを思い出せ。

381 名前:デフォルトの名無しさん mailto:sage [2005/04/20(水) 13:25:48 ]
>>376
通信などで、整数型や実数型をバイト列と相互変換したい場合、
ポートアクセスなどでビットフィールドとバイト列を相互変換したい場合などに使う。
メリットは、他の方法に較べて簡便に書けること。
デメリットとしてよく言われる非互換性については、元々汎用的でないコードを書く場合には無視できる。
#勿論、それ相応のコメントは必要。

382 名前:デフォルトの名無しさん [2005/04/23(土) 00:09:57 ]
C、C++ある程度覚えるまで、どのくらい掛かった?今から、勉強しようと思うのですが、C→C++→C#か、Javaって感じに逝こうかと思うのですが、C++から移行した人、する人は、C#か、Javaどっち盗ります?←煮たスレあるけどノリで…ゴメソ

383 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 00:19:39 ]
>>382
無意味なアンケートするな。

384 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 10:31:57 ]
無意味っていいよね。
まぁ答えてやんなよ。発想の無い、IT土方プログラマーの行く末までを……ハァー 


385 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 12:04:48 ]
なんでこう勉強する前にウダウダ人に聞くやつが多いんだろう

386 名前:デフォルトの名無しさん [2005/04/23(土) 12:20:20 ]
>何でこう勉強する前にウダウダ人にきく奴が、多いのだろう 
って、自分も聞いてるじゃんWWW プギャー、と云ってみたくなる。まあ、オイラは聞かなかった、お陰でプログラマーなんかになってしまった訳だが…ハァー

387 名前:デフォルトの名無しさん mailto:sage [2005/04/23(土) 12:23:43 ]
ageんなやボケがあああああ、と自分に云ってみるテst
すまんです

388 名前:デフォルトの名無しさん [2005/04/26(火) 11:13:11 ]
  ∧_∧
 ( ´∀`) < ぬるぽ

389 名前:デフォルトの名無しさん [2005/04/27(水) 10:54:11 ]
1+2+3+・・・+N を計算する関数を作成せよ。



390 名前:デフォルトの名無しさん mailto:sage [2005/04/27(水) 11:48:18 ]
>>389
int f(int N){return((1+N)*N/2);}

391 名前:デフォルトの名無しさん [2005/04/27(水) 11:57:21 ]
1/2/3/・・・/N を計算する関数を作成せよ。

392 名前:デフォルトの名無しさん mailto:sage [2005/04/27(水) 12:05:48 ]
>>391
int f(int N){return0;}

393 名前:デフォルトの名無しさん [2005/04/27(水) 12:45:24 ]
>>390
感動した
>>392
ワロタ

394 名前:デフォルトの名無しさん mailto:sage [2005/04/28(木) 04:36:53 ]
>>391
double f(int N){double x=1.0;if(N>1)while(N)x*=(double)N--;return 1.0/x;}

395 名前:394 mailto:sage [2005/04/28(木) 04:42:40 ]
あんま変わらんけど、こっちの方が良かったかな…?
double f(int N){double x;for(x=1.0;N>1;N--)x*=(double)N;return 1.0/x;}

396 名前:デフォルトの名無しさん [2005/05/04(水) 18:36:51 ]
ttp://ex10.2ch.net/test/read.cgi/news4vip/1115125763/18
↑exitするならfcloseもfreeもしなくていいんだけど
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ってあるんですが、そうなんですか?
ファイルディスクリプタはプログラム終了時に閉じられるとしても
メモリリークっすよねコレ

397 名前:デフォルトの名無しさん [2005/05/04(水) 19:00:23 ]
>>28
ガッ

398 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 19:58:54 ]
>>396
大丈夫。真っ当なOSならアプリケーション終了時にきちんと開放する。

399 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 20:06:09 ]
>真っ当なOSなら




400 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:08:18 ]
OSが真っ当かどうかに関わらず真っ当な規格合致処理系なら、
exit()を呼んでいなくてもmain()からreturnすればファイルは閉じられる。
main()でのreturnはexit()の呼び出しと等価とも書かれている。(他の関数からmain()を呼んだ場合は別だが)

しかしfree()の方にはそのような記述は見当たらない。
(free()を呼ばないで終了するとどうなるかということは書いていない)

401 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:14:15 ]
>>400
>(free()を呼ばないで終了するとどうなるかということは書いていない)

free() を読んで終了すればどうなるかということも書いていないけどな。


402 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:23:14 ]
またこの話題か
好きにすれ

403 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:31:48 ]
gotoを使うのは不味いのでしょうか?
どなたかおすえてください

404 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 22:57:09 ]
Cで質問です。
変数nの値が??のとき、filename??という名前のファイルを開きたい
という場合に、fopenの第1引数にはどのように記述すればよいでしょうか?
先にsprintfを使えばできるようですが
直接引数の部分に記述して何とかする方法がないかと思いまして。

405 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 23:19:00 ]
>>404
char *filename(int n) { static char buf[100]; sprintf(buf, "filename%d", n); return buf; }

fopen(filename(n), ... )



406 名前:デフォルトの名無しさん mailto:sage [2005/05/04(水) 23:26:43 ]
>>405
なるほど!その手がありましたか!
おめでとうございます!ありがとうございます!


(ノ´Д`)ノ 彡┻┻

407 名前:デフォルトの名無しさん mailto:sage [2005/05/05(木) 19:22:25 ]
次にこんなことをしてハマると見た。
rename( filename(1), filename(2) ); // filename.1 を filename.2 にバックアップ

408 名前:デフォルトの名無しさん mailto:sage [2005/05/05(木) 23:19:39 ]
>fopenの第1引数
そもそもパスとか編集しなくていいのか?

素直に
>先にsprintfを使え

409 名前:デフォルトの名無しさん mailto:sage [2005/05/05(木) 23:28:04 ]
そこでC++ですよ。
std::string filename(int n) {return "filename" + boost::lexcal_cast<std::string>(n);}



410 名前:デフォルトの名無しさん [2005/05/09(月) 09:50:14 ]
C言語をはじめたばかりであまりわからないのですが、
ビットシフトはなんの役に立つのでしょうか?

411 名前:デフォルトの名無しさん [2005/05/09(月) 09:51:19 ]
p6222ed.kyotac00.ap.so-net.ne.jp/

うはっwwwwwwwwwwwwwww

っうぇwwwwww
っうぇうぇwww
wおkwwwwうはっwww
おkwww

っwwwwww

うぇwww


412 名前:デフォルトの名無しさん [2005/05/09(月) 10:07:08 ]
ttp://EAOcf-526p83.ppp15.odn.ne.jp/
おkwwwwwwwwwwwwおkうぇおkwwwwww
うはっwwwwwwwwwwwwwwwwwwwwwwwwwwwww
うはっうはっwwwwwwwwwwwwwww
wwwwwwwwwwwwっっうぇうぇ
うはっ

413 名前:デフォルトの名無しさん [2005/05/09(月) 10:14:46 ]
pdf791d.tokynt01.ap.so-net.ne.jp/

wwwおkwwwwwwうぇwwwwwwwwwっうぇ

おkwwwっうぇうはっwwwwうぇwww

wっうぇうはっwwwwwwwwwwwwwwwwww

414 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 16:35:01 ]
>>410
ビットシフトしたいときに役に立つ

415 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 18:01:05 ]
あと、2進数の桁をずらしたいときにも役に立つね。

416 名前:デフォルトの名無しさん mailto:sage [2005/05/10(火) 18:29:55 ]
>>410
任意の上位Nビットを取り出したいとかその逆をしたいときとかに。
DWORD dw = 0x12345678;
WORD wHigh = dw >> 16; // 0x1234
WORD wLow = dw & 0xffff // 0x5678
DWORD dw2 = dw << 16 | wLow // 0x12345678


417 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 18:16:54 ]
<質問>
ピクチャポックに表示した画像をマウスドラッグで範囲選択します。
その選択範囲をマウスのドラッグ中、リアルタイムに枠線で囲みたいのですが
どういう処理が一般的でしょうか?

DrawLineで線を書いたり消したりとかは、おかしいですよね?

418 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 18:53:11 ]
>>417
>>1-10 を見ろ。
回答が欲しければ Windows 系のスレに行くんだな。

419 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 20:15:27 ]
XOR



420 名前:417 mailto:sage [2005/05/11(水) 23:15:27 ]
すまそん。
他で聞いてきます・・・。(・・`)

421 名前:417 mailto:sage [2005/05/12(木) 00:23:25 ]
>419
もしかして、私へのヒント?
そうだったら、ありがとうございます。

ビット反転させたらいいのかなー。
とりあえず、C#の過去ログ見てます。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<239KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef