"Łaczenie" zmiennych

0

Czy w C jest możliwość tak jak np. w php połączenia 2 zmiennych w nastepujacy sposób:


void otworz_plik(int id){
  data = fopen("\jakas\sciezka\" . id . ".txt", "a");
}

Szukalem odpowiedzi ale ciezko mi dopasowac je do swojego problemu.

2

Przeskok z PHP do C nie będzie taki przyjemny jak Ci się pewnie wydawało na początku - musisz ręcznie przekonwertować id na ciąg znaków, a potem dokonać ich konkatenacji.
Ew. wykorzystaj sprintf, kto co lubi :P

1

Jest, ale nie tak ładne i wygodne. Musisz użyć funkcji sprintf. Łap linka do dokumentacji z przykładami.
http://www.cplusplus.com/reference/cstdio/sprintf/

Jeżeli jednak c++ też wchodzi w grę to już z klasą string wyjdzie to dużo łatwiej.

0

Gra. Byłem świadomy tego, że C to bardzo surowy język dlatego też nie spodziewałem się tak łatwego rozwiązania. :P

krzysiek050, niestety C++ nie wchodziło w grę. Dzięki za pomoc!

3

sprintf ma taką wadę że nie zabezpiecza przed przepełnieniem bufora.
bezpieczniej jest używać snprintf albo sprintf_s (obie są w standardzie, ale niestety w praktyce nie zawsze dostępne)

0

Wezmę pod uwagę. :) A nakierujcie mnie jak powinna wyglądać ta funkcja:

#define PATH "sth/"

char* create_path(int id)
{
    char general_path[250];

    char s_id[20];

    sprintf(s_id, "%d.txt", id);

    sprintf (general_path, "%s%s", PATH, room_id);

    char *adres = general_path;
    return adres;

} 

Aby zwracała mi "sth/id.txt" w taki sposób abym mógł użyć tego np. fopen(create_path(id), [...])?

Próbuję jak mogę, ale non stop coś jest nie tak. Aż tak bardzo C jest rygorystyczny?

1

Teraz masz bzdury straszne, bo zwracasz adres do zmiennej lokalnej. Ja bym to zrobił tak
http://ideone.com/nIHLjz
Rozwiązanie w C++, może Cię to przekona do zmiany jeśli możesz
http://ideone.com/hXDBdu

0

Wielkie dzięki! Niestety, zmiana na C++ nie wchodzi w grę. A uwierz, chciałbym bardzo bardzo..

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