字符串到单个数字
Posted
技术标签:
【中文标题】字符串到单个数字【英文标题】: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() 将字符串转换为单个整数,而不是整数数组。 您不需要接受其中一个答案(请参阅***.com/help/someone-answers),但如果没有一个是令人满意的,您应该考虑解释缺少的内容。也许详细说明您对其中一个答案的评论。但请注意不要问另一个单独的问题。如果您需要回答另一个问题,请提出另一个问题,您可以链接到该问题作为背景。 【参考方案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,等等
【讨论】:
以上是关于字符串到单个数字的主要内容,如果未能解决你的问题,请参考以下文章