Я написал функцию в c, чтобы преобразовать номер base-10 в его двоичное представление с 16 битами. На выходе этой функции также должно появиться пробел, E.G .: 00000000 00000001 = 1. Само преобразование работает правильно, но мне не удается вернуть это значение в основную строку. Я не получаю никаких ошибок, но после печати sequence_number (по одному символу за раз), я получаю символы ASCII. Я понимаю, что это общий вопрос, но я прочитал много подобных сообщений и не могу определить, что я сделал неправильно.Возвращение строки C из функции в C
void convertToBinary(char *ReturnV, int _this){
//Declare Variables
int bin_no[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, bin_Index;
int working = _this;
int i, c, singleDigit, a;
char working_Return[19];
char binaryDigit[1];
for(bin_Index = 15; bin_Index > 0; bin_Index--) {//Conversion
working = (working/2);
bin_no[bin_Index] = working%2;
}
for(i = 0; i < 17; i++) {//Convert to string
singleDigit = bin_no[i];
sprintf(binaryDigit, "%d", singleDigit);
working_Return[i] = binaryDigit[0];
}
for(a = 17; a > 9; a--) {//Insert space
//Copy all values over
working_Return[a+1] = working_Return[a];
}
working_Return[9] = ' ';//Insert Space
strcpy(ReturnV, working_Return);
}
Моя функция вызывается с помощью
int sequenceNumber_Lower = 48;
char sequence_number[19];
convertToBinary(sequence_number, sequenceNumber_Lower);
, но когда я пытаюсь вывести значения из sequence_number (от основной) с помощью
for(c=0 ; c<18 ; c++) {
printf("%c", sequence_number[c]);
}
Я получаю случайных символов ASCII. Я проверил, что строка work_Return содержит правильные значения, поэтому ошибка должна заключаться в копировании значений в конце функции. Или я сделал это неправильно, и я пытаюсь распечатать то, что было удалено?
Я знаю, что когда функция заканчивается, локальные переменные уничтожаются, но я чувствую, что сделал это правильно, поскольку я просмотрел многие сообщения здесь и на других сайтах, которые говорят, что это один из действительных способов возврата строки из функции. Можете ли вы помочь мне понять, что я сделал неправильно?
Я попытался возвращающая указатель на эту строку с объявлением функции (и по определению)
char * convertToBinary(int _this);
Но это были те же самые результаты.
Спасибо! Обычно я предпочитаю читать языки программирования, прежде чем пытаться их использовать, но мой профессор назначил нам проект на C, и временные рамки этого не позволяли. –