compare char arrays

D

DERosenblum

Hi, I'm a total newbie at programming. I am looking to compare the an
element of array2 with the next element of array2, and if equal, put a
1 in the same spot of array3.

For example, if array2[2][3] has the same value as array2[3][3], then
I want the value of array3[2][3] to be 1. My code looks like this,
thanks!!


char array2[5][10][20];
char array3[5][10];

//arrays are already populated

for(int a=0; a<5; a++)
{
for(i=0; i<10; i++)
{
if(array2[a] == array2[a+1]
{
array3[a]=1
}
}
}
 
S

santosh

Hi, I'm a total newbie at programming. I am looking to compare the an
element of array2 with the next element of array2, and if equal, put a
1 in the same spot of array3.

For example, if array2[2][3] has the same value as array2[3][3],

array2[N+1][P] is _not_ the next element to array2[N][P].
then I want the value of array3[2][3] to be 1. My code looks like this,
thanks!!


char array2[5][10][20];
char array3[5][10];

//arrays are already populated

for(int a=0; a<5; a++)

C++ style comments and mixed code and declarations have been standardised
with the latest C standard, i.e., C99, which is not widely implemented. So
your code above may not compile under certain configurations.
{
for(i=0; i<10; i++)

Also symbolic constants might be better than hardcoded literals. They make
change easy and centralised.
{
if(array2[a] == array2[a+1]


Now here is a problem. When 'a' is four 'a+1' refers outside the bounds of
array2 and invokes undefined behaviour. To prevent this you need to keep
track of your loop control variables more closely.
{
array3[a]=1
}
}
}
 
A

Army1987

Hi, I'm a total newbie at programming. I am looking to compare the an
element of array2 with the next element of array2, and if equal, put a
1 in the same spot of array3.

For example, if array2[2][3] has the same value as array2[3][3], then
I want the value of array3[2][3] to be 1. My code looks like this,
thanks!!


char array2[5][10][20];
char array3[5][10];

//arrays are already populated

for(int a=0; a<5; a++)
{
for(i=0; i<10; i++)
{
if(array2[a] == array2[a+1]

Arrays evaluate to pointers to their first argument. Since
&array2[a][0] cannot be &array2[a+1][0] this is always
false. Try !memcmp(array2[a], array2[a+1], 20).
{
array3[a]=1
}
}
}
 
B

Barry Schwarz

Hi, I'm a total newbie at programming. I am looking to compare the an
element of array2 with the next element of array2, and if equal, put a
1 in the same spot of array3.

For example, if array2[2][3] has the same value as array2[3][3], then
I want the value of array3[2][3] to be 1. My code looks like this,
thanks!!


char array2[5][10][20];
char array3[5][10];

//arrays are already populated

for(int a=0; a<5; a++)
{
for(i=0; i<10; i++)
{
if(array2[a] == array2[a+1]


array2[a] is itself an array. In this context, the expression
evaluates to &array[a][0]. Similarly, the next expression
evaluates to &array2[a+1][0]. It should be obvious that these two
expressions can never be equal. If you are trying to determine if all
20 elements of array[a] are equal to the corresponding 20 elements
of array2[a+1], look into using memcmp.

Also note that when a is 4, you invoke undefined behavior since
array2[5] does not exist.
{
array3[a]=1
}
}
}



Remove del for email
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,021
Latest member
AkilahJaim

Latest Threads

Top