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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中如何输入一段字符串然后执行某程序?相关的知识,希望对你有一定的参考价值。

一下程序运行在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); 放到前面就不符合我的意思了!!!

可以按照如下步骤:
1 读入字符串,可以使用scanf以%s的方式读入字符串,也可以以gets一次读入整行字符串。
2 判断字符串。使用strcmp函数,与设定的字符串相比较。如输入字符串存在字符数组cmd中,当输入"test"的时候执行程序,那么当strcmp(str, "test")返回值为0时,代表需要执行对应程序。
3 执行程序。
如果要执行的是某一个函数,那么直接在2步中判断成功时调用对应函数即可。
如果要执行的是另外一个可执行文件,可以通过
system(exec_file_name);
的方式,执行可执行文件。其中exec_file_name是存储要执行的可执行文件名及路径的字符串。
参考技术A 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");

//---------------------------------------------------------------------------本回答被提问者采纳
参考技术B 我不知道你下边的程序是怎么运行的…………连编译也过不了……
scanf()函数的返回值不是字符串……

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

还有第一个程序
gets()的确不可以接收回车,但可以接收空格
而且这两个程序都正确……没有错误
参考技术C #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");
参考技术D 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他就会执行相应的函数!
怎么不符合呢?

以上是关于c语言中如何输入一段字符串然后执行某程序?的主要内容,如果未能解决你的问题,请参考以下文章

C语言如何一次输入多个字符串,然后再输出

如何用c语言编写一个程序:输入字符串,统计出某指定字符在字符串中出现的次数?

编写html中如何将中间某一个字符改变字体颜色?

C语言 编写一个程序 能够统计一段文字里相同字符串的个数

用C语言怎么样把用户输入的字符串转化成在源程序中可执行的表达式?

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