Как передать из функции значение, чтобы запустить другую функцию?
В данном коде я создаю в функции get_str массив символов. Затем я хочу результат работы этой функции передать в функцию slenght, которая должна выводить размер этой строки(массива символов). И затем я хочу организовать вывод значения функции slenght в main. Подскажите, как это сделать? Я не понимаю как передать str из первой функции во вторую. Или как вызвать функцию get_str из функции slenght.
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
char get_str(){
size_t length = 0;
char* str = malloc(100*sizeof(char));
if (str == NULL) {
return 1;}
printf("Write string and press ENTER to continue:\n");
while (1){
char c = getchar();
if (c == 10) break;
length++;
str[length - 1] = c;}
return str;
}
//int slenght(get_str){
// int len = -1;
// while (++len, *str++);
// return len;}
int main() {
slenght(get_str);
return 0;}
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
get_str == адрес функции ; get_str() == результат вызова функции. Возвращать надо не одну букву, а их массив. char * get_str(){..
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int slenght(char const * );
char * get_str(){
size_t length = 0;
char* str = malloc(100*sizeof(char));
if (str == NULL) {
return NULL;
}
printf("Write string and press ENTER to continue:\n");
while (1){
char c = getchar();
if (c == 10)
break;
length++;
str[length - 1] = c;
}
return str;
}
int slenght(char const * str){
int len = -1;
while (++len, *str++)
;
return len;
}
int main() {
int len = slenght(get_str());
return 0;
}
и чтобы не терять выделенную память надо указатель сохранить в переменную
char * str ;
int len = slenght(str = get_str());
free ( str ) ;