[表示 : 全て 最新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/


477 名前:デフォルトの名無しさん [2005/08/31(水) 22:16:06 ]
>>476
違うよー
1?2?3:4:5
と書けるのは右結合だから。(結果は3)

>>471
結合規則と評価順序は関係ないよ。

478 名前:デフォルトの名無しさん [2005/08/31(水) 22:18:25 ]
つまり右結合の掛かる場所は、括弧で括ると
1?(2?3:4):5
こういうことね。

479 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 22:21:11 ]
>>478
し、知らなかった・・
これでもC言語暦10年なんだが。

480 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:21:11 ]
main(argc, argv)
int argc;
char *argv[];
{

↑↓

main ( int argc, char *argv )
{

どうちがうの??

481 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:35:22 ]
上 K&R
下 ANSI

上は古い書き方で、普通は下の書き方を使う。
意味上の差はない。

482 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:37:48 ]
と思ったが、よく見ると下のargvがchar*になってやがる。

それ以外は同じ。
あと、戻り値の型もちゃんと明示したほうが良い

483 名前:デフォルトの名無しさん mailto:sage [2005/08/31(水) 23:51:47 ]
cdeclなら別にどうでもいいよ

484 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:00:31 ]
int func(float a)
{
return sizeof(a);
}

int func(a)
float a;
{
return sizeof(a);
}
では違う結果を返すコンパイラもある。

485 名前:480 mailto:sage [2005/09/01(木) 00:37:29 ]
ありがとうございます。

したのargvに[]が無いのは転記漏れでした。申し訳ない。





486 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:38:47 ]
なんで?
ビット長が違う環境とか?

487 名前:デフォルトの名無しさん mailto:sage [2005/09/01(木) 00:44:35 ]
>484の後者はfloat aと書いてもdouble aと解釈されるのか。
流石にそこまで古いCは知らないなぁ。

488 名前:デフォルトの名無しさん [2005/10/02(日) 20:41:06 ]
以下の問題を配列を必ず使ってプログラミングしてください。

[課題2] 正整数を入力し、それをローマ数字で表示するプログラムを配列を使って作りなさい。
1000がM, 100がC, 10がX, 1がIであるので、たとえば、123と入力するとCXXIII、1365はMCCCXXXXXXIIIIIと出力できればよい。
<入力例>
Input: 3247

<出力結果>
MMMCCXXXXIIIIIII

お願いします。

489 名前:デフォルトの名無しさん [2005/10/02(日) 20:56:21 ]
初めて投稿します。
STLのiostreamヘッダを汎用テキストマッピングとして利用したいのです。
stringはtypedefで、std::basic_string<TCHAR>〜としたのですがが、
iostreamはどうすればいいんでしょ?

なお、MS-Visual C++ ver 6.0で実験しています。

<ソース>
#include <tchar.h>
#include <iostream>

int _tmain(void){

// この coutとwcoutを一つにまとめたい。
std::cout << _T("Hello C++ World!\n") << std::endl;

return 0;
}

識者の皆様、ご教授お願いしたいです。

490 名前:デフォルトの名無しさん [2005/10/02(日) 21:00:07 ]
関数化してください。

briefcase.yahoo.co.jp/light_blue_8671
問題はいってます

491 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 21:43:22 ]
>>489
coutとかは型ではないからtypedefできない。
だからこうするしかないと思う。cinやcerr、clogも同じ。
#ifdef UNICODE
#define tcout std::wcout
#else
#define tcout std::cout
#endif

492 名前:デフォルトの名無しさん [2005/10/02(日) 22:22:03 ]
>>491
ご返答ありがとうございます。

なるほど、
cin, cout, cerr, clogはIOストリームオブジェクトなので、
defineで置き換えるしかないですか・・・

ご指摘を参考にしてみます。

493 名前:デフォルトの名無しさん [2005/10/02(日) 22:57:40 ]
>>488(前半)

#include "ctype.h"
#include "string.h"
#include "stdlib.h"
#include "stdio.h"

// 文字
static char code[4][2]={"I","X","C","M"};

