このコードを使用して、0 から 255 までの値を読み取ろうとしています ( unsigned char
)。
#include<stdio.h>
int main(void)
{
unsigned char value;
/* To read the numbers between 0 to 255 */
printf("Please enter a number between 0 and 255 \n");
scanf("%u",&value);
printf("The value is %u \n",value);
return 0;
}
予想どおり、次のコンパイラ警告が表示されます。
警告: フォーマット '%u' はタイプ 'unsigned int *' を想定していますが、引数 2 のタイプは 'unsigned char *' です
そして、これがこのプログラムの私の出力です。
0 から 255 までの数値を入力してください 45 値は 45 です セグメンテーション違反
このコードの実行中にセグメンテーション違反が発生します。
unsigned char
を使用して値を読み取る最良の方法は何scanf
ですか?