ユーザーIDが正しいかどうかを確認するにはどうすればいいですか? 私はユーザーi/pから名前と年齢を問い合せています。入力されたデータは正しいかどうか? コードはC言語にする必要があります。正しいユーザー入力を確認する
答えて
名前は、ユーザー入力を文字列で保存します。配列要素が 'a'から 'z'または 'A'から 'Z'にならない場合は、文字列をたどり、エラーを言います。年齢を考慮すると、char配列または整数を使用できます。ユーザーが 'a'を入力すると整数を使用している間にそのASCII値が使用されます。しかし、char配列を使用すると、数字だけと制限があります。
メインINT()
{
char name[10],age[2];
int i;
printf("Enter name and age \n");
scanf("%s %s",name,age);
for(i=0; name[i]!=NULL; i++)
if(isdigit(name[i]))
printf("Error, name in aplahbets\n");
for(i=0; age[i]!=NULL; i++)
if(isalpha(age[i]))
printf("Error, age in numbers\n");
// Rest of your code Your code
return 0;
}
構文を使って説明してください。 – kamakshi
thanx(サポートあり)... – kamakshi
名前が9文字以上の場合、ソリューションがクラッシュする、!= NULLも拡散します。 – user411313
年齢は、典型的には、アプリケーションに応じて0から130の範囲の自然数であり、より現実的な範囲は、15であるかもしれませんあなたの要件を見てください。
int IsNaturalNumber(const char* number)
{
while(*number) {
if(!isdigit(*number))
return 0;
++number;
}
return 1;
}
char age[20+1] = { 0 };
if(!fgets(age, 20, stdin)) error("EOF reached!");
if(!IsNaturalNumber(age)) error("Please enter a natural number!");
int age_as_int = atoi(age);
if(age_as_int < LOWER_AGE_BOUND || age_as_int > UPPER_AGE_BOUND)
error("Age must be between %d and %d.", LOWER_AGE_BOUND, UPPER_AGE_BOUND);
名前はトリッキーです。正しい名前は何ですか?一般的に使用される形式は、敬称(Mr/Mrs./Miss)、名および姓/姓です。これは多くの文化をカバーしています。言語を考慮に入れることを忘れないでください。 Mr. = Herr、Mrs. = Frau、Miss =Fräulein、ドイツ語など。また、いくつかの文化では、姓の前に姓(たとえば日本)が好きです。あなたの要件は何ですか?あなたはすべての文化を考慮する必要がありますか?
入力の検証を行う一般的な方法は、入力をプログラムに文字列として読み込み、検証して予想される型に変換することです。
名前の場合、あなたにできる有効なバリデーションはあまりありません。入力があなたの予想を超えていないことを確認することができますが、そうでなければほとんどの入力は有効な名前とみなされます。
年齢には、さらに多くのバリデーションがあります。最初に、入力は有効な整数でなければならず、第2に、それは特定の範囲内でなければなりません。
あなたは以下の機能を使用できます。短いソリューションをチェックアンダーフロー/任意の年齢オーバーフローなしで
char* readString(char* buffer, size_t buflen)
{
char* result;
result = fgets(buffer, buflen, stdin);
if ((result != NULL) &&
(strlen(result) == buflen-1) &&
(result[buflen-2] != '\n'))
{
/* too long a line */
/* read the remainder of the line, to clear the input buffers */
while ((result != NULL) && (result[strlen(result)-1] != '\n'))
{
result = fgets(buffer, buflen, stdin);
}
/* set result to NULL to indicate an error */
result = NULL;
}
if (result != NULL)
{
/* strip the newline */
result[strlen(result)-1] = '\0';
}
}
bool readInt(int low, int high, int* value)
{
char temp[80];
if (readString(temp, 80))
{
char* endp;
long result = strtol(temp, &endp, 10);
if ((*endp == '\0') && (result >= low) && (result <= high))
{
*value = result;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
は次のようになります。
char name[40];
unsigned age;
if(scanf("%39s%u",name,&age)==2)
printf("name=%s age=%u",name,age);
else
puts("input invalid");
あなたはこれまで任意のユーザからのリターンを確認する必要があります-inputs。
- 1. Bash:ユーザー入力が正しいことを確認してください
- 2. ユーザーが整数を入力したことを確認する
- 3. ユーザー入力にエレガントなエラーを確認してください
- 4. ユーザーが入力した値を確認する
- 5. ユーザーの入力に対してリストを確認しますか?
- 6. フィールドに入力中にユーザー名を確認しますか?
- 7. ユーザーが正確な文字列を入力したかどうかを確認する
- 8. ユーザー入力のリンク構文を確認する
- 9. テキストフィールドを使用してユーザー入力を確認しています
- 10. Noob c#。メソッド内のユーザー入力を確認しようとしています
- 11. VB、コンソールアプリケーション、ユーザー入力を確認して、有効な番号を入力したことを確認するにはどうすればよいですか?
- 12. 正規表現で数字入力を確認する - C#
- 13. ユーザーが座標を繰り返し入力するのを確認するMATLAB
- 14. UNIXでユーザーが入力した日時を確認してください。
- 15. 入力値を確認する
- 16. jQuery.contains()で入力を確認する
- 17. ユーザーの入力を記録し、Firefoxのアドオンで確認するsdk
- 18. 入力されたHTMLテキスト入力を確認する
- 19. UITextFieldで入力を確認する方法(数値入力)
- 20. 入力の確認ダイアログボックス
- 21. すべてのユーザー入力がUTF-8であることを確認する
- 22. 特定の条件でのユーザー入力の確認
- 23. Golang - 引数の数を確認しますか?ユーザー入力 - 戻りキー(空白行)の入力を確認する ""
- 24. MATLAB:入力ダイアログを確認するために入力しますか?
- 25. ユーザーが変数を入力するための.bat確認を追加
- 26. タイマーを作成してユーザーが入力しているかどうかを確認する
- 27. 入力ファイルの内容を確認しています
- 28. dosバッチファイルの入力コマンドを確認していますか?
- 29. 正確な場所にユーザ入力を入力してください
- 30. ユーザーがアプリを購入したことを確認する
これはエラーメッセージですが、i/pデータが正しくないかどうかを確認する方法を教えてください。 – kamakshi
私の組み込み検証はあなたの入力が間違っています手紙、句読点がない)。適切な言語を使用して質問を書く気にしない場合、どのように誰かが世話をして答えを書くことを期待していますか? – Suma