c - 将输入读入动态大小的 int?

标签 c pointers int stdin

我需要从标准输入中读取大量数据,这是我目前的代码:

int main() {
    int x;
    int* n1;
    scanf("%d", &x); // I get the number of digits the integer will have

    n1 = malloc(x * sizeof(int)); // I resize the integer pointer
}

所以我的问题是如何从标准输入读取这个可能很大的整数?

最佳答案

C 中没有“动态大小的 int”这样的东西。正如其他人所建议的,根据您的用例,将数字读取为字符串可能是您想要的。 (如果为此使用 scanf,请注意缓冲区溢出。)

如果您需要对数字进行算术运算,您可能希望使用现有的库,例如 libgmp为此,可以从现有的问题解决方案中受益。您也可以自己重新实现 libgmp 的功能,但除非您将此作为学习练习,否则没有理由这样做。

关于c - 将输入读入动态大小的 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112999/

相关文章:

c - 如何避免在 Linux 中多次启动二进制文件?

c - sprintf 会删除它上次写入缓冲区时添加的最后一个空字符吗?

c - 如何在内存中存储任意大的整数值?

c - pthread_mutex_trylock 段错误

c++ - 我在这里做错了什么?使用指向函数 typedef 的指针定义类。

c - 关于 Spectre 示例,虚拟/物理地址如何工作?

c - 免费功能的使用

将 int 转换为指针 - 为什么要先转换为 long? (如 p = (void*) 42; )

c++ - 为什么 size_t 和 unsigned int 比 int 慢?

c# - 如何在C#中将字符串转换为整数