我们如何通过ac代码检查用户i/p是否正确.. 因为我们要求用户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 2011-01-06 10:52:31
thanx的支持... – kamakshi 2011-01-07 05:18:03
您的解决方案的崩溃名称超过900个字符,!= NULL也弥漫。 – user411313 2012-05-19 17:37:21
年龄通常是自然数,范围从0到130根据您的应用程序,一个更现实的范围可能是15到65.看看你的要求。
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);
名字很棘手。什么是专名?常用的形式是称呼(先生/先生/小姐),名字和姓氏/姓氏。这涵盖了很多文化。不要忘记考虑语言。例如,先生=先生,夫人=弗劳,小姐=Fräulein德国人。另外,有些文化比较喜欢用名字表达姓名(例如日本)。你有什么要求?你需要考虑所有的文化,还是只有少数?
执行输入验证的常用方法是将输入作为字符串读入程序,然后验证它并转换为预期类型。
对于名称,没有太多有用的验证可以做。你可以(也应该)检查输入是否超出你的预期,但是否则大多数输入应该被视为有效的名字。
对于年龄,你可以做更多的验证。首先,输入必须是有效整数,其次必须在一定范围内。
您可以使用以下功能:
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. 功能来检查用户的输入是否正确无效
- 2. 检查输入密码是否正确
- 3. 如何检查用户输入路径是否正确?
- 4. JAVA-无法检查用户输入日期是否正确
- 5. 如何检查用户是否正确输入命令 - C#
- 6. 检查lineEdit输入是否有正确的格式Qt 5 C++
- 7. 检查C中是否有正确的输入
- 8. 检查输入是否正确/不正确,并为输入区域着色
- 9. 检查用户是否输入整数
- 10. 检查用户输入是否适合
- 11. 检查输入是否是正确的整数
- 12. 检查cxDateEdit是否以正确的格式输入
- 13. 检查输入是否为正整数
- 14. 检查nummer是否正确
- 15. Java扫描仪 - 如何检查密码输入是否正确?
- 16. 检查用户输入是否有效CSS宽度值
- 17. 检查用户输入是否有效日期
- 18. 检查是否有任何输入值
- 19. jQuery检查输入ID是否有值
- 20. 检查输入是否有int int Javascript
- 21. 易于检查用户输入是否是perl中的数字?
- 22. Python - 存储用户输入并检查输入是否已输入?
- 23. 如何在php中正确检查用户输入?
- 24. 如何检查用户输入是否是某个基地?
- 25. ANTLR检查commontree是否正确或如何检查给定的输入是否匹配ANTLR语法?
- 26. 如何检查用户输入的字符串是否与
- 27. 检查用户输入是否=定义的字符串
- 28. 检查用户输入的单个数值是否为数字
- 29. 检查是否verfication代码是正确
- 30. 检查mmap的地址是否正确
这是错误信息,但我们将如何检查I/P数据是否正确或不正确..这将是什么语法.. – kamakshi 2011-01-06 10:51:41
我的内置验证告诉我你上面的输入是绝对不正确的字母,缺少标点符号)。如果你不喜欢用适当的语言来写这个问题,你如何期待任何人关心写一个答案? – Suma 2011-01-06 12:14:57