C 如何制作这个节目?

C 如何制作这个节目?,c,if-statement,do-while,strcmp,strlen,C,If Statement,Do While,Strcmp,Strlen,我是这方面的新手。 有人能帮我创建这个程序吗? 我不知道如何制作这个节目。 下面是对该程序的描述 创建了具有以下功能的程序 ■ 作用 首先输入引用字符串 然后,检查它们是否符合条件字符串 统计找到匹配项的次数,并显示 如果未找到匹配项,则显示错误 当我们输入字符串时 “结束”程序将关闭 ■ 注意:首先使用strlen功能,然后使用strcmp功能 ■ 运行示例(参考) 请键入引用字符串:call 完成后请键入[结束] 召唤 匹配。一次 召唤 匹配。两次 CCCCCCCCCCCCCCCCCCCCC

我是这方面的新手。 有人能帮我创建这个程序吗? 我不知道如何制作这个节目。 下面是对该程序的描述

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

■ 作用

首先输入引用字符串

然后,检查它们是否符合条件字符串

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

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

当我们输入字符串时 “结束”程序将关闭

■ 注意:首先使用strlen功能,然后使用strcmp功能

■ 运行示例(参考)

请键入引用字符串:call

完成后请键入[结束]

召唤

匹配。一次

召唤

匹配。两次

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

输入错误

召唤

匹配。三次

结束

退出

我试过做一个 我是这样做的

#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;
}
#包括
#包括
#包括
int main()
{
而(1000)
{
char call[]=“call”;
字符字[80];
printf(“请键入call:”);
获取(单词);
如果(strcmp(字,“呼叫”)==0)
看跌期权(“匹配!\n”);
其他的
放置(“错误”\n);
}
getch();
返回0;
}

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

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

\include
#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;
}
#包括 内部主(空){ 字符条件[]=“调用”; char*mes[]={“多次”、“一次”、“两次”、“三次”}; 字符字[80]; int match_count=0,而非_end=1; 做{ printf( “请键入引用字符串。\n” “完成后请键入[end]。\n” ">"); fgets(word、sizeof(word)、stdin); int len=strlen(字); 如果(字[len-1]='\n') 字[--len]='\0'; if(strcmp(字、标准)==0){ 如果(++匹配计数>3) printf(“匹配的。%s(%d)\n)”,*mes,匹配计数); 其他的 printf(“匹配的。%s\n”,mes[match_count]); }否则,如果(非_end=strcmp(单词“end”)) printf(“输入错误\n”); }而(不完),; printf(“再见!\n”); 返回0; }
strcmp不返回
NULL
而是一个整数,因此,如果要检查两个字符串是否相同,则应检查它是否返回0,例如
if(strcmp(“a”,“a”)==0{printf(“字符串相同”\n”);}
程序中有什么不起作用?你的问题是什么?因此,这不是代码审查的理由。您根本没有按照要求进行操作。查看需求和示例,然后查看您的codeint len=strlen(word);如果(单词[len-1]='\n')单词[--len]='\0'@你能给我解释一下这个代码吗?谢谢:)英語がだめだったら日本語でもいい。よろしく~@鲁迪·福格茨は(得到と違って)基本改行を含めて読み込む(指定した文字数-1に達した場合は別)ので、まず改行の有無を確認し改行が存在する場合はEOS(“\0”)文字列終端文字に置き換える。あの、すいません。やっぱり单词[len-1]と单词[--len]ってどう言うことか分からないんです。@鲁迪仮に(字に)読み込んだ文字列が“abcd\n”だったとすると、この文字列の長さ(len)は5になりますね。配列のインデックスは0から始まるので单词[0]:'a',…,单词[3]:'d'のようになり、その時最後の文字である改行は文字列の長さ-1のインデックスの文字になります(0からはじまるので-1)。それで单词[len-1]は字[4]で、この時伦恩が5で--伦恩することは伦恩を4にすることですが、字[4]=“0”することは配列单词の内容を“abcd\0”にすることになります。单词[--len]とせずに字[len-1]='\0'しても同じですが文字列の終端を一つ繰り上げたことで文字列の長さも1つ減るので--伦恩すれば文字列の長さを表している変数伦恩の整合性が取れることになります。