アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語プログラムの不具合に悩んでいます。

◇以下抜粋ソース
static int a=0;
・・・
int 関数A(){ /*別ファイルで使用*/
・・・
  a=256;
・・・
}
int 関数B(){
int i;
・・・
for(i=0;i<a;i++){
if(for文を抜ける条件){break;}
}
if(i==a){ printf(エラー!);}
・・・
}
◇以上抜粋ソース

上記のソースより常にi=a=0になってしまうので常にエラーとなる気がするのですがいまいち確信が持てません。
というのも、このソースは他の人から頂いたもので、コマンドラインから実行すると何故か100パーセント正常動作するのです。
しかしブラウザを起動して、PHPファイルにアクセスし、PHPのEXEC関数から実行すると3回に1回ほどの割合で(エラー!)がでます。
3回に2回は正常動作します。

似たような不具合を御経験の方がおられれば何卒御教示ください。
よろしくお願いします。

A 回答 (1件)

ご提示のソースからでしたら


関数Aの a=256;が実行される前でしたら aの内容は0でしょう
関数Aが呼ばれる前に関数Bが呼ばれれば i==aが成立します

エラーになる原因の特定が必要でしょうね
この実行ファイルが コマンドライン引数や何処かのファイルデータなど外部要因によって動いているのであればそれらが PHPで実行した場合とコマンドプロンプトから実行した場合で同じなのかどうかとか
期待している実行順序で実行されているのか
といったことを 一つ一つ潰していくしかないと思います

ログを吐くようにプログラミングして どこまで期待通りなのか
エラーになる際はどこで 意図しない動作なのかを見比べて見ましょう
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

実は2端末間の通信や暗号処理、認証処理など複雑なことをおこなっています。
確かに、ひとつひとつ見ていくしかなさそうです。

お礼日時:2007/10/16 08:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!