• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmienna jako tekstowy argument funckji

0 głosów
56 wizyt
pytanie zadane 9 stycznia w C i C++ przez użytkownika zareba123 Nowicjusz (120 punkty)
Mam pewien problem, otóż chciałbym użyć zmiennej jako argumentu tekstowego funkcji. Przykładowo chciałbym otwierać dowolny zdefiniowany przez użytkownika plik.

 

Chciałbym wczytać coś do zmiennej char i potem użyć tego w fopen.

 

Przykładowo:

fopen("plik.txt","r");

i miałoby to wygladać tak:

x=plik.txt;

fopen(x,"r")

 

Apostrofy jak w przypadku php jednak nie działają, jakies pomysly?

2 odpowiedzi

0 głosów
odpowiedź 9 stycznia przez użytkownika draghan Szeryf (78,420 punkty)
Szukaj w Google "łańcuchy znaków C". To nie takie trudne. :)
0 głosów
odpowiedź 9 stycznia przez użytkownika timrh Mądrala (5,900 punkty)

Zrób wskaźnik na tablicę char'ów.

char * x = "plik.txt";

 

komentarz 9 stycznia przez użytkownika draghan Szeryf (78,420 punkty)
char * x = "plik.txt";

To jest błędny kod.

Należałoby to zrobić jakoś tak:

char t[] = "abc";
// lub
const char *t = "abc";

 

komentarz 9 stycznia przez użytkownika timrh Mądrala (5,900 punkty)
Dlaczego jest błędny? Kompiluje się i poprawnie da się zmieniać wartość oraz ją wyświetlać.
komentarz 9 stycznia przez użytkownika timrh Mądrala (5,900 punkty)
1
komentarz 9 stycznia przez użytkownika draghan Szeryf (78,420 punkty)

Kompiluje się i poprawnie da się zmieniać wartość oraz ją wyświetlać.

Co do poprawności wyświetlania wartości, to się zgodzę.

Jednak co do poprawności zmiany tego napisu się nie zgodzę. Wpisane implicite w kodzie źródłowym literały (np. łańcuchy znaków) umieszczane są w pamięci tylko do odczytu, tak więc należy je traktować - utworzyć wskaźnik do stałej.

Lub jawnie zaalokować pamięć na łańcuch, co dzieje się gdy używamy zapisu tablicowego.

komentarz 9 stycznia przez użytkownika draghan Szeryf (78,420 punkty)
komentarz 9 stycznia przez użytkownika timrh Mądrala (5,900 punkty)
Ok, w takim razie dzięki za poprawienie.
komentarz 9 stycznia przez użytkownika draghan Szeryf (78,420 punkty)
Na zdrowie. :)

Podobne pytania

0 głosów
4 odpowiedzi 591 wizyt
pytanie zadane 16 kwietnia 2015 w C i C++ przez użytkownika M4tthew Gaduła (4,420 punkty)
0 głosów
2 odpowiedzi 57 wizyt
pytanie zadane 24 października 2016 w C i C++ przez użytkownika piekarnik Użytkownik (700 punkty)
+1 głos
2 odpowiedzi 151 wizyt
pytanie zadane 13 września 2016 w C i C++ przez użytkownika pewien_programista Użytkownik (690 punkty)
...