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 :)

 
#include <QString>
int main()
{

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

    return 0;
}



0

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

3

QtCreator to tylko IDE.

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

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

Natomiast ja bym polecał użycie QFile.

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

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

 
 FILE* fp = fopen(nazwaPliku.toStdString().c_str(),"r");
0

Ten sam błąd funkcji fopen Invalid argument

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


1

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

1

A masz plik plik.txt w katalogu roboczym?

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1