Как проверить, указывает ли путь на корневую папку с помощью Delphi

Каков самый лучший / самый простой способ проверить, есть ли определенный путь указывает на корень диска?

Думаю, я мог бы просто проверить, заканчивается ли имя пути на '\' или ':', или если путь составляет всего 2 или 3 символа, длинные и / или запутанные; поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть. Итак, я получил эту структуру: ...

Я знаю, что этот вопрос уже давно существует, но я нашел ответы немного туманными, длинными и / или запутанными; поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy чтобы добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть. Итак, я получил эту структуру: ...

Я знаю, что этот вопрос уже давно существует, но я нашел ответы немного туманными, длинными и / или запутанными; поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy чтобы добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть. Итак, я получил эту структуру: ...

Я знаю, что этот вопрос уже давно существует, но я нашел ответы немного туманными, длинными и / или запутанными; поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy чтобы добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! Итак, я получил эту структуру: ...

Я знаю, что этот вопрос был, но я нашел ответы немного туманными, длинными и / или запутанными; поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! Итак, я получил эту структуру: ...

Я знаю, что этот вопрос уже давно существует, но я нашел ответы немного туманными, длинными и / или запутанными; поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! поэтому я собираюсь специально сослаться на свой код, чтобы полностью понять суть.

поэтому я получил эту структуру:

typedef struct album {
  unsigned int year;
  char *artist;
  char *title;
  char **songs;
  int songs_c;
} album ;

следующие функции:

struct album* init_album(char *artist, char *album, unsigned int year){
  struct album *a;
  a= malloc( sizeof(struct album) );
  a->artist = malloc( strlen(artist) + 1);
  strncpy(a->artist, artist, strlen(artist));
  a->title = malloc( strlen(album) +  1);
  strncpy(a->title, album, strlen(album));
  a->year = year;
  return a;
}

void add_song(struct album *a, char *song){
  int index = a->songs_c;
  if (index == 0){
    a->songs = malloc( strlen(song) );
  } else a->songs[index] = malloc( strlen(song)+1 );

  strncpy(a->songs[index], song, strlen(song));
  a->songs_c= a->songs_c+1;
}

И основная функция:

int main(void){
  char *name;
  char artist[20] = "The doors";
  char album[20] = "People are strange";
  int year = 1979;

  struct album *a;
  struct album **albums;

  albums = malloc( sizeof(struct album));

  albums[0] = init_album((char *)"hihi", (char *)"hoho", 1988);

  albums[1] = init_album((char *)"hihi1", (char *)"hoho1", 1911);

  printf("%s, %s, %d\n", albums[0]->artist, albums[0]->title, albums[0]->year);
  printf("%s, %s, %d\n", albums[1]->artist, albums[1]->title, albums[1]->year);

  char song[] = "song 1\0";

  add_song(albums[1], song);

  free(albums[0]);
  free(albums[1]);
}

Ошибка сегментации при выдаче strncpy добавить песню в «add_song ()».

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо!

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо!

Что я делаю совершенно не так? как много раз слышал, нет "правильного" способа реализации в c, пока он работает и не содержит ошибок, это нормально, но новичку было бы здорово получить некоторую обратную связь или советы по использованию выделения памяти наряду со сложными структурами данных.

Большое спасибо! / s

6
задан Smokie 24 February 2011 в 13:50
поделиться