В строке, содержащие имя файла, проверить есть ли у него расширение - C (СИ)
Формулировка задачи:
Задание.В строке,содержащие имя файла,проверить есть ли расширение.если нет добавить .txt.Если есть оставить
Есть код нужно переделать в параметры командной строки
#include <string.h>
#include <stdio.h>
int main()
{
char *filename = new char[128],*p;
printf("Input Name of file:");
gets(filename);
p = strstr (filename,".txt");
if (p)
printf("Name of file: %s\n",filename);
else
{
p = strchr (filename,'.');
strcat (filename,".txt");
printf("Name of file: %s\n",filename);
}
delete [] filename;
}Решение задачи: «В строке, содержащие имя файла, проверить есть ли у него расширение»
textual
Листинг программы
#include <string.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc != 2) {
return 1;
}
if(strpbrk(argv[1], "(\/:*)")) {
return 2;
}
p = strstr (argv[1],".txt");
if (p)
printf("Name of file: %s\n",argv[1]);
else
{
p = strchr (argv[1],'.');
strcat (argv[1],".txt");
printf("Name of file: %s\n",argv[1]);
}
return 0;
}
Объяснение кода листинга программы
- Проверка количества аргументов в программе (argc). Если аргументов больше или равно 2, то выполняется блок кода внутри условия.
- Используя функцию strpbrk, происходит проверка наличия в имени файла запрещенных символов, таких как (\/:*). Если такие символы есть, то выполняется блок кода внутри условия.
- Используя функцию strstr, происходит поиск подстроки
.txtв имени файла. Если подстрока найдена, то переменная p получает адрес первого символа подстроки, иначе p остается равным NULL. - Если p не равен NULL, то выводится имя файла с помощью функции printf.
- Если p равен NULL, то используя функцию strchr, происходит поиск последнего символа '.' в имени файла. Если такой символ есть, то к имени файла добавляется подстрока
.txtс помощью функции strcat. Затем выводится имя файла с помощью функции printf. - В конце программы возвращается 0, что означает успешное выполнение программы.