To practice using pointers and arrays i’m trying to do a simple program capable of converting a binary input to denary.. i think i have a good idea for the logic but i haven’t even got round to trying to implement it because im struggling to get my for loop running!
It seems silly but i know the code inside the for loop works fine outside of it, so it must be something wrong with the condition..? im trying to start at the back of the char array (navigating using pointers) and output each char(as an int) up to the first element.
So the desired output is “0 – 1 – 0 – 1 -“
#include <iostream>
using std::cout;
using std::endl;
//prototypes
void binaryToDenary(const char* input, int& inputLength);
int main(){
const char binaryInput[] = {1,0,1,0};
int inputLength = sizeof(binaryInput)/sizeof(binaryInput[0]);
binaryToDenary(binaryInput, inputLength);
return 0;
}
void binaryToDenary(const char* input, int& inputLength){
//testing some stuff--- this all works as expected
//cout << input[2] << " " << (int)*(input+2) << " " << inputLength <<endl;
int i;
for(i = inputLength; i < 0; i--){
cout << (int)*(input+i) << " - ";
}
}
Your
forloop should be this:There are two problems in your code:
i = inputLengthwhich should bei = inputLength -1i < 0which should bei >= 0Also, change the second parameter type from
int &toint:The type
int&reduces the use cases, and benefits almost nothing. If you useint &, then all of these would give compilation error:So use
int, and all of the above would compile fine!