Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 4
1

Возвращение строки из функции

30.07.2013, 22:27. Показов 2756. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdio>
#include <string.h>
 
void bin(char * r, unsigned int n) {
  for (int i = 128; i > 0; i >>= 1)
  strcat(r, ((n & i) == i) ? "1" : "0");
}
 
int main(int argc, char **argv) {
  char str[10];
  printf("%s\n", bin(str, 5));
  return 0;
}
Функция должна возвращать строку, содержащую число 5 в двоичной системе.
Компилятор ругается: "Неправильное использование void-выражения"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2013, 22:27
Ответы с готовыми решениями:

Возвращение переменной из функции
Объявляю функцию типа char, объявляю в ней переменную s2 тоже типа char, но возвращать эту...

Возвращение массива из функции
Такие дела, вот программа: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include...

Возвращение матрицы из функции
Всем привет, возникло такое недопонимание, надо написать программу в которой складываются 2...

Возвращение указателя из функции
Здравствуйте! Есть функция: char* dectobin(unsigned dec) { static char arr; int v = 128, i;...

9
40 / 37 / 15
Регистрация: 25.10.2012
Сообщений: 112
30.07.2013, 23:29 2
Тип функции bin - void, т.е. она не возвращает ничего. Логично, что компилятор ругается.
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 4
30.07.2013, 23:35  [ТС] 3
Такой тип указан в условии задачи. Пытаюсь вернуть через указатель, но не выходит.
0
40 / 37 / 15
Регистрация: 25.10.2012
Сообщений: 112
30.07.2013, 23:38 4
Дизъюнкция, ну тогда напиши условие хоть
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
30.07.2013, 23:44 5
А что за магические числа - 10, 128? Не путаете unsigned char и unsigned int? Ну и проводить побитовые операции с разными типами я бы не стал. Короче, вот это работает:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void bin(char * r, unsigned int n)
{
    for( unsigned int i = 1 << ( 8*sizeof(n) - 1 ); i > 0; i >>= 1 )
    {
        strcat( r, ((n & i) == i) ? "1" : "0" );
    }
}
 
int main( int argc, char **argv )
{
    char* str = (char*)malloc( 8*sizeof(int) + 1 );
    *str = 0;
 
    bin(str, 5);
 
    printf( "%s\n", str );
    free( str );
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 4
30.07.2013, 23:46  [ТС] 6
Задание
Функция, которая принимает на вход произвольное значение целого типа и возвращающая строку, содержащую представление числа в двоичной системе исчисления.
void bin(
char * r, // строка с результатом
unsigned int n // произвольное число
)
0
40 / 37 / 15
Регистрация: 25.10.2012
Сообщений: 112
30.07.2013, 23:58 7
Дизъюнкция, ну тогда Fyret вроде прав
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 4
31.07.2013, 00:24  [ТС] 8
Благодарю, отлично работает, а как правильно добавить условие, чтобы нули не выводились до первого вывода единицы, т.е. чтобы результат выглядел не "00000000000000000000000000000101", а "101"?
0
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
31.07.2013, 00:39 9
Цитата Сообщение от Дизъюнкция Посмотреть сообщение
а как правильно добавить условие, чтобы нули не выводились до первого вывода единицы, т.е. чтобы результат выглядел не "00000000000000000000000000000101", а "101"?
C
1
2
3
4
    /* printf( "%s\n", str ); */
    char* result = strchr( str, '1' );
    printf( "%s\n", result ? result : "0" );
    free( str );
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12460 / 7484 / 1754
Регистрация: 25.07.2009
Сообщений: 13,763
31.07.2013, 03:06 10
Цитата Сообщение от Дизъюнкция Посмотреть сообщение
Такой тип указан в условии задачи
Странно как-то... Должна функция возвращать строку - так пусть и возвращает...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <limits.h>
#include <string.h>
 
char * binstr(char * buf, unsigned n) {
    if ( ! n )
        return strcpy(buf, "0");
    else {
        int pos = CHAR_BIT * sizeof(unsigned) - 1;
        char * ptr = buf;
        
        while ( ! ( n >> pos ) )
            --pos;
        while ( pos >= 0 )
            *ptr++ = ( ( n >> pos-- ) & 1 ) + '0';
        *ptr = '\0';
        
        return buf;
    }
}
 
int main(void) {
    char buf[BUFSIZ];
    unsigned n;
    
    while ( printf("Number: ") && scanf("%u", &n) == 1 )
        printf("Binary: %s\n", binstr(buf, n));
    
    return 0;
}
2
31.07.2013, 03:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2013, 03:06
Помогаю со студенческими работами здесь

Возвращение строки из функции
Есть код #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;ctime&gt; #include...

Возвращение строки из функции
Не могу разобраться, почему возвращает кракозябру. Помогите пожалуйста найти ошибку. #include...

Возвращение новой строки из функции
Пишу функцию, в которой мне необходимо вернуть новую строку. Делаю следующим образом: #include...

Целесообразно ли возвращение из функции не объекта, а Json строки?
Здравствуйте. Один товарищ сказал, что если функция возвращает Json строчку, а не объект, то...

Возвращение результата функции bool и использование его в функции main()
У меня есть функция bool, которая имеет вид: bool Pisos(int row, int place) { if (...)...

Возвращение строки
Скрипт который при правильном вводе слова в input кидает на след страницу по ссылке, но у меня при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru