我正在尝试为手机创建一个迷你数据库。它利用 2D 数组,因此我可以拥有 1000 部手机的列表。但是,其产品 ID 只能包含 4 个字符。我希望它是一个 4 个字符的 C 字符串。
下面是初始化的产品 ID 变量: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];
}
}
如果你只需要 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];
}