【发布时间】:2017-01-01 06:54:03
【问题描述】:
这里是example.txt:
##TITLE
My program
# 1
# 2
##
到目前为止,我有一个函数可以读取整个文件并在 char* 中返回其内容。
char *getTextBlock(const char *filename, char *textBlockLabel){
char *fileContents;
long fileSize;
FILE *fp= fopen(filename,"r");
fseek(fp, 0, SEEK_END);
fileSize= ftell(fp);
rewind(fp);
fileContents= malloc(fileSize * sizeof(char));
fread(fileContents, sizeof(char), fileSize, fp);
fclose(fp);
return fileContents;
}
当我运行这个程序时,这个函数是getTextBlock("example.txt","##TITLE");。
我想在example.txt 中获取并返回##TITLE 和## 之间的所有内容。
在这种情况下,这意味着:
My program
# 1
# 2
我该怎么做?
【问题讨论】:
-
How do I do this?--> 请展示您迄今为止的研究/调试工作。请先阅读How to Ask页面。 -
由于
"##TITLE"不包括行尾,我希望输出从##TITLE之后的行尾开始。所以输出将是"\nMy program\n# 1\n..." -
在你的函数中我没有看到第二个模式(“##”)
-
您是否特别希望返回行(而不是单词或字符)?换句话说,如果该示例文件的第一个类似文件是
##TITLE SomeText,那么"SomeText"是否应该成为您输出的一部分?您对短语TextBlock的使用表明您希望一次对线路进行操作。如果是这样,您最好将文件拆分为单行字符串数组,使您的信息单元成为“文本行”;此刻,它是“性格”。 (此外,您的getTextBlock函数可能应该采用第三个参数:类似于textBlockEnd。)
标签: c