C语言和C++语言都是不安全的编程语言

Python013

C语言和C++语言都是不安全的编程语言,第1张

安全。

C++是由AT&TBell实验室于20世纪80年代初在C语言的基础上成功开发出来的。C++保留了C语言原有的所有优点,并增加了面向对象的机制。C++是由C语言发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型程序设计语言。c语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言编译器普遍存在于各种不同的操作系统中,其设计也影响了Java、Python等编程语言

C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

因为C语言比其他语言编译出的软件运行快啊 所以C语言一般放到嵌入式开发

打个比方

你哪天电视遥控器坏了,你要买个新的

1种遥控器芯片是最新电脑用的芯片,用的遥控器用的软件用哪个语言开发都会很快 那这个遥控器价格 呵呵..

另1种遥控器价格就十几块钱 你想它的芯片运算速度能多快... 那假如里面是其他语言 估计你按完开机后10秒(极端例子)后才能响应开机,但用C语言 能马上开机。

安全问题,不就是多个指针跑飞和内存泄漏么,这个真没法避免

但使用指针和内存分配的确能使C语言运行灵活

再说了 其他语言该出Bug也不照样出Bug么

写了个命令行版本的, 使用的时候, 直接把密码当成命令行参数使用吧,

如果不合心意, 可以自己改改(对于第4类字符, 没有考虑符号表)

/*

@20140129

for 

by '热心网友'

*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define PASS_SAFE_NONE 0

#define PASS_SAFE_LOW 1

#define PASS_SAFE_MED 2

#define PASS_SAFE_HIG 3

int chkpasswd(char *pass)

int output(int safecode)

int main(int argc, char **argv) {

if(argc != 2) {

printf("Usage Error\n")

exit(1)

}

int ret = chkpasswd(argv[1])

output(ret)

}

int output(int code) {

printf("code=%d\n", code)

switch(code) {

case PASS_SAFE_NONE:

case PASS_SAFE_LOW:

printf("Not Safe\n")

break

case PASS_SAFE_MED:

printf("Medium Safe\n")

break

case PASS_SAFE_HIG:

printf("Safe\n")

break

}

return code

}

int chkpasswd(char *pass) {

int len = strlen(pass)

if(len < 6) return PASS_SAFE_NONE

int b_class1 = 0

int b_class2 = 0

int b_class3 = 0

int b_class4 = 0

int ret = 0

char *p = pass

for(p = pass p < (pass + len) p++) {

if(ret >= PASS_SAFE_HIG) return PASS_SAFE_HIG

if(*p >= '0' && *p <= '9') { //0-9

if(b_class1) {

continue

} else { 

b_class1 = 1

ret++

}

} else if(*p >= 'A' && *p <= 'Z') { //Upper

if(b_class2) {

 continue

} else {

b_class2 = 1

ret++

}

} else if(*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++

}

}

}

return ret

}