Возвращение переменной из функции - C (СИ)
Формулировка задачи:
Объявляю функцию типа char, объявляю в ней переменную s2 тоже типа char, но возвращать эту переменную функция отказывается, выдает еррор вида:
IntelliSense: return value type does not match the function type
В чем собственно беда?
Решение задачи: «Возвращение переменной из функции»
textual
Листинг программы
#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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
, , - Определяется функция change с типом возвращаемого значения char* и параметром char s1[512]
- Внутри функции объявляются следующие переменные:
- char s2[1024], s3[512], p1, p;
- int k = 0, i = 0;
- С помощью функции strchr ищется символ '//' в строке s1, а затем с помощью функции strlen вычисляется длина строки до этого символа.
- С помощью функции strncpy копируется подстрока s1, начиная с символа '//' и до конца строки, в переменную s2.
- В переменную s3 копируется подстрока s1, начиная с позиции, следующей за символом '//', и до конца строки.
- С помощью функции strcat происходит объединение строк s2 и s3.
- С помощью функции printf выводится результат работы функции change.
- В функции main создается строка A[512]=
qwe\nrw//erd\nfgb//dfgb. - С помощью функции printf выводится содержимое строки A.
- Вызывается функция change с аргументом A.
- Результат работы функции change выводится с помощью функции printf.
- Запускается функция getch для ожидания нажатия клавиши.
- Возвращается 0, что означает успешный конец работы программы.