Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
LiveGuard
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 32
1

Возвращение переменной из функции

05.11.2015, 20:40. Просмотров 1061. Ответов 11
Метки нет (Все метки)

Объявляю функцию типа char, объявляю в ней переменную s2 тоже типа char, но возвращать эту переменную функция отказывается, выдает еррор вида:
IntelliSense: return value type does not match the function type
В чем собственно беда?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2015, 20:40
Ответы с готовыми решениями:

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

Возвращение строки из функции
#include <cstdio> #include <string.h> void bin(char * r, unsigned int n) {...

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

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

Возвращение массива в функции с переменным количеством параметров
задание Пoследoвaтeльнocть вещeствeнныx пoлoжитeльныx пеpeмeнных, ограничeннaя...

11
Даценд
Модератор
Эксперт .NET
4330 / 4047 / 2676
Регистрация: 20.04.2015
Сообщений: 7,342
05.11.2015, 20:43 2
LiveGuard,
покажите функцию
0
LiveGuard
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 32
05.11.2015, 20:49  [ТС] 3
Даценд,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char change(char s1[512]) {
    char s2[1024], s3[512], *p1, *p;
    int k = 0, i = 0;
    
    p = strchr(s1, '//');
    p1 = strchr(p, '\n');
    strncpy(s2, s1, strlen(s1) - strlen(p));
    s2[strlen(s1) - strlen(p)] = '\0';
    k = strlen(s1) - strlen(p1);
    strncpy(s3, s1 + k, strlen(p1));
    //printf("%s\n", s3);
    s3[strlen(p1)] = '\0';
    strcat(s2, s3);
    printf("%s", s2);
    return s2;
0
Даценд
Модератор
Эксперт .NET
4330 / 4047 / 2676
Регистрация: 20.04.2015
Сообщений: 7,342
05.11.2015, 21:00 4
Ну так функция возвращает char, а s2 - массив char.
Если нужно вернуть массив, возвращайте char*
0
LiveGuard
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 32
05.11.2015, 21:17  [ТС] 5
Пробовал, теперь при вызове функции программа вылетает
printf("\n%s", change(A));

Для теста в самой функции выводил s2 и ничего не возвращал и все было хорошо
То есть я вызываю где-то неправильно)
0
Даценд
Модератор
Эксперт .NET
4330 / 4047 / 2676
Регистрация: 20.04.2015
Сообщений: 7,342
05.11.2015, 23:25 6
Лучший ответ Сообщение было отмечено LiveGuard как решение

Решение

LiveGuard,
не знаю, вот работающий код (естественно формат исходного текста мне неизвестен):
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
#include <conio.h>
#include <stdio.h>
#include <string.h>
 
char* change(char s1[512]) 
{
    char s2[1024], s3[512], *p1, *p;
    int k = 0, i = 0;
    p = strchr(s1, '//');
    p1 = strchr(p, '\n');
    strncpy(s2, s1, strlen(s1) - strlen(p));
    s2[strlen(s1) - strlen(p)] = '\0';
    k = strlen(s1) - strlen(p1);
    strncpy(s3, s1 + k, strlen(p1));
    s3[strlen(p1)] = '\0';
    strcat(s2, s3);
    printf("%s", s2);
    return s2;
}
 
int main()
{
    char A[512]="qwe\nrw//erd\nfgb//dfgb";
    printf("\n%s", change(A));
    getch ();
    return 0;
}
1
LiveGuard
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 32
06.11.2015, 01:38  [ТС] 7
Даценд, Cпасибо большое, помогли, но возникла новая проблема:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while (!feof(a)){
        printf("%d    ", i);
        fscanf(a, "%c", &D[i]);
        i++;
        p = strchr(A, '//');
        p1 = strchr(p, '\n');
        strncpy(B, A, strlen(A) - strlen(p));
        B[strlen(A) - strlen(p)] = '\0';
        k = strlen(A) - strlen(p1);
        strncpy(C, A + k, strlen(p1));
        C[strlen(p1)] = '\0';
        strcat(B, C);
        //printf("\n%s", B);
        A== B;  [COLOR="lime"]// не так что-то в этой строке [/COLOR] 
    }
    printf("Result: \n%s\n\n", A); // при выводе А результат такой, как будто цикл не прошел не разу. выведу В - прошел 1 раз
        return 0;
Буду благодарен если подскажите еще раз)
0
bsa916115
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
06.11.2015, 16:53 8
В строке 14 это не из C, а откуда то из HTML
0
LiveGuard
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 32
06.11.2015, 22:43  [ТС] 9
bsa916115, я понимаю, но как записать по другому не знаю, вот и хочется что бы подсказали

Добавлено через 4 часа 59 минут
апп
0
bsa916115
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
06.11.2015, 22:50 10
C
1
2
3
4
5
char color[125];
// это в самом начале функции
// далее
strcpy(color, "LIME");
 // Откуда исходник 14 строки?
0
LiveGuard
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 32
07.11.2015, 01:30  [ТС] 11
Сейчас сформулирую то, что я хочу сделать, но не знаю как)

У меня есть две строки: первая - A[512], которая, допустим, заполнена на 300 символов и B[512], которая заполнена на 200 символов. Мне нужно как-то строку B скопировать в A(не объединить, а именно заменить).
Я думаю, что надо предварительно обнулить строку A и уже потом скопировать в нее строку B, но почему-то у меня это не получается, вылетает программка. Вот собственно в чем беда)
0
bsa916115
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
07.11.2015, 04:26 12
Где вылетает? Исходники можно взглянуть? Функция strcpy обнуляет строку. Скорее всего где-то переменную неправильно описали. Если полностью надо массив нулями заполнить, то memset

Добавлено через 4 минуты
strcpy(A, B) если B на ноль заканчивается. Или memcpy(A, B, number_of_bytes) если знаете количество байт, которое нужно скопировать
0
07.11.2015, 04:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2015, 04:26

Табулирование функции одной переменной
Здравствуйте. Помогите с кодом пожалуйста. Условие задачи : Вот мой не...

Передача нетипизованной переменной функции
Дан некоторый заголовок функции. Допустим, так: void func(void a, unsigne...

Функции не возвращают значение переменной
Ув.программисты! В функциях дополнения,удаления в структуру изменяется n-размер...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru