コード例 #1
0
int getop(char str[]) {
    int i, c, cmd;
    if (line_i == 0) {
        mgetline(line);
    }

    /* skip ' ' and '\t' */
    while((c=line[line_i++]) != '\0') {
        if (c != ' ' && c != '\t') {
            break;
        }
    }

    /* not a number */
    if(isdigit(c) == 0 && c != '.') {
        if (c == '-') {
            if (isdigit(line[line_i]) == 0) {
                return '-';
            } 
        } else {
            if (parse_var(c) == VAR) {
                str[0] = c;
                str[1] = '\0';
                return VAR;
            }

            if ((cmd = parse_cmd(c)) != NONECMD) {
                return cmd;
            } else {
                if (c == '\n') {
                    line_i = 0;
                }
                return c;
            }
        }
    }

    /* put number into str */
    line[--line_i] = c;
    i = 0;
    while((c=line[line_i++]) != EOF) {
        if (isdigit(c) || c == '.' || c == '-') {
            str[i++] = c;
        } else {
            break;
        }
    }
    str[i] = '\0';
    line[--line_i] = c;

    return NUMBER;
}
コード例 #2
0
ファイル: 1-16.c プロジェクト: mcpherrinm/K-R-Solutions
int main() {
	int len;
	int max;
	char line[MAXLINE];
	char longest[MAXLINE];

	max = 0;
	while ((len = mgetline(line, MAXLINE)) > 0)
		if (len > max) {
			max = len;
			copy(longest, line);
		}
	if (max > 0)
		printf("%d: %s", max, longest);
	return 0;
}
コード例 #3
0
int readlines(char *lineptr[],int maxlines)
{
	int len,nlines;
	char *p,line[MAXLEN];

	nlines = 0;
	while((len=mgetline(line,MAXLEN))>0)
		if(nlines >= maxlines || (p=alloc(len)) == NULL)
			return -1;
		else
		{
			line[len-1]='\0';	/* delete newline */
			strcpy(p,line);
			lineptr[nlines++]=p;
		}
	return nlines;
}
コード例 #4
0
int readlines(char *lineptr[], char *buff, int maxlines) {
  int len, nlines;
  char *p, line[MAXLEN];

  nlines = 0;
  p = buff;
  while ((len = mgetline(line, MAXLEN)) > 0) {
    if (nlines >= maxlines) {
      return -1;
    } else {
      line[len - 1] = '\0';
      strcpy(p, line);
      lineptr[nlines++] = p;
      p += MAXLEN;
    }
  }

  return nlines;
}
コード例 #5
0
int main(void)
{
    int len,max;
    char line[MAXLINE],maxline[MAXLINE];

    max =0;

    while((len=mgetline(line,MAXLINE)) > 0)
    {
        if(len > max)
        {
            max = len;
            copy(maxline,line);
        }
    }

    if(max>0)
        printf("%s",maxline);
}
コード例 #6
0
/* readlines: read input lines */
int readlines(char *lineptr[],char *linestor,int maxlines)
{
    int len,nlines;
    char line[MAXLEN];
    char *p = linestor;
    char *linestop = linestor + MAXSTOR;

    nlines=0;

    while((len=mgetline(line,MAXLEN)) > 0)
        if(nlines >= maxlines || p+len > linestop)
            return -1;
        else
        {
            line[len-1] = '\0';
            strcpy(p,line);
            lineptr[nlines++]=p;
            p+=len;
        }
    return nlines;
}
コード例 #7
0
ファイル: maxline2.c プロジェクト: minhajuddin/knrc
int main(int argc, char const *argv[])
{
  int len;
  int max;

  char line[MAXLINE];
  char longest[MAXLINE];

  max = 0;

  while((len = mgetline(line, MAXLINE)) > 0){
    if(len > max){
      max = len;
      mcopy(longest, line);
    }

  }

  if(max > 0)
    printf("%s", longest);

  return 0;
}