数组无故更改其第一个字母

2024-02-17

我正在制作一个刽子手,如果你赢了,一切都会正常,但如果你输了,它就不会打印出原来的单词。

我正在调试它,我发现在最后一次迭代中,第一个字符更改为“\000”,这就是它不打印的原因,但我不明白为什么,因为没有数组字所在的行被改变了。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define VOCABULARY_SIZE 8
#define MAX_STRING 32
#define MAX_GUESS 6

int random_number(int a, int b)
{
    return a + rand() % (b - a + 1);
}

int main()
{
    //random word selection
    srand((unsigned)time(NULL));
    const char VOCABULARY[VOCABULARY_SIZE][MAX_STRING] = {"vehicle", "building", "shirt", "pencil", "batman", "dromedary", "peach", "hangman"};
    char word[MAX_STRING];
    int i;
    i = random_number(0, VOCABULARY_SIZE - 1);
    strcpy(word, VOCABULARY[i]);

    //user word
    int guesses = 0, length = strlen(word);
    char letters[MAX_GUESS+1];
    char input[MAX_STRING];
    char temp_char;
    char temp_input[MAX_STRING];
    do
    {
        printf("\nYour entered letters are: ");
        printf("%s", letters);
        printf("\nYour letters found are: ");
        for (int j = 0; j < length; j++)
        {
            if (word[j] == input[j])
            {
                printf("%c", word[j]);
            }
            else
            {
                printf("_");
            }
        }
        printf("\n%d-letter word. %d out of %d failures. Enter a letter: ", length, guesses, MAX_GUESS);
        scanf(" %c", &temp_char);
        letters[guesses] = temp_char;
        letters[guesses+1] = '\0';
        for (int j = 0; j < length; j++)
        {
            if (word[j] == temp_char)
            {
                input[j] = word[j];
            }
        }
        guesses++;
        printf("\nWhat is the word to guess? ");
        scanf(" %s", temp_input);
    } while ((strcmp(input, word) != 0 && strcmp(temp_input, word) != 0) && guesses <= MAX_GUESS);

    if (strcmp(input, word) == 0 || strcmp(temp_input, word) == 0)
    {
        printf("\nCongratulations, the word was %s!", word);
    }
    else
    {
        printf("\nBetter luck next time... The word was %s", word);
    }
}

您正在写信给letters出界

