【发布时间】:2018-02-15 13:43:13
【问题描述】:
所以我的程序需要包括它强制用户输入一个 5-10 个字符之间的字符串,并进行验证,以确保长度正确,到目前为止我有这个但完全卡住了,关于如何验证的任何建议数据类型是否只允许输入字符串?
char x[10];
int length, i;
for(i=0;i=10;i=i+1){
printf("Please enter 5-10 Characters\n");
scanf("%s", &x);
length = strlen(x);
if (length < 5){
printf("Not Long Enough!\n");
}
if (length > 10){
printf("Too Long!\n");
}
while('x' == 'char'){
if (scanf("%s", &x) == 1){
return 0;
}else{
printf("Not a string, Try again");
gets(x);
}
}
printf("You inputted: %s\n", x);
}
【问题讨论】:
-
查看第一行
char x[10];,数组不够大,无法容纳长度为10的字符串。查看第一个循环for(i=0;i=10;i=i+1),如果您仔细阅读,这不会做任何明智的事情。scanf("%s", &x);行不会防止缓冲区溢出,应该是x而不是&x,并且没有检查函数是否成功。再往下while('x' == 'char')一点意义都没有。那么gets不再是 C 函数了。你需要回到你的 C 入门。 -
for(i=0;i=10;i=i+1)你觉得这有什么作用?请see -
基础,尝试调试你的代码……错误太多了
-
while('x' == 'char')永远不会是真的。 -
1) 查看您自己的代码超过一秒钟,2) 使用市场上的任何编译器,它们都会对条件内的意外赋值发出警告。 3) 用火烧掉你学习 C 的源泉。
gets是一个已经过时了 20 多年的功能。您正在向一个至少在岩石下生活了那么长时间的人学习。
标签: c string validation