Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 257

Функция fopen не принимает параметр String

15.08.2016, 03:44. Показов 4165. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FILE *F;
TStringList * Text = new TStringList;
Text->LoadFromFile("Текстовые файлы");
for(int i = 0; i < Text->Count; i++)
   {
 
          String t =Text->Strings[i]  ;
          if((F = fopen(t,"r+")) == NULL) 
              {
                  
                  ShowMessage("Файл не удается открыть");
                  continue;
              }
   }
Функция fopen не принимает параметр String, а как привести к char? Пробовал так: (char*)t.c_str(), при компиляции ошибки не возникает, но при выполнении файл не открывается.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.08.2016, 03:44
Ответы с готовыми решениями:

Функция fopen
Мой c++ builder 6 ругается на этот код: #include &lt;stdio.h&gt; FILE* file=fopen(&quot;filename.txt&quot;, &quot;w+&quot;); fprintf(file,&quot;%S&quot;,...

OpenDialog и функция fopen()
Здравствуйте. Нужно считать строки из файла, открытого с помощью OpenDialog код подпрограммы такой: { FILE* stream; ...

Конструктор создания файла не принимает третий параметр
Почему работает: ofstream out(sFNArch.c_str(), ios::binary | ios::app); (sFNArch это String с полным именем файла) Но не работает: ...

11
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
15.08.2016, 08:33
samsebe, что именно у вас возвращает c_str (тип и значение) смотрели?
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
15.08.2016, 08:44
А так разве не работает?
C++
1
2
3
String t =Text->Strings[i]  ;
if((F = fopen(t.c_str(),"r+")) == NULL)
...
Добавлено через 3 минуты
опять же, почему бы не работать с текстовыми файлами методами Билдера, а не С++?
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 257
15.08.2016, 09:36  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
что именно у вас возвращает c_str (тип и значение) смотрели?
не понял вопроса.

Цитата Сообщение от D1973 Посмотреть сообщение
А так разве не работает?
C++Выделить код
1
2
3
String t =Text->Strings[i] *;
if((F = fopen(t.c_str(),"r+")) == NULL)
...
[bcc32 Error] Unit1.cpp(68): E2034 Cannot convert 'wchar_t *' to 'const char *'
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
15.08.2016, 09:46
samsebe, это и есть ответ на мой вопрос - возвращает wchar_t а функция ждёт char

Добавлено через 1 минуту
Используйте _wfopen

Добавлено через 1 минуту
Или преобразуйте Юникод в Анси перед подачей в функцию по нормальному (не через каст)
1
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
15.08.2016, 09:51
Лучший ответ Сообщение было отмечено samsebe как решение

Решение

Цитата Сообщение от samsebe Посмотреть сообщение
Cannot convert 'wchar_t *' to 'const char *'
Решение 1:
C++
1
AnsiString t =Text->Strings[i];
Решение 2:
C++
1
2
String t =Text->Strings[i];
if((F = _wfopen(t.c_str(), L"r+")) == NULL)
Решение 3:
Ну их в пим дырявый эти сишные методы работы с файлами! Все можно средствами Билдера сделать
2
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 257
15.08.2016, 09:56  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
if((F = _wfopen(t.c_str(), L"r+")) == NULL)
вот так работает. А с билдеровскими методами я еще не знаком...
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
15.08.2016, 10:51
Цитата Сообщение от samsebe Посмотреть сообщение
А с билдеровскими методами я еще не знаком...
Так расскажи, что тебе нужно сделать с этими несчастными файлами - познакомим с Билдеровскими методами решения задачи. А то даете постоянно какие-то незначащие огрызки заданий, получаете на них ответы и ваяете таких монстров, что смотреть потом страшно... Будет полное задание - будет грамотное решение. Иначе это все очень напоминает один известный сценарий
0
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 257
15.08.2016, 14:35  [ТС]
Задача не сложная. Нужно из текстового файла по порядку читать предложения, для дальнейшей обработки.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
15.08.2016, 16:48
Ну так создай еще один StringList, читай в него все содержимое файла, и потом работай с содержимым StringList-а (или вообще читай весь файл в строку при помощи TFile::ReadAllText, а потом ее разбирай на предложения через SplitString и обрабатывай простейшим циклом for, решение в две строки кода) вместо того чтобы заниматься ерундой и открывать файл средствами, пришедшими из допотопного Си.
1
61 / 50 / 12
Регистрация: 25.01.2010
Сообщений: 257
17.08.2016, 02:45  [ТС]
Не пойму как подключить ReadAllText.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,395
Записей в блоге: 3
17.08.2016, 04:46
C++
1
2
3
#include <IOUtils.hpp>
...
String TextFile = TFile::ReadAllText("C:\\TMP\\123.txt");
Вот так, как-то...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2016, 04:46
Помогаю со студенческими работами здесь

Функция не принимает параметр
Есть структура: struct tovar { char name_prod; char country_prod; int number_prod; }; Есть программа: char...

Функция принимает один параметр – строку, которая содержит тег
Здравствуйте.Задача: Создайте функцию, которая принимает один параметр – строку, которая содержит тег. При вызове функции, она подчеркивает...

Std::fstream почему функция write принимает параметр char* а не unsigned char* (аля byte*) ?
Ну собственно сабж... std::fstream fs; fs.write((char*)..) В случае бинарного потока я допустим пишу байты функцией write, как...

VisuaStudio2012 не принимает fopen() и тому подобные функции
не принимает fopen() и тому подобные функции просит fopen_c() а там другие параметры нужно передавать Как заставить работать fopen()?

Функция, которая принимает аргумент типа String и возвращает результат типа Double
Написать функцию, которая принимает аргумент типа String, и возвращает результат типа Double, который содержит числовой эквивалент значения...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru