![]() |
| | #1 |
| Registered User Join Date: Sep 2008
Posts: 58
| Malloc() help? The first two numbers in the file are the array dimensions. Then the numbers in the array are below. Like this: 244 456 33 56 43 7 97 336 56 323 789 64 569 4 ... and so on. I am able to read in the numbers and print them out just fine. I am also able to print out the array horizontally and vertically with this code: Horizontal: Code: array[x][y];
for (i=0; i<y; i++){
for(j=x-1; j>=0; j--){
printf("%d\n", array[j][i]);
}
j=x-1;
}
Code: for (i=y-1; i>=0; i--){
for(j=0; j<x; j++){
printf("%d\n", array[j][i]);
}
j=0;
}
However, this is for school and they want me to do it another way. For the horizontal part, they want us to malloc() a row's worth of pixels. Im guessing is this how you do it? Code: int **row; row = (int **) malloc(sizeof(int *)*x); For the vertical part, I need to allocate an array of row (int *)'s. Then initialize each one of those (int *)'s by calling malloc() to allocate an array of column ints. Read each row of pixels into one of these arrays, and then print them out backwards. Is this done like this? Code: int **col;
col = (int **) malloc(sizeof(int *)*x);
for (i = 0; i < x; i++) {
col[i] = (int *) malloc(sizeof(int)*y);
}
|
| scarlet00014 is offline | |
| | #2 |
| and the hat of vanishing Join Date: Aug 2001 Location: The edge of the known universe
Posts: 21,214
| Aside from casting the result of malloc, see the FAQ, it looks good. Everything else in the code (like your array usage) should be the same as it is now.
__________________ If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut. Up to 8Mb PlusNet broadband from only £5.99 a month! |
| Salem is offline | |
| | #3 |
| and the Hat of Guessing Join Date: Nov 2007
Posts: 8,740
| If you need to store let's say 400 ints, then you would need to acquire enough memory to store 400 ints: Code: int *holder_of_ints = malloc(400 * sizeof(int)) If you need to store let's say a 300 x 400 grid, you would need 300 of the above, so: Code: int **holder_of_2d_ints = malloc(300 * sizeof(int *));
for (int i = 0; i < 300; i++)
holder_of_2d_ints[i] = malloc(400 * sizeof(int)); /* just like above */
|
| tabstop is offline | |
![]() |
| Tags |
| beginner, malloc |
| Thread Tools | |
| Display Modes | |
|
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| malloc + segmentation fault | ch4 | C Programming | 5 | 04-07-2009 03:46 PM |
| the basics of malloc | nakedBallerina | C Programming | 21 | 05-20-2008 02:32 AM |
| Is there a limit on the number of malloc calls ? | krissy | Windows Programming | 3 | 03-19-2006 12:26 PM |
| Malloc and calloc problem!! | xxhimanshu | C Programming | 19 | 08-10-2005 05:37 AM |
| malloc() & address allocation | santechz | C Programming | 6 | 03-21-2005 09:08 AM |