int main(void){
int i, j, max, len, dec[4];
char inpbuf[5];// 4桁 + NULL
char outbuf[37];// 9文字 x 4桁 + NULL

// 初期化
memset(outbuf, 0, sizeof(outbuf));
memset(inpbuf, 0, sizeof(outbuf));

// 入力
printf("input:");
scanf("%5s", inpbuf);



494 名前:デフォルトの名無しさん [2005/10/02(日) 22:59:11 ]
>>488(中)
// 入力チェック
len=strlen(inpbuf);
for (i=0; i<len; i++){
if (!isdigit(inpbuf[i])){
printf("数値を入力してください\n");
return -1;
}
}
i=atoi(inpbuf);
if (i>9999 || i<0){
printf("数値は0-9999までの範囲で入力してください。\n");
return -1;
}
_itoa(i, inpbuf, 10);
len=strlen(inpbuf);

// バッファを数値に変換して
max=len-1;
for (i=max; i >= 0; i--){
dec[i]=inpbuf[i]-48;
if (dec[i]!=0)
max=len-i-1;
}



495 名前:デフォルトの名無しさん [2005/10/02(日) 23:00:56 ]
>>488(後半)
// 文字列作成
for (i=0; i <= max; i++){
for (j=0; j < dec[i]; j++)
strcat(outbuf, &code[max-i][0]);

}

// 出力
printf("%s\n", outbuf);

return 0;
}

くどいので、部分部分は修正してね



496 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 00:27:12 ]
質問させてもらいます。
SDL_ttfでの表示の際にUnicode文字列が必要なのですが、
S-JISからUnicodeへの変換にはやっぱりICU使うしか無い
でしょうか?



497 名前:デフォルトの名無しさん mailto:age [2005/11/01(火) 00:27:50 ]
質問なのでageさせて貰います。

498 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 00:55:13 ]
いいえ

499 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 03:39:10 ]
ぽいんた〜がわかりまっせ〜ん

おしえてくださ〜い

500 名前:ハーピィ mailto:sage [2005/11/01(火) 05:56:56 ]
E・∇・ヨノシ <500ゲット♫

501 名前:496 mailto:sage [2005/11/01(火) 10:13:50 ]
変換するのは大げさなのでデータにUTF-8で埋め込むことにしますた。

502 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 18:29:34 ]
>>496
ちなみにマルチバイト文字(char型)にShift-JISが使われていれば、mbstowcsという標準関数が使えなくもない。

503 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:32:17 ]
文字コードについてなのですが・・

a b c d eなどはASCIIコードって事はわかってるのですが
"あ"とか"い"とかは何コードなのでしょうか

strcpy(str,"あ");

printf("0x%X\n",str[0]);
printf("0x%X\n",str[1]);

とか調べてみたのですが全然判らなくて・・

504 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:48:32 ]
> a b c d eなどはASCIIコードって事はわかってるのですが

ここで既に終わっている

505 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:52:52 ]
ぇー数値ASCIIの数値を当てはめて出力しても期待される文字が出力されましたが



506 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:55:18 ]
>>503
Windows系ならShift-JISでUnix系ならEUC-JP。ほかは知らん。
Cとしては文字コードは一定の基準さえ満たせば何でも良いということになっているから、
特定の文字コードに頼り切ったコードは書くな。

507 名前:デフォルトの名無しさん mailto:sage [2006/01/06(金) 16:57:36 ]
>>502
すみませんorz
ありがとうございました

508 名前:デフォルトの名無しさん [2006/01/08(日) 18:59:22 ]
演算についてなんですけど
C言語において被除数=0の時の計算っていうのはまずいですよね?

例えば
0/3
0%7
などです。

うちの処理系では例外処理が加えられて0を返すようになってるみたいなんですけど
どうでしょうか

509 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 19:44:30 ]
んなこたーない。
もし、本当に例外処理が行なわれているとしたら、その処理系は糞未満だ。

510 名前:デフォルトの名無しさん [2006/01/08(日) 19:58:49 ]
>>508
0以外を返すのは数学的にもアーキテクチャから見てもおかしい。

511 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 20:00:12 ]
0 で割る方じゃなくて、0 が割られる方なのな。

>C言語において被除数=0の時の計算っていうのはまずいですよね?
なんでまずいって思ったの?いずれも答え 0 で数学的にも正しい結果でしょ?
どっちかに負数が入る場合は C89 では処理系定義の部分は入るけど、それでも結果自体は
規定されるから例外処理なんてない。
(C99 では 0 方向に丸めるよう規定されてる)

「5.4 整数除算」を参照の事
ttp://seclan.dll.jp/c99d/c99d05.htm#dt19990607

