c语言中如何输入一段字符串然后执行某程序?

一下程序运行在turboc2.0中:#include"stdio.h"main(){voidmingling(charb[]);chara[]="zhang";mingl... 一下程序运行在turbo c2.0中:
#include"stdio.h"
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
if(strcmp(gets(a),b)==0)
printf("\n%d\n",i);
else
printf("error");
}
我的想法是:输入一段字符串,然后系统判断是否符合要求,符合就执行某条程序,以上是我写的,但用gets命令不能输入空格和回车,所以我改成:#include"stdio.h"
main()
{ void mingling(char b[]);
char a[]="zhang";
mingling(a);
}
void mingling(char b[])
{ int i;
char a[10];
i=3;
if(strcmp(scanf("%s",a),b)==0)
printf("\n%d\n",i);
else
printf("error");
}
但运行后输入zhang显示的确实error,请问这是怎么回事?
有什么其他办法吗?我是在turbo c2.0中运行的。
可是我的想法是只要输入zhang字符串就执行某个函数,
把scanf("%s",a); 放到前面就不符合我的意思了!!!
展开
 我来答
风若远去何人留
推荐于2017-09-12 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部
可以按照如下步骤:
1 读入字符串,可以使用scanf以%s的方式读入字符串,也可以以gets一次读入整行字符串。
2 判断字符串。使用strcmp函数,与设定的字符串相比较。如输入字符串存在字符数组cmd中,当输入"test"的时候执行程序,那么当strcmp(str, "test")返回值为0时,代表需要执行对应程序。
3 执行程序。
如果要执行的是某一个函数,那么直接在2步中判断成功时调用对应函数即可。
如果要执行的是另外一个可执行文件,可以通过
system(exec_file_name);
的方式,执行可执行文件。其中exec_file_name是存储要执行的可执行文件名及路径的字符串。
匿名用户
推荐于2017-10-03
展开全部
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");
}
//---------------------------------------------------------------------------
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DWing124
2008-12-09 · TA获得超过316个赞
知道答主
回答量:102
采纳率:0%
帮助的人:0
展开全部
我不知道你下边的程序是怎么运行的…………连编译也过不了……
scanf()函数的返回值不是字符串……

所以第二个程序应该改成
i=3
scanf("%s",a);
if(strcmp(a,b)==0)
…………

还有第一个程序
gets()的确不可以接收回车,但可以接收空格
而且这两个程序都正确……没有错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chylg2008
2008-12-09 · 超过17用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:0
展开全部
#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");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wubenhua2008
2008-12-09 · TA获得超过934个赞
知道小有建树答主
回答量:455
采纳率:0%
帮助的人:460万
展开全部
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他就会执行相应的函数!
怎么不符合呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式