/****************************************************************************
**
*A read_value.c ANUPQ source Eamonn O'Brien
**
*Y Copyright 1995-2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
*Y Copyright 1995-2001, School of Mathematical Sciences, ANU, Australia
**
*/
#include "pq_defs.h"
#include "constants.h"
#include "pcp_vars.h"
/* function to read line */
void read_line(void)
{
int c;
while ((c = getchar()) != EOF && c != '\n')
;
}
/* continue to read parameter until its value is at least lower_bound */
void read_value(Logical newline, char *string, int *value, int lower_bound)
{
char response[MAXWORD];
Logical error;
Logical reading = TRUE;
int nmr_items;
while (reading) {
printf("%s", string);
nmr_items = scanf("%s", response);
verify_read(nmr_items, 1);
/* read past any comments */
while (response[0] == COMMENT) {
read_line();
nmr_items = scanf("%s", response);
verify_read(nmr_items, 1);
}
if (!isatty(0))
printf("%s ", response);
if (!isatty(0) && newline)
printf("\n");
*value = string_to_int(response, &error);
if (error)
printf("Error in input -- must be integer only (but is '%s')\n", response);
else if ((reading = (*value < lower_bound)))
printf("Error: supplied value must be at least %d\n", lower_bound);
}
}
/* convert string s to integer */
int string_to_int(char *s, Logical *error)
{
int i, n, sign;
*error = FALSE;
for (i = 0; isspace(s[i]); i++) /* skip white space */
;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') /* skip sign */
i++;
for (n = 0; s[i] != '\0'; i++) {
if (isdigit(s[i])) {
n = 10 * n + (s[i] - '0');
} else {
*error = TRUE;
return 0;
}
}
return sign * n;
}
/* read in string */
char *GetString(char *string)
{
int nmr_items;
char *s = (char *)malloc(MAXIDENT * sizeof(char));
printf("%s", string);
nmr_items = scanf("%s", s);
verify_read(nmr_items, 1);
while (s[0] == COMMENT) {
read_line();
nmr_items = scanf("%s", s);
verify_read(nmr_items, 1);
}
if (!isatty(0))
printf("%s\n", s);
return s;
}
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-11-04)
¤
*© Formatika GbR, Deutschland