C 中的字符计数

2024-05-02

我正在尝试编写一个程序来计算字符串中的所有字符。我本来有它,但后来意识到我无法计算空格。我不明白为什么这不起作用。

for(m=0; z[m] != 0; m++) {
    if(z[m] != ' ') {
        charcount ++;
    }
}

任何帮助表示赞赏。

编辑* 如果像这样扫描输入(字符串),会有什么不同吗?是的,一切都已初始化。我也尝试过打印 z[m] 计算的值,但它不是“m”处字符串的实际值,我认为这就是问题所在。

for(j=0; j<7; j++){
    printf("Enter a string:\n");
    scanf("%s", z);
        for(m=0; z[m] != 0; m++){
                if(z[m] != ' '){
                charcount ++;
                }
        }

你需要初始化charcount。除此之外,它应该有效,前提是z是一个以零结尾的字符数组,m is an int或类似的。我可能会写z[m]而不是z[m] != 0(因为 !0 = true 且 0 = false),但两者都有效。有更有效的方法可以做到这一点(尽管现在我打赌编译器会为您将其转换为基于指针的循环)。

这是一个完整、正确的示例,只需进行最少的编辑:

const char * z = "testing one two three";
int m;
int charcount;

charcount = 0;
for(m=0; z[m]; m++) {
    if(z[m] != ' ') {
        charcount ++;
    }
}

如果您使用的是String如果您希望使用某种类型的类而不是老式的 C 以 null 终止的数组,您将需要查看该类以了解如何循环遍历它。

上述所有内容还假设您正在处理 ASCII 字符串。如果您正在处理 UTF 编码的字符串,则必须处理多字节字符。


重新编辑:这有很大的不同:scanf will 停在第一个空白处 http://www.cplusplus.com/reference/clibrary/cstdio/scanf/(我忘记了)。不过,如果您不声明,情况可能会比这更大z正确。 (我还建议在使用时使用字段宽度scanf用于读取字符串[或避免scanf完全];否则,您无法控制它将尝试存储的字符数,所以理论上,任何缓冲区都不会大到足以避免溢出。更多这里:http://www.crasseux.com/books/ctutorial/String-overflows-with-scanf.html http://www.crasseux.com/books/ctutorial/String-overflows-with-scanf.html)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中的字符计数 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12

随机推荐

  • ASP.NET MVC - 角色提供程序的替代方案?

    我试图避免使用角色提供程序和成员资格提供程序 因为在我看来它太笨拙了 因此我试图制作自己的 版本 它不那么笨拙并且更易于管理 灵活 现在我的问题是 除了角色提供者之外 还有其他不错的选择吗 我知道我可以自定义角色提供者 会员提供者等 通过更
  • 在 HTML 画布上绘制线宽连续变化的线条

    我试图画一条线 从一条细线开始 然后逐渐加宽直到结束 我需要绘制半平滑曲线 由几条直线合成 并且在寻找解决此任务的方法时遇到问题 这个小提琴显示了我的问题 http jsfiddle net ZvuQG 1 http jsfiddle ne
  • Firestore:如何重新订购我已经参考过的集合?

    有没有办法保留同一集合的引用 但使用 firestore 更改顺序 TLDR 这就像我想要实现的功能 https stackoverflow com a 17320018 https stackoverflow com a 17320018
  • Gradle,在撰写多平台项目中使用material3

    我正在使用 Jetpack Compose Multiplatform Desktop 做一个项目 我对 Gradle 不太熟悉 我想在我的项目中使用 Material 3 所以 我添加了这一行build gradle kts file i
  • cakePHP 命名约定如何工作?

    我对 PHP 比较陌生 开始学习 PHP 但后来遇到了 cakePHP 它应该可以加快开发时间 阅读文档和博客教程后 我仍然不明白命名约定 我想直到我开始做一些例子我才会知道 但是为了让我开始 有人可以向我解释 cakePHP 如何将数据库
  • 部署组和部署池有什么区别?

    在 Azure DevOps 中创建部署组时 它会自动为您创建部署池 但是 从 组织设置 gt 部署池 面板 您可以创建新的部署池 而无需创建部署组 部署组和部署池之间有什么关系 例如 一个部署组可以链接到多个部署池吗 这是一个很好的博客
  • Foreach 循环编辑器中缺少枚举器

    我在一台新笔记本电脑上 在 Visual Studio 2015 中的 SQL Server Integration Services 包上工作 在以前版本的 Visual Studio 中 枚举器配置部分中有几个选项 如下所示 在 VS
  • 邀请朋友加入 Facebook 应用程序 - Android,未发送邀请

    我已经用我的 Android 编码创建了一个 Facebook 活动 现在我想邀请朋友参加 下面是我邀请好友的代码 private void inviteFriends try Bundle params new Bundle params
  • switch 在 Visual C++ 中如何编译?它的优化程度和速度如何?

    我发现我只能在 C 中使用数值switch陈述 我认为它和一堆更深层的区别if else s 因此我问自己 如何switch与 不同if elseif elseif在运行速度 编译时优化和一般编译方面 我这里主要说的是MSVC 开关通常被编
  • Android 应用程序方向更改会重新启动 Activity

    我有一个活动 只要方向改变 它就会重新启动 我编写了代码来防止清单文件中的方向发生变化时活动重新启动 如下所示
  • setTimeout 在 Greasemonkey 中并不总是有效

    我发现了很多类似的问题 但没有一个是平等的 也没有正确的解决方案 这是一个很奇怪的问题 我有一个简单的 Greasemonkey 脚本来测试这个问题 UserScript name testdiddio namespace http use
  • 在同一个图表上绘制两个直方图,并将它们的列总和为 100

    我有两组不同大小的数据 我想将它们绘制在同一个直方图上 然而 由于一组有约 330 000 个值 另一组有约 16 000 个值 因此它们的频率直方图很难比较 我想绘制一个比较两组的直方图 使得 y 轴是该箱中出现的百分比 我下面的代码与此
  • 为什么没有人接受 C# 中的公共字段?

    似乎每个 C 静态分析器在看到公共字段时都会抱怨 但为什么 当然 在某些情况下 公共 或内部 field就足够了 拥有一个拥有它的财产是没有意义的get and set 方法 如果我确定我不会重新定义该字段或添加该字段怎么办 副作用很糟糕
  • Android GCM主题订阅限制

    随着 android gcm 中主题的引入 我正在评估此选项 以简化保持服务器与某些订阅同步所需要做的工作 不过我在文档中读到主题的使用仅限于 100 万个订阅 这是否意味着您不能拥有超过 100 万个用户 具有一个或多个主题 或者您只能订
  • 滚动视图内的 TabHost:单击选项卡时始终向下滚动

    我有一个 Activity 其中 Scrollview 作为顶级元素 里面还有一些其他视图 并且在某些时候还有一个 TabHost 通过查看您可能会有更好的印象截图 http img263 imageshack us img263 5329
  • 未知的 Heroku 错误

    我尝试在 heroku 上运行应用程序时遇到以下错误 2011 06 03T11 24 25 07 00 heroku nginx GET HTTP 1 1 2011 06 03T18 24 37 00 00 heroku router E
  • 在iphone应用程序中的一个线程之后调度一个线程

    我想在线程完成后安排线程 是否可以 如何 例如 指定我的需要 void connection NSURLConnection connection didReceiveData NSData data 1 response schedule
  • 无法启动客户端 Rust 语言服务器

    我正在尝试弄清楚如何使用 WSL 中的 rustc 和 Cargo 我使用 VS Code 和 Rust rls 插件 可以编译我的代码 但 RLS 存在问题 无法启动客户端 Rust 语言服务器 Rustup 不可用 安装自https w
  • 为什么 Github 操作日志显示星号?

    在 Github 操作运行器上运行时 Maven 日志输出仅显示 3 个星号 而不是实际的字符串 警告 home runner work project src test java de persistence dao DaoTest ja
  • C 中的字符计数

    我正在尝试编写一个程序来计算字符串中的所有字符 我本来有它 但后来意识到我无法计算空格 我不明白为什么这不起作用 for m 0 z m 0 m if z m charcount 任何帮助表示赞赏 编辑 如果像这样扫描输入 字符串 会有什么