printf((char*)したがって、実行時エラー?(i as integer)
-
21-09-2019 - |
質問
るためのループ行うことにより利用printf印刷、電流iの値です。このライン: printf((char *) i);
が与えてくれたように、実行時エラー.なぜ日間のスケジュールはこの通り。
以下には、迅速fizzbuzzソリューションを行うこと:
void FizzBuzz()
{
for (int i = 0; i < 20; i++)
{
printf((char *)i);
if ((i % 3 == 0) && (i % 5 == 0))
{
printf("FizzBuzz \n");
}
else if (i % 3 == 0)
{
printf("Fizz \n");
}
else if (i % 5 == 0)
{
printf("Buzz \n");
}
else
{
printf("%d\n", i);
}
}
}
解決
それはどのようにprintf
作品ではありませんので。あなたが代わりにこれが欲しいます:
printf("%d\n", i);
あるいは、より良い、
std::cout << i;
他のヒント
、あなたの代わりにprintfのではcout使用する必要があります:
#include <iostream>
using namespace std;
int main() {
int i = 42;
cout << "The answer is: " << i << endl;
}
は次のとおりです。確かにそれはあなたが意図したものではありません「の場所から始まるが刺されている私は、それが表示されます」。使用形式文字列%dは整数
を印刷しますはprintfの作品はこのような文字列をこの:
printf( "the number is: " );
ましい整数の最後部に文字列を使用する必要がありエスケープ文字としてのintとして他のパラメータ:
printf( "the number is %d", i );
詳しい情報 こちらの のエスケープ文字は使用できる。
も必要となります。
#include <stdio.h>
編集
い私の専門用語間違っているのは、%の後、シーケンスと呼ばれる 変換仕様 ないエスケープcharacer.
HTH.
printf()
の最初の引数はCスタイルのヌルで終了する文字列です。残りの引数を印刷する%
フォーマット配列とフォーマット(従って「F」)として使用されることを意図しています。
printf((char *) i);
を使用することで、あなたはi
ポイントにあること、それがヌルに遭遇するまで、アドレスで始まるすべてのバイトを印刷するには、コンピュータに指示されています。残念ながら、i
は通常のカウンターのために使用されていることを考えると、それはおそらく非常に低いメモリを指します。最近のほとんどのオペレーティングシステムは、セキュリティホールを作成するからバグを防ぐために、ユーザ空間のプログラムから、このようなメモリへのアクセスを禁止する、と怒らプログラムに信号を送信します。そのような信号にデフォルトの応答は、あなたがトラップそれをしない限り、プロセスを殺すことです。
i
に格納された番号、使用printf("%d\n", i);
を表示する。文字としてi
の値を表示するには、putc((char)i);
またはprintf("%c\n", i);
を試してみてください。 i
が本当に文字へのポインタである場合は、putc((char)(*i));
を試してみます。