Выделить из строки название первого каталога - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дана строка, содержащая полное имя файла, то есть имя диска, список каталогов (путь), собственное имя и, возможно, расширение. Выделить из этой строки название первого каталога (без символа-разделителя: «/». «//» или «\»). Если файл содержится в корневом каталоге, то вывести символ «.» (обозначение точки монтирования файловой системы).

Решение задачи: «Выделить из строки название первого каталога»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void getFirstDir(char * fn, char * buf) {
    int c = 0;
    char *i, *s = strchr(fn, '\\');
    if (s == NULL) {
        return;
    }
    char *e = strchr(s + 1, '\\');
    if (e == NULL) {
        buf[0] = '.';
        buf[1] = 0;
        return;
    }
    for (i = s + 1; i < e; i++) {
        buf[c++] = *i;
    }
    buf[ c ] = 0;
    return;
}
 
int main(int argc, char * argv[]) {
    char *filename_one = "D:\\Android-Studio\\bin\\studio.exe";
    char *filename_two = "D:\\Ho-ho-ho.avi";
    char buf[256];
    
    getFirstDir(filename_one, buf);
    printf("One: %s\n", buf);
    
    getFirstDir(filename_two, buf);
    printf("Two: %s\n", buf);
    
    system("pause");
    return 0;
}

Объяснение кода листинга программы

  1. В функции getFirstDir приведена строка fn, которую необходимо проанализировать.
  2. Строка fn ищется первое вхождение символа '\' с помощью функции strchr.
  3. Если strchr вернул NULL, то в текущей строке каталогов нет.
  4. Если strchr вернул ненулевой указатель, то в s хранится позиция первого '\' в строке fn.
  5. Следующий символ после s проверяется на наличие '\'.
  6. Если e равен NULL, то в buf записывается текущий каталог ('.').
  7. Если e не равен NULL, то в buf записывается подстрока между s и e.
  8. В main приведены две строки filename_one и filename_two, которые передаются в функцию getFirstDir.
  9. Результат работы функции getFirstDir выводится на экран с помощью функции printf.
  10. В конце программы вызывается функция system(pause), чтобы программа не закрылась сразу, а ожидала нажатия клавиши.
  11. Функция main возвращает 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.2 из 5
Похожие ответы