char letters[MAX_GUESS+1];
int guesses = 0;
do {
    //...
    letters[guesses+1] = '\0'; // OOPS
    //...
    guesses++;
    //...
} while (... && guesses <= MAX_GUESS);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组无故更改其第一个字母 的相关文章

  • 使用 TCP 套接字在本地代理视频

    我一直对向媒体浏览器添加对视频播客的支持非常感兴趣 我希望用户能够浏览可用的视频播客并从互联网上流式传输它们 这真的很容易 因为媒体播放器等将愉快地播放存在于云中的文件 问题是我想在本地缓存这些文件 因此同一集的后续观看将不涉及流式传输 而
  • 如何创建语法突出显示文本框[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何使用 C Net 创建语法突出显示文本框 Take 闪烁网 http scintillanet codeplex com 并采取其
  • C++:字符串流有什么好处?

    谁能告诉我一些在 C 中使用字符串流的实际例子 即使用流插入和流提取运算符输入和输出到字符串流 您可以使用字符串流来转换任何实现operator lt lt 到一个字符串 include
  • 错误:“运行所选代码生成器时出错:包恢复失败”

    我正在尝试将控制器添加到 ASP NET Core 项目中的解决方案中 当我尝试这样做时 我收到此错误 我收到相同的消息 为控制器添加最小依赖项和完整依赖项 我也有这个问题 使用实体框架添加控制器 gt 带有操作的 API 控制器 将给出
  • Monitor.Pulse & Wait - 意外行为

    http www codeproject com Articles 28785 Thread synchronization Wait and Pulse demystified http www codeproject com Artic
  • 带有嵌入 Flash 视频的 PDF 示例?

    有谁知道我在哪里可以查看嵌入 Flash 视频的 PDF 示例 我知道问这个问题很愚蠢 因为你会认为任何面向技术的用户都应该能够使用谷歌找到一个 但我真的找不到 我的另一个问题是 使用 C 中的 API 将 Flash 视频嵌入 PDF 文
  • C++ 并行任务的开销

    我有以下简单的功能 include
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • 当一对迭代器初始化时,向量是否知道先保留?

    考虑以下代码 struct MyData MyData const BYTE pData size t uSize bucket pData pData uSize std vector
  • Rx 在不同的线程上生产和消费

    我试图通过此处的示例代码来简化我的问题 我有一个生产者线程不断地输入数据 并且我尝试在批次之间添加时间延迟来对其进行批处理 以便 UI 有时间渲染它 但结果并不如预期 生产者和消费者似乎在同一个线程上 我不希望批处理缓冲区在正在生成的线程上
  • 在链表程序中使用模板时重载 C++ 中的 << 运算符

    我正在尝试实现一个链接列表 但是当我尝试重载 include
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各
  • SMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”

    我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序 代码如下所示 MailMessage mail new MailMessage from to mail Subject Proba email mail Attachments
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • DbContext.SaveChangesAsync 异常处理

    当搭建新的脚手架时ApiController通过 Visual Studio 2013 中的异步操作和实体框架支持 某些方法可以包装DbContext SaveChangesAsync https msdn microsoft com en
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个

随机推荐

  • 使用 HornetQ 强制消息顺序

    我已经设置了一个 jms 服务器 其中 HornetQ 作为 JMS 提供者 队列 我有一个应用程序充当生产者 另一个应用程序 不同的计算机 充当消费者 我知道 JMS 规范不保证传递的顺序 但我正在寻找一种方法来做到这一点 接收消息exa
  • 如何使用 Python 函数将多个值添加到键中

    class my dict dict init function def init self self dict Function to add key value def add self key value self key value
  • Java 的算术精度更高

    我正在用 Java 构建一个 Web 应用程序 它可以进行数学运算并向用户显示步骤 当使用小数进行基本算术时 我经常会得到准确输出的混乱结果 这是我的问题 double a 0 15 double b 0 01 System out pri
  • 了解 C++ 成员函数模板特化

    我有以下课程 pragma once include
  • 快速访问照片库

    我想在我的应用程序中访问用户照片库中的照片 并且我正在查看 UIImagePickerController 来执行此操作 但是 我想知道是否可以访问和查看照片库中的照片而不实际将这些照片存储在应用程序中 因此基本上该应用程序将存储对所选照片
  • 为什么浏览器会针对不受信任的 SSL 证书显示难看的错误?

    当面对不受信任的证书时 我所知道的每个浏览器都会显示如下的严重错误 Why就是它 这极大地阻碍了 Web 开发人员使用 SSL 这样出色的技术 因为他们担心用户会发现该网站非常可疑 非法 即网络钓鱼 站点在 HTTP 上运行良好 因此不必担
  • 防止 HashMap/HashTable 中出现重复的 对的 Java 代码

    我有一个 HashMap 如下 假设它有 10 0000 个元素 HashMap
  • XDocument 之上的 ViewModel

    我正在开发一个 WPF 应用程序 它有一个表示 XML 的树视图 我将 XML 加载到 XDocument 然后将 TreeView 绑定到该对象 现在使用MVVM模式 http blogs msdn com johngossman arc
  • HTML5视频,如何检测没有音轨?

    我正在制作一个 chrome 应用程序 我希望有用于视频播放的自定义控件 但我在使用静音按钮时遇到了一些困难 应用程序中播放的大多数视频都是无声的 因此我希望能够在没有音轨时禁用该按钮 就像 Chrome 的默认控件一样 尝试使用音量值 但
  • 如何修复 Visual Studio 生成的 Web 引用代理来处理锯齿状数组?

    Visual Studio 用于生成 Web 服务代理的工具 wsdl exe 中似乎存在一个已知错误 对于某些 XSD 架构 该工具将生成无法从 XML 反序列化的类 就我而言 这是不可接受的 但我不知道如何解决它 我将详细描述我的情况
  • 通过 user_link 打开用户 Facebook 页面时出现问题

    我正进入 状态this https i stack imgur com HZogY jpg尝试打开用户的 facebook 页面时出现错误消息 奇怪的是 如果我与该用户有共同的朋友 则页面加载没有问题 但我不认为这是默认行为 否则我无法理解
  • 将特定单页另存为 .csv

    我有一个与这篇文章非常相似的问题 将单个 Excel 工作表另存为 CSV https stackoverflow com questions 7331624 save individual excel sheets as csv 7332
  • 如何使用 webpack (sourcemap) 获得更具可读性的bundle.js?

    我正在尝试制作我的第一个 webpack 项目 但找不到一种方法来将数字键 代表输出bundle js 中的模块 更改为描述性字符串 以便更容易在调试器中跟踪它 我尝试过output chunkFilename和output sourceM
  • Xquery 对 2 个标签进行分组

    下面是我的数据的 XML 部分 a a a a
  • C# 按钮未触发?

    我有一个在控件的 CodeBhind 中创建的 ASP 按钮 这是代码 Button SubmitButton new Button protected override void CreateChildControls SubmitBut
  • 如何在 Objective-C 中包装采用块的异步方法并将其转换为同步

    我想包装一个如下所示的异步 API someObject completeTaskWithCompletionHandler NSString result 进入一个同步方法 我可以这样调用 NSString result someObje
  • 查找不同 pandas 数据帧的调和平均值的有效函数

    我有几个具有相同形状 类型的数据框 但数值略有不同 我可以通过以下方式轻松生成具有所有输入数据帧平均值的新数据帧 df pd concat input dataframes df df groupby df index mean 我想对调和
  • 如何使用嵌套对象数组反序列化 JSON 数组

    我有一个 JSON 字符串 如下所示 想要反序列化它 campaignId 201410018 programCode 54321 campaignId 201410018 programCode 54321 我创建了一些类 如下所示 pu
  • fullcalendar“类型错误:无法读取未定义的属性‘hasTime’”

    我的 jQuery 完整日历工作正常 直到我添加了一些事件 我现在收到错误 fullcalendar typeError 无法读取未定义的属性 hasTime 我认为这是指范围 fullcal js中的JS行与范围标准化有关 当我conso
  • 数组无故更改其第一个字母

    我正在制作一个刽子手 如果你赢了 一切都会正常 但如果你输了 它就不会打印出原来的单词 我正在调试它 我发现在最后一次迭代中 第一个字符更改为 000 这就是它不打印的原因 但我不明白为什么 因为没有数组字所在的行被改变了 include