C将Char数组(字符串)转换为int数组

Maz*_*zzY 5 c arrays type-conversion

我已经为此搜索了几个小时,但似乎找不到答案,尤其是在 C 语言方面。在java中,转换等很简单,但我似乎无法在C中牢牢掌握它。

我的问题是:我必须从用户那里获得输入,他们可以输入 0 到 31 之间的任何数字。他们最多可以输入 31 个数字。他们可以重复。输入可能如下所示:3 15 32。我知道如何使用 fgets() 函数获取此输入并将其存储为字符串。我将输入存储在数组 s[];

现在,我被卡住的部分,如何将其转换为 int 数组,以便 int int[0]=3、i[1]=15、i[2]=32 等?

我尝试使用 sscanf(s, "%d", int),但它只能从输入中获取第一个数字,将其存储在 int[0] 中,然后不填充其余部分。是否有某种功能可以让这一切变得简单快捷?

先感谢您。

Mat*_*t C 2

你可能想太多了。这是一种从用户输入数字的简单方法,不涉及格式化或解析字符串。

int numArray[31];
int i = 0;
int num = 0;

while( scanf("%d", &num) > 0 && i < 31 && num >0) {
    numArray[i] = num;
    i++;
}
Run Code Online (Sandbox Code Playgroud)

当用户输入负数或输入所有 31 个可能的数字时,循环将停止。

不过,您仍然必须确保用户输入 0 到 31 之间的数字!

  • 是的,这不会因负输入而退出。建议从您的答案中删除它或修改代码以使其发生。否则+1。 (2认同)