Looping an array of 2d arrays in C


 
Thread Tools Search this Thread
Top Forums Programming Looping an array of 2d arrays in C
# 1  
Old 09-16-2018
Looping an array of 2d arrays in C

Le sigh... Hopefully this will be the last time I have to ask for help on this topic. For a while now I've been working with a 1d array that holds 2d arrays. For reference you can view here. Now I'm just trying to loop through the elements with the following:

Code:
#include <stdio.h>

void arrbyptr(int (*ptr[2][2])[2]) {

int result;

    for ( int i = 0; i < 2; ++i ){
        for ( int j = 0; j < 2; ++j ){
            for ( int k = 0; k < 2; ++k ){
                result = (*ptr[i][j])[k];
                printf("%d\n", result);
            }
        }
    }
}

int main(void)
{
        int arr2d[2][2]={ {1,2},{3,4} };
        int arr2db[2][2]={ {5,6},{7,8} };

        int (*ptr[2][2])[2]= { { arr2d, arr2db } };

        arrbyptr(ptr);
}

It runs momentarily before segfaulting:

Code:
$ ./test
1
2
5
6
Segmentation fault

I get no errors or warnings from gcc. And yes, I understand logical errors will not show up. Tried to run this through strace, but can't find where its failing or why.

Any advice much appreciated.

Last edited by Azrael; 09-16-2018 at 06:03 PM..
# 2  
Old 09-16-2018
Use gdb. We could probably point you to your problem but you need to learn how to use gdb.
the commands you need are:
Quote:
break main <- stop right when the program starts.
step <- enter this repeatedly until you get a segfault.
print [varname] to view contents of a variable
help <- gives you more things to use to navigate
help [command] gives specific help.
compile & debug with
Code:
gcc filename.c -Wall -g -o filename
gdb filename
gdb>  break main
r 
[boom! it segfaults gdb will give you the exact line in the file]

Have fun.
This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 09-17-2018
You have to follow the method I showed to-the-letter. (*arr[a][b])[c] is not the same as (*arr)[a][b][c].

Code:
void arrbyptr(int (*ptr[2][2])[2]) {
        int result, i, j, k;
    for ( i = 0; i < 2; ++i ){
        for ( j = 0; j < 2; ++j ){
            for ( k = 0; k < 2; ++k ){
                result = (*ptr)[i][j][k];
                printf("%d\n", result);
            }
        }
    }
}

These 2 Users Gave Thanks to Corona688 For This Post:
# 4  
Old 09-18-2018
Ah... That did the trick! Sorry, I guess I was confused as main called the function with (*ptr[2][2])[2] and the function's parameter was in the same format. Usually I try to brute-force every possible combination before posting anything, but I guess I missed that.


I haven't used gdb in a while, but I will have to start again. I'm just more used to strace from work.



Fortunately this should do me on calling all the arrays in this project. Next time I should be posting about a different topic. Much thanks again for all of your patience!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Calling an array of arrays in C.

Corona688 was great in helping me learn how to create arrays that hold other two dimensional array here. Unfortunately I didn't think ask about how to implement or call them. Basically, I'm trying to call an array of two-dimensional arrays like this: declaration: int (*side_one) = { { white_l1,... (6 Replies)
Discussion started by: Azrael
6 Replies

2. Programming

Making an array of 2D arrays in C

I hate I'm asking for help again. Unfortunately it seems there just aren't any links I can find on making an array that holds a bunch of two dimensional arrays. Maybe my google-fu is lacking. Basically I have a header file like this: #define MATRIX 10 int white_l1; int white_l2; int... (2 Replies)
Discussion started by: Azrael
2 Replies

3. Programming

Looping through multiple arrays in C.

Not sure if this is possible, but I've tried this about a thousand ways now. I am making something with a lot of arrays. I thought I could put the array names into a separate array and then loop through them to call all of their elements. This is the best I've got so far: #include <stdio.h>... (4 Replies)
Discussion started by: Azrael
4 Replies

4. Shell Programming and Scripting

Bash arrays: rebin/interpolate smaller array to large array

hello, i need a bit of help on how to do this effectively in bash without a lot of extra looping or massive switch/case i have a long array of M elements and a short array of N elements, so M > N always. M is not a multiple of N. for case 1, I want to stretch N to fit M arrayHuge H = (... (2 Replies)
Discussion started by: f77hack
2 Replies

5. UNIX for Dummies Questions & Answers

Looping through the contents of array for output name

Hi all, I am trying to loop through the string contents of an array, to add it during the saving of the output files. I am trying this code to print each column and save it to unique file name, but it doesn't work. Thanks for any help. fnam=(japan usa uk) alldata.dat contained sample data... (1 Reply)
Discussion started by: ida1215
1 Replies

6. Shell Programming and Scripting

Looping through arrays

i just started learning arrays and found this example on the net: for (( i = 0 ; i < ${#names} ; i++ )) do echo ${names} done However, even though I can echo ${#names} I am unable to get the increment to work. I have tried eliminating spaces and changing brackets and nothing seems... (4 Replies)
Discussion started by: newbie2010
4 Replies

7. UNIX for Dummies Questions & Answers

Help in Array looping and creating multiple lines

hi Gurus, I'm a newbie in scripting please check my script if this is correct. I think there's something wrong with it but I;m not sure. I'm trying to create multiple lines using awk from external xml files but i want to add additonal info in the data manually Since i don't knwo how to... (0 Replies)
Discussion started by: sexyTrojan
0 Replies

8. Shell Programming and Scripting

Perl array of arrays

Hi, I am trying to assign an array as a value to one of the array element, I mean I have an array @KS and array @kr. I want array @KS to hold @kr as an element. So I am doin this $KS=@kr; But the value stored is number of elements in the @kr array. Can... (2 Replies)
Discussion started by: eamani_sun
2 Replies

9. Shell Programming and Scripting

KSH script not looping through array

Hi All, I'm trying to get a script to loop through an array. The array is basically a list of .zip files. I'd like the script to loop through and unzip the zip files contained in the zip file list. When I run the script, it unzip the first zip file correctly, and then stops Any thoughts? Here's... (2 Replies)
Discussion started by: kelldan
2 Replies

10. Shell Programming and Scripting

Perl question - looping through an array of hashrefs

I have an array of hashrefs that look like the following: my @LAYOUT = ( {SQL_1 => "select count (*) FROM prospect WHERE PROCESS_DATE = To_date('INSERT_DATE_HERE', 'mm/dd/yyyy') and tiff_filename is not null ... (2 Replies)
Discussion started by: kregh99
2 Replies
Login or Register to Ask a Question