1. 怎样检查c语言输入数据的合法性
1、找到安装好的C-free5,双击打开,进入c-free5的主界面。
2. C语言 安全的密码 问题
写了个命令行版本的, 使用的时候, 直接把密码当成命令行参数使用吧,
如果不合心意, 可以自己改改(对于第4类字符, 没有考虑符号表)
/*
@20140129
for
by'热心网友'
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#definePASS_SAFE_NONE0
#definePASS_SAFE_LOW1
#definePASS_SAFE_MED2
#definePASS_SAFE_HIG3
intchkpasswd(char*pass);
intoutput(intsafecode);
intmain(intargc,char**argv){
if(argc!=2){
printf("UsageError ");
exit(1);
}
intret=chkpasswd(argv[1]);
output(ret);
}
intoutput(intcode){
printf("code=%d ",code);
switch(code){
casePASS_SAFE_NONE:
casePASS_SAFE_LOW:
printf("NotSafe ");
break;
casePASS_SAFE_MED:
printf("MediumSafe ");
break;
casePASS_SAFE_HIG:
printf("Safe ");
break;
}
returncode;
}
intchkpasswd(char*pass){
intlen=strlen(pass);
if(len<6)returnPASS_SAFE_NONE;
intb_class1=0;
intb_class2=0;
intb_class3=0;
intb_class4=0;
intret=0;
char*p=pass;
for(p=pass;p<(pass+len);p++){
if(ret>=PASS_SAFE_HIG)returnPASS_SAFE_HIG;
if(*p>='0'&&*p<='9'){//0-9
if(b_class1){
continue;
}else{
b_class1=1;
ret++;
}
}elseif(*p>='A'&&*p<='Z'){//Upper
if(b_class2){
continue;
}else{
b_class2=1;
ret++;
}
}elseif(*p>='a'&&*p<='z'){//Lower
if(b_class3){
continue;
}else{
b_class3=1;
ret++;
}
}else{//Symb
if(b_class4){
continue;
}else{
b_class4=1;
ret++;
}
}
}
returnret;
}
3. C语言:字符串输入与输出相关问题
getchar和putchar都是对字符操作的,而不是字符串,所以需要设计循环为字符串中每一个字符赋值。
以下是示例代码,需要说明的一点是gets输入字符串对于字符串长度没有限制,可能导致越界溢出,不安全,建议改用fgets,另外在新的微软标准中gets函数已被gets_s函数代替,希望对你有帮助。
include<stdio.h>intmain(){ const int count=21;
charstr1[count];charstr2[count];charch;printf("请str1输入字符串(getchar方式): ");int i=0;while((ch=getchar())!' '){ str1[i]=ch;i+;if(i=count-1){ str1[count-1]='