我开始学习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", ¤t)==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", ¤t) == 1; locat++)
{
input_data[locat].character = current;
input_data[locat].input_index = locat;
}
关于c - 重新分配2D数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13007696/