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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
molnia
7 / 7 / 1
Регистрация: 21.11.2008
Сообщений: 41
#1

return *char - C++

08.10.2010, 20:05. Просмотров 1140. Ответов 4
Метки нет (Все метки)

если функция дожна возвращать строку... как это сделать?
я написала так:
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);
а оно не работает
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2010, 20:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос return *char (C++):

return + char* - C++
Как я понимаю, он вернет всякую чушь, потому что локальная переменная m уничтожается по завершению функции. Тогда нужно выделять память с...

Return char* непонятная ошибка - C++
Добрый день. Начал разбираться в коде и внезапно появилась проблема... Собственно код: main.cpp int main(int argc, char**...

Возврат char* через return - C++
Вот написал маленький пример, того с чем не могу разобраться в большой программе: char *filename; FILE *fd; ...

Visual c++ возврат указателя, return *char - C++
есть класс journal, Я передаю в char *name значение "gfg", а возвращает от мне заименнованное значение name, только первый символ "f". ...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]" - C++
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include <iostream> template<typename T> inline const T...

В чем разница между return и return false/true - C++
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
08.10.2010, 20:09 #2
Цитата Сообщение от molnia Посмотреть сообщение
а оно не работает
Не работает оно скорее всего потому, что вы возвращаете адрес локальной переменной, которая, после завершения функции будет уничтожена.
0
CyBOSSeR
Эксперт C++
2302 / 1672 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
08.10.2010, 20:10 #3
molnia, либо динамически выделяй память под строку в функции:
C++
1
char* str = new char[100];
и потом не забудь удалить когда она будет не нужна с помощью delete [].
Либо используй std::string и не парься.
1
Genius Ignat
1236 / 774 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
08.10.2010, 20:33 #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;
}
1
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,459
09.10.2010, 12:35 #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);
}
Ещё проще, зачем возвращать указатель, который НЕ ИЗМЕНЯЕТСЯ? Незачем.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2010, 12:35
Привет! Вот еще темы с ответами:

Как сделать так, что если файл существует return true, если нет - return false - C++
Здравствуйте, я новичок в программировании. Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' - C++
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void crpost(const statep &amp;struc1) { ...

Ошибка в cannot convert char * to char вроде поправил теперь выводит ересь( - C++
Всем доброго дня! У меня такая проблемка.... написал программу, но сначала она ругалась на Cannot convert char* to char теперь вроде...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.10.2010, 12:35
Ответ Создать тему
Опции темы

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