我开始学习C语言,希望从命令行输入字符,并将它们排序到数组中,使行号是ASCII字符号,列是输入字符的索引。我知道这必须通过realloc和malloc动态完成,但我不知道如何编写代码。有人能帮我解决这个问题吗?

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>

#define totalASCII     256
int
main(int argc, char **argv) {
int locat;
char current;
int **dRow=NULL;

dRow = malloc(totalASCII*sizeof(*dRow));


for(locat=0;scanf("%c", &current)==1;locat++)   {
    /* I don't know what to put here */
    }
return 1;
}

最佳答案

你的数据太小了,根本不需要从堆中分配它。只需使用一个数组:

struct { char character; int input_index; } input_data[totalASCII];

在一个典型的32位系统中,这将使用大约256*8或2kb的内存,这并不是所有的内存。
那么存储将是:
for(locat = 0; scanf("%c", &current) == 1; locat++)
{
  input_data[locat].character = current;
  input_data[locat].input_index = locat;
}

关于c - 重新分配2D数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13007696/

10-11 18:51