Category: C Language

GSFLOW模型的Codeblocks编译

GSFLOW提供makefile文件,可以在linux系统下编译成功,采用msys虚拟linux系统可成功通过编译(赵彦博帮忙完成)。

然而,我想在windows下编译,并且我想在windows下进行调试。

这里有两种途径,一种是对makefile进行解析,弄清GSFLOW各个模块直接的关联和依赖关系,然后进行顺序编译,然后这不能实现所以模块一起编译,且不同模块如果要改代码,则需要写调试函数,否则不能调试,因为mmf, modflow以及prms模块都编译出lib,然后实现模型耦合,生产gsflow.这个途径显然麻烦。

另一种途径,就是直接在codeblocks下编译linu[……]

Read more

C 字符串处理

首先我们来看下面的代码。这个代码,目的是想对一行字符串(以#符号开始)的注释前后空白进行去除。如“  this is what I want   #this is the comment”, 我想得到“this is what i want”。

首先我们将字符串地址赋值给StrStart, 然后判断是否空白,如果是,则将地址向后移动一位,以此类推,这样找到了非空白字符地址(注意:这里没有删掉buffer前面的空白);

然后我们找到#所在的位置,然后将地址赋值给StrEnd (注意:这个地址是指向这个字符及其之后字符所组成的字符串首地址),然后将该地址所指的字符串复制为’\0’字[……]

Read more

一种很好的C语言数据组织结构

问题:现在加入有m个网格,然后网格有不固定个数的河段(channel),每个channel有多个属性,然后给一种C语言数据组织结构对其进行组织?

分析:由于channel具有多个属性,所以需要建立结构体数据保存每条channel的多个属性;然后因为每个网格具有一条多条channel,因此需要建立指向结构体自己的指针;最后,由于具有m个网格,需要游历每个网格。

分析的前两步骤,给一个例子:

[……]

Read more

指针数组与数组指针

指针数组,首先它是一个数组,数组的元数都是指针,如:
int *p1[10] , 由于[]的优先级要高于*, 因此p1与[]结合,构成数组的定义,数组名为p1, int *修饰数组的内容,即数组中的每个元素。
数组指针,首先它是一个指针,它指向一个数组,它是“指向数组的指针”的简称,如:
int (*p2) [10], 由于()的优先级大于[], 因此*与p2构成指针的定义,指针变量名为p2, 它指向一个包含10个int类型的数据的一维数组,即数组指针。当二维数组分解为多个一维数组,则数组指针指向第一个一维数组。如a[3][10], p2=a, 则p2表示指向a[0],a[0]包含1[……]

Read more

第八章 数组

1. 数组定义与引用
#include <stdio.h>
#include <stdlib.h>
#define studentsnumber 5 //定义宏不需要添加分号,但是如果调用return语句,则需要加分号
// define hong return(2.0*3)
//*******************************************************************************************************************************
    //1) 数组的类[......]

Read more