【问题标题】:Is there a way to get charcter one at a time in C?有没有办法在 C 中一次获得一个字符?
【发布时间】:2020-12-29 10:53:35
【问题描述】:

我有一个这种类型的字符串: %d.'\0' 我想解析它。例如,如果有这个字符串 12.'\0' 我想逐个字符读取字符串(在点之前)并在整数变量中添加数字 12

编辑:所以我有两个通过消息队列进行通信的进程。客户发送如下消息:12.5,我必须将 12 与 5 分开。我不想输入。我在字符串变量中有字符串 (12.5),需要解析它,因为我希望某个 int 变量中有 12 个,另一个变量中有 5 个。

【问题讨论】:

  • 任何像样的教科书或教程都应该告诉你如何阅读单个字符。来自标准输入或指定文件。
  • 不太清楚您要做什么,请添加更多详细信息和您尝试的代码,以及确切的输入。
  • 话虽如此,还不清楚您的问题究竟是什么,或者为什么阅读单个字符会帮助您解决该问题。请花一些时间阅读How to Ask,以及this question checklist。然后edit你的问题来改进它。
  • @fuscati 请不要再提议使用丑陋的atoi
  • @fuscati 从不使用atoi()。它无法指示任何类型的任何错误。

标签: c string char character


【解决方案1】:

我会使用函数 strtok 这就像其他语言中的函数拆分 和函数 atoi 用于将字符串更改为 int

char e[] = "12.5";
char * num = strtok(e,".");
// x is the first number 
int x = atoi(num);
printf("%d\n",x);
// y is the number after the dot
num = strtok(NULL,".");
int y = atoi(num);

【讨论】:

  • 如果您将字符串“xyzzy”传递给atoi(),它会返回什么?
  • 它将返回 0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多