是否可以在c中生成一个只允许数字的字符串?
我正在制作一个程序,用户在其中插入他们的电话号码并将其存储在文本文件中。 但我想插入一个只允许数字的功能 我怎么做 代码:是否可以在c中生成一个只允许数字的字符串?,c,string,C,String,我正在制作一个程序,用户在其中插入他们的电话号码并将其存储在文本文件中。 但我想插入一个只允许数字的功能 我怎么做 代码: #包括 #包括 int main() { 文件*f; char telefone[10]; 内伦; 做{ printf(“\nTelefone:”); 获取(电话号码); len=strlen(telefone); }而(len10); 返回0; f=fopen(“ricardo_duarte.txt”,“w”); fprintf(f,“\n电话:%s\n”,电传); fc
#包括
#包括
int main()
{
文件*f;
char telefone[10];
内伦;
做{
printf(“\nTelefone:”);
获取(电话号码);
len=strlen(telefone);
}而(len10);
返回0;
f=fopen(“ricardo_duarte.txt”,“w”);
fprintf(f,“\n电话:%s\n”,电传);
fclose(f);
返回0;
}
您可以通过将输入限制为数字来解析scanf:
scanf("%[0-9]", telephone);
我建议将扫描长度限制为缓冲区大小,以避免缓冲区溢出
char telephone[10 + 1]; // 10 digits + NUL-terminator
scanf("%10[0-9]", telephone);
您必须在读取字符串后验证该字符串是否只包含数字,如果有其他内容,则显示一条消息。这称为“输入验证”。检查输入字符串并检查每个字符是否为有效数字。如果不是,则要求用户再次输入。不要使用
获取
顺便说一句…如果您的程序将电话号码读取为字符串,那么您唯一的选择就是在之后检查字符串(检查每个字符)并处理无效输入,例如显示错误消息并要求用户输入正确的值。或者使用允许逐字符无缓冲输入并过滤掉无效字符的库。(例如诅咒)提示:使用isdigit()
函数。好的,我想我明白了:)
char telephone[10 + 1]; // 10 digits + NUL-terminator
scanf("%10[0-9]", telephone);