Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在c中生成一个只允许数字的字符串?_C_String - Fatal编程技术网

是否可以在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);