Дана строка, содержащая полное имя файла. Выделить из этой строки название первого каталога - C (СИ)
Формулировка задачи:
Дана строка, содержащая полное имя файла. Выделить из этой строки название первого каталога (без символа ""). Если файл содержится в корневом каталоге, то вывести символ "". на Си. Спасибо!
Решение задачи: «Дана строка, содержащая полное имя файла. Выделить из этой строки название первого каталога»
textual
Листинг программы
#include <stdio.h>
int main()
{
int k, n = 0, i = 0;
char s[80];
printf("Type a file address:");
gets(s);
while(s[i]){
if(s[i] == '\\')
++n;
++i;
}
k = n;
i = 0;
n = 0;
if(k == 1){
printf(""");
while(s[i]){
if(s[i] == '\\' && n == k - 1)break;
printf("%c", s[i]);
++i;
}
printf(""");
return 1;
}
while(s[i]){
if(s[i] == '\\' && n == k - 1)break;
if(n == k - 1)
printf("%c", s[i]);
if(s[i] == '\\')
++n;
++i;
}
return 0;
}
Объяснение кода листинга программы
В этом коде на языке C выделяется название первого каталога из строки, содержащей полное имя файла:
- Объявлены переменные:
- k, n, i - целочисленные, для подсчета количества обратных слешей и индекса строки;
- s - символьная, для хранения строки.
- Пользователю предлагается ввести строку, содержащую путь к файлу.
- В цикле while с помощью функции gets() происходит чтение строки посимвольно.
- Если текущий символ является обратным слешем и переменная n равна k-1, то из цикла выходит вложенный цикл while и текущий символ выводится на экран.
- Если текущий символ является обратным слешем и переменная n равна k-1, то значение переменной n увеличивается на единицу.
- Если текущий символ является обратным слешем и переменная n равна k-1, то из цикла выходит вложенный цикл while и текущий символ выводится на экран.
- Если текущий символ является обратным слешем и переменная n равна k-1, то значение переменной n увеличивается на единицу.
- Если текущий символ не является обратным слешем, то он выводится на экран.
- Если текущий символ является обратным слешем и переменная n равна k-1, то из цикла выходит вложенный цикл while и текущий символ выводится на экран.
- Если текущий символ является обратным слешем и переменная n равна k-1, то значение переменной n увеличивается на единицу.
- Если значение переменной n равно k, то вложенный цикл while завершается.
- Если значение переменной n равно k-1, то выводится на экран текущий символ.
- Если значение переменной n равно k, то вложенный цикл while завершается.
- Если значение переменной n равно k-1, то выводится на экран текущий символ.
- Если значение переменной n равно k, то вложенный цикл while завершается.
- Если значение переменной n равно k-1, то выводится на экран текущий символ.
- Если значение переменной n равно k, то вложенный цикл while завершается.
- Если значение переменной n равно k-1, то выводится на экран текущий символ.
- Если значение переменной n равно k, то вложенный цикл while завершается.
- Если значение переменной n равно k-1, то выводится на экран текущий символ.