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

📄 goto.c

📁 Unix 第 6 版的 sh 手册和源码
💻 C
字号:
#include <unistd.h>

int	offset=0;
int getlin(char *s);
int compar(char *s1, char *s2);
int getC(void);

int main(int argc, char **argv)
{
	char line[64];

	if (argc<2 || isatty(0)) {
		write(1, "goto error\n", 11);
		lseek(0, 0, 2);
		return 1;
	}
	lseek(0, 0, 0);
	do {
		if (getlin(line)) {
			write(1, "label not found\n", 16);
			return 1;
		}
	} while (compar(line, argv[1]));
	lseek(0, offset, 0);
	return 0;
}

int getlin(char *s)
{
	int ch, i;
	i = 0;

	while ((ch=getC())!='\0' && ch!=':') {
		while(ch!='\n' && ch!='\0')
			ch = getC();
	}
	if (ch=='\0')
		return(1);
	while ((ch=getC())==' ');
	while (ch!=' ' && ch!='\n' && ch!='\0') {
		s[i++] = ch;
		ch = getC();
	}
	while(ch != '\n')
		ch = getC();
	s[i] = '\0';
	return(0);
}

int compar(char *s1, char *s2)
{
	int i;
	i = 0;

	while(1) {
		if(s1[i] != s2[i])
			return(1);
		if (s1[i++] == '\0')
			return(0);
	}
} 

int getC(void)
{
	char cc;
	offset++;

	if(read(0, &cc, 1))
		return cc;
	else
		return 0;
}

⌨️ 快捷键说明

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