c语言中如何输入一段字符串然后执行某程序? c语言实现用户指令实现 用户输入字符串 然后根据要求执行 怎...
\u5728C\u8bed\u8a00\u4e2d\u5982\u4f55\u5b9e\u73b0\u7528\u952e\u76d8\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5e76\u6253\u5370\u51fa\u6765\uff1f\u5728C\u8bed\u8a00\u4e2d\u8f93\u5165\u5b57\u7b26\u4e32\u540e\u7136\u540e\u6253\u5370\u51fa\u6765\u7684\u7f16\u7a0b\u65b9\u6cd5\u5982\u4e0b\uff1a
1.\u9996\u5148\u9700\u8981\u5148\u5b9a\u4e49\u4e00\u4e2a\u5b58\u653e\u5b57\u7b26\u4e32\u7684\u6570\u7ec4\u7a7a\u95f4\uff0c\u5982\u7ed9\u5b57\u7b26\u4e32100\u4e2a\u6570\u7ec4\u7a7a\u95f4\u3002
2.\u63a5\u7740\u4f7f\u7528gets()\u51fd\u6570\u6765\u83b7\u53d6\u952e\u76d8\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u3002\u4e00\u822c\u683c\u5f0f\u4e3agets(\u5b9a\u4e49\u7684\u5b57\u7b26\u6570\u7ec4\u540d)\u3002
3.\u7136\u540e\u518d\u4f7f\u7528puts()\u51fd\u6570\u6765\u8f93\u51fa\u4e4b\u524d\u8f93\u5165\u7684\u5b57\u7b26\u4e32\u5185\u5bb9\u3002\u4e00\u822c\u683c\u5f0fputs\uff08\u5b9a\u4e49\u7684\u5b57\u7b26\u6570\u7ec4\u540d\uff09\u3002
4.\u6700\u7ec8\u8fd0\u884c\u7a0b\u5e8f\uff0c\u5373\u53ef\u6210\u529f\u5b9e\u73b0\u8f93\u5165\u5b57\u7b26\u4e32\uff0c\u7136\u540e\u539f\u6837\u5728\u5c4f\u5e55\u4e2d\u8f93\u51fa\u5b57\u7b26\u4e32\u3002
\u6269\u5c55\u8d44\u6599\uff1a
1.gets\u4ece\u6807\u51c6\u8f93\u5165\u8bbe\u5907\u8bfb\u5b57\u7b26\u4e32\u51fd\u6570\uff0c\u5176\u53ef\u4ee5\u65e0\u9650\u8bfb\u53d6\uff0c\u4e0d\u4f1a\u5224\u65ad\u4e0a\u9650\uff0c\u4ee5\u56de\u8f66\u7ed3\u675f\u8bfb\u53d6\uff0c\u6240\u4ee5\u7a0b\u5e8f\u5458\u5e94\u8be5\u786e\u4fddbuffer\u7684\u7a7a\u95f4\u8db3\u591f\u5927\uff0c\u4ee5\u4fbf\u5728\u6267\u884c\u8bfb\u64cd\u4f5c\u65f6\u4e0d\u53d1\u751f\u6ea2\u51fa\u3002
2.puts()\u51fd\u6570\u7528\u6765\u5411\u6807\u51c6\u8f93\u51fa\u8bbe\u5907\uff08\u5c4f\u5e55\uff09\u8f93\u51fa\u5b57\u7b26\u4e32\u5e76\u6362\u884c\uff0c\u5177\u4f53\u4e3a\uff1a\u628a\u5b57\u7b26\u4e32\u8f93\u51fa\u5230\u6807\u51c6\u8f93\u51fa\u8bbe\u5907\uff0c\u5c06'\0'\u8f6c\u6362\u4e3a\u56de\u8f66\u6362\u884c\u3002\u5176\u8c03\u7528\u65b9\u5f0f\u4e3a\uff0cputs(s)\uff1b\u5176\u4e2ds\u4e3a\u5b57\u7b26\u4e32\u5b57\u7b26\uff08\u5b57\u7b26\u4e32\u6570\u7ec4\u540d\u6216\u5b57\u7b26\u4e32\u6307\u9488\uff09\u3002
\u53c2\u8003\u8d44\u6599\uff1a
\u767e\u5ea6\u767e\u79d1-gets
\u767e\u5ea6\u767e\u79d1-puts
\u4ee5\u4e0b\u4ee3\u7801\u53ef\u4ee5\u505a\u4f60\u8981\u7684\u52a0\u51cf\u4e58\u9664\u8fd0\u7b97\uff0c\u53d8\u91cf\u540d\u53ef\u4ee5\u4efb\u610f\u8f93\u5165\uff0c\u53ef\u4ee5\u6709N\u4e2a\u53d8\u91cf\u540d\uff0c\u8fd0\u7b97\u7b26\u548c\u53d8\u91cf\u4e4b\u95f4\u8fd8\u53ef\u4ee5\u7a7a\u683c\uff0c\u6bd4\u5982 \uff1a
i=1
j = i
print j
abc=22
j=i * abc
print j
print "helloworld"
#include #include #include #include using namespace std;typedef struct{int var;char varname[128];}Variable;std::vector Var;//\u5224\u65ad\u53d8\u91cf\u8fd8\u662f\u6570\u503cint isVarName(char *p){if(p[0]'9') return 1;return 0;}//\u53bb\u6389\u524d\u540e\u7a7a\u683cchar *FilterSpace(char *p){int i;while(*p==' ') p++;//\u8df3\u8fc7\u524d\u9762\u7684\u7a7a\u683ci=strlen(p);while(i&&p[i-1]==' ') {p[i-1]=0; i--;}//\u53bb\u6389\u540e\u9762\u7684\u7a7a\u683creturn p;}//\u53d6\u53d8\u91cfint\u503cint getInt(char *p){p=FilterSpace(p);if(isVarName(p)){for(int i=0;isizeof(newV.varname)){printf("\u53d8\u91cf\u540d\u4e0d\u80fd\u5927\u4e8e%d\u4e2a\u5b57\u7b26\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){//\u52a0\u6cd5\u8fd0\u7b97*t=0;n1=getInt(p);n2=getInt(t+1);v->var=n1+n2;//printf("%s=%d\n",v->varname,v->var);//\u82e5\u8981\u7acb\u5373\u663e\u793a\u7ed3\u679c\u5c31\u52a0\u4e0a\u672c\u884creturn;}t=strstr(p,"-");if(t){//\u51cf\u6cd5\u8fd0\u7b97*t=0;n1=getInt(p);n2=getInt(t+1);v->var=n1-n2;//printf("%s=%d\n",v->varname,v->var);//\u82e5\u8981\u7acb\u5373\u663e\u793a\u7ed3\u679c\u5c31\u52a0\u4e0a\u672c\u884creturn;}t=strstr(p,"*");if(t){//\u4e58\u6cd5\u8fd0\u7b97*t=0;n1=getInt(p);n2=getInt(t+1);v->var=n1*n2;//printf("%s=%d\n",v->varname,v->var);//\u82e5\u8981\u7acb\u5373\u663e\u793a\u7ed3\u679c\u5c31\u52a0\u4e0a\u672c\u884creturn;}t=strstr(p,"/");if(t){//\u9664\u6cd5\u8fd0\u7b97*t=0;n1=getInt(p);n2=getInt(t+1);v->var=n1/n2;//printf("%s=%d\n",v->varname,v->var);//\u82e5\u8981\u7acb\u5373\u663e\u793a\u7ed3\u679c\u5c31\u52a0\u4e0a\u672c\u884creturn;}//\u8d4b\u503cv->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"))//\u8f93\u5165exit\u9000\u51fa{return;}else if(strstr(cmdstr,"=")){Operation(cmdstr);}}}
1 读入字符串,可以使用scanf以%s的方式读入字符串,也可以以gets一次读入整行字符串。
2 判断字符串。使用strcmp函数,与设定的字符串相比较。如输入字符串存在字符数组cmd中,当输入"test"的时候执行程序,那么当strcmp(str, "test")返回值为0时,代表需要执行对应程序。
3 执行程序。
如果要执行的是某一个函数,那么直接在2步中判断成功时调用对应函数即可。
如果要执行的是另外一个可执行文件,可以通过
system(exec_file_name);
的方式,执行可执行文件。其中exec_file_name是存储要执行的可执行文件名及路径的字符串。
scanf("%s",a)
它的返回值并不是a的地址(也就是说不是字符串a),而是成功读取的变量个数,而且这个scanf()也不能将回车读取到a中,应该将scanf()放在strcmp()外面,另外,用到了strcmp()就要包含string.h文件:
//---------------------------------------------------------------------------
#include"stdio.h"
#include<string.h>
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
scanf("%s",a);
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
//---------------------------------------------------------------------------
如果想读取回车,就要用循环读取每个字符,例如:
//---------------------------------------------------------------------------
#include"stdio.h"
#include <string.h>
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i=0;
char c,a[10]={0};
while (i!=9&&(c=getchar())!=EOF) /*用CTRL+Z或者CTRL+D结束输入*/
a[i++]=c;
i=3;
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
//---------------------------------------------------------------------------
我不知道你下边的程序是怎么运行的…………连编译也过不了……
scanf()函数的返回值不是字符串……
所以第二个程序应该改成
i=3
scanf("%s",a);
if(strcmp(a,b)==0)
…………
还有第一个程序
gets()的确不可以接收回车,但可以接收空格
而且这两个程序都正确……没有错误
#include <stdio.h>
#include <stdlib.h>
int main()
{
void mingling(char b[]);
char a[]="zhang";
mingling(a);
return 0;
}
void mingling(char b[])
{
int i;
char a[10];
i=3;
scanf("%[^\n]",a);//%[^\n]使输入可以接收空格,scanf的返回值是输入的参数的个数,不是字符串
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
scanf("%s",a),返回的是个整数呀你拿个整数与b比较不行!
#include"stdio.h"
#include"string.h"
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
scanf("%s",a);
if(strcmp(a,b)==0)
printf("\n%d\n",i);
else
printf("error");
}
放到前面一样可以符合你要的!只要你输入的是zhang他就会执行相应的函数!
怎么不符合呢?
绛旓細char *p=a; /*灏嗘寚閽坧鎸囧悜a*/ int i,j,length=0;char temp; /*瀹氫箟涓涓涓棿鍙橀噺temp,鐢ㄤ簬浜ゆ崲瀛楃鐨勪綅缃*/ /*杈撳叆瑕佹帓搴鐨勫瓧绗︿覆*/ gets(p);length=strlen(p); /*璁$畻瀛楃涓茬殑闀垮害*/ /*灏嗗瓧绗︿覆涓殑瀛楃鎸変粠灏忓埌澶х殑椤哄簭杩涜姣旇緝*/ for(i=0;i<length-1;i++)for(j=i...
绛旓細include<stdio.h>#include<string.h>void main(){ char str1[80]={'\0'},str2[80]={'\0'}; int i=0,j=0; printf("璇杈撳叆涓涓瓧绗︿覆锛屽瓧绗︽暟灏忎簬80锛"); gets(str1); printf("璇疯緭鍏ョ殑瑕佸垹闄ょ殑瀛楃涓诧細"); gets(str2); for(j=0;j<strlen(str2);j++) { ...
绛旓細include<stdio.h> void fun(char *s){ char t[30];int k=0,i=0,j=0;while(s[i])t[k++]=s[i++];i=0;while(i<2*k-1){ if(i%2==0)s[i]=t[j++];else s[i]='*';//杩欓噷鐨*鏀逛负绌烘牸锛沬++;//鐢*锛堟槦鍙凤級涓轰簡鐪嬬潃鏇寸洿瑙 } s[i]='\0';} int main(){ char ...
绛旓細include<stdio.h> void main(){ char carr1[10],carr2[10];printf("please you inputs a 9 charters:");for(int i=0;i<9;i++){ scanf("%c",&carr1[i]);//杈撳叆瀛楃鍒板瓧绗︽暟缁刢arr1 } for(int i=0;i<9;i++){ carr2[9-i]=carr1[i];//灏嗗師鏉ョ殑carr1鍊掑簭鏀惧埌carr2 } ...
绛旓細鏈汉妤间富鎰忔濈殑鐞嗚В濡備笅:include<stdio.h> int main(){ int n;string a[4]; //string 涓哄瓧绗︿覆绫诲瀷 printf("璇杈撳叆鎮ㄨ杈撳嚭鐨勭n涓瓧绗︿覆");scanf("%d",&n);printf("%s\t",a[n-1]);return 0;}
绛旓細1銆侀鍏堟墦寮visual studio杞欢锛屾柊寤涓涓狢璇█鏂囦欢銆2銆佹帴鐫鍦–璇█鏂囦欢鐨勯《閮ㄥ鍏ュ簱鍐呫3銆佹帴鐫杩愮敤scanf鍑芥暟鎺ユ敹鐢ㄦ埛杈撳叆鐨勫瓧绗︿覆銆4銆鐒跺悗鎴戜滑鍒╃敤printf鍑芥暟鎵撳嵃涓涓嬬敤鎴疯緭鍏ョ殑鍐呭銆5銆佽繍琛岀▼搴忎互鍚庡氨浼氬脊鍑哄涓嬪浘鎵绀虹殑CMD鐣岄潰锛屾垜浠緭鍏ュ唴瀹瑰氨浼氳嚜鍔ㄦ帴鏀跺埌锛岀劧鍚庡師鏍疯緭鍑哄唴瀹广6銆佹渶鍚庡鏋滀綘鎺ユ敹鍏朵粬...
绛旓細include <stdio.h> include <string.h> define N 5 int subcmp(char *s,char *s1){int i;for(i=0;i<N-1;i++)if(s[i]!=s1[i])return 0;return 1;} main(){char s[200],s1[N]="寮犱笁",s2[N]="鏉庡洓";int i,j;printf("杈撳叆婧瀛楃涓:");gets(s);printf("澶勭悊鍓...
绛旓細杩欎釜寰堢畝鍗曘傚皢123鍜456浣滀负涓涓瓧绗︿覆璇诲叆锛鐒跺悗鎸夐渶瑕佺殑鏍煎紡杩涜鏍煎紡鍖栧悗杈撳嚭灏辫浜嗐備笅闈㈡槸涓涓渚嬪瓙锛歩nclude <stdio.h> int main(){ char s1[64],s2[64];scanf("%s %s",s1,s2);printf("%s+%s=%s%s\n", s1,s2,s1,s2);return 0;} 杩愯鎴浘锛
绛旓細include<string.h> include<stdio.h> int main(){ char a[100];int i,n,j=0,temp;gets(a);n=strlen(a);for(i=0;i<n/2;i++){ temp=a[i];a[i]=a[n-1-i];a[n-1-i]=temp;} a[n]='\0';puts(a);return 0;} ...
绛旓細鍦C璇█涓锛岃緭鍏ヨ緭鍑哄瓧绗︿覆鏈変互涓嬩袱绉嶆柟寮忥細1 鐢╯canf/printf杈撳叆杈撳嚭銆俿canf/printf鏄C璇█鐨鏍煎紡鍖栬緭鍏ヨ緭鍑哄嚱鏁帮紝鍙互鐢ㄤ簬杈撳叆杈撳嚭鍚勭鍩虹绫诲瀷锛屽瓧绗︿覆(char*)涔 鍏舵敮鎸佽寖鍥村唴銆傛牸寮忓寲瀛楃涓%s銆傚畾涔 char str[100];杈撳叆 scanf("%s",str);杈撳嚭 printf("%s",str);2 C璇█杩樻敮鎸佷笓闂ㄧ殑瀛楃涓茶緭鍏...