⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_getline.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <bio.h>#include "String.h"/* Append an input line to a String. * * Returns a pointer to the character string (or 0). * Leading whitespace and newlines are removed. * * Empty lines and lines starting with '#' are ignored. */ extern char *s_getline(Biobuf *fp, String *to){	int c;	int len=0;	s_terminate(to);	/* end of input */	if ((c = Bgetc(fp)) < 0)		return 0;	/* take care of inconsequentials */	for(;;) {		/* eat leading white */		while(c==' ' || c=='\t' || c=='\n' || c=='\r')			c = Bgetc(fp);		if(c < 0)			return 0;		/* take care of comments */		if(c == '#'){			do {				c = Bgetc(fp);				if(c < 0)					return 0;			} while(c != '\n');			continue;		}		/* if we got here, we've gotten something useful */		break;	}	/* gather up a line */	for(;;) {		len++;		switch(c) {		case -1:			s_terminate(to);			return len ? to->ptr-len : 0;		case '\\':			c = Bgetc(fp);			if (c != '\n') {				s_putc(to, '\\');				s_putc(to, c);			}			break;		case '\n':			s_terminate(to);			return len ? to->ptr-len : 0;		default:			s_putc(to, c);			break;		}		c = Bgetc(fp);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -