【发布时间】:2015-11-29 01:25:04
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun1(void);
void func1()
{
printf("Function1 executed \n");
}
int main()
{
char syscom[256];
char check[] = "cmd";
do
{
printf("Enter function : ");
fflush (stdout);
scanf("%255s",syscom);
int numb;
numb = strcmp("funct1",syscom);
printf("%d\n",numb);
if (numb == 1)
{
func1();
}
}while(strcmp("quit",syscom) != 0);
return 0;
}
由于某种原因,strcmp 在 do-while 循环中运行良好,但在实际循环中,您可以选择它始终返回 1 的函数。例如在 Enter 函数部分,即使输入随机字符串,它也会像我想要的那样生成 1 而不是 0。我知道 c++ 会让这个程序变得轻而易举,但我想在 c 上使用它。
所以我把标题设置为多个字符串,因为程序将有多个函数,这些不包括在内,因为我不知道如何在多个函数上使用 strcmp。
【问题讨论】:
-
numb = strcmp("funct1", syscom)如果匹配则将numb设置为0,如果您输入的字符串按字母顺序排列在"funct1"之后,则设置1,如果在之前则设置-1。 -
根据您的描述,您需要
if (numb == 0),而不是if (numb == 1)。如果字符串匹配,strcmp()返回0。
标签: c arrays compare string-comparison strcmp