512 名前:デフォルトの名無しさん mailto:sage [2006/01/08(日) 20:55:50 ]
>>509-511
すいません少しこんがらがってました
0が除数である場合の計算でしたorz


513 名前:デフォルトの名無しさん mailto:sage [2006/01/09(月) 21:38:36 ]
>512
手元に C99 の規格書しかないけど、
> 9899:1999 6.5.5/5
>The result of the / operator is the quotient from the division of the first operand by the
>second; the result of the % operator is the remainder. In both operations, if the value of
>the second operand is zero, the behavior is undefined.
ということで未定義動作だから何が起こっても規格準拠だね。

514 名前:デフォルトの名無しさん [2006/01/13(金) 09:35:53 ]
こんにちは。質問です。お願いします。
C言語のif文で、条件式の中でfloat型の変数は使えますか?
こういう処理なんですが・・・
float fA,fB;
:
:
if(fA != fB)
{
:
}
例えば、for文の条件式とかで浮動少数型の変数を用いるのが
明らかに変なのは分かります。では、if文は、どうなのですか?

515 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 09:56:57 ]
>>514
できるけど、やっぱり紙の上での計算と違って誤差が出るから

static float tol = 0.0001f;
float a,b;

if((a-b) < tol) {
/***/
}

とやるべきだろうね。



516 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 11:05:56 ]
>>515
if ( abs(a-b) < tol ) {
/***/
}
なのでは?tolの値は妥当などうかも疑義がありますが

517 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 11:24:44 ]
for(double d = 0.0; d < 100.0; d += 0.5)

誤差だけ気にしなければ別に変じゃないな

518 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 11:40:29 ]
変だよ

519 名前:デフォルトの名無しさん [2006/01/13(金) 15:27:00 ]
sin(x)のマクローリン展開から√2の近似を計算するプログラムを作成したいんですが、どなたかご指導ご鞭撻の程お願いします。
sin(π/4)を2倍するところまではわかるんですが、マクローリン展開がどうもよくわからないので

520 名前:514 [2006/01/13(金) 18:21:16 ]
早速の回答を有り難う御座います。
因みに、VC++を使っているのですが、前述の問題に関して
Debugモード、或いはReleaseの最適化を外すと
何ら問題が出ないのです・・・
コンパイラのバグなのか、誤差の問題なのか
悩むところです。。

521 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:41:40 ]
自分のソースが悪い、に一票

522 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 18:55:29 ]
>>520
浮動小数点数は同じ値でありながらビットイメージが違う場合も存在するから、
>516 の方法で丸めた方がいいよ。
tol の値は #include <float.h> して FLT_EPSILON 使えばいい。

523 名前:デフォルトの名無しさん mailto:sage [2006/01/13(金) 20:30:06 ]
見事にC言語のスレになっててワロタw

524 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:10:14 ]
質問です。
#include<stdio.h>
#include<string.h>

#define N 32

void sorting(char*,char*);

