ユーザー処理関連のコーディングガイドライン
1.入力値を格納する変数が十分に大きいことを確認します
- char name [10]には、最大10文字まで入力できます。入力値が10文字を超えると、問題が発生します。
- 長期的な視点をとる必要があります。たとえば、10バイトを格納する必要がある場合は、配列の長さを30、50、さらには100に拡張できます。
- 同じことが他のデータ型にも当てはまります。変数宣言には、次のような大きなデータ型を事前に選択する必要があります。
long int a;
long double b;
2.変換指定子とパラメーターの数は一貫している必要があります
printf("输出%d和%d\n",num1,num2);
- それは一貫している必要があります。私は他に何も言いません、そして結果は深刻になるでしょう。
3. scanf関数の代わりにfgets()およびsscanf()関数を使用します
- scanf()は、文字列の読み取り中に空白文字または特殊文字を検出すると、読み取りを停止します。例:123.46、現時点では123のみが読み取られます
- 入力したすべてのコンテンツを読みたい場合は、fgets()関数とsscanf()関数を順番に使用する必要があります。
- fgets()関数は、特殊文字と空白文字を含むコンテンツの行全体を読み取り、それを標準入力デバイスのバッファー関数に保存できます。一方、sscanf()関数は、これらのコンテンツを読み取り、変数に格納できます。
- sscanf()は文字列scanf()を意味します
#include<stdio.h>
#include<stdlib.h>
int main()
{
char console[80];//控制台一行字符串最大长度
int num;//输入字符串
fgets(console_line, sizeof(console_line), stdlin);//读入字符串
sscanf(console_line,"%d",&number);//读入fgets()函数的字符串,特殊字符也可读
...
printf("%d\n", num);
system("pause");
}
- fgets()関数とsscanf()関数を使う習慣を身につけるためにみんなが一生懸命頑張ってくれることを願っています
4.フラッシュ機能を使用して、標準の入力/出力デバイスバッファをクリアします
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num1=1;
int num2=0;
int sum;
printf("结果应该是:");
sum=num1/num2;//故意出错,让num2为0
printf("%d\n", sum);
system("pause");
}
- プログラムを宣言します。「結果は次のようになります。」バッファの原則に従って、この文は出力されません。
- fflush(stdout)関数は、バッファの内容を強制的に入力デバイスと出力デバイスに転送することができます。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num1 = 1;
int num2 = 0;
int sum;
printf("结果应该是:");
fflush(stdout);//将上一条语句强制输出
sum = num1 / num2;//故意出错,让num2为0
printf("%d\n", sum);
system("pause");
}
- fflush(stdin)関数を使用して、キーボードバッファを強制的にクリアします
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num1 = 1;
int num2, sum;
fflush(stdin)//强制清空作为标准输出设备的键盘缓冲
scanf("%d", num2);
sum = num1 / num2;//故意出错,让num2为0
printf("%d\n", sum);
system("pause");
}
5.まとめ
ここでは、主に入出力の際に注意が必要な状況を紹介しますが、細かい点が多く、実際の作業でこれらの問題に遭遇し、その時点で理解できます。
男らしい態度、コード栽培、ハハハ、どうやって接続できるか