The best input is OUTPUT.

2015-09-01
关于Fortran和C数组的优先模式

熟悉了C语言和Python中的行优先模式,上手Fortran的列优先模式时候有点绕,大致在这整理下思路。
无论对于C或者Fortran数据对象在内存中都是连续排列的。比如我初始化一个3×3的二维数组.
C语言

1
2
3
4
5
int c[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};

Fortran

1
2
3
integer :: f(3, 3)
integer :: r, c
data ((m(r, c), r=1, 3), c=1, 3) /(i, i=1,9)/ ! 注意我这里是按照列进行初始化的

Read More

2015-08-29
git push的时候用ssh放弃https

这几天改以前的代码,每次git push到github的时候总是提醒我输入我输入github的用户名和密码,很是麻烦。
于是找到了原因,之前我的代码是通过https clone到本地的,如果一开始是通过git ssh克隆就不会出现这种问题。如果已经通过https克隆,不用着急可以修改。

在你的版本库.git中打开config文件会有如下一段代码:

1
2
3
[remote "origin"]  
fetch = + refs/heads/*:refs/remotes/origin/*
url = https://username@github.com/username/projectname.git

url改成相应的

1
2
3
[remote "origin"]  
fetch = + refs/heads/*:refs/remotes/origin/*
url = git@github.com:username/projectname.git

这样就可以通过ssh公钥的方式认证进行git push啦

Read More

2015-08-22
具有局部作用域的变量是否可以在作用域外使用?

昨天在操作链表的时候看到书上写了一段释放链表内存的代码,感觉奇奇怪怪的。

1
2
3
4
5
6
current = head;
while(current != NULL)
{
free(current);
current = current->next;
}

上面的代码就是在释放了current指向的内存之后仍然使用了该内存的数据。感觉好奇怪,不知道是作者的原因还是什么。
应该这样写才对:

1
2
3
4
5
6
7
current = head;
while(current != NULL)
{
tmp = current->next;
free(current);
current = tmp;
}

Read More

2015-08-17
C Notes -- 数组初始化总结

今天给结构数组初始化的时候发现也能指定初始化项目列表。于是试了试int数组也可以,在这里把这几种常用的数组初始化方法总结下。

Read More

2015-08-14
C Notes - 关于逻辑运算符

昨天写了个c语言处理文件的练习题,题目是:

编写一个代开两个文件的程序。可以使用命令行参数或者请求用户输入来获取文件名。让程序打印第一个文件的第一行,第二个文件的第二行,第一个文件第一行,第二个文件第二行。。。以此类推,知道打印完行数较多的文件的最后一行。

程序很短很好写,但是在写程序的过程中我是通过逻辑或来判断是否两个文件都读完。

1
2
while(fgets(line1, SLEN, fp1) != NULL || fgets(line2, SLEN, fp2) != NULL)
{...}

可是这样输出的结果是先打印了第一个文件的所有行然后是第二个文件的所有行。
后来想了想,之所以出现这样的结果,有可能是逻辑运算符如果第一个条件满足后就不会运算||后面的表达式了。
于是我把代码改成如下:
1
2
3
4
5
6
7
8
9
pt1 = fgets(line1, SLEN, fp1);
pt2 = fgets(line2, SLEN, fp2);
while(pt1 || pt2)
{
fputs(line1, stdout);
fputs(line2, stdout);
pt1 = fgets(line1, SLEN, fp1);
pt2 = fgets(line2, SLEN, fp2);
}

果然是猜测的原因,以后用或运算符的时候要注意这里了。
以上。

Read More

2015-08-12
VASPy一个面向对象的VASP文件处理库

VASPy一个面向对象的VASP文件处理库

放假在家可以写写以前的想法,把vasp中的文件写成python对象,这样既系统有方便写脚本。就在github上开了个repo,目前写了几个文件的class,其中包含处理MaterialStudio的xsd类xml文件的类。不断更新,欢迎使用vasp的小伙伴们star,fork贡献出自己的一份力。
库链接:Processing VASP files with Python - VASPy

Read More