【问题标题】:How to divide a 2character string in 2 different strings in C? [closed]如何在C中将2个字符的字符串分成2个不同的字符串? [关闭]
【发布时间】:2016-03-28 18:29:58
【问题描述】:

我正在用 C 编写程序,但遇到以下问题:

用户输入一个由两个字符组成的字符串,其中包含一个数字和一个字母(例如 2B)。

如何将它分成一个整数 (2) 和一个字符 (B)?

非常感谢!

【问题讨论】:

  • 对不起,这不是辅导服务。显示您的代码以及您的具体问题所在。
  • 我只是想问问有没有一个函数可以做这个工作,比如strtok,因为我没有找到可以分割这个字符串而不包含符号的东西。即使我发送了不完整的代码,也没有任何相关的内容,除了命令 gets(input);
  • 如果输入与 2 字符数字字母格式不匹配,您是否关心结果是什么?
  • @chux 我在检查输入的有效性方面没有任何问题,我想找到一种方法来接受一个字符串,该字符串的数字从 0 到 9,后面有一个字母,并且如果我可以将输入分隔为整数和字符。从键盘读取后,我已经添加了检查。无论如何,我找到了解决方案。谢谢!

标签: c string split


【解决方案1】:

您可以使用%c 说明符来获取单个字符

char a, b;
printf("Give the 2char string");
scanf("%c%c", &a, &b);
printf("Char 1: %c\nChar2: %c", a, b);

【讨论】:

  • 这似乎无法回答问题。
  • 为什么不呢?它获得两个单独的字符。其他解决方案首先从标准输入中获取整个字符串,然后对其进行解析。我使用两个 %c 说明符直接获取两个字符。怎么了? @Olaf
  • "如何将它分成一个整数 (2) 和一个字符 (B)"
  • OP可以很容易地写a - '0'来获取整数
  • @Olaf 你是对的,但我想这样我可以添加 atoi 并将字符更改为数字。非常感谢大家的帮助!
【解决方案2】:

没有看到您尝试过的代码,显而易见的答案是根据索引将新值分配给变量。

char buffer[] = "2B";
int num = (int) buffer[0] - '0';
char letter = buffer[1];

【讨论】:

  • 为什么用大括号初始化器而不是明显的字符串文字?编码的第一条规则是使用语言特性来编写自文档代码。
  • @Olaf 因为他显然是 C 的新手,所以我想演示为什么您可以使用索引值来访问使用它们的字符串中的 char
  • 尤其是初学者,应该关注代码的可读性。请注意,这也被其他人阅读。这包括不添加不必要的或有问题的演员表 - 为什么要显式转换 buffer[0]?你也应该避免幻数。并解释代码。
  • 当您将幻数替换为'0' 以方便阅读时,请ping 我,我会对此表示赞同。在那之前,不幸的是你鼓励像48 这样的不可移植和不可读的垃圾。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 2020-07-11
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多