Ⅰ 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,向顯示器輸出字元串(輸出完,自動換行,即用' '替'