文字转声明: 编写程序将特定格式的输入转换为C语言声明
一. 程序功能 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 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()) != ];) ; *p = ; return tokentype = BRACKETS; } else if (isalpha(c)) { for (*p++ = c; isalnum(c = p_getch());) *p++ = c; *p = ; p_ungetch(c); return tokentype = NAME; } else return tokentype = c; return (bufp > 0) ? buf[--bufp]: getchar(); if (bufp < BUFSIZE) buf[bufp++] = c; else printf("Error: (ungetch) Too many chars in buffer1n");
编写程序将特定格式的输入转换为C语言声明.
二. 程序源码
#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 gettoken(void)
{
}
#define BUFSIZE 100
char buf[BUFSIZE];
int bufp = 0;
int p_getch(void)
{
}
void p_ungetch(int c)
{
}
三. 程序小结
比如:
输入: x * char
输出: char *x
输入: daytab * [13] int
输出: int (*daytab)[13]
关键词: 文字转声明编写程序特定格式C语言声

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码