【问题标题】:Adding int value to string in C [closed]在C中将int值添加到字符串[关闭]
【发布时间】:2019-01-25 11:14:19
【问题描述】:

所以我在 C 中遇到了 intstring 的问题。

我的任务是编写一个函数来输出string 中的错误率。 例如,如果字符串是"aaabbbcccdxm",那么输出应该是"1/12"

我所说的“错误”是指从 n 到 z 的任何字母,而从 a 到 m 的任何字母都是“好”的。 我想我可以通过使用for 循环来检查字符串中的每个字母,然后if 将值添加到int error 这将是坏字母的数量,但我不知道如何将该“int error”值转换为带有输出error value/string dimension 的字符串。有什么想法吗?

【问题讨论】:

  • 不要描述你的代码不起作用,你能展示一下吗?
  • 我编辑了您的问题,您需要向我们展示一些代码!复制粘贴,全选,然后按ctrl+k 正确格式化!这样,如果我们发现问题所在,我们可以为您提供帮助!
  • 您的问题标题与您的问题不匹配
  • @Blaze 大行与 UB 比率 (1/1)。单线一UB

标签: c string int


【解决方案1】:

您可以使用printf 来格式化您的输出。我建议在 linux 机器上或从 google 阅读 man 3 printf

下面是这样一个程序的样子:

#include <stdio.h>
#include <string.h>

int main()
{

  const char *  input_str = "aaabbbcccdxm";
  int           size = strlen(input_str);
  int           error = 0;

  for (int i = 0; i < size; ++i)
    {
      if (input_str[i] >= 'n')
        error++;
    }

  printf("%d/%d\n", error, size);

  return 0;
}

【讨论】:

  • DV-ted。 .回答您应该关心类型正确性的问题。使用int 作为 strlen 或 sizeof 的结果是一个非常常见的初学者错误,因为 int 具有不同的符号并且也可能具有不同的大小
  • @P__J__ 即使你是对的,它仍然回答了有关字符串格式的问题。在这一点上只是很痛苦,因为输入字符串在答案中是硬编码的,因此 strlen 结果将正确隐式转换而不会导致潜在的符号/信息丢失问题。
【解决方案2】:
size_t errors(const char *str, const char *legal)
{
    size_t errcnt = 0;

    while(str && *str)
    {
        errcnt += !strchr(legal, *str++);
    }
    return errcnt;
}

int main()
{
    char *str = "aaabbbcccdxm";
    printf("%zu/%zu\n", errors(str,"abcdefghijklm"), strlen(str));

    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多