首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hangman编程:解读单词(c编程)

hangman编程:解读单词(c编程)
EN

Stack Overflow用户
提问于 2018-12-02 02:51:12
回答 1查看 34关注 0票数 0

我写代码的时间不长(只有2个月)。我的问题与循环中计数器的迭代有关。下面是我用while编写的程序:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int cnt=0;
int match;
int position;
int tries=0;

char letter;


int main()
{FILE *Difficult= fopen("/GODlvl.txt", "r"); 
    char singl[19];
    if (Difficult==NULL){
        return -1;}

    for(int i = 0; i < rnd1; i++)
        fgets(singl, 21, Difficult);

    int DashN1= strlen(singl); 
    printf("%s", singl);
    for (int i=0; i<DashN1-1; i++)
    {
        singl[i]='_';
        singl[DashN1]='\0';
    }

for (int i=0; i<DashN1; i++) /**it adds an extra character ..possibly a space..**/
{
    printf(" ");
    printf(" %c", singl[i]);
}
do{
scanf(" %c", &letter); 
if(letter==singl[cnt])
{
    match=1;
    position=cnt;
    printf("match found");
}
if (position==cnt)
{
    singl[position]=letter;
    printf(" %s", singl);
}
cnt++;
tries++;
}
while(tries!=8);
}

do循环从0开始运行,并在每一步之后迭代。问题出在if条件上;它们不会测试char数组中的任何任意元素(singl)。如何编辑此代码(无论是if条件还是循环)以运行任意索引。

EN

回答 1

Stack Overflow用户

发布于 2018-12-02 03:07:31

在读取letter的用户输入之后,只需执行以下操作即可请求在singl中使用的随机索引:

代码语言:javascript
复制
srand((unsigned)time(NULL));
cnt = rand() % DashN1;

这意味着你的do循环应该看起来像这样:

代码语言:javascript
复制
do{
    scanf(" %c", &letter);
    srand((unsigned)time(NULL));
    cnt = rand() % DashN1;
    if(letter==singl[cnt]){
      //....
    }
}while(/*...*/);

确保你这样做:

代码语言:javascript
复制
#include<stdlib.h>

为了访问srandrand

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53574012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档