📄 stdio.lib
字号:
/////////////////////////////////////////////
// FUNCTION TO SCAN VALUES FROM CONSOLE
void inputto()
{
char name_var[31];
int ai,aj,value;
read_buffer(name_var);
value = return_position(name_var,&ai,&aj);
if(value != -1)
{
if(ai==INTEGER)
scanf("%d",&_intvar[aj]);
else if(ai==CHARACTER)
{
fflush(stdin);
scanf("%c",&_charvar[aj]);
}
else if(ai==STRING)
{
fflush(stdin);
scanf("%s",_stringvar[aj]);
}
}
else
exit(ERROR);
}
////////////////////////////////////
// FUNCTON FOR VARIABLE DECLARATION
void var()
{
int i;
char c,name_var[VARLENGTH],type_var[100];
read_buffer(name_var); // HOLDS VARIABLE NAME
if(strlen(name_var) > VARLENGTH)
exit(ERROR);
read_buffer(type_var); // VARIABLE TYPE
if(strcmp(type_var,"#")==0) // STRING TYPE
{
if(string_var > MAXVAR)
exit(ERROR);
strcpy(holder[STRING][string_var],name_var);
string_var++;
}
else if(strcmp(type_var,"%")==0)
{
if(int_var > MAXVAR)
exit(ERROR);
strcpy(holder[INTEGER][int_var],name_var);
int_var++;
}
else if(strcmp(type_var,"$")==0)
{
if(char_var > MAXVAR)
exit(ERROR);
strcpy(holder[CHARACTER][char_var],name_var);
char_var++;
}
else
exit(ERROR);
}
//////////////////////////////////////////
// FUNCTION TO SENT OUTPUT TO CONSOLE
void print_com()
{
char read[100];
while(1)
{
read_buffer(read);
if(strcmp(read,"<<")==0)
break;
if(strcmp(read,"$N")==0)
printf("\n");
else if(strcmp(read,"$T")==0)
printf("\t");
else if(strcmp(read,"$A")==0)
printf("\a");
else if(strcmp(read,"$R")==0)
printf("\r");
else if(strcmp(read,"$S")==0)
printf(" ");
else if(strcmp(read,"$B")==0)
printf("\b");
else if(strcmp(read,"^CHR")==0)
{
read_buffer(read);
if(atoi(read) > 0)
printf("%c",atoi(read));
else
exit(ERROR);
}
else
printf(" %s",read);
}
}
/////////////////////////////////////////////////
// FUNCTION FOR ASSIGNMENT OF VARIABLES
void setvar()
{
char read[31],read2[5],read3[31];
int ai,aj,bi,bj,value;
read_buffer(read); // FIRST VARIABLE
read_buffer(read2); // OPERATOR
if(strcmp(read2,"=")!=0 && strcmp(read2,"+=")!=0 && strcmp(read2,"-=")!=0 && strcmp(read2,"*=")!=0 && strcmp(read2,"/=")!=0 && strcmp(read2,"%=")!=0)
{
printf("\nUnresolved assignment sysmbol %s in object module",read2);
printf("\n ^");
exit(ERROR);
}
read_buffer(read3); // SECOND VARIABLE
// GET POSITION OF FIRST VARIABLE
value = return_position(read,&ai,&aj);
if(value == -1)
{
printf("\nUndefined Symbol %s in object module",read);
printf("\n ^");
exit(0);
}
// GET POSITION OF SECOND VARIABLE
value = return_position(read3,&bi,&bj);
if(value==-1)
{
if(ai==INTEGER) // INTEGER
{
if(strcmp(read2,"=")==0)
_intvar[aj]=atoi(read3);
else if(strcmp(read2,"+=")==0)
_intvar[aj]=_intvar[aj]+atoi(read3);
else if(strcmp(read2,"-=")==0)
_intvar[aj]=_intvar[aj]-atoi(read3);
else if(strcmp(read2,"*=")==0)
_intvar[aj]=_intvar[aj]*atoi(read3);
else if(strcmp(read2,"/=")==0)
_intvar[aj]=_intvar[aj]/atoi(read3);
else if(strcmp(read2,"%=")==0)
_intvar[aj]=_intvar[aj]%atoi(read3);
}
else if(ai==CHARACTER) /* character */
{
if(strcmp(read2,"=")==0)
_charvar[aj]=atoi(read3);
else if(strcmp(read2,"+=")==0)
_charvar[aj]=_charvar[aj]+atoi(read3);
else if(strcmp(read2,"-=")==0)
_charvar[aj]=_charvar[aj]-atoi(read3);
else if(strcmp(read2,"*=")==0)
_charvar[aj]=_charvar[aj]*atoi(read3);
else if(strcmp(read2,"/=")==0)
_charvar[aj]=_charvar[aj]/atoi(read3);
else if(strcmp(read2,"%=")==0)
_charvar[aj]=_charvar[aj]%atoi(read3);
}
else if(ai==STRING)
{
if(strcmp(read2,"=")==0)
strcpy(_stringvar[aj],read3);
else if(strcmp(read2,"+=")==0)
strcat(_stringvar[aj],read3);
else
{
printf("\nUnresolved Symbol %s in object module",read3);
printf("\n ^");
exit(ERROR);
}
}
}
else
{
if(ai==INTEGER) /* integer */
{
if(bi==INTEGER) /* integer */
{
if(strcmp(read2,"=")==0)
_intvar[aj]=_intvar[bj];
else if(strcmp(read2,"+=")==0)
_intvar[aj]=_intvar[aj]+_intvar[bj];
else if(strcmp(read2,"-=")==0)
_intvar[aj]=_intvar[aj]-_intvar[bj];
else if(strcmp(read2,"*=")==0)
_intvar[aj]=_intvar[aj]*_intvar[bj];
else if(strcmp(read2,"/=")==0)
_intvar[aj]=_intvar[aj]/_intvar[bj];
else if(strcmp(read2,"%=")==0)
_intvar[aj]=_intvar[aj]%_intvar[bj];
}
else if(bi==CHARACTER) /* character */
{
if(strcmp(read2,"=")==0)
_intvar[aj]=_charvar[bj];
else if(strcmp(read2,"+=")==0)
_intvar[aj]=_intvar[aj]+_charvar[bj];
else if(strcmp(read2,"-=")==0)
_intvar[aj]=_intvar[aj]-_charvar[bj];
else if(strcmp(read2,"*=")==0)
_intvar[aj]=_intvar[aj]*_charvar[bj];
else if(strcmp(read2,"/=")==0)
_intvar[aj]=_intvar[aj]/_charvar[bj];
else if(strcmp(read2,"%=")==0)
_intvar[aj]=_intvar[aj]%_charvar[bj];
}
else if(bi==STRING) /* String */
{
printf("\nIllegal Assignment");
exit(ERROR);
}
}
else if(ai==CHARACTER) /* character */
{
if(bi==INTEGER) /* integer */
{
if(strcmp(read2,"=")==0)
_charvar[aj]=_intvar[bj];
else if(strcmp(read2,"+=")==0)
_charvar[aj]=_charvar[aj]+_intvar[bj];
else if(strcmp(read2,"-=")==0)
_charvar[aj]=_charvar[aj]-_intvar[bj];
else if(strcmp(read2,"*=")==0)
_charvar[aj]=_charvar[aj]*_intvar[bj];
else if(strcmp(read2,"/=")==0)
_charvar[aj]=_charvar[aj]/_intvar[bj];
else if(strcmp(read2,"%=")==0)
_charvar[aj]=_charvar[aj]%_intvar[bj];
}
else if(bi==CHARACTER) /* character */
{
if(strcmp(read2,"=")==0)
_charvar[aj]=_charvar[bj];
else if(strcmp(read2,"+=")==0)
_charvar[aj]=_charvar[aj]+_charvar[bj];
else if(strcmp(read2,"-=")==0)
_charvar[aj]=_charvar[aj]-_charvar[bj];
else if(strcmp(read2,"*=")==0)
_charvar[aj]=_charvar[aj]*_charvar[bj];
else if(strcmp(read2,"/=")==0)
_charvar[aj]=_charvar[aj]/_charvar[bj];
else if(strcmp(read2,"%=")==0)
_charvar[aj]=_charvar[aj]%_charvar[bj];
}
else if(bi==STRING) /* String */
{
printf("\nIllegal Assignment");
exit(ERROR);
}
}
else if(ai==STRING) /* String */
{
if(bi==INTEGER) /* integer */
{
printf("\nIllegal Assignment");
exit(ERROR);
}
else if(bi==CHARACTER) /* character */
{
printf("\nIllegal Assignment");
exit(ERROR);
}
else if(bi==STRING) /* String */
{
if(strcmp(read2,"=")==0)
strcpy(_stringvar[aj],_stringvar[bj]);
else if(strcmp(read2,"+=")==0)
strcat(_stringvar[aj],_stringvar[bj]);
else
{
printf("\nIllegal Assignment");
exit(ERROR);
}
}
}
}
}
/////////////////////////////////////////////
// FUNCTION TO PRINT VALUES OF VARIABLES
void printvar()
{
char varname[31];
int ai,aj,value;
read_buffer(varname); // VARIABLE NAME
// GET POSITION OF VARIABLE
value = return_position(varname,&ai,&aj);
if(value == -1)
exit(ERROR);
if(ai==INTEGER) // INTEGER
printf("%d",_intvar[aj]);
else if(ai==CHARACTER) // CHARACTER
printf("%c",_charvar[aj]);
else if(ai==STRING) // STRING
printf("%s",_stringvar[aj]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -