读书人

【动态二维数组的使用有关问题】

发布时间: 2012-04-18 15:01:59 作者: rapoo

【动态二维数组的使用问题】

C/C++ code
#include "stdio.h"#include "string.h"#include <malloc.h>#define LEN 100main(){    FILE *fp;    int i=0,j=0,k=0,num;    char line[15]={0};    //申请二维动态数组    int **arry=(int **)malloc(sizeof(int*)*LEN),*p[LEN];    for (i=0;i<LEN;i++)    {        arry[i] = (int*)malloc(sizeof(int)*LEN);        p[i]=arry[i];        //初始化        memset(arry[i],0,sizeof(arry[i]));    }    //从文件读入两个变量    fp=fopen("data.txt","r");    while(fscanf(fp,"%d %d\n",&i,&num)!=EOF)    {        *arry[i]++=num;    }    fclose(fp);    //输出    for (i=0;i<LEN;i++)    {        for (j=0;i<10;j++)        {            printf("%d ",*(p[i]+j));        }        printf("\n");            }}


我读入的 是像 这样个数的数据

1 67
5 78
2 78
4 89
8 23
1 56

把这些输入 例如 度日 1 67 则 把 67 存入 arry[1][0] 里 当第二次读入 1开头的则依次往下存

入读到 1 56 则 56 存到67 的后面 如此这般

我的全是0 0 0 0 0 0 0 0 要么就 是 全存在了每组的首元素 下次存也是覆盖在首元素了··

其硅胶高手

[解决办法]
C/C++ code
 //我感觉是这一段的操作符优先级影响的,改成这样试试?while(fscanf(fp,"%d %d\n",&i,&num)!=EOF){    *(arry[i]++) = num;}//这里也不对for (j=0;i<10;j++)
[解决办法]
C/C++ code
//在堆中开辟一个4×5的二维int数组#include <stdio.h>#include <malloc.h>int **p;int i,j;void main() {    p=(int **)malloc(4*sizeof(int *));    if (NULL==p) return;    for (i=0;i<4;i++) {        p[i]=(int *)malloc(5*sizeof(int));        if (NULL==p[i]) return;    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            p[i][j]=i*5+j;        }    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            printf(" %2d",p[i][j]);        }        printf("\n");    }    for (i=0;i<4;i++) {        free(p[i]);    }    free(p);}//  0  1  2  3  4//  5  6  7  8  9// 10 11 12 13 14// 15 16 17 18 19 

读书人网 >C语言

热点推荐