Przypisanie char[] do char*

0

Pisze w C program na zaliczenie i utknąłem tuż przy końcu

char buff_str[256];
struct mojaStruktura nowa; //struktura posiada pewne pole char* nazwa
fscanf(fp,"%s\n",buff_str); //pobieram nazwę z pliku
nowa.nazwa = buff_str;

Mam problem z przypisaniem, gdyż przy większej ilości rekordów gubię poprzednie nazwy.
Próbowałem to rozwiązać w taki sposób:

strcpy(nowa.nazwa,buff_str);

niestety też nie działa, a program się zawiesza.

Czy ktoś mógłby mnie naprowadzić na sposób, w jaki można przypisać do char* = char[] ?

0

Za mało pokazałeś. Jeżeli tworzysz kilka struktur i wskazujesz na tą samą tablicę, to pewne jest, że sobie nadpiszesz dane. strcpy natomiast powinno zadziałać bez problemu, pod warunkiem, że zaalokowałeś pamięć dla danych przechowywanych w nowa.nazwa. Nazwa w strukturze rozumiem, że to char*

0
char* strnew(const char* s)
{
  char *result = malloc(strlen(s)+1);
  strcpy(result, s);
  return result;
}
nowa.nazwa = strnew(buff_str);

nie zapomnij na końcu zwolnić tego stringa:

free(nowa.nazwa);

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