ホームページ  >  記事  >  バックエンド開発  >  C++ ランタイム エラーを解決する方法: 「無効な形式指定子」?

C++ ランタイム エラーを解決する方法: 「無効な形式指定子」?

王林
王林オリジナル
2023-08-27 11:34:561437ブラウズ

如何解决C++运行时错误:\'invalid format specifier\'?

C ランタイム エラー:「無効な形式指定子」を解決するにはどうすればよいですか?

C で開発していると、さまざまな実行時エラーが発生することがよくあります。より一般的なエラーの 1 つは、「無効な形式指定子」エラーです。このエラーは通常、printf 関数または scanf 関数を使用するときに発生し、書式指定文字列で無効または不一致の書式指定子が使用されたことを示します。この記事では、このエラーを解決する方法を説明し、読者の理解を深めるためにいくつかのコード例を示します。

まず、「無効な形式指定子」エラーを引き起こすサンプル コードを見てみましょう:

#include <stdio.h>

int main() {
    int number = 10;
    printf("The number is %s
", number);
    return 0;
}

上記のサンプル コードでは、%s 形式指定記号を使用して整数を出力します。変数。ただし、%s は整数ではなく文字列を出力するために使用される形式指定子です。これにより、コンパイラは「無効な形式指定子」エラーを表示します。

このエラーを解決するには、形式指定子と対応する変数の型を一致させるだけで済みます。整数変数の場合、印刷には %s の代わりに %d または %i を使用する必要があります。変更されたコード例を次に示します。

#include <stdio.h>

int main() {
    int number = 10;
    printf("The number is %d
", number);
    return 0;
}

上記の変更されたコードでは、整数変数が正しく出力されるように、%s を %d に置き換えました。このコードを実行すると、出力は「数字は 10 です」となります。

書式指定子を変数の型に一致させることに加えて、書式文字列内の書式指定子の数が後続のパラメータの数と一致していることにも注意してください。引数の数が書式指定子の数より少ない場合も、「書式指定子が無効です」エラーが発生します。サンプル コードは次のとおりです。

#include <stdio.h>

int main() {
    int number1 = 10, number2 = 20;
    printf("The numbers are %d and %d
", number1);
    return 0;
}

上記のサンプル コードでは、書式文字列で 2 つの %d 書式指定子を使用しましたが、パラメータとして整数変数のみを指定しました。これにより、コンパイラは「無効な形式指定子」エラーを表示します。この問題を解決するには、書式指定子の数に応じたパラメータを提供する必要があります。以下は修正されたサンプル コードです。

#include <stdio.h>

int main() {
    int number1 = 10, number2 = 20;
    printf("The numbers are %d and %d
", number1, number2);
    return 0;
}

上記の修正されたコードでは、2 つの整数を正しく出力できるように、printf 関数のパラメータとして 2 つの整数変数が提供されています。

C コードを記述するときは、書式指定子の正しい使用に常に注意を払う必要があります。形式指定子が正しくないと、プログラムで予期しない動作が発生したり、実行時エラーが発生したりする可能性があります。各形式指定子の正しい使用法については、C リファレンス ドキュメントを参照するか、関連するプログラミング書籍を参照することで学習できます。

要約すると、「無効な書式指定子」エラーを解決する方法は、書式指定子が変数の型と一致し、パラメータの数が書式指定子の数と一致することを確認することです。フォーマット文字列を慎重に記述することで、この一般的な実行時エラーを回避できます。

この記事が C ランタイム エラー「無効な形式指定子」の解決に役立つことを願っています。他にご質問やご不明な点がございましたら、お気軽に以下にコメントを残してください。

以上がC++ ランタイム エラーを解決する方法: 「無効な形式指定子」?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。