CS537 P1 – Unix实用程序 – MADCounter 辅导
该文档是关于CS537课程项目1的说明,主要介绍了一个名为MADCounter的程序,它用于统计文件中字符、单词和行的相关信息。文档包括项目截止日期、提交方式、注意事项等信息,还详细说明了MADCounter的功能、运行方式、错误处理等内容,并提供了一些提示和链接。 ## 更新 我们将不会测试Ascii字符错误。您仍然应该只跟踪0 – 127的ASCII字符。 管理事项 截止日期:1月30日晚上11:59。 项目可以延迟最多3天提交,但每延迟一天将扣除10个百分点。 延期天数: 如果您需要在项目上额外的时间,每个人将有2天的个人项目延期天数和3天的小组项目延期天数(本学期总共5天延期天数)。在截止日期后,我们将为按时评分制作提交目录的副本。 要使用延期天数或延迟提交作业,您将提交文件时附带一个额外的文件,该文件仅包含一个数字,表示您的作业延迟的天数(例如1、2、3)。每连续一天,我们将制作任何包含这些slipdays.txt文件的目录的副本。在提交最终提交时,此文件必须存在,否则我们将不知道对您的代码进行评分。 我们将跟踪您在项目之间的延期天数和延迟提交情况,并在您用完延期天数后开始扣除百分比。 在用完延期天数后,如果延迟1天提交,您最多可以获得90%的分数,如果延迟2天提交,您可以获得80%的分数,如果延迟3天提交,您可以获得70%的分数,但对于任何单个作业,如果没有例外情况,我们不会在第三天后接受提交。这意味着如果您在单个作业上使用了两个个人延期天数,您只能再额外延迟一天提交,总共延迟3天,扣除10%。 任何例外情况都需要向教师请求。 示例slipdays.txt 1 问题:我们将使用Piazza回答所有问题。 开始前:阅读此实验教程;它包含了在C环境中编程的一些有用提示,包括使用makefiles、使用gdb调试器以及使用linux手册和信息系统。 协作:作业必须由您自己完成。复制代码(来自他人)被视为作弊。阅读此以获取更多关于什么是可以的和什么是不可以的信息。请不要这样做,帮助我们大家度过一个愉快的学期。 这个项目将在Linux实验室机器上完成,因此您可以在典型的基于UNIX的平台(Linux)上学习更多关于C编程的知识。您的解决方案将在这些机器上进行测试。 一些测试将在~cs537 – 1/tests/P1提供。通过在任何实验室机器上执行命令cat ~cs537 – 1/tests/P1/README,了解更多关于测试的信息,包括如何运行它们。请注意,这些测试用例并不完整,我们鼓励您自己创建更多的测试用例。 提交:将您的文件复制到~cs537 – 1/handin/login/P1,其中login是您的CS登录名。 Unix实用程序 在这个项目中,您将构建一个简单的用户级程序,很像各种UNIX命令行实用程序(例如man、zip、grep等)。您将实现一个工具,该工具将报告有关文件文本内容的一些各种统计信息(例如唯一字符的数量、字符的频率、单词的频率等)。我们将这个程序称为MADCounter.c(即Madison Counter)。 目标: 重新熟悉C编程语言,特别是: 处理字符串 读写文件 使用结构体 简单的动态内存分配 重新熟悉UNIX的shell/终端/命令行 虽然项目侧重于编写简单的C程序,但您可以从上面看到,即使这也需要一堆其他先前的知识,包括对shell是什么以及如何在一些基于UNIX的系统(例如Linux或macOS)上使用命令行的基本了解,当然还有对C编程的基本理解。如果您不已经具备这些技能,那么这里不是开始的正确地方。 总结要提交的内容: 一个.c文件:MADCounter.c。 每个文件在使用-Wall和-Werror标志编译时应成功编译。 它们应该(希望)通过我们提供的测试。 包括一个单独的README.md,描述实现。该文件应包括您的姓名、您的cs登录名、您的wisc ID和电子邮件,以及您的实现状态。如果一切正常,就说正常。如果有您知道不起作用的东西,请告诉我。 如果适用,一个名为resources.txt的文件,描述使用的在线资源。欢迎您使用在线资源来帮助您完成作业。我们不建议您使用大型语言模型,如ChatGPT。对于本课程,我们已经看到这些工具给出了接近但不完全正确的示例或解释,这会让学生更加困惑,如果他们不知道正确答案是什么。请注意,当您向教学人员寻求帮助时,我们不会协助使用这些LLM,我们希望您能够向教学人员介绍您的代码和逻辑。在线资源(例如stack overflow)和生成工具正在改变包括计算机科学和教育在内的许多行业。但是,如果您使用在线资源,您需要提交一份文件,描述您对这些资源的使用。在该文件中表明您的解决方案中有多少是严格由您自己完成的,有多少是使用这些工具完成的。具体说明使用的资源和您与这些资源的交互方式。不给予外部资源信用是一种剽窃行为。在您的代码中使用该资源的地方对资源进行注释是一个好习惯。您不会因为使用LLM或阅读帖子而受到惩罚,但您不应该在在线论坛上发布关于本课程项目的帖子。您的大部分代码也应该由您自己努力编写,并且您应该能够解释您提交的所有代码。 MADCounter 程序MADCounter.c是一个命令行文本工具,它从输入文件中收集有关字符、单词和文件行的统计信息,并将这些统计信息打印到命令行或输出文件中。您的工具还应该接受一个批处理文件,其中包含一系列统计请求,每个请求对不同的文本文件进行操作。 单次运行 让我们首先讨论这个实用程序的单次运行,从一个示例开始。 $ __welcome.txt__包含: …