• 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
58 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 (82,510 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 (6,040 punkty)

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

char * x = "plik.txt";

 

komentarz 9 stycznia przez użytkownika draghan Szeryf (82,510 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 (6,040 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 (6,040 punkty)
1
komentarz 9 stycznia przez użytkownika draghan Szeryf (82,510 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 (82,510 punkty)
komentarz 9 stycznia przez użytkownika timrh Mądrala (6,040 punkty)
Ok, w takim razie dzięki za poprawienie.
komentarz 9 stycznia przez użytkownika draghan Szeryf (82,510 punkty)
Na zdrowie. :)

Podobne pytania

0 głosów
4 odpowiedzi 653 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 61 wizyt
pytanie zadane 24 października 2016 w C i C++ przez użytkownika piekarnik Użytkownik (700 punkty)
+1 głos
2 odpowiedzi 182 wizyt
pytanie zadane 13 września 2016 w C i C++ przez użytkownika pewien_programista Użytkownik (700 punkty)
...