Ⅰ c语言实现用户指令实现 用户输入字符串 然后根据要求执行 怎么做呢
以下代码可以做你要的加减乘除运算,变量名可以任意输入,可以有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>
usingnamespacestd;
typedefstruct{
intvar;
charvarname[128];
}Variable;
std::vector<Variable>Var;
//判断变量还是数值
intisVarName(char*p)
{
if(p[0]<'0'||p[0]>'9')return1;
return0;
}
//去掉前后空格
char*FilterSpace(char*p)
{
inti;
while(*p=='')p++;//跳过前面的空格
i=strlen(p);
while(i&&p[i-1]==''){p[i-1]=0;i--;}//去掉后面的空格
returnp;
}
//取变量int值
intgetInt(char*p)
{
p=FilterSpace(p);
if(isVarName(p))
{
for(inti=0;i<Var.size();i++)
{
if(!strcmp(p,Var[i].varname))
{
returnVar[i].var;
}
}
}
else
{
returnatol(p);
}
return0;
}
//显示
voidprint(char*p)
{
char*t;
p=FilterSpace(p);
if(p[0]!='"')
{
printf("%d ",getInt(p));
return;
}
t=strstr(p+1,""");
if(!t)
{
printf("error!");
return;
}
*t=0;
printf(p+1);
printf(" ");
}
//运算操作
voidOperation(char*p)
{
intn1,n2;
char*t;
Variable*v;
t=strstr(p,"=");
if(t)
{
v=NULL;
*t=0;
p=FilterSpace(p);
if(!isVarName(p))
{
printf("不能赋值给数值 ");
return;
}
for(inti=0;i<Var.size();i++)
{
if(!strcmp(p,Var[i].varname))
{
v=&Var[i];
break;
}
}
if(!v)
{
VariablenewV;
if(strlen(p)>sizeof(newV.varname))
{
printf("变量名不能大于%d个字符 ",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 ",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 ",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 ",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 ",v->varname,v->var);//若要立即显示结果就加上本行
return;
}
//赋值
v->var=getInt(p);
return;
}
}
voidmain()
{
charcmdstr[1024];
while(1)
{
printf(">>");
gets(cmdstr);
if(!strncmp(cmdstr,"print",5))
{
print(cmdstr+5);
}
elseif(!strcmp(cmdstr,"exit"))//输入exit退出
{
return;
}
elseif(strstr(cmdstr,"="))
{
Operation(cmdstr);
}
}
}
Ⅱ c语言如何实现两行输入
如果要 ,那么得输入两个回车。如果没有 ,输入一次之后第二个没输入就结束。
#include<stdio.h>
int main()
{
char c1,c2;
printf("Is the first numberan int (y/n)? ");
scanf("%c",&c1);
printf("Is the second number int (y/n)? ");
scanf("%c",&c2);
scanf("%c",&c2);
}
因为scanf把输入的回车也输入了一次,所以中间再读一下,把回车读掉。
(2)C语言如何实现输入字符扩展阅读:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
Ⅲ c语言中如何输入输出字符串
在<string.h>头文件中用字符串处理函数输入和输出,gest用来输入,puts用来输出。
字符串输入函数gets,从键盘键入以回车结束的字符串放入字符数组中,并自动加’ '。输入串长度应小于字符数组维数,字符串中可以包含空格。
字符串输出函数puts,向显示器输出字符串(输出完,自动换行,即用' '替'