• 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
64 wizyt
pytanie zadane 9 stycznia w C i C++ przez zareba123 Nowicjusz (120 p.)
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 draghan Szeryf (88,410 p.)
Szukaj w Google "łańcuchy znaków C". To nie takie trudne. :)
0 głosów
odpowiedź 9 stycznia przez timrh Mądrala (6,080 p.)

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

char * x = "plik.txt";

 

komentarz 9 stycznia przez draghan Szeryf (88,410 p.)
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 timrh Mądrala (6,080 p.)
Dlaczego jest błędny? Kompiluje się i poprawnie da się zmieniać wartość oraz ją wyświetlać.
1
komentarz 9 stycznia przez draghan Szeryf (88,410 p.)

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 timrh Mądrala (6,080 p.)
Ok, w takim razie dzięki za poprawienie.
komentarz 9 stycznia przez draghan Szeryf (88,410 p.)
Na zdrowie. :)

Podobne pytania

0 głosów
4 odpowiedzi 803 wizyt
pytanie zadane 16 kwietnia 2015 w C i C++ przez M4tthew Gaduła (4,420 p.)
0 głosów
2 odpowiedzi 31 wizyt
0 głosów
2 odpowiedzi 62 wizyt
pytanie zadane 24 października 2016 w C i C++ przez piekarnik Użytkownik (700 p.)
...