Форум программистов, компьютерный форум CyberForum.ru

return *char - C++

Восстановить пароль Регистрация
 
molnia
 Аватар для molnia
7 / 7 / 1
Регистрация: 21.11.2008
Сообщений: 41
08.10.2010, 20:05     return *char #1
если функция дожна возвращать строку... как это сделать?
я написала так:
C++
1
2
3
4
5
6
7
8
9
char* GetString(char *filename)
{   FILE *f1;
    char str[100];
  f1=fopen(filename,"r");
   if (f1!=0) fgets(str,100,f1);
    else printf ("File not found");
  fclose(f1);
  return str;
}
а после этого вызов функции
C++
1
char *string=GetString(fname);
а оно не работает
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2010, 20:05     return *char
Посмотрите здесь:

Преобразование char[256] в char* C++
Возврат char* через return C++
C++ return + char*
C++ Разница между char и signed char
C++ Невозможно преобразовать char* в char
C++ В чем разница между char* и char[]?
Копирование char* в массив char[i]* C++
В чем разница между char* и char ** C++
Return char* непонятная ошибка C++
Сравнение разных типов *Char и Char C++
C++ Разница между new char[] и new char[]()
В чем отличие char* s от char *s C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
08.10.2010, 20:09     return *char #2
Цитата Сообщение от molnia Посмотреть сообщение
а оно не работает
Не работает оно скорее всего потому, что вы возвращаете адрес локальной переменной, которая, после завершения функции будет уничтожена.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.10.2010, 20:10     return *char #3
molnia, либо динамически выделяй память под строку в функции:
C++
1
char* str = new char[100];
и потом не забудь удалить когда она будет не нужна с помощью delete [].
Либо используй std::string и не парься.
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
08.10.2010, 20:33     return *char #4
Вставлю свои пять копеек, можно еще воспользоваться модификатором static.

Небольшой пример:
C++
1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;
 
char *f(){static char str[32] = "Ignat"; return str;}
int main(){
cout<<f()<<endl;
return 0;
}
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,302
09.10.2010, 12:35     return *char #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я бы так сделал:
C++
1
2
3
4
5
6
7
8
char* GetString(char *filename, char* str){
         FILE *f1;
  f1=fopen(filename,"r");
   if (f1!=0) fgets(str,100,f1);
    else printf ("File not found");
  fclose(f1);
  return str;
}
Добавлено через 14 часов 11 минут
C++
1
2
3
4
5
6
7
GetString(char *filename, char* str){
         FILE *f1;
  f1=fopen(filename,"r");
   if (f1!=0) fgets(str,100,f1);
    else printf ("File not found");
  fclose(f1);
}
Ещё проще, зачем возвращать указатель, который НЕ ИЗМЕНЯЕТСЯ? Незачем.
Yandex
Объявления
09.10.2010, 12:35     return *char
Ответ Создать тему
Опции темы

Текущее время: 12:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru