# Function to read in two arrays

• 11-11-2008
ssmokincamaro
Function to read in two arrays
I'm relatively new to programming and I have to write a function that reads in input from the user and to fill two arrays then compare them. I guess what I'm confused on is how to read in both arrays.

This is what I'm supposed to do,

Write a table_diff fuction that compares two arrays of integers and returns the subscript of the first place they differ. If the arrays are the same, the function should return -1 ex:

345 & 345 --> -1 (same)

345 & 346 --> 2 (differ at index 2)

1234 & 123 --> 3 (differ at index 3)

But what im having trouble with is writing the function to read the two arrays in. Im not sure if i can do it in one single while loop or if i need two?

This is what i have, any help is appreciated!

Code:

int table_fill(int a[], int b[],int max)
{

int value;
int r;
int *ptra = a;
int *ptrb = b;
int *endptra = ptra - max;
int *endptrb = ptrb - max;

while((r = scanf("%i", &value)) != 1 && ptra < endptra)
{
*(ptra++) = value;

if (r==1)
else if(r != EOF)
printf("invalid char");

while((r = scanf("%i\n", &value))!= 1 && ptrb < endptrb){
*(ptrb++) = value;

if (r==1)
else if(r != EOF)
printf("invalid char");
}

}

• 11-11-2008
tabstop
Maybe it's required for the assignment, but why write a function that reads into two arrays? Why not write a function that reads into one array, and then call it twice?
• 11-11-2008
Salem
> (r = scanf("&#37;i", &value)) != 1
I'd say you would want == 1 here.

I'd also put the loop in another function, and just call it twice with different parameters.

> printf("No room after reading values\n\n");
What's this supposed to mean?
• 11-11-2008
ssmokincamaro
Yeah its required for this assignment. Ah yeah that would make sense, thanks! So you would suggest writing a function to read in each array?
• 11-11-2008
ssmokincamaro
Oh and I'm supposed to do an error check, but was unsure how to do it. Its supposed to check to see if there is enough room in the array and check to see if a invalid character was entered
• 11-11-2008
Salem
> So you would suggest writing a function to read in each array?
I believe I just did.

> Its supposed to check to see if there is enough room in the array and check to see if a invalid character was entered
The 'room' is the ptra < endptra test
The 'valid' is the == test

However, what you don't do at the moment is clean up the input stream if scanf() returns something other than 1
• 11-11-2008
ssmokincamaro
Ok i'll give that a shot right now, thanks Salem!

If my memory serves me correctly, I think I used ( in an older program)

while(getchar() != '\n');

to flush it out?
• 11-12-2008
blurx
Code:

while(((r = scanf("%i", &value)) != 1 && ptra < endptra)
You seem to missing that extra '(' also.