如何制作这个节目?

时间:2013-07-05 08:00:47

标签: c if-statement do-while strcmp strlen

我是新手。 谁能帮我创建这个程序? 我不知道如何制作这个节目。 这是该计划的描述。

  

创建了一个具有以下功能的程序。

     

■功能

     

首先输入参考字符串。

     

然后,检查它们是否与标准字符串

匹配      

计算找到匹配项的次数,并显示

     

如果找不到匹配项,则显示错误。

     

当我们输入字符串时   “结束”该计划将被关闭。

     

■注意事项·使用 strlen 功能首先,然后使用 strcmp 功能。

     

■运行示例(参考)

     

请输入参考字符串:call

     

完成后请输入[end]。

     

呼叫

     

匹配。一旦

     

呼叫

     

匹配。两次

     

ccccccccccc

     

输入错误

     

呼叫

     

匹配。三次

     

     

退出

我试过制作一个 我就这样做了

#include <stdio.h>
#include <string.h>
#include <conio.h>

int main ()
{
    while(1000)
  {
  char call[]="call";
  char word[80];

     printf ("please type call: ");
     gets (word);

  if(strcmp(word,"call")==0)
  puts("matched!\n");
  else
  puts("error\n");
  }
  getch();
  return 0;
}

2 个答案:

答案 0 :(得分:0)

您的第一个错误是使用strcmp()错误。 strcmp()与NULL无关。它返回一个负数,一个正数或零。

此外,您对“错误,请再试一次”的测试毫无意义。

答案 1 :(得分:0)

#include <stdio.h>
#include <string.h>

int main (void){
    char criteria[] = "call";
    char *mes[] = { "Many times", "Once", "Twice", "Three times" };
    char word[80];
    int match_count =0, not_end=1;

    do{
        printf(
            "Please type the reference string.\n"
            "Please type [end] when you are finished.\n"
            ">");
        fgets(word, sizeof(word), stdin);
        int len = strlen(word);
        if(word[len-1]=='\n')
            word[--len]='\0';
        if(strcmp(word, criteria)==0){
            if(++match_count > 3)
                printf("Matched. %s(%d)\n", *mes, match_count);
            else
                printf("Matched. %s\n", mes[match_count]);
        } else if(not_end=strcmp(word, "end"))
            printf("Input error\n");
    }while(not_end);
    printf("Bye!\n");
    return 0;
}