reversefile.c
来自「著名的Parser库Spirit在VC6上的Port」· C语言 代码 · 共 41 行
C
41 行
/* -*- mode: c -*-
* $Id: ReverseFile.c,v 1.3 2001/10/20 15:43:19 nuffer Exp $
* http://www.bagley.org/~doug/shootout/
* from Brad Knotwell
*/
/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define MAXREAD 4096
*/
int main(int argc, char *argv[]) {
int nread, len = 0, size = (4 * MAXREAD);
char *cp, *buf = malloc(size + 1);
while((nread = read(0,(buf+len),MAXREAD)) > 0) {
len += nread;
if(MAXREAD > (size - len)) {
size <<= 1;
if((buf = realloc(buf,size+1)) == NULL)
return(fprintf(stderr,"realloc failed\n"),EXIT_FAILURE);
}
}
if(nread == -1) return(fprintf(stderr,"read\n"),EXIT_FAILURE);
for (cp = buf+len-1; cp != buf; --cp,nread++)
if ('\n' == *cp) {
fwrite(cp+1,nread,1,stdout);
nread = 0;
}
fwrite(cp,nread+1,1,stdout);
free(buf);
return(EXIT_SUCCESS);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?