如何在 C 中增加数组的限制


// C Program to find average of numbers given by user
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
    double sum = 0;
    int ii = 0, c;
    char buf[256], *token;
    printf
        ("Enter the numbers to average on a single line, separated by space and press enter when donen");
    fgets(buf, 255, stdin);
    token = strtok(buf, " ");
    while (token != NULL)
    {
        sum += atof(token);
        ii++;
        token = strtok(NULL, " ");
    }
    printf("Average is %lf", sum / (double)ii);
}

在第 8 行: 夏亚布夫[256], *令牌;当我将数组限制更改为任何 8 位或更多数字(如 11111111、6829786907(等等((时,程序会得到遵守,但在输出时它显示"分段错误"。如何提高阵列限制?我使用的是基于 UNIX 的系统。请帮我:)

你不能。如果要求6829786907数组,则需要 6829786907 字节。这几乎是 7Go 的公羊。人们不会简单地一次分配 7Gio。此外,拥有巨大缓冲区的目标是什么?

编辑:当你写char buf[256];时,你要求你的操作系统给你一个大小为256 * sizeof(char( = 256的连续内存块。 如果你写char buf[6829786907];,你问7Go,这是巨大的,你的操作系统只是不给这个内存块。你可以用printf("buf adress: %p", buf);来验证这一点,我敢打赌,0x00000000。这意味着您没有任何空间供您使用。然后,当您使用指针(在fgets()调用中(时,会发生分段错误。当您尝试读取和/或写入不属于您的内存地址时,就会发生 Seg 错误。这里buf又名0x00000000。

最新更新