Konwersja string na char

Konwersja string na char
0

Witam. Mam problem z funkcją fopen. Chcę aby ścieżka do pliku którą przyjmuje fopen była w zmiennej a nie wpisywana na sztywno. Próbowałem konwertować w różny sposób ale zawsze wyrzuca mi błąd konwersji. Dodam że musze korzystać z funkcji w QTCreator.
Z góry dzięki za pomoc :)

Kopiuj
 
#include <QString>
int main()
{

    QString nazwaPliku="plik.txt";
    FILE* fp = fopen(nazwaPliku,"r");
    if(!fp)
    {
        perror ("ERROR");
    }

    return 0;
}



_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:7 dni
0

fopen(nazwaPliku.c_str(),"r");


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
kq
to jest QString :P
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 22 godziny
  • Lokalizacja:Szczecin
3

QtCreator to tylko IDE.

Jeśli koniecznie chcesz w niewygodny sposób rodem z C odczytywać plik, to masz do wyboru:

Kopiuj
QString nazwaPliku="plik.txt";
FILE* fp = fopen(nazwaPliku.toLatin1().constData(), "r");
Kopiuj
std::string nazwaPliku="plik.txt";
FILE* fp = fopen(nazwaPliku.c_str(), "r");
Kopiuj
char const* nazwaPliku = "plik.txt";
FILE* fp = fopen(nazwaPliku, "r");

Natomiast ja bym polecał użycie QFile.

Kopiuj
QString nazwaPliku="plik.txt";
QFile plik(nazwaPliku);
if (!plik.open(QIODevice::ReadOnly | QIODevice::Text))
        return;

edytowany 1x, ostatnio: kq
twonek
char const* nazwaPliku i potem nazwaPliku.toLatin1().constData()? :P
kq
Tzw. błąd kopiego-pejsta.
0

Chyba o to chodziło.Kompiluje się ale wyrzuca błąd funkcji fopen Invalid argument

Kopiuj
 
 FILE* fp = fopen(nazwaPliku.toStdString().c_str(),"r");
kq
Więcej kodu
0

Ten sam błąd funkcji fopen Invalid argument

Kopiuj
 
#include <QString>
int main()
{
 
    QString nazwaPliku="plik.txt";
    FILE* fp = fopen(nazwaPliku.toLatin1().constData(), "r")
    if(!fp)
    {
        perror ("ERROR");
    }
 
    return 0;
}


_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:7 dni
1

zapomniałeś: #include <stdio.h>


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 22 godziny
  • Lokalizacja:Szczecin
1

A masz plik plik.txt w katalogu roboczym?


Zobacz pozostałe 2 komentarze
_13th_Dragon
Początkujące czas od czasu zaskakują ... nigdy nie pomyślałbyś że ktoś wpadnie na pomysł ...
kq
Swoją drogą, w Qt 5.4 z mingw-gcc, inkluduje stdio.h z QString.
_13th_Dragon
Naprawdę, nigdy nie zgadniesz :/
kq
Szklana kula dziś w formie ;)
_13th_Dragon
No to teraz nie będę wysyłać do wróżbitów tylko do @kq ;P
0

Ok działa błąd był w ścieżce do pliku :) Dzięki za pomoc

_13th_Dragon
błąd w ścieżce i "Invalid argument" - WTF?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.