限制2D数组中的字符输入

时间:2017-10-12 00:38:33

标签: c++ arrays user-input

我正在尝试为手机创建一个迷你数据库。它使用2D阵列,因此我可以拥有1000部电话的列表。但是,其产品ID只能包含4个字符。我希望它是一个4字符的C字符串。

这是初始化的productID变量:char productID[1000][5]。完成后,我尝试确保用户输入了他们想要的手机数量并输入ID。但是,每当我尝试输入ID时,无论字符长度如何。它保持循环,"它必须是四个字符。"有没有办法只在键盘发送四个字符以外的任何内容时实现这个?

 for (int c= 0; c<n; c++)
{
    cout<<"Enter the product ID."<<endl;
    for(int b=0; b<5; b++)
    {
    cin>>productID[b];

    while (productID[c][b]>5)
    {
        cout<<"It has to be four characters."<<endl;
        cin>>productID[b];
    }
    }

1 个答案:

答案 0 :(得分:-1)

如果只需要4个字符,为什么数组长度为5? 啊,我只是觉得你只需要字母......那样的话,条件比较复杂。这两个变种都发布了:

#include <string.h>

char productID[1000][4];
for (int c= 0; c<4; c++)
{
    std::cout<<"Enter the product ID."<<std::endl;

    std::cin>>productID[c];

    for(int b=0; b<4; b++)
    {
        while (strlen(productID[c])>4 || !((productID[c][b]>='A' && productID[c][b]<='Z')||(productID[c][b]>='a' && productID[c][b]<='z')) )
        {
            std::cout<<"It has to be four letters."<<std::endl;
            std::cin>>productID[c];
        }
    }
}


for (int c= 0; c<4; c++)
{
    std::cout<<"Enter the product ID."<<std::endl;

    std::cin>>productID[c];
    int length = strlen(productID[c]);
    while (length != 4) //replace with "> 4" if it can be less than 4 char. 
    {
        std::cout<<"It has to be four characters."<<std::endl;
        std::cin>>productID[c];
    }
}

        #include <cctype>
        while (strlen(productID[c])>4 
               || !isalpha(productID[c][0])
               || !isalpha(productID[c][1])
               || !isdigit(productID[c][2])
               || !isdigit(productID[c][3])
              )
        {
            std::cout<<"It has to be ..."<<std::endl;
            std::cin>>productID[c];
        }