所以我的任务是创建一个可以接受10个字符的数组。如果用户输入的字符大于10,则将消除错误。如果输入的10个字符包含字母,则会显示另一个错误。 因此,数组只能有10个数字,不能有其他数字,如果输入的数字小于或大于10,则会显示错误以及数组中有字母。
我的代码接受数字和字母,因为我无法弄清楚输入字母时如何显示错误。
void getTenDigitPhone(char telNum[])
{
int i;
int z = 1;
do
{
scanf("%s", telNum);
if (strlen(telNum) != 10)
{
printf("Enter a 10-digit phone number: ");
z = 1;
}
else if (strlen(telNum) == 10)
{
return telNum;
}
} while (z == 1);
}
答案 0 :(得分:0)
您只需要检查telNum
仅包含数字:
for (int i = 0; i < 10; i++)
if (!isdigit(telNum[i])) {
// handle error because a non-digit was found.
}
我不会为您做家庭作业,但这应该可以给您带来启发。
答案 1 :(得分:0)
您可以使用函数isdigit(x)
。
如果x
是数字,则返回true(非零),否则返回false(零)。
您必须逐位检查。
答案 2 :(得分:0)
我将给出答案,因为您已发布了当前代码以作为您的工作。作为其他答案,您应该使用isdigit(x)
函数。
...
else if (strlen(telNum) == 10)
{
int i;
char err = 0;
for (i = 0; i < 10; i++) {
if (!isdigit(telNum[i])) {
// Your error here
printf("Non-digit character found");
err = 1;
break;
}
}
if (err == 0) {
return telNum;
}
}
...