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

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

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

return *char - C++

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

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". ...

Разница между char и signed char - C++
Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый. Не комплилируется следующий фрагмент кода: void...

В чем разница между char* и char[]? - C++
Доброго времени суток, наткнулся на одну загвоздку есть такой кусок кода int _tmain(int argc, _TCHAR* argv) { char *a =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
08.10.2010, 20:09     return *char #2
Цитата Сообщение от molnia Посмотреть сообщение
а оно не работает
Не работает оно скорее всего потому, что вы возвращаете адрес локальной переменной, которая, после завершения функции будет уничтожена.
CyBOSSeR
Эксперт C++
2300 / 1670 / 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
1235 / 773 / 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2010, 12:35     return *char
Еще ссылки по теме:

Совместимость char и unsigned char - C++
Есть некие числа в виде unsigned char. Есть строка в виде массива char (которая потом сбрасывается в файл с помощью fputs). В программе...

Копирование char* в массив char[i]* - C++
Друзья, не бейте, искал, то что нашел - не помогло. Использую WinAPI, но это не суть важно сейчас. Весь код под спойлером у меня есть...

Разница между new char[] и new char[]() - C++
Доброго времени суток. Подскажите пожалуйста разницу, между следующим кодом: char* ch = new char; и char* ch = new...

Массив char в переменную char - C++
Допустим, имеется заполненный массив char Massiv, и есть переменная char buff. Как массив передать в переменную?

Char *(UTF-8) -> char *(ANSI) - C++
Есть строка в кодировке UTF-8(если не ошибаюсь) типа char * Вот так ее я вижу в MSVC++10 - комментарии(оригинал - комментарии)...

Unsigned char * в char * и наоборот - C++
Здравствуйте!помогите перевести unsigned char * в char * и наоборот без использования printf


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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
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
Ответ Создать тему
Опции темы

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