【问题标题】:string to individual numbers字符串到单个数字
【发布时间】:2018-01-30 01:02:16
【问题描述】:

我遇到了一个问题,我需要将字符串的每个元素提取到一个整数数组中,该字符串只包含整数值,没有任何空格或分隔符。

这是一个例子。

char input[8]="02320000";

int output[8]={0,2,3,2,0,0,0,0};

我尝试使用atoi(),它将整个字符串作为数字。

字符串字符将是 0-3。

谢谢你

【问题讨论】:

  • 你知道如何处理字符串中的单个字符吗?
  • atoi() 将字符串转换为单个整数,而不是整数数组。
  • 您不需要接受其中一个答案(请参阅stackoverflow.com/help/someone-answers),但如果没有一个是令人满意的,您应该考虑解释缺少的内容。也许详细说明您对其中一个答案的评论。但请注意不要问另一个单独的问题。如果您需要回答另一个问题,请提出另一个问题,您可以链接到该问题作为背景。

标签: c arrays string atoi


【解决方案1】:
char input[8]="02320000";
int output[8];

for(int i = 0; i < 8; i++)
{
     output[i] = input[i] - '0';
}

解释 -'0' Convert a character digit to the corresponding integer in C

【讨论】:

  • 这让我想到了字符串结束和字符数组初始化,所以我稍微玩了一下。我了解到“02320000”似乎被隐式转换为 (char [8]) 或 (char [9]),具体取决于输入是 char input[8] 还是 char input[9]。我没想到 8 和 9 的大小都能像它那样无缝地工作。对于 8,它不会终止字符串,对于 9,它会终止。当然,数组大小不能使用小于 8 的值。
【解决方案2】:

嗯,你可以遍历字符串的所有字符:

char input[8]="02320000";
char output[8];

for(int = 0; i < 8; ++i)
    output[i] = input[i] - '0';

C 中的字符串只是以所谓的字符结尾的字符序列 '\0'-终止字节,其值为0。我们使用char数组来存储它们 我们使用ASCII 值作为字符。

请注意1 != '1'1 是整数,'1' 是表示 第一名。该表示的值为 49(请参阅ASCII)。如果你想计算 一个字符表示的实数,你必须使用c-'0',其中 c 是有问题的角色。这是有效的,因为在表中, 数字也按数字本身排序:'0' 是 48,'1' 是 49,'2' 是 50,等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 2023-02-05
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多