0

假设getNumber是 65432
我想将数字存储到每个数组

例子:

number[0] = 6
number[1] = 5
number[2] = 4

我应该怎么做?

char input[32];
char getNumber[32];
int number[20];
fgets(input,sizeof(input),stdin);
sscanf(input,"%s",number);
4

3 回答 3

1

首先,您可以直接使用scanf从标准输入获取输入字符串

scanf(" %19s", input);

然后您可以通过以下方式将输入字符串中的每个数字保存在数字数组中:

len = strlen(input);
for (i=0; i<len; i++) {
   number[i] = input[i] - '0';
}
于 2013-10-09T07:22:04.443 回答
1

您实际尝试做的可能如下所示:

int digits[20];

char word[20];
sscanf(input, "%19s", word);       // <-- read word 

int i, len = strlen(word);
for (i = 0; i < len; ++i)
    digits[i] = word[i] - '0';     // <-- get integral value of each character
于 2013-10-09T07:17:36.000 回答
1

请记住,字符串中的第一个字符在 index 处0,第二个在 index 处1,依此类推。然后还请记住,您可以通过减法从ASCII'0'数字中得到数字(查看 ASCII 表以了解原因)。

所以你可以通过做例如

number[0] = getNumber[0] - '0';
number[1] = getNumber[1] - '0';

等等。

这当然可以在一个循环中巧妙地完成。

于 2013-10-09T07:18:13.070 回答