c语言实现用户指令实现 用户输入字符串 然后根据要求执行 怎么做呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言实现用户指令实现 用户输入字符串 然后根据要求执行 怎么做呢相关的知识,希望对你有一定的参考价值。

比如用户输入print“hello world”,就输出hello world
比如先赋值i=0 用户输入print i,就输出0,用户输入i=1,电脑识别出等于号,就输出1
比如用户输入i=i+1,电脑识别出等于号和加号,就输出2
然后加减乘除一样 主要是字符串的识别,只识别这几种就可以 跪求代码解答

以下代码可以做你要的加减乘除运算,变量名可以任意输入,可以有N个变量名,运算符和变量之间还可以空格,比如 :

i=1

j = i

print j

abc=22

j=i * abc

print j

print "helloworld"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;

typedef struct
int var;
char varname[128];
Variable;
std::vector<Variable> Var;

//判断变量还是数值
int isVarName(char *p)

if(p[0]<'0'||p[0]>'9') return 1;
return 0;


//去掉前后空格
char *FilterSpace(char *p)

int i;
while(*p==' ') p++;//跳过前面的空格
i=strlen(p);
while(i&&p[i-1]==' ') p[i-1]=0; i--;//去掉后面的空格
return p;


//取变量int值
int getInt(char *p)

p=FilterSpace(p);
if(isVarName(p))

for(int i=0;i<Var.size();i++)

if(!strcmp(p,Var[i].varname))

return Var[i].var;



else

return atol(p);

return 0;


//显示
void print(char *p)

char *t;
p=FilterSpace(p);
if(p[0]!='"')

printf("%d\\n",getInt(p));
return;

t=strstr(p+1,"\\"");
if(!t)

printf("error!");
return;

*t=0;
printf(p+1);
printf("\\n");


//运算操作
void Operation(char *p)

int n1,n2;
char *t;
Variable *v;
t=strstr(p,"=");
if(t)

v=NULL;
*t=0;
p=FilterSpace(p);
if(!isVarName(p))

printf("不能赋值给数值\\n");
return;

for(int i=0;i<Var.size();i++)

if(!strcmp(p,Var[i].varname))

v=&Var[i];
break;


if(!v)

Variable newV;
if(strlen(p)>sizeof(newV.varname))

printf("变量名不能大于%d个字符\\n",sizeof(newV.varname));
return;

newV.var=0;
strcpy(newV.varname,p);
Var.push_back(newV);
v=&Var[Var.size()-1];


p=t+1;
t=strstr(p,"+");
if(t)

//加法运算
*t=0;
n1=getInt(p);
n2=getInt(t+1);
v->var=n1+n2;
//printf("%s=%d\\n",v->varname,v->var);//若要立即显示结果就加上本行
return;


t=strstr(p,"-");
if(t)

//减法运算
*t=0;
n1=getInt(p);
n2=getInt(t+1);
v->var=n1-n2;
//printf("%s=%d\\n",v->varname,v->var);//若要立即显示结果就加上本行
return;


t=strstr(p,"*");
if(t)

//乘法运算
*t=0;
n1=getInt(p);
n2=getInt(t+1);
v->var=n1*n2;
//printf("%s=%d\\n",v->varname,v->var);//若要立即显示结果就加上本行
return;


t=strstr(p,"/");
if(t)

//除法运算
*t=0;
n1=getInt(p);
n2=getInt(t+1);
v->var=n1/n2;
//printf("%s=%d\\n",v->varname,v->var);//若要立即显示结果就加上本行
return;


//赋值
v->var=getInt(p);
return;



void main()

char cmdstr[1024];
while(1)

printf(">>");
gets(cmdstr);
if(!strncmp(cmdstr,"print",5))

print(cmdstr+5);

else if(!strcmp(cmdstr,"exit"))//输入exit退出

return;

else if(strstr(cmdstr,"="))

Operation(cmdstr);


参考技术A 现代v周汝昌:《红楼梦》是我们中华民族的一部古往今来、绝无仅有的“文化小说”。如果你想要了解中华民族的文化特点特色,最好的——既最有趣味又最为捷便(具体、真切、生动)的办法就是去读通了《红楼梦》。……《红楼梦》是一部以重人、爱心、唯人为中心思想的书,是我们中华文化史上的一部最伟大的著作。所以他说,《红楼梦》是我们中华民族文化的代表性最强的作品。 [8] [15]

以上是关于c语言实现用户指令实现 用户输入字符串 然后根据要求执行 怎么做呢的主要内容,如果未能解决你的问题,请参考以下文章

C语言中的格式化输出函数和格式化输入函数分别是啥?

C语言实现模拟用户登录

用C语言模拟实现密码输入

Laravel实现用户名或密码登录

C++如何实现递增字符串。就是输入一个字符(整行)然后以01 02

用c语言编一个程序:根据用户输入的数字(1~7),输出英文的星期名称。怎么做