一. 程序功能編寫程序將特定格式的輸入轉(zhuǎn)換為C語(yǔ)言聲明.
二. 程序源碼
#include
#include
#include
#define MAXTOKEN 100
enum {NAME, PARENS, BRACKETS};
int tokentype;
char token[MAXTOKEN];
char name[MAXTOKEN];
char datatype[MAXTOKEN];
char out[1000];
int p_getch(void);
void p_ungetch(int);
int main(void)
{
int type, lasttype;
char temp[MAXTOKEN];
printf("Please input(ctrl+z to quit)n");
while (gettoken() != EOF)
{
strcpy(out, token);
lasttype = 0;
while ((type = gettoken()) != n)
{
if (type == NAME)
{
sprintf(temp, "%s %s", token, out);
strcpy(out, temp);
}
else
{
if (lasttype == *)
{
sprintf(temp, "(%s)", out);
strcpy(out, temp);
}
if (type == PARENS || type == BRACKETS)
strcat(out, token);
else if (type == *)
{
sprintf(temp, "*%s", out);
strcpy(out, temp);
}
else
printf("Error: Invalid input at %s!n", token);
}
lasttype = type;
}
printf("%sn",out);
}
return 0;
}
int gettoken(void)
{
int c;
char *p = token;
while ((c = p_getch()) == || c == t)
;
if (c == ()
{
if ((c = p_getch()) == ))
{
strcpy(token, "()");
return tokentype = PARENS;
}
else
{
p_ungetch(c);
return tokentype = (;
}
}
else if (c == [)
{
for (*p++ = c; (*p++ = p_getch()) != ];)
;