main(int argc,char *argv[]){
char read[N*N],Memory[N][N],CASL[N][N][N];
sorting(CASL,read);
}
void sorting(char *CASL,char *read){
int i=0,j=0,k=0,z=0,I,J;
while(1){
I=i*(N*N);J=j*N;
if(*(read+z) == '\0') break;
else if(*(read+z) == ' '){
*(CASL+I+J+k) = '\0';
j++;k=0;
}
else if(*(read+z) == '\n'){
*(CASL+I+J+k) = '\0';
i++;j=0;k=0;
}
else{
*(CASL+I+J+k) = *(read+z);
k++;
}z++;}}
上記のプログラムでコンパイルするとwarning: passing arg 1 of `sorting' from incompatible pointer type
のエラーメッセージがでてしまいます。関数間での受け渡しで発生しているエラーだと思うのですが、どこを直せばいいのでしょうか?教えてください。

525 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:50:26 ]
>>524
マルチうぜえ



526 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 11:50:43 ]
>>524
CASL の宣言か、sorting() の引数宣言 (プロトタイプ含む)

527 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 22:23:00 ]
floatが整数かどうかの判定ってどうします?

if(x - (int)x == 0.0f)

で良いの?
キャストに頼るのが変な気がするんですが・・・。

528 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:01:34 ]
> floatが整数かどうかの判定ってどうします?

移植可能な方法で、判定する方法はない。

529 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:09:40 ]
>>528
こら。modfがあるだろ。
ちなみにfloat版はmodff。

530 名前:デフォルトの名無しさん mailto:sage [2006/01/15(日) 23:36:58 ]
>>529
modf(...) == 0 とするのか?
>>527 とたいして変わらんぞ、それ。

浮動小数点に対して == 演算子を使う奴は、大抵バカ
であることがまたもや実証されたな...。

531 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 02:46:27 ]
>527だとintの範囲を超えたときに何が起こるかわからんからmodfの方がまし。
そもそも整数かどうかの判定が必要な値にfloatを使っていることがおかしい気がするが。

532 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 09:20:37 ]
>>531
整数というか、小数の位が存在するかどうかで処理を変更したかったので。
modfで誤差を考慮しとけば良さそうですね。

533 名前:デフォルトの名無しさん mailto:sage [2006/01/17(火) 17:17:00 ]
>>523
スレタイだけで >>1 を読まない間抜けが多いって事です。

534 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 12:41:38 ]
配列の初期化について質問です。

int test[4] = {10, 100, 50, 1};
などの様に初期化したいのですが、
宣言した後で、このように一気に初期化する方法は無いのでしょうか?

具体的には、配列をクラスのメンバに持っていて、
コンストラクタで初期化したいのですが、
test[0] = 10;
test[1] = 100;



などのように、一つずつ初期化していくしかないのでしょうか?

535 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 12:52:00 ]
>>534
それしかありません。



536 名前:534 mailto:sage [2006/01/24(火) 14:38:34 ]
コンストラクタでローカル変数
int l_test[4] = {10, 100, 50, 1};
を作って、それをメンバの配列にmemcpyすることで解決しました。

あまりキレイな解決策ではないですが、
実際は2次元配列で要素が多かったので、どうしても一気に初期化したかったのでした。

537 名前:デフォルトの名無しさん mailto:sage [2006/01/24(火) 22:06:31 ]
> コンストラクタでローカル変数
> int l_test[4] = {10, 100, 50, 1};
> を作って、

まあ、最近のマシンなら気にすることではないのだろうが、
static const をつけておいた方がちと早くなるかもし
れない。

538 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 06:19:38 ]
何故vectorかなにかのコンテナを使わないのだろう。

539 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 07:40:22 ]
>538
それはさすがにスレ違い。

540 名前:デフォルトの名無しさん mailto:sage [2006/01/25(水) 17:51:24 ]
このスレで「スレ違い」って言われてもな

541 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 16:02:03 ]
スレタイに半角の#を入れようとしたのが問題

542 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 22:59:12 ]
>>541
これってCすれじゃなかったのか!!!!

543 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 23:08:23 ]
気付いてない子がいたのか・・・

544 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:17:53 ]
for(;;);
for(;;)
といった文を見たんですがこういう文はどういう働きをするんでしょうか?

545 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:27:06 ]
ループ・ザ・インフィニット! ・・・とかって言うとスタンドっぽくね?



546 名前:デフォルトの名無しさん mailto:sage [2006/02/02(木) 23:41:02 ]
>>544
forの括弧の中の3つのそれぞれの部分は省略できる。
2つのセミコロンの間の継続条件を省略すると無限ループになる。

547 名前:デフォルトの名無しさん [2006/02/03(金) 16:06:33 ]
>>546
すいません、ちょっと言葉足らずでした。

for(初期条件;終了条件;加算);
for(初期条件;終了条件;加算){
文;
}

こんな感じの文だったのですが、
最初のfor文の最後に ; が入った形をみたことがなかったので、
この2個のfor文がどのように動くのかを教えてほしいです。

548 名前:デフォルトの名無しさん [2006/02/03(金) 16:16:08 ]
rr

549 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 16:21:58 ]
>>547
↓こう書いたら解る?
for(初期条件;終了条件;加算)
  ;

550 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 16:23:07 ]
>>549
何もしないんですね。orz
理解できました。ありがとうございます。

551 名前:デフォルトの名無しさん [2006/02/03(金) 21:35:03 ]
#include <stdio.h>
int main(){
int *pa[500],*pb[500],*pc[500],*pd[500],*pe[500],*pf[500];
int i;
for(i-0;i<500;i++){
*pa[i]=5;
*pb[i]=5;
*pc[i]=5;
*pd[i]=5;
*pe[i]=5;
*pf[i]=5;
printf("%d,%d,%d,%d,%d,%d\n",*pa[i],*pb[i],*pc[i],*pd[i],*pe[i],*pf[i]);
}
return 0;
}
このプログラムってかなりやばいよな;

552 名前:デフォルトの名無しさん mailto:sage [2006/02/03(金) 21:35:49 ]
>>551
マルチうざい

553 名前:デフォルトの名無しさん [2006/02/04(土) 16:45:57 ]
構造体についての質問です。

#include<stdio.h>
struct string{
char *a;};
struct string data[]={
"a","b","c","d",};

int main(){
struct string *p;
char *s;
int i;
scanf("%s",&s);
p=data;
for(i=0;i<=3;i++){
if(s==(p+i)->a){
printf("%s\n",(p+i)->a);}}
return 0;
}
以上をコンパイルして実行した場合、scanfで入力した値がa~dのどれかでも
if(s==(p+i)->a)が真と判断されないのですが、間違いについての教唆をお願いします。

554 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 16:57:35 ]
>>553
>間違いについての教唆をお願いします。

教え唆すのか?


555 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:13:29 ]
そそのかされてどうする俺…
普通に間違いについて教えてほしいです



556 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 17:23:21 ]
たとえば、scanf で "abc" という文字列を読み込んで、
それらの文字一つ一つ( 'a' とか 'b' とか 'c' とか '\0' とか・・・)は
メモリの何処に保管されるのさ?

今、値を記憶できる変数の領域は string 構造体のアドレスを保持する p と
char のアドレスを保持する s と
int の値を保持する i しかないぞ?


557 名前:582 mailto:sage [2006/02/04(土) 18:00:29 ]
>>553
よーし、パパそそのかしちゃうぞ。

よくコンパイル通ったな。 構造体のメンバが char へのポインタ1つだけと判っていれば、
構造体配列 = { char*その1, char*その2, ・・・ , char*そのn }
なんて初期化が許されるのか ・・・ 知らなかった (マジ
ここは、
struct string data[]={
{"a"}, {"b"}, {"c"}, {"d"}
};
じゃなきゃ い神埼だと オモテタ。

でも、バグの本質は、>>556 の指摘のとおり。
scanf() で、ポインタ変数にコンソール入力しようとしているが、おまえには特定の
char の場所を示すポインタ ( アドレス ) が判るのか? メモリの中身に詳しいヤツ
だな。

558 名前:デフォルトの名無しさん mailto:sage [2006/02/04(土) 18:23:12 ]
本当に唆しているだけだなお前ら。

559 名前:553 mailto:sage [2006/02/04(土) 19:25:32 ]
>>556-557
charで*でなく適当な長さの配列を宣言して
if()で照会するのは2つの配列[0]に格納した値…ってことですね。
どうみても俺の勉強不足です。本当にありがとうございました

560 名前:デフォルトの名無しさん [2006/02/13(月) 03:43:09 ]
関数を定義するときに
void xxx(int yyy)
int A;
char B;
{
〜〜〜
}
こんなふうに書かれたものを良く見かけるのですが
このときAとBは何か特別なものなんですか?

561 名前:デフォルトの名無しさん mailto:sage [2006/02/13(月) 08:39:53 ]
>>560
void xxx(int yyy)
{
...;
}
ならば、古いスタイルで
void xxx(yyy)
int yyy;
{
...;
}
となるがそのことだろうか。
それならばプロトタイプ宣言のなかった時代の名残だ。

562 名前:デフォルトの名無しさん mailto:sage [2006/02/27(月) 10:34:29 ]
Borland C Compilerのエラーメッセージについて詳しく解説している
『bcc32_messages』というファイルがあるのですが(中には数百のHTMLが
入っていて、エラーと警告1つ1つに細かい説明が書かれている)、どなたか
これの英語版がどこにあるかご存じないでしょうか?

563 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:47:15 ]
COMMAND getCommand(char *c)
{
       int i, j, k, l, len;
       char comtmp[128], fileNametmp[128], comExtmp[128];
       COMMAND command;

       len = strlen(c);
       for(i=0; i<len+1; i++){
             if(c[i] == '-'){
                     for(j=0; c[i]!='\0'; j++){
                            i++;
                            if(c[i] == '@'){
                                   comtmp[j] = '\0';
                                   for(k=0; c[i]!='\0'; k++){
                                          i++;
/*printf("\nc[%d] = %c\n", i, c[i]);*/
                                          if(c[i] == '>'){
/*printf("\n>>in\n");*/
                                                 for(l=0; c[i]!='\0'; l++){
                                                        i++;
                                                        comExtmp[l] = c[i];
printf("\nc[%d] = %c\n", i, c[i]);
                                                 }
                                          }

564 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:48:36 ]
                                          if(c[i] == '\0'){
                                                 comExtmp[k] = '\0';
                                                 command.com = malloc(sizeof(char)*(strlen(comtmp)+1));
                                                 command.fileName = malloc(sizeof(char)*(strlen(fileNametmp)+1));
                                                 command.comEx = malloc(sizeof(char)*(strlen(comExtmp)+1));
                                                 strcpy(command.com, comtmp);
                                                 strcpy(command.fileName, fileNametmp);
                                                 strcpy(command.comEx, comExtmp);

                                                 return command;
                                          }
                                          fileNametmp[k] = c[i];
                                   }
                            }else if(c[i]!='\0'){
                                   comtmp[j] = c[i];
                            }
                     }
              }else if(c[i]=='\0'){
                     break;
              }


565 名前:デフォルトの名無しさん mailto:sage [2006/04/21(金) 23:52:41 ]
       }

       command.com = NULL;
       command.fileName = NULL;
       command.comEx = NULL;

       return command;
}

質問です。
このプログラム、-xxxxxx@yyyyyy>zzzzzz  (x, y, z は不定)
という文字列から command.com = xxxxxx
            command.fileName = yyyyyy
            command.comEx = zzzzzzz
に文字列を分けて入れるプログラムです。
printfが変なところに3つあるのはデバッグのためなのですが、上から3つ目のprintfをコメントアウトするとバグが起こり、
コメントアウトしないでprintf出力するとバグが起こりません。なぜでしょうか?

-insert@123.bmp>rgb と入力した時、fileNameにstrlen()で文字列数を調べたところ、
3番目のprintf()をコメントアウトしなかった場合、7文字と正確に入っていて。
コメントアウトした場合、11文字とでます。
コンパイラーはbccの5.5で、windowsXPを使用しています。

Σ( ゜д゜)うわ
プログラム超見づらい。
すみません;;



566 名前:542 mailto:sage [2006/04/22(土) 00:08:46 ]
ほら、皆間違えるw


567 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 18:37:12 ]
実行ファイル(***.exe)の作成の仕方がわからないのですが…。

568 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 15:38:33 ]
>567
一行目に
#!/bin/sh
って書いて
chmod +x
してから、ファイル名に.exeをつけるだけだよ。


569 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 21:47:48 ]
今日はじめてc言語のテキストを買いました。
初心者です。
コンパイル時?に
インクルードファイル ’stdio.h’をおーぷんできない
とエラーメッセージが出てきました

テキスト読んでもわかりません
解決方法があれば教えてください

570 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 22:20:47 ]
>>569
きちんとインストールしたか?
特にBorland C++ならbcc32.cfgなど。

571 名前:デフォルトの名無しさん mailto:sage [2006/04/27(木) 22:41:25 ]
>>570
どもです
cfgファイルを作ったんですが
コンフィグレーションファイル中の オプションの間違い と
難しいですね

572 名前:デフォルトの名無しさん [2006/04/28(金) 07:22:00 ]
コンパイルするとstudio.hが見つからないと出るのですが、バグですか?


573 名前:デフォルトの名無しさん [2006/04/28(金) 07:29:26 ]
stdio.hだよ。studioじゃない。

574 名前:デフォルトの名無しさん [2006/04/28(金) 11:15:51 ]
stdioがスタンダードI/Oだって知らないのかな

575 名前:デフォルトの名無しさん [2006/04/28(金) 17:05:46 ]
Cmachineと言うフリーソフト持っている方いませんか?
公開終了してたので・・・orz
持ってる方うpお願いします…



576 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 17:08:37 ]
>>575
C のスレと間違うならまだしも、まるっきりスレ違い。
阿呆は帰れ。

577 名前:575 [2006/04/28(金) 17:19:26 ]
>>576
書き忘れましたが、C言語のソフトです・・・
あほですいません・・・orz






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

前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