Modified code as below, but has compile errors.. what is wrong here?
Code:
#include <stdio.h>
#include <stdbool.h>
#define true 1
#define false 0
void reverse(char output[], int len)
{
int start, end;
char temp;
for(start=0, end=len-1; start < end; start++, end--) {
temp = *(output+start);
*(output+start) = *(output+end);
*(output+end) = temp;
}
}
void itoa (const int input, char* output, int rad){
int i = 0;
bool isnegative = false;
if(input == 0) {
output[i] = '0';
output[i + 1] = '\0';
return output;
}
if(input < 0 && rad == 10){
bool isnegative = true;
input = -input;
}
while (input != 0){
int rem = input%rad;
output[i++] = (rem > 9) ? (rem-10) + 'A' : rem + '0';
input = input/rad;
}
if(isnegative){
output[i++] = '-';
}
output[i] = '\0';
reverse(output, i);
return output;
}
int main (){
int i, b;
char array[13];
printf("Enter a number and base\n");
scanf("%d %d", &i, &b);
//printf("String : %s", itoa(i, array, b));
//return 0;
}
main.c:33:8: warning: ‘return’ with a value, in function returning void
33 | return output;
| ^~~~~~
main.c:26:6: note: declared here
26 | void itoa (const int input, char* output, int rad){
| ^~~~
main.c:38:7: error: assignment of read-only parameter ‘input’
38 | input = -input;
| ^
main.c:44:9: error: assignment of read-only parameter ‘input’
44 | input = input/rad;
| ^
main.c:53:8: warning: ‘return’ with a value, in function returning void
53 | return output;
| ^~~~~~
main.c:26:6: note: declared here
26 | void itoa (const int input, char* output, int rad){
| ^~~~