Looping through multiple arrays in C.


 
Thread Tools Search this Thread
Top Forums Programming Looping through multiple arrays in C.
# 1  
Old 08-07-2018
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:

Code:
#include <stdio.h>
#include <stdlib.h>

int main() {

	char c;

	int a [5] = {1,2,3,4,5};
	int b [5] = {6,7,8,9,10};

	for(c = 'a'; c <= 'b'; ++c) {
		for (int j = 0; j < 5; j++){
			printf("%d\n", c[j]);
		}
	}
}

From it I get the following error:
Code:
$ gcc canloop.c -o canloop
canloop.c: In function ‘main':
canloop.c:17:20: error: subscripted value is neither array nor pointer nor vector
    printf("%d\n", c[j]);

Oddly enough it still runs despite the error:
Code:
$ ./canloop 
0
1
2
3
4
0
1
2
3
4

Seems its not incrementing on the first loop with c. I've tried changing ++c to c++, casting, etc, but no change. Anyone know if this is not possible, some way to do this better or what I may be missing?
This User Gave Thanks to Azrael For This Post:
# 2  
Old 08-07-2018
Did you consider making c a pointer to int array?
This User Gave Thanks to RudiC For This Post:
# 3  
Old 08-07-2018
I did try that with pointers several different ways. Just tried it again and for the first time this compiled with no errors:

Code:
#include <stdio.h>
#include <stdlib.h>

int main() {

    int c;
    int *test;
    test = &c;

    int a [5] = {1,2,3,4,5};
    int b [5] = {6,7,8,9,10};

    for(c = 'a'; c <= 'b'; ++c) {
        for (int j = 0; j < 5; j++){
            printf("%d\n", test[j]);
        }
    }
}

The output is uniq, but wrong:

Code:
$ ./canloop
97
757351276
32767
0
4
98
757351276
32767
0
4

I guess I'm not dereferencing it right? Maybe I've just been up too long, but I'm open to more suggestions.
# 4  
Old 08-07-2018
That it compiled without errors only means your program is correct grammatically, the same way "my hovercraft is full of eels" will pass a grammar check but not help Belgians communicate with foreigners. Your program does not do what you think it does.

Code:
for(c = 'a'; c <= 'b'; ++c)

'a' and 'b' are the ASCII integers 91 and 92, respectively. They are not the arrays a and b and cannot be used to retrieve those variables.

How about this?

Code:
#include <stdio.h>

int main(int argc, char *argv[])
{
        int a [5] = {1,2,3,4,5};
        int b [5] = {6,7,8,9,10};
        int *c[]={a, b}; // c[0] is effectively a, c[1] is effectively b

        int n, m;

        for(n=0; n<1; n++)
        {
                for(m=0; m<5; m++)
                {
                        printf("Array %d[%d] = %d\n", n, m, c[n][m]);
                }
        }
}


Last edited by Corona688; 08-07-2018 at 06:19 PM.. Reason: fixed several errors
These 3 Users Gave Thanks to Corona688 For This Post:
# 5  
Old 08-08-2018
I will agree with what you said. I knew it was a logical error instead of syntactical one when I saw it. I was just happy to have made any progress at that point.

Your code is much better and cleaner, but I did have to edit it. At first it only printed the first array:

Code:
$ ./canloop 
Array 0[0] = 1
Array 0[1] = 2
Array 0[2] = 3
Array 0[3] = 4
Array 0[4] = 5

I changed 'for(n=0; n<1; n++)' to 'for(n=0; n<2; n++)' and both arrays printed correctly:

Code:
 $ ./canloop 
Array 0[0] = 1
Array 0[1] = 2
Array 0[2] = 3
Array 0[3] = 4
Array 0[4] = 5
Array 1[0] = 6
Array 1[1] = 7
Array 1[2] = 8
Array 1[3] = 9
Array 1[4] = 10

Much appreciated!
This User Gave Thanks to Azrael For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

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: #include <stdio.h> void... (3 Replies)
Discussion started by: Azrael
3 Replies

2. Shell Programming and Scripting

Multiple arrays in variable using for loop

Hi, I'm trying to get the number of files inside same kind of folders on each disks and assigning each values in to a variable named with same folder and disk name so that it'll be easy for me to identify each time.But somehow I'm not able to assign those values in that specific name variable... (1 Reply)
Discussion started by: ratheeshp
1 Replies

3. Shell Programming and Scripting

Loop over multiple arrays

Hi All I need really really help with this :- I have two files ( File1 , File 2) both files are output of two different scripts. File1 usually has a list of names ( sometimes 3 names sometimes 5 sometimes more , depends about the output of the script) File2 usually has a list of numbers... (2 Replies)
Discussion started by: samsan
2 Replies

4. Shell Programming and Scripting

Looping all subdierctories in multiple pipes

Hello friends, I want to run this code on every document in every sub-directory. tr -d '\n' < MulitpleInput.txt | awk '{gsub(/\. /,".\n");print}' | grep “\ I tried several looping techniques but couldn't get it to run in this example. Any ideas? Thank you (2 Replies)
Discussion started by: danbroz
2 Replies

5. 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

6. Shell Programming and Scripting

Looping for multiple directories

Hi experts, I am totally stuck with this. I run a looping "for" command for multiple directories, manually, I have done this : vfor dir in A B; do cp -p $dir/X.txt X-${dir}.txt done where A and B is directory name. However, I need to run for many directories. So I have tried this :... (7 Replies)
Discussion started by: guns
7 Replies

7. Shell Programming and Scripting

multiple looping with case and funtion showing error, Please help

Hello All, I have code as follows :- while true do {opening a case1 statement} 1) {opening another case2 statement} {closing case 2} 2) Showing error for "2)" as Syntax error at line 59 : `)' is not expected. *) {closing case 1} ... (5 Replies)
Discussion started by: Renjesh
5 Replies

8. 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

9. Shell Programming and Scripting

Read multiple arrays in mysql

I have a database that include 5 tables, and they are related to each other through foreign key relations. The root is called colleges. There are multiple colleges, and each college has 1+ departments, each department has 1+ IT stuff, each IT stuff owns 1+ IP addresses. I have designed the database... (0 Replies)
Discussion started by: pinkgladiator
0 Replies

10. UNIX for Advanced & Expert Users

multiple arrays through awk...

i am v new to awk, well unix as a whole really but im enjoying it alot... im trying to extract some data from a file, and parsing it into arrays, ive trawled for hours on the internet and cant find much when it comes to awk and arrays?? anyway, heres the file: tableA tableB tableC ... (2 Replies)
Discussion started by: newbeenie
2 Replies
Login or Register to Ask a Question