1.int main里的形参通过参数命令传入。
argc是参数个数,这个个数比你输入的实际个数多一个。例如输入-p 0 -m 15 -n -o out.pos 07590920.05o 30400920.05n时,argc=10,argv[0]是“。。。/…exe;
argv是传入的参数指针。
argv指向char * ,这里是char*数组,数组内存放参数的地址。
参数命令可查看manual。
2. 结构体赋初值
结构体中变量全是char类型,可以这样赋初值全为空。
3.输入文件指针,infile是指针数组,数组内每个元素是指针,最多8个输入文件。
输出文件指针
这样是可以的,如下情况2
指针初始化
char 指针,也就是char * 类型。 其初始化本质上与其它变量初始化没有什么区别,就是赋予其一个初始化的值。
对于指针来说,在C语言中,就是一个地址。区分初始化情况,有四种表象:
1 初始化为空。即
char * str = NULL;
的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值。
2 初始化为常量字符串地址。
char * str = “test”;
常量字符串在运行时会被放在常量空间中,于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读取,不可写入。即str的值可以改,但是str指向的值是不可修改的。
3 初始化为变量地址。
这里的变量地址,包括全局变量,局部变量的地址,以及通过动态分配申请到的内存地址。
这种情况下,对指针指向的空间是可以修改的。
4 不做初始化。
这种情况在C语言中是允许的。如果为全局变量或静态局部变量,系统默认初始化为0值,即NULL。而对于局部变量,将是一个随机值。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错。
4.sprintf指的是字符串格式化命令,strcmp字符串比较
函数声明为 int sprintf(char *string, char *format [,argument,…]);,主要功能是把格式化的数据写入某个字符串中,即发送格式化输出到 string 所指向的字符串。
strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
即如果输入的命令是-k,那么执行resetsysopts()
5.正文
借用s大佬论文里的图