【发布时间】:2020-12-12 18:30:00
【问题描述】:
Hackerrank 上的字符串排序问题有一个循环来获取二维字符串数组中的输入。此循环使用malloc() 为每个字符串动态分配内存,使用scanf() 获取输入,然后再为该块重新分配一个块。
int n;
scanf("%d", &n);
char** arr;
arr = (char**)malloc(n * sizeof(char*));
for(int i = 0; i < n; i++){
*(arr + i) = malloc(1024 * sizeof(char));
scanf("%s", *(arr + i));
*(arr + i) = realloc(*(arr + i), strlen(*(arr + i)) + 1);
}
链接:https://www.hackerrank.com/challenges/sorting-array-of-strings/problem
我有两个问题:
- 为什么要使用额外的内存块?
- 为什么使用
scanf()而不是fgets()来获取字符串输入?这不是一个好习惯吗?
【问题讨论】:
标签: arrays c string memory-management dynamic-memory-allocation