数组,isdigit函数,while循环

时间:2019-04-19 17:16:33

标签: c

这是我为作业编写的C程序。我只想添加一些自己的代码行。但是它最终陷入了永无止境的循环。

我尝试使用while循环解决此问题,但这就是我的问题所在。

int tab1[6],c;

printf("\n\nEnter 4 integers in the first array:\n ");

for (c = 0; c < 4; ++c)
{
    printf("\n\tValue %d : ",c+1);
    scanf("%d",&tab1[c]);
        //if tab1[c] is not a number ask again.
            while (!isalpha(tab1[c]))
            { 
                printf("nEnter an integer : ");
            }
            scanf("%d",&tab1[c]);

}

我希望程序在用户输入除整数以外的内容时要求输入整数。

1 个答案:

答案 0 :(得分:0)

获取输入后,需要进行从字符串到数字的转换。我的意思是:首先输入,然后检查并转换。

// 1st: input
if (!fgets(buf, sizeof buf, stdin)) /* error */;
// 2nd: check and convert
if (sscanf(buf, "%d", &tab1[c]) != 1) /* error */;

scanf()已经在单独执行此操作,但是您可能需要更强大的功能。

您要使用scanf()的返回值来了解其转换是否成功:

if (scanf("%d", &tab1[c]) != 1) /* error */