kindle paperwhite 简单笔记按名称分类

已更新python,见新博客   http://www.hrwhisper.me/archives/708


写作背景:

南京决赛比赛完那天晚上写的。

使用方法:

将My Clippings.txt 放在e盘根目录下即可。

输出也在e盘根目录。

设计思想:

以下面的笔记为例。在每一段笔记后面都是==========分隔。

同样书名的也会分隔。

而kindle对于不同书只会直接往下继续写。要是同时看几本书就乱七八糟的。

嗯so~

读取第一行作为书名判断,第二行无用数据抛弃掉。

接下来的正文读取到==========为止。

然后按相同书名的输出即可。

当然如果你在标注的同时写了笔记。。我这个功能没做,因为Kpw2打字蛋疼死!

嗯还有就是中文处理有点问题,先不修复了。

反正能用。


行者无疆 (余秋雨)
- 您在位置 #1635-1636的标注 | 添加于 2014年8月26日星期二 下午11:33:04

看城市潜力,拥挤的市中心不是标志。市中心是一个旋涡,把衰草污浊旋到了外缘。真正的潜力忽闪在小巷的窗台下,近郊的庭园里。
==========
行者无疆 (余秋雨)
- 您在位置 #1642-1643的标注 | 添加于 2014年8月26日星期二 下午11:33:33

这就像写作,当形容词如女郎盛妆、排比句如情人并肩,那就一定尚未进入文章之道。文章的极致如老街疏桐,桐下旧座,座间闲谈,精致散漫。 城市这篇文章,也是这样。
==========


源代码:

//kindle笔记简单分类。
//by hrwhisper  2014.8.21
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int MAXLINELENGTH = 10000; //max note length
const int MAXBOOK = 1000;   //max book numbers
char line[MAXLINELENGTH];
const char newNoteTarget[] = "==========";
int curBookLen = 0;//current read book numbers;
int curNoteLen = 0; //current note numbers;
char bookName[MAXBOOK][MAXLINELENGTH]; //restore all bookName
char noteContent[MAXBOOK][MAXLINELENGTH << 4]; //all note content
char curBookName[MAXBOOK];		//current book name;
vector<int> nameIndex[MAXBOOK]; //the name includes indexs in the same line.

int curBookNameIndex(char *name){
	int id=-1;
	for (int i = 0; i < curBookLen; i++)
	{
		if (strcmp(name, bookName[i]) == 0)
		{
			id = i;
			return id;
		}
	}
	if (id == -1)
	{
		id=curBookLen++;
		strcpy(bookName[id], name);
	}
	return id;
}
int main()
{
	freopen("E:\\My Clippings.txt","r",stdin);
	freopen("E:\\result.txt", "w", stdout);
	while (gets(curBookName) != NULL)
	{
		int id = curBookNameIndex(curBookName);
		printf("%s\n", curBookName);
		nameIndex[id].push_back(curNoteLen);
		gets(line); //这是无用数据的,因为是日期
		while (gets(line), strcmp(line, newNoteTarget) != 0)
		{
			strcat(noteContent[curNoteLen], line);
		}
		//printf("%s\n", curBookName);
		curNoteLen++;
	}
	
	for (int i = 0; i < curBookLen; i++)
	{
		puts(bookName[i]);
		printf("\n");
		for (int j = 0; j < nameIndex[i].size(); j++)
		{
			printf("%s",noteContent[ nameIndex[i][j] ]);
			printf("\n\n");
		}
		printf("\n\n\n\n\n%s\n",newNoteTarget);
	}

	return 0;
}


posted @ 2014-08-29 23:25  hr_whisper  阅读(266)  评论(0编辑  收藏  举报