当前位置: 技术问答>linux和unix
如何一次从文件中读入一行
来源: 互联网 发布时间:2016-01-05
本文导语: 文件是shell可执行脚本。 要求读入的数据符合shell解释规则。 比如: aaa bbb 那么读入的行应该是 aaa bbb | 你自己的解释已经定义好了程序的逻辑。实现起来不难,像perl这样的脚本语言可以...
文件是shell可执行脚本。
要求读入的数据符合shell解释规则。
比如:
aaa
bbb
那么读入的行应该是 aaa bbb
要求读入的数据符合shell解释规则。
比如:
aaa
bbb
那么读入的行应该是 aaa bbb
|
你自己的解释已经定义好了程序的逻辑。实现起来不难,像perl这样的脚本语言可以按行读,很容易处理你的要求。
如果是C语言,简单的办法是一次把文件读到内存,用几个指针就可以处理了。大致的代码如下(注意程序并未调试,可能有错误):
char* buffer;
int filelen;
char* buffer_end = buffer + filelen;
buffer = (char*)malloc(filelen);
/* read file data to buffer*/
char* line_start;
char* line_end;
char line_buffer[1024]; /* maximum line length is 1024 */
line_end = line_start;
while(line_end = buffer_end ) break;
if (line_end 之前最后字符是'') {
strncpy(line_buffer + line_offset, line_start, line_end - line_start);
line_offset += line_end - line_start; // 此处判断是否超过line_buffer大小
}else {
处理line_buffer并清空
strncpy(line_buffer + line_offset, line_start, line_end - line_start);
}
}
如果是C语言,简单的办法是一次把文件读到内存,用几个指针就可以处理了。大致的代码如下(注意程序并未调试,可能有错误):
char* buffer;
int filelen;
char* buffer_end = buffer + filelen;
buffer = (char*)malloc(filelen);
/* read file data to buffer*/
char* line_start;
char* line_end;
char line_buffer[1024]; /* maximum line length is 1024 */
line_end = line_start;
while(line_end = buffer_end ) break;
if (line_end 之前最后字符是'') {
strncpy(line_buffer + line_offset, line_start, line_end - line_start);
line_offset += line_end - line_start; // 此处判断是否超过line_buffer大小
}else {
处理line_buffer并清空
strncpy(line_buffer + line_offset, line_start, line_end - line_start);
}
}