我們如何通過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