Tag: 解析

预处理后解析C ++源文件

我正在尝试使用我自定义的解析器(用c++编写)来分析c++文件。 在开始解析之前,我想摆脱所有#define 。 我希望在预处理后可以编译源文件。 因此,最好的方法是在文件上运行C Preprocessor 。 cpp myfile.cpp temp.cpp // or g++ -E myfile.cpp > templ.cpp [欢迎提出新建议。] 但由于这个原因,原始行和它们的行号将丢失,因为文件也将包含所有标题信息,我想保留行号。 所以我决定的出路是, 在源文件中的每一行之前添加一个特殊符号(预处理器除外) 运行预处理器 用该特殊符号提取线条并进行分析 例如,典型的源文件将如下所示: #include #include”xyz.h” int x; #define SOME value /* ** This is a test file */ typedef char* cp; void myFunc (int* i, ABC<int, X > o) { //… } class B […]

基于空格或“双引号字符串”将字符串解析为数组

我试图取一个用户输入字符串并解析为一个名为char * whole_line [100]的数组; 其中每个单词放在数组的不同索引处但如果字符串的一部分由引号封装,则应将其放在单个索引中。 所以,如果我有 char buffer[1024]={0,}; fgets(buffer, 1024, stdin); 示例输入:“word filename.txt”这是一个字符串,shoudl占用输出数组中的一个索引“; tokenizer=strtok(buffer,” “);//break up by spaces do{ if(strchr(tokenizer,'”‘)){//check is a word starts with a ” is_string=YES; entire_line[i]=tokenizer;// if so, put that word into current index tokenizer=strtok(NULL,”\””); //should get rest of string until end ” strcat(entire_line[i],tokenizer); //append the two together, ill take care of […]

使用sscanf解析文本文件的整数和浮点值

我想用这些字段解析这样一个文件到整数和浮点变量,我试图用fscanf,strtok,sscanf来做这个。 但它们都不起作用! 文件的某些行: fed18 5.7 12.7 144997 8087 267345 100776 fedora18 24.9 25.3 253566 10501 126282 118157 fed18 5.9 12.7 145005 8094 267345 100785 fedora18 23.3 25.3 253576 10507 126282 118169 fed18 6.2 12.7 145013 8100 267345 100789 运行以下代码返回错误的值! 我不知道我搜索的问题是什么,每个人都使用这样的代码,它适用于他们! while(fgets(str,512,fp)!= NULL)//read file line by line { char *tokenstring = str; uint64_t netrx,nettx,vbd_rd,vbd_wr; double cpu, […]

用于php的独立语法和解析器

我正在寻找一个现成的PHP语法和解析器(至少5.2),理想情况下是一个实用程序/库,可以将PHP代码解析为可读的AST,例如xml。 解析器本身不必用php编写,源语言并不重要。

使用strtok在C中解析字符串

我有这个小源代码,用于测试解析类似于我需要在其他项目中使用的变量string #include #include #include int main (void) { char string[] = “C-AC-2C-3C-BOB”; char* s; char* hand[3]; char* usr; s = (char*) calloc(1, sizeof(char)); hand[1] = (char*) calloc(3, sizeof(char)); hand[2] = (char*) calloc(3, sizeof(char)); hand[3] = (char*) calloc(3, sizeof(char)); usr = (char*) calloc(21, sizeof(char)); s = strtok (string,”-“); hand[1] = strtok (NULL, “-“); hand[2] = strtok […]

读取特定字符的文本文件

这是我的困境。 我有一个文件,希望在程序点击“#”之前读取所有字符,并忽略“#”后该行上的所有内容。 例如 0 4001232 0 #comment,丢弃 这令人沮丧,因为感觉有一个非常简单的解决方案。 谢谢!

如何在C中的文本文件中的标记之间解析数据

我想使用C在文本文件中打印标签之间的数据。 输入声明:( PERSON)Mark Zuckerberg(/ PERSON)是(LOCATION)USA(/ LOCATION)的企业家。 他还是(ORGANIZATION)Facebook(/ ORGANIZATION)的首席执行官。 输出:马克扎克伯格美国Facebook。 我的程序代码是: const char* getfield(char* line, int num) { const char* tok; for (tok = strtok(line, “/>”); tok && *tok; tok = strtok(NULL, “<\n")) { if (!–num) return tok; } return NULL; } int main() { char line[500000]; while (fgets(line, 500000, stdin)) { char* tmp = strdup(line); […]

如何安全解析制表符分隔的字符串?

如何安全解析制表符分隔符字符串? 例如:test \ tbla-bla-bla \ t2332?

将.csv文件读入C LinkedList

我有以下struct : struct NODE { char username[50]; char password[50]; char usertype[50]; struct NODE *next; } *head=NULL; 我想从.csv文件中读取,比如username, password, usertypeforms的username, password, usertype ,使用strtok将每一行标记为标记,并将每个标记放在右边的字段中。 例如,我的文件看起来像这样: johnnydepp, pirate123, user tonystark, iron456, sysop 我继续阅读C LinkedList ,但我无法弄明白。 任何帮助都会非常感激,或者有关如何在C中实现LinkedList任何好的参考。 我的主要问题是将元素放在每个节点中。 我知道如何使用strtok来标记文件中的一行。 这是我到目前为止所做的: void createList() { FILE *data; data = fileopen(“password.csv”, “r”); char parsedLine[50]; while (fgets(parsedLine, 50, data) != NULL) { char […]

从C中的文本文件中读取解析数据的最佳方法?

我正在进行一项任务,处理从文本文件中读取数据,并将该数据解析为各种数组。 例如,我的文本文件的一部分如下所示: arbrick pts/26 141.219.210.189 Thu Mar 29 11:23 – 11:24 (00:00) rjmcnama pts/27 141.219.205.107 Thu Mar 29 11:02 still logged in ajhoekst pts/26 99.156.215.40 Thu Mar 29 10:59 – 11:08 (00:08) eacarter pts/31 141.219.162.145 Thu Mar 29 10:50 – 10:51 (00:00) kmcolema pts/31 141.219.214.128 Thu Mar 29 09:44 – 09:47 (00:03) 我需要将数据解析为以下数组:用户ID,终端,IP地址和事件时间。 考虑到列之间没有一致的空白区,我该怎么做? 编辑:我尝试使用Thiruvalluvar提供的建议,但我无法让它工作。 […]