【问题标题】:how to fill uninitialized array elements with spaces? c如何用空格填充未初始化的数组元素? C
【发布时间】:2015-05-03 01:42:16
【问题描述】:

所以我将整数读入数组,如何用空格填充空元素。我知道他们用那个长负数初始化。我要检查他们是否有,然后用空格填充这些元素?

int* scores = malloc(51 * sizeof(int));

FILE* fp;

char* string = malloc(21 * sizeof(char));

int length;

int* plength = &length;

int number_of_conversions;

long offset = 0;

long* poffset = &offset;

int* scores = malloc(51 * sizeof(int));

scores[50] = '\0';

int total;

int* ptotal = &total;

int i = 0;

这是数组

【问题讨论】:

  • 数组就是这个 int* scores = malloc(51 * sizeof(int));
  • 假设您使用“空格”指代' ' 字符:用此类填充int 将导致int 带有538'976'288(又名0x20202020)的值,假设它是一个 32 位的 int。确定要这个吗?

标签: c arrays


【解决方案1】:

首先,考虑使用calloc(),因为您正在使用分配的内存来保存以空值结尾的字符串。如果您想使用特定值初始化内存,包括 \32 或 ' ',请尝试使用 memset()。

int* scores = calloc(51 * sizeof(int));
memset(scores, ' ', 50*sizeof(int));
// no longer needed
// scores[50] = '\0';

【讨论】:

    【解决方案2】:

    malloc 没有特别设置内存。根据运行时和操作系统,您可能会得到一些一致的实现特定模式,例如零、特定填充符,但您不应该依赖它 - malloc zeroing out memory?

    要将数组设置为特定的内容,您可以

    • 使用 memset 将内存设置为特定字节(0 似乎是您要查找的内容)
    • 使用 for 循环来设置您想要的值(即,如果您想用一些非零数字(例如 42)填充 int 数组)
    • 跟踪数组中使用了多少元素,而不是用默认值填充整个数组。

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 2020-12-28
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多