C言語のコーディングの質問です。
以下のロジックを見てください。
=========================================
char [12] strA
double dblA
dblA = 1000
sprintf(strA , "%06.0f", dblA / 1000)
=========================================
上記のロジックを処理すると、結果が必ず
”-00001”となります。
他の行にも同じようなロジックを記述しているのですが
上記の現象があこるロジックの行の時のみ
発生します。
他の処理がメモリを潰しているのかと思い
いろいろ調査してみたのですが、それらしき
異常箇所は見受けれれません。また、コンパイラ
についても異常はありませんでした。
デバック実行で変数「strA」にセットされる
値をみるとaprintfの処理直後に"-00001"が
セットされるのは実証済です。
このような現象が発生することはあるのでしょうか?
原因、対応方法についてご教示お願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
Visual C++ 6.0
では何も表示されませんが・・・。
sprintfは文字数を返すのでは???
sprintf 関数は、buffer に格納した文字数を返します。この数には終端の NULL 文字は含まれません。
#include<stdio.h>
void main(void)
{
char strA[12] ;
double dblA;
dblA = 1000;
sprintf(strA , "%06.0f", dblA / 100);
}
No.2
- 回答日時:
実際に現象が起こっているソースが見たいです^^;
>他の行にも同じようなロジックを記述しているのですが・・・
同じ、ではなく、同じような、というところも気になります。
その差分が問題になっているんではないでしょうか?
同様の箇所全部で意図しない結果になっているわけではない以上、
原因はロジック自体にあるのだと考えたいところですが、
質問内容にあるものだけでは情報不足だと思われます。
No.1
- 回答日時:
提示されたコードはコンパイルエラーですね。
char strA[12];だと介錯して、
以下のコードを実行しました
/* WinXP Sp2 / VC++6.0(インデントは全角空白)*/
#include <stdio.h>
int main( int argc, char* argv[] )
{
char strA[12];
double dblA;
dblA = 1000;
sprintf(strA , "%06.0f", dblA / 1000);
printf( "%s\n", strA );
return 0;
}
私の環境で実行結果は
000001
Press any key to continue
となりました。
実行環境の問題でしょうかね。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 宇宙科学・天文学・天気 AIが答えた方程式 1 2023/02/20 00:12
- 発達障害・ダウン症・自閉症 私は幼い頃から周りの子と変わったところがあり社会人になってからも仕事が長続きせず上手くいかないことだ 3 2022/08/26 13:24
- Visual Basic(VBA) どのロジックでセルが変更されたか知りたい 1 2022/04/22 06:58
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- ドライブ・ストレージ HDDの代替処理保留中のセクタ数と回復不能セクタ数について 7 2023/06/06 13:15
- 日本語 「ロジックの主体の反転」を「ロジックの反転」と言うことは間違いでしょうか? 2 2022/05/19 07:16
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
間接操作のレベルとは
-
switch文で文字を比較すること...
-
C言語の入力した文字を反転させ...
-
TCHAR文字列?の特定部分の数字...
-
c++ 文字列を入力して、一文字...
-
javaでunsignedは使えないので...
-
c言語
-
コンパイルエラー invalid ope...
-
CStringをwchar_tに変換したい
-
C言語のfor文です。 繰り返しの...
-
構造体のアライメント調整
-
絶対パスからのファイル名の切...
-
int型からchar型への変換
-
2曲同時再生するにはどうした...
-
atoi( ) の反対をやりたい
-
c言語プログラミング実行時エラ...
-
pingの結果を取得する方法
-
プログラムの動作
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語の入力した文字を反転させ...
-
'const char *' 型は 'char *' ...
-
配列をnビットシフトする
-
str系関数を使わずに二つの文字...
-
int main()の・・・
-
atoi( ) の反対をやりたい
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
switch文で文字を比較すること...
-
干支のプログラム
-
3桁区切(コンマ)記号をつけ...
-
絶対パスからのファイル名の切...
-
間接操作のレベルとは
-
間接参照のレベルが異なっています
-
型変換
おすすめ情報