【问题标题】:Printing out dynamically allocated memory in C在 C 中打印出动态分配的内存
【发布时间】:2017-11-30 13:49:19
【问题描述】:

我是编程的初学者,并且得到了关于动态分配内存的任务。预期的输出之一是 printf 语句,其中所有输入的输入(整数)都打印在一行中。我已经设法在 for 循环中 printf,但这还不够。如何在单个代码行中打印它们?代码如下:

int main()
{ 
    int how_many_integers, count, entered_integers, i, *pSize;

    printf("\nHow many integers are you going to type?\n");
    scanf("%i", &how_many_integers);
    getchar();

    // Allocates memory for the integers.
    pSize = malloc (how_many_integers * sizeof(int));

    // Checks if the integer is 0, and/or reads in all the integers.
    if (how_many_integers == 0)
    {
        printf("No numbers were given.\n");
        exit(0);
    }
    printf("Please enter your integers.\n");
    for (int i = 0; i < how_many_integers; i++)
    {
        scanf("%i", &entered_integers);
        count++;
        pSize[i] = entered_integers;
    }
    for (int i = 0; i < how_many_integers; i++)
    {
        printf("Number: %i\n", *(pSize+i));
    }
    free(pSize);

    printf("Count: %i", count);

    return 0;
}

【问题讨论】:

  • int main{ 说什么?
  • int main{?你是认真的吗?请发布实际代码,这是无效的 C. 从您编辑的代码中复制粘贴。如果它编译,它看起来不像那样。
  • "\n" 添加一个新行。当您省略它时,它会打印在同一行
  • 不相关,但你从不初始化count
  • @Jakim 除非你初始化count = 0,否则你的程序还是很错误的。

标签: c


【解决方案1】:

试试这个:

printf("Numbers:");
for (int i = 0; i < how_many_integers; i++)
{
    printf(" %i", *(pSize+i)); // No \n
}
printf("\n"); // if you want a new line at the end

这应该会产生类似的输出

Numbers: 1 2 3 4 5

正如其他人所提到的,您的 count 变量永远不会被初始化。将其初始化为 0。

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2015-12-07
    相关资源
    最近更新 更多