我正在尝试为手机创建一个迷你数据库。它使用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];
}
}
答案 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];
}