博客第一文,附hugo表格的坑
第一次使用这个hugo就遇到一堆坑,主题并不是随便用,会有SHA-256校验,而在windows平台下用git,clone下来会把\n
自动换成\r\n
从而导致主题应用失败,服了。
另一个坑就是hugo的表格,你不能像以下这么写
a|b|c
-|-|-
1|2|3
这样hugo的引擎是不认为这是表格,正确的做法是改成下面这样
a | b | c
---|---|---
1 | 2 | 3
显示结果就是这样
a | b | c |
---|---|---|
1 | 2 | 3 |
区别是什么呢?在表格的第二行是---|---|---
,这一行是用来描述对齐方式的,不过hugo的引擎要求每列至少3个字符,所以刚好3个字符时只能是
---
:--
--:
:-:
中四选一,任何一个只剩下两个字符就不算是表格。
本博客计划是发布我的研究成果,当然主要是算法方面,而且主要是网上不会轻易搜索到的东西。
更多的东西可以关注我的 Github 账号。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int g_eof;
int get_lv(char c) {
return !(c == '+' || c == '-');
}
double get_val(double v[], char op) {
if (op == '+') return v[0] + v[1];
if (op == '-') return v[0] - v[1];
if (op == '*') return v[0] * v[1];
if (op == '/') return v[0] / v[1];
return v[0];
}
double calc(char* op, int level, double val, char o, int i) {
char c[2] = { o };
double v[2] = { val };
if ((g_eof = scanf("%lf", &v[i])) != EOF)
scanf("%c", &c[i]);
if (c[i] == '(') {
v[i] = calc(&c[i], 0, 0, 0, 0);
scanf("%c", &c[i]);
}
if (i > 0) {
if (!(c[i] == '\n' || c[i] == ')'
|| get_lv(c[0]) >= get_lv(c[1])))
v[i] = calc(&c[1], get_lv(c[1]), v[1], c[1], get_lv(c[1]) > 0);
v[0] = get_val(v, c[0]);
c[0] = c[1];
}
if (c[0] == '\n' || c[0] == ')' || get_lv(c[0]) < level) {
*op = c[0];
return v[0];
}
return calc(op, level, v[0], c[0], 1);
}
int main(void) {
char op;
while (g_eof != EOF)
printf("= %.15g\n", calc(&op, 0, 0, '\n', 0));
return 0;
}