0

我是这方面的新手。谁能帮我创建这个程序?我不知道如何制作这个程序。这是程序的描述。

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

■ 功能

首先输入参考字符串。

然后,检查它们是否与条件字符串匹配

如果找到匹配项,则计算次数,并显示

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

当我们输入字符串“end”时,程序将被关闭。

■ 注意事项 · 首先使用函数strlen,然后使用函数strcmp

■ 运行示例(参考)

请输入参考字符串:调用

完成后请输入 [end]。

称呼

匹配。一次

称呼

匹配。两次

cccccccccc

输入错误

称呼

匹配。三次

结尾

退出

我试着做一个,我做了这样的

#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;
}
4

2 回答 2

0

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

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

于 2013-07-05T08:08:39.367 回答
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;
}
于 2013-07-05T10:06:39.